C语言题库

1.编写程序实现输入学生成绩,输出其评定等级(100~90为A,89~80为B,79~60为C,60以下为D)。

#include<stdio.h>
int main()
{
    float score;
    char grade;
    printf("请输入学生成绩:");
    scanf("%f",&score);
    while(score>100||score<0)
    {
        printf("\n输入有误,请重输。");
        scanf("%f",&score);
    }
    switch(int(score/10))
    {
        case 10:
        case 9:grade='A';break;
        case 8:grade='B';break;
        case 7:
        case 6:grade='C';break;
        case 5:
        case 4:
        case 3:
        case 2:
        case 1:
        case 0:grade='D';break;
    }
    printf("成绩是%5.1f,相应的等级是%c。\n",score,grade);
    return 0;
} 

2. 从键盘输入一个正整数,输出其是否为素数的信息。

3. 从键盘输入一个整数,输出它是几位数。

#include <stdio.h>
int main()
{
    int n,i=0;
    printf("请输入一个数n:");
    scanf("%d",&n);
    while(n>0)
    {
        n=n/10;
        i++;
    }
    printf("这个数是%d位数",i);
    return 0;
}

4. 用c程序设计程序判断一个数是否为三位数。

#include<stdio.h>
int main()
{
    int i,n;
    printf("请输入一个正整数:");
    scanf("%d",&n);
    while(n>0)
    {
        n=n/10;
        i++;
    }
    if(i==3)
        printf("该数是三位数");
    else
        printf("该数不是三位数"); 
    return 0;   
} 

5. 从键盘输入一个正整数,输出其是否为素数的信息。

#include<stdio.h>
int main()
{ 
    int i,n; 
    printf("请输入一个正整数:");
    scanf("%d",&n); 
    for (i=2;i<n;i++)
        if (n%i==0) break;
    if(i>=n)
        printf("是素数");
    else
        printf("不是素数");
    eturn 0;
}

6. 从键盘输入3个正整数,然后按照从大到小的顺序将其依次输出。

#include<stdio.h>
int main(void)
{
    int a,b,c,t;
    printf("请输入三个数");
    scanf("%d%d%d",&a,&b,&c);
    if(a<b)
    {t=a;a=b;b=t;}
    if(b<c)
    {t=b;b=c;c=t;}
    printf("从大到小:%d %d %d",a,b,c);
return 0;
}
//从键盘输入3个正整数,然后按照从大到小的顺序将其依次输出

7. 设变量a=5,b=6,交换两变量的值然后输出。

#include<stdio.h>
int main()
{
    int a=5,b=6,t;
    t=a;a=b;b=t;
    printf("a=%d,b=%d",a,b);
    return 0;
}
//设变量a=5,b=6,交换两变量的值然后输出

8. 编写一个程序判断从键盘输入的年份是否为闰年。

#include<stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    if(i%4==0&&i%100!=0||i%400==0)
        printf("是闰年");
    else
        printf("不是闰年")
    return 0;
}

9. 从键盘输入两个正整数,输出这两个正整数的最大公约数与最小公倍数。

#include<stdio.h>
int main()
{
    int a,b,m,n,t;
    printf("请输入两个正整数:\n");
    scanf("%d%d",&m,&n);
    if(m<n)
    {
        t = m;
        m = n;
        n = t;
    }
    a = m;
    b = n;
    while(b!=0)/*利用辗除法,直到b为0为止*/
    {   
    t = a%b;
    a=b;
    b=t;
    }
    printf("最大公约数:%d\n",a);
    printf("最小公倍数:%d\n",m*n/a);
    return 0; 
} 

10. 用辗转相除法输出两个正整数的最大公因数。

#include <stdio.h>
void main()
{
    int m,n,k;
    scanf("%d%d",&m,&n);
    if(m<n)
    {k=m;m=n;n=k;}
    while(n!=0) 
    {k=m%n;m=n;n=k;}
    printf("%d",m);
}
//辗转相除法求最大公约数

11. 找出区间[2,100]内所有素数并输出,每行输出5个,每个素数占6个列宽。

#include<stdio.h>
int main()
{
    int i,j,n=0;
    for(i=2;i<=100;i++)
    {
        for(j=2;j<=i;j++)
        {
            if(i%j==0)
            break;
        }
        if(j>=i)
        {
            printf("%6d",i);
            n++;
            if(n%5==0)
                printf("\n");
        }
    }
    return 0;
}

12. 编程输出[100,999]中的所有水仙花数。水仙花数是指3位数的各位数字的立方和等于这个3位数本身。例如,153=111+555+333。

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

13. 设s(n)=1+1/2+1/3+…+1/n,编写函数输出s(1)到s(20)的值,要求5个为一行。

#include<stdio.h>
int main()
{
    int i,sign=1;
    float sum,s[20];
    sum=0.0;
    for(i=1;i<=20;i++)
    {
        sum=sum+1.0*sign/i;
        
        printf("s[%d]=%f\t",i,sum);
        if(i%5==0)
            printf("\n");
    }
    return 0;
}

14. 编写一个程序输出1801年到2021年之间的所有闰年,要求5个为一行。

#include<stdio.h>
int main()
{
    int i,n=0;
    for(i=1801;i<=2021;i++)
    { 
        if(i%4==0&&i%100!=0||i%400==0)
        { 
            n++;printf("%d ",i);
            if(n%5==0)printf("\n");
        }
    }
    return 0;
}

15. 从键盘输入班级学生的成绩,直到输入负数为止,输出最大值、最小值和平均值。

