您的位置:首页 > 编程语言 > C语言/C++

C语言的简单应用(一)

2017-07-13 18:38 316 查看
最近得到一份C语言的简单题库,感觉学一学还是挺不错的,打算每天更新10题,不定期天数。

第一天

1、题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔

子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数

为多少?

#include<stdio.h>
int main()
{
int i,f1=1,f2=1;
for(i=1;i<=20;i++)
{
printf("%10d  %10d",f1,f2);
if(i%2==0)
putchar('\n');
f1=f1+f2;
f2=f1+f2;

}
return 0;
}


2、 题目:判断100以内有多少个素数,并输出所有素数。

程序分析:一个数如果是合数,那么它的因数不会超过该合数的平方根。此题可用简单素数筛选法—–筛选法百度百科

#include<stdio.h>
#define max 100
int main()
{
int i,j=1,a[max]={0};
a[0]=a[1]=1;
for(i=2;i*i<=max;i++)
{
if(!a[i])
for(j=i+i;j<=max;j+=i)
a[j]=1;
}
printf("2  ");
for(i=3;i<=max;i+=2)
{
if(!a[i])
{
printf("%3d  ",i);
j++;
}
if(j%10==0)
putchar('\n');

}
return 0;
}


3、题目:打印出100—1000之间所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方

#include<stdio.h>
int main()
{
int i,j,k,n,m=1;
for(n=100;n<1000;n++)
{
i=n/100;
j=n/10%10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
{
m++;
if(m%2==0)
putchar('\n');
printf("%d  ",n);
}
}
return 0;
}


4、题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

#include<stdio.h>
int main()
{
int n,i;
printf("input a number:\n");
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;
}


5、题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

#include<stdio.h>
int main()
{
int grade,score;
printf("input the score:");scanf("%d",&score);
grade=score>=90?'A':score>=60?'B':'C';
printf("%d belongs to %c",score,grade);
return 0;
}


————————————————————————————————

6、题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

定理:设两个数是a,b最大公约数是p,最小公倍数是q,那么有这样的关系:ab=pq,所以q=ab/p

#include<stdio.h>
int main()
{
int num1,num2,a,b,temp;
printf("input num1,num2:");scanf("%d,%d",&num1,&num2);
if(num1<num2)
{
temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b)
{
temp=a%b;
a=b;
b=temp;
}
printf("the common measure:%d\nthe common multiple:%d",a,num1*num2/a);
return 0;

}


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

#include<stdio.h>
int main()
{
char c;
int letters=0,space=0,digit=0,others=0;
printf("input some characters:");
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("the char=%d space=%d  digit=%d  others=%d\n",letters,space,digit,others);
return 0;
}


8、题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如

2+22+222+2222+22222(此时共有5个数相加),个数由n来控制。

#include<stdio.h>
int main()
{
int a,n,t,count=1;
long s;
printf("input a and n:");scanf("%d,%d",&a,&n);
while(count<=n)
{
t+=a;
s+=t;
a*=10;
count++;
}
printf("a+aa+....=%ld",s);
return 0;
}


9、题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。

#include<stdio.h>
int main()
{
int i,n,sum;
for(n=6;n<=1000;n++)
{   sum=1;
for(i=2;i<=n/2;i++)
if(n%i==0)
sum+=i;
if(n==sum)
{
printf("%d 's perfect number is:",n);
for(i=1;i<n/2;i++)
if(n%i==0)
printf(",%d",i);
putchar('\n');
}
}
retur
ab78
n 0;
}


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

#include<stdio.h>
int main()
{
int n;
float s=100,h=s/2;
for(n=2;n<=10;n++)
{
s+=2*h;
h/=2;
}
printf("the sum:%f\nthe heigh:%f",s,h);
return 0;
}


总结

第一天的题目相对比较简单,都是经典题目,当然,有些确实是十分的灵活,以后需要多多注意一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: