【题目一】
数字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无法达到效果
}