C语言学习02

1,有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子。假如兔子不死,问每个月的兔子总数是多少?

#include <stdio.h>
int main(){
	int i;
	long f1,f2;
	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;	
	}
} 

2,判断100-200之间有多少个素数,并输出所有素数。

#include <stdio.h>
#include <math.h> 
int main(){
	int m,i,k,h=0,leap=1;
	printf("\n");
	for(m=100;m<=200;m++){
		k=sqrt(m);
		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("\n共有多少 %d个素数",h);
} 

3,打印水仙花数 ,例如153=1*1*1+5*5*5+3*3*3 。

#include <stdio.h>
int main(){
	int i,j,k,n;
	printf("水仙花数是:");
	for(n=0;n<1000;n++){
		i=n/100;//百位 
		j=n/10%10;//十位 
		k=n%10;//个位 
		if(i*100+j*10+k==i*i*i+j*j*j+k*k*k){
			printf("%-5d",n);
		} 
	}
} 

4,将一个正整数分解质因数,例如90=2*3*3*5 。

#include <stdio.h>
int main(){
	int n,i;
	printf("请输入一个数:\n");
	scanf("%d",&n);
	printf("%d=",n);
	for(i=2;i<=n;i++){
		while(n!=i){
			if(n%i==0){
				printf("%d",i);
				printf("*");
				n=n/i;
			}
			else
			 break;
		}
	}
	printf("%d",n);
} 

5,成绩等级, A:>=90; B:60-89; C:60分以下。

#include <stdio.h>
int main(){
	int score;
	char grade;
	printf("请输入一个分数:\n");
	scanf("%d",&score);
	grade=score>=90?'A':(score>=60?'B':'C');
	printf("%d属于%c",score,grade); 
	return 0;
}

6,输入两个正整数,求其最大公约数和最小公倍数。

#include <stdio.h>
int main(){
	int a,b,n1,n2,temp;
	printf("请输入两个数:\n");
	scanf("%d,%d",&n1,&n2);
	if(n1<n2){
		temp=n1;
		n1=n2;
		n2=temp;
	}
	a=n1;
	b=n2;
	while(b!=0){
		temp=a%b;
		a=b;
		b=temp;
	}
	printf("最大公约数:%d\n",a);
	printf("最小公倍数:%d\n",n1*n2/a);
} 

7,输入一行字符,分别统计出其中英文字母、空格、数字和其它字符个数。

#include <stdio.h>
int main(){
	char c;
	int letters=0,space=0,digit=0,others=0;
	printf("请输入一行字符:\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("char=%d,space=%d,digit=%d,others=%d\n",letters,space,digit,others);
} 

8,求s=a+aa+aaa+aaaa+aa....a。

#include <stdio.h>
int main(){
	int a,n,count=1;
	long int sn=0,tn=0;
	printf("请输入a和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+aaa+a...a=%ld",sn);
} 

9,找出1000以内的所有完数(一个数如果恰好等于它的因子之和,6=1+2+3)。

#include <stdio.h>
int main(){
	int i,j,n;
	for(i=0;i<1000;i++){
		n=0;
		for(j=1;j<i;j++)
			if(i%j==0)
				n=n+j;
		if(n==i)
			printf("%d是完数\n",i);
	}
	return 0;
} 

10,一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它第10次落地时,共经过多少米?第10次反弹多高?

#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("共经过%f米\n",sn);
	printf("第10次反弹%f米\n",hn);
} 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值