C语言100题(1-10)

【题目一】

数字1、2、3、4,能组成多少个互不相同且无重复数字的三位数?输出它们。

代码:

#include <stdio.h>
void main(void){
	int i,j,p,count=0;
	for(i=1;i<=4;i++){
		for(j=1;j<=4;j++){
			if(j==i) continue;	
			for(p=1;p<=4;p++){
				if(p==i||p==j) continue;
				count++;
				printf("%d\t",100*i+10*j+p);
			}
		}
	}
	printf("\nThe total number is:%d\n",count);
}


【题目二】

一个数,加上100是一个完全平方数,加上168是一个完全平方数,求这个数。

#include <stdio.h>
#include <math.h>
void main(){
int i,res1,res2;
for(i=1;i<=100000;i++){
	res1=sqrt(i+100);
	res2=sqrt(i+268);
	if(res1*res1==(i+100)&&res2*res2==(i+268))
	printf("%d\n",i);
}
}

【题目三】

输入某年某月某日,输出这一天是这一年的第几天。

分析:将1-12月放入数组中,注意闰年的判断。另外一种比较快的方法是,将每个月前的天数放入计算好,用case语句统计。

#include <stdio.h>
void main(void){
int year,month,day,feb,result;
printf("Please input the year,month,day:");
scanf("%d%d%d",&year,&month,&day);
if((year%4==0&&year%100!=0)||year%400==0){
	feb=29;	
}
else feb=28;
int a[11]={0,31,feb,31,30,31,30,31,31,30,31,30};
int i;
result=day;
for(i=0;i<month;i++){
	result+=a[i];
}
printf("It's the %d day\n",result);

}

【题目四】

输入三个数,将它们按从小到大的顺序输出。

分析:固然可以用冒泡,快速等一系列排序,但因为只有3个数,所以有更为快捷的比较方式,将a、b、c依次填入这三个数。

#include <stdio.h>
void main(){
	int a,b,c,t;
	printf("Please input 3 nums:");
	scanf("%d%d%d",&a,&b,&c);
	if(a>b){
		t=a;a=b;b=t;
	}
	if(a>c){
		t=a;a=c;c=t;
	}
	if(b>c){
		t=b;b=c;c=t;
	}
	printf("The right order is:%d\t%d\t%d\n",a,b,c);
}

【题目五】

请输出9*9乘法口诀。

#include <stdio.h>
void main(){
	int i,j;
	for(i=1;i<=9;i++){
		for(j=1;j<=i;j++){
			printf("%d\t",i*j);
		}
		printf("\n");
	}
}

【题目六】

请输出国际象棋棋盘。

#include <stdio.h>
int main(){
	int i,j;
	for(i=1;i<=8;i++){
		for(j=1;j<=8;j++){
			if((i+j)%2!=0) printf(" ");
			else printf("%c%c",219,219);
		}
		printf("\n");
	}
	return 0;
}

【题目七】

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

分析:程序员们的思维实在是太。。天真。。太。。可爱。。了。。先是酱紫的兔子你养给我看看,然后这个算不算乱伦?好吧,言归正传,前几个月的兔子量依次是:1、1、2、3、5、8、13、21、34,可以看到每个月的兔子量都是前两个月想加所得到的结果。

#include <stdio.h>
void main(){
	int i,res1=1,res2=1;
	for(i=1;i<=20;i++){
		printf("%d\t%d\t",res1,res2);
		res1=res1+res2;
		res2=res2+res1;
	}
}


【题目八】

输出1到200之间的质数。

分析:1、只需要检验2到它的平方根之间是否能被一一整除。2、2和3这两个数的平方根取整以后就是1了,需要区分考虑。3、设置标识位,对能否整除区别对待。

#include <stdio.h>
#include <math.h>
void main(){
	int i,j,a,leap=1;
	for(i=2;i<=200;i++){
		a=sqrt(i);
		for(j=2;j<=a;j++){
			if(i%j==0){
				leap=0;
				break;
			}
			else leap=1;
		}
		if(leap){
			printf("%d\t",i);
		}
	}
}


【题目九】

输出所有的水仙花数,所谓的“水仙花数”是三位数,其中各位数字立方和想加等于该数本身。例如:153=1的三次方+5的三次方+3的三次方。

#include <stdio.h>
void main(){
	int i,a,b,c;
	for(i=100;i<=999;i++){
		a=i%10;
		b=(i/10)%10;
		c=(i/100)%10;
		if(i==a*a*a+b*b*b+c*c*c){
			printf("%d\n",i);
		}	
	}
}


【题目十】

将一个正整数分解质因数。

分析:依次用质数去整除即可。不需要把所有质数全部找出来,依次+1即可,但是要保证每个质数能被整除几次都涉及到,例如,36,先把2能整除几次找出来,接下来是3……就不会有4和6被整除的问题。

#include <stdio.h>
void main(){
	int i,j,num;
	printf("Please input a num:");
	scanf("%d",&num);
//	cpnum=num;
	printf("%d=",num);
	for(i=2;num!=1;i++){
//		if(cpnum==i)
//			printf("It's a prime!");
		if(num%i==0){
			printf("%d*",i);
			num=num/i;
			i--;
		}
	}
	printf("\b \n");		//退格,输入空格,回车 ,只输入\b无法达到效果 
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值