c语言试用经典100题(11-20题)

【程序11
题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月
   后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.
程序分析: 兔子的规律为数列 1,1,2,3,5,8,13,21....
2.
程序源代码:
#include<stdio.h>
int main()
{
	long f1,f2;
	int i;
	f1=f2=1;
	for(i=1;i<=20;i++)
	{ 
		printf("%12ld %12ld",f1,f2);
		if(i%2==0) 
		printf("\n");/*控制输出,每行四个*/
		f1=f1+f2; /*前两个月加起来赋值给第三个月*/
		f2=f1+f2; /*前两个月加起来赋值给第三个月*/
	}
	return 0;
}
【程序12】
题目:判断 101-200 之间有多少个素数,并输出所有素数。
1.
程序分析:判断素数的方法:用一个数分别去除 2 sqrt( 这个数 ) ,如果能被整除,
      则表明此数不是素数,反之是素数。  
2.
程序源代码:
#include<stdio.h>
#include<math.h>
int main()
{
	int m,i,k,h=0,leap=1;
	printf("\n");
	for(m=101;m<=200;m++)
	{ 
	k=sqrt(m+1);
	for(i=2;i<=k;i++)
	if(m%i==0)
	{
		leap=0;		
		break;
	}
	if(leap) 
	{
		printf("%-4d",m);
		h++;
		if(h%10==0)
		printf("\n");
	}
	leap=1;
	}
	printf("\nthe total is %d",h);

	return 0;
}
【程序13
题目:打印出所有的 水仙花数 ,所谓 水仙花数 是指一个三位数,其各位数字立方和等于该数
   本身。例如: 153 是一个 水仙花数 ,因为 153=1 的三次方+ 5 的三次方+ 3 的三次方。
1.
程序分析:利用 for 循环控制 100-999 个数,每个数分解出个位,十位,百位。
2.
程序源代码:
#include<stdio.h>
int main()
{
	int i , ge,shi,bai;
	for(i = 100; i <= 999; i++)
	{
		ge = i % 10;
		shi = i / 10 %10;
		bai = i / 100;
		if(bai*100 + shi*10 +ge == ge*ge*ge + shi*shi*shi + bai*bai*bai)
		{
			printf("%-5d" , i);
		}
	}	
	return 0;
}
【程序14】
题目:将一个正整数分解质因数。例如:输入 90, 打印出 90=2*3*3*5
程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k ,然后按下述步骤完成:
(1)
如果这个质数恰等于 n ,则说明分解质因数的过程已经结束,打印出即可。
(2)
如果 n<>k ,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商 , 作为新的正整数你 n,
 重复执行第一步。
(3)
如果 n 不能被 k 整除,则用 k+1 作为 k 的值 , 重复执行第一步。
2.
程序源代码:
#include<stdio.h>
int main()
{
	int n , i;
	scanf("%d" , &n);
	printf("%d=",n);
	for(i = 2; i <= n; i++)
	{
		while(n!=i)
		{
			if(n%i==0)
			{ 
				printf("%d*",i);
				n=n/i;
			}
			else

			break;
		}
	}
	printf("%d",n);
	return 0;
}
【程序15】
题目:利用条件运算符的嵌套来完成此题:学习成绩 >=90 分的同学用 a 表示, 60-89 分之间的用 b 表示,
60 分以下的用 c 表示。
1.
程序分析: (a>b)?a:b 这是条件运算符的基本例子。
2.
程序源代码:
#include<stdio.h>
int main()
{
	int score;
	char grade;
	printf("please input a score\n");
	scanf("%d",&score);
	grade=score>=90?'a':(score>=60?'b':'c');
	printf("%d belongs to %c",score,grade);
	return 0;
}
【程序16】
题目:输入两个正整数 m n ,求其最大公约数和最小公倍数。
1.
程序分析:利用辗除法。
2.
程序源代码:
#include<stdio.h>
int main()
{
	int a,b,num1,num2,temp;
	printf("please input two numbers:\n");
	scanf("%d,%d",&num1,&num2);
	if(num1  == num2)
	{
		temp=num1;
		num1=num2;
		num2=temp;
	}
	a=num1;b=num2;
	while(b!=0)/*利用辗除法,直到b为0为止*/
	{
		temp=a%b;
		a=b;
		b=temp;
	}
	printf("gongyueshu:%d\n",a);
	printf("gongbeishu:%d\n",num1*num2/a);
	return 0;
}
【程序17】
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.
程序分析:利用 while 语句 , 条件为输入的字符不为 '\n'.

2.
程序源代码:
#include<stdio.h>
int main()
{
	char c;
	int letters=0,space=0,digit=0,others=0;
	printf("please input some characters\n");
	while((c=getchar())!='\n')
	{
		if(c>='a'&&c<='z'||c>='a'&&c<='z')
		letters++;
		else if(c==' ')
		space++;
		else if(c>='0'&&c<='9')
		digit++;
		else
		others++;
	}
	printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,space,digit,others);

	return 0;
}


【程序18】
题目:求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222( 此时
   共有 5 个数相加 ) ,几个数相加有键盘控制。
1.
程序分析:关键是计算出每一项的值。
2.
程序源代码:
#include<stdio.h>
int main()
{

	int a,n,count=1;
	long int sn=0,tn=0;
	printf("please input a and n\n");
	scanf("%d,%d",&a,&n);
	printf("a=%d,n=%d\n",a,n);
	while(count<=n)
	{
		tn=tn+a;
		sn=sn+tn;
		a=a*10;
		++count;
	}
	printf("a+aa+...=%ld\n",sn);

	return 0;
}




【程序19
题目:一个数如果恰好等于它的因子之和,这个数就称为 完数 。例如 6=1 2 3. 编程
   找出 1000 以内的所有完数。
1. 
程序分析:请参照程序 <-- 上页程序 14.
2.
程序源代码:
#include <stdio.h> 
#include <conio.h>
int main()
{
	int m,i,s;
	for(m=1;m<=1000;m++) //从1开始到1000循环结束
	{
		s=0;//初始化因子之和s为0
		for(i=1;i<m;i++) //寻找在1到m之间,有多少m的因子
		if(m%i==0) //如果m能整除i,则i为m的因子
		s=s+i;//将因子累加
		if(s==m) //如果因子之和等于这个数
		printf("%d\t",s);//输出
	}
	getch();
}




【程序20
题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
   第 10 次落地时,共经过多少米?第 10 次反弹多高?
1.
程序分析:见下面注释
2.
程序源代码:
#include<stdio.h>
int main()
{
	float sn=100.0,hn=sn/2;
	int n;
	for(n=2;n<=10;n++)
	{
		sn=sn+2*hn;//第n次落地时共经过的米数
		hn=hn/2; //第n次反跳高度
	}
	printf("the total of road is %f\n",sn);
	printf("the tenth is %f meter\n",hn);
	return 0;	
}
	






猜你喜欢

转载自blog.csdn.net/qq_38663663/article/details/80437307
今日推荐