今天我们来做一些编程题,来巩固自己所学的知识。
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;
}
今天就做这几道题,希望大家能熟悉掌握。