#include<stdio.h>
void main()
{ 
    int a[100],i=0,max,min;
    float average,sum=0;
    do{
    scanf("%d",&a[i]);
    sum=sum+a[i++];
    }while(a[i-1]>0);
    average=(sum-a[i-1])/(i-1); 
    max=min=a[0]; 
    while (a[i]>0)
    { 
        if(max<a[i]) max=a[i]; 
        if(min>a[i]) min=a[i]; 
    }       
    printf("average:%.2f highest:%d lowest:%d ",average,max,min);   
}
//从键盘输入班级学生的成绩,直到输入负数为止,输出最大值、最小值和平均值

16. 从键盘输入一个整数,通过自定义函数输出其逆序数,比如:1560的逆序数为651。

#include<stdio.h>
int reverse(int n);
​
int main()
{
    int n;
    scanf("%d",&n);
    reverse(n);
    return 0;
}
int reverse(int n)
{
    int m;
    while(n!=0)
    {
        m=n%10;
        n=n/10;
        printf("%d",m);
    }
}
//从键盘输入一个整数,通过自定义函数输出其逆序数

17. 有100匹马,刚好驮100担货,大马驮三担,中马驮二担,两匹小马驮一担,求大马、中马、小马各有几匹。

#include <stdio.h>                                                     
int main ()
{
    int x,y,z;
    for(x=0;x<=33;x++)
    {
        for(y=0;y<=50;y++)
        {
            for(z=0;z<=200;z=z+2)
            {
                if(3*x+2*y+z/2==100 && x+y+z==100)
                {
                    printf("大马%d只, 中马%d只, 小马%d只\n",x,y,z);
                }
            }
        }
    }
    return 0;
}    
//有100匹马,刚好驮100担货,大马驮三担,中马驮二担,两匹小马驮一担,求大马、中马、小马各有几匹。  
 

18. 调用自定义函数验证从键盘输入的偶数满足哥德巴赫猜想,即:不小于6的偶数都可以表示为两个素数之和。

#include <stdio.h>
#include <math.h>
void main() 
{
    int a,b,c,d;   /*初始化*/
    scanf("%d",&a);   /*输入一个数,应不小于6的偶数*/
    for(b=3;b<=a/2;b+=2) /*从3开始,到该数1/2的,循环,步长为2,因为2这个素数与其他素数相加都不是偶数*/
    {
        for(c=2;c<=sqrt(b);c++)     /*以下三行是为了求第一个加数,sqrt是开根号函数*/
            if(b%c==0) break;
            if(c>sqrt(b))    /*这两行判定这个数是不是素数*/
                d=a-b;
            else
                continue;     /*确定是素数以后,用减法求出另一个加数*/
            for(c=2;c<=sqrt(d);c++)  /*这三行同上面部分*/
                if(d%c==0) break;
                if(c>sqrt(d)) 
                    printf("%d=%d+%d\n",a,b,d); /*两者皆为素数时,给予输出*/
    } 
}
//调用自定义函数验证从键盘输入的偶数满足哥德巴赫猜想,即:不小于6的偶数都可以表示为两个素数之和

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

#include<stdio.h>
int main()
{
    float h = 100;//高度
    int n = 0;//跳了几次
    int i = 0;//循环变量
    float ret = 0;//反弹高度
    float sum = 0;//跳n次共经过sum米
    scanf("%d", &n);
    //跳了n次
    for (i = 0; i <  n; i++)
    {
        sum += h;
        ret = h / 2;
        h = ret;
    }
    printf("共经过%f米\n", sum);
    printf("反弹高度%f米\n", ret);
    return 0;
}
//一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?

20. 输出一元二次方程ax*x+bx+c=0的所有根,其中a,b,c的值由键盘输入。

#include <stdio.h>
#include<math.h>
int main()
{
float a,b,c;
    float x1=0,x2=0;
    float t=0;
    scanf("%f %f %f",&a,&b,&c);
    if(a==0)
    {
        printf("这不是一元二次方程\n");
    }
    else
    {
        t=sqrt(b*b-4*a*c);
        if(t>0)
        {
            x1=(-b+t)/(2*a);
            x2=(-b-t)/(2*a);
            printf("方程有两个根: x1=%.2f,x2=%.2f\n",x1,x2);
        }
        else if(t==0)
        {
            x1=(-b)/(2*a); 
            printf("方程有一个根:x1=x2=%.2f\n",(-b)/(2*a));
        }
        else 
        {
            printf("方程没有根\n");
        }
    }
    return 0;
}
//求解任意的一元二次方程ax的平方+bx+c=0的根,其中a,b,c的值由键盘输入。要求考虑到解的各情况

21.已知e≈1+1/1!+1/2!+...+1/n!,输出第一次满足1/n!<1e-10时e的近似值(保留15位小数)。

22. 从键盘输入10数,按由大到小的顺序排序,并输出排序好数字输出。

#include<stdio.h>
void main()
{
    int i,j,a[10],t;
    printf("请输入十个数:");
    for (i = 0; i < 10; i++)
        scanf("%d",&a[i]);
    for (i = 0; i < 10; i++)
        for (j = i + 1; j < 10;j++)
            if (a[i] < a[j])
            {
                t = a[i];
                a[i] = a[j];
                a[j] = t;
            }
    printf("从大到小排序后:");
    for (i = 0; i < 10; i++)
        printf(" %2d ", a[i]);
}
​
// 从键盘输入10数,按由大到小的顺序排序,并输出排序好数字输出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值