今天我们来做一些编程题,来巩固自己所学的知识。
1.求m到n之间的水仙花数,有就输出所有的水仙花数,否则输出NO。
#include<stdio.h> #include<Windows.h> int shui(int x,int y,int b[]) { int i=100; int count=0; int j=0; int n=0; int sum=0; int t=0; int flag=0; for(i=100;i<=999;i++) //循环找到100到999之间的所有水仙花数。 { t=i; sum=0; while(t!=0) //循环求每个数的各个位的立方和。 { n=t%10; sum+=n*n*n; t=t/10; } if(sum==i) //如果立方和等于这个数本身,他就是水仙花数,把它存入数组中。 { b[j]=sum; j++; count++; } } for(j=0;j<count;j++) //在数组中开始寻找,如果在范围内就输出水仙花数。 { if(b[j]>=x && b[j]<=y) { printf("%d ",b[j]); flag+=1; //检验是否有水仙花数。 } else{ continue; } } printf("\n"); if(flag==0) //没有水仙花数输出NO。 { printf("NO\n"); } } int main() { int x,y; int b[100]={0}; printf("Please input the <x,y>: \n"); scanf("%d%d",&x,&y); shui(x,y,b); system("pause"); return 0; }
#include<stdio.h> #include<math.h> #include<Windows.h> int xian(int x,int y,int m[]) //定义一个函数。 { int a,b,c; int j=0; int i=0; int count=0; int sum=0; int flag=0; for(i=100;i<=999;i++) //先将所有水仙花数放入数组m中。 { a=i%10; b=(i/10)%10; c=i/100; sum=a*a*a+b*b*b+c*c*c; if(sum==i) { m[j]=sum;j++;count++; } } for(i=0;i<count;i++) //如果水仙花数在范围里就输出水仙花数,否则输出NO。 { if((m[i]<x) || (m[i]>y)) { continue; } else { printf("%d ",m[i]); flag+=1; } } printf("\n"); if(flag==0) { printf("NO\n"); } return 0; } int main() { int m[10]={0}; int x,y; printf("Please input the <x,y>:\n"); scanf("%d%d",&x,&y); //输入范围。 xian(x,y,m); //调用函数。 system("pause"); return 0; }2.输入“hello xiao mi”,输出“mi Xiao hello”.
#include<stdio.h> #include<assert.h> #include<Windows.h> void reverse(char *start,char *end) //定义一个倒置函数。 { while(start<end) { *start^=*end; *end^=*start; *start^=*end; start++; end--; } } int my_sort(char *str,int len) { char *p=str; char *q=str; assert(str); //断言str不为空。 while(*q!='\0') { if(*q==' ') { reverse(p,q-1); //倒置每一个用空格隔开的字符 p=q+1; q=p; } else{ q++; } } reverse(p,q-1); //倒置最后一个字符串。 reverse(str,q-1);//在将整个字符串倒置。 } int main() { char str[]="Hello xiao mi"; int len=strlen(str); my_sort(str,len); //调用函数。 printf("%s\n",str); //输出结果。 system("pause"); return 0; }3.投票系统,求每个人的票数。
#include<stdio.h> #include<string.h> #include<Windows.h> struct Person //定义一个存放候选人信息的结构体。 { char name[20]; int cout; }leader[3]={"li",0,"ye",0,"yu",0}; //赋值。 int main () { int i,j; int ret=0; char leader_name[20]; for(i=1;i<=10;i++) //记录10个名字。 { scanf("%s",&leader_name); for(j=0;j<3;j++) { if(strcmp(leader_name,leader[j].name)==0) //哪个名字与所记录的一样,就给他的票数+1. { leader[j].cout++; } } } printf("\nResult: \n"); //输出投票结果。 for(i=0;i<3;i++) { printf("%s:%d\n",leader[i].name,leader[i].cout); //打印出每个人的信息。 } system("pause"); return 0; }今天就做这几道题,希望大家能熟悉掌握。