一些编程练习题。

今天我们来做一些编程题,来巩固自己所学的知识。

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;
}
今天就做这几道题,希望大家能熟悉掌握。



猜你喜欢

转载自blog.csdn.net/ymk1507050118/article/details/80520228