C语言的简单应用(一)

来源:互联网 发布:免费手机代理软件 编辑:程序博客网 时间:2024/06/06 03:38

最近得到一份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 100int 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');            }       }    return 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; } 

总结

第一天的题目相对比较简单,都是经典题目,当然,有些确实是十分的灵活,以后需要多多注意一下。

原创粉丝点击