二级C语言高教课后习题

计算机等级考试二级c语言高教课后的一些C语言题目,程序有错的地方,望大佬多多指教!!

若a的值小于100,请将以下选择结构改写成由switch语句构成的选择结构。

在这里插入图片描述

改后

#include "stdio.h"
main()
{

        int a,m;
        scanf("%d",&a);
        switch(a/10)
        {

                case 1 :case 2 :printf("%d",m=1);break;
                case 3 :printf("%d",m=2);break;
                case 4 :printf("%d",m=3);break;
                case 5 :printf("%d",m=4);break;
                default:printf("%d",m=5);break;

        }
}

在这里插入图片描述

运行

在这里插入图片描述

编写程序,输入一位学生的生日(年:y0、月:m0、日:d0),并输入当前的日期(年:y1、月:m1、日:d1),输出该生的实际年龄。

在这里插入图片描述

程序

#include "stdio.h"
main()
{

        int y0,m0,d0,y1,m1,d1,n;
        printf("请输入你的出生日期:");
        scanf("%d-%d-%d",&y0,&m0,&d0);
        printf("请输入当前年月日:");
        scanf("%d-%d-%d",&y1,&m1,&d1);
        if(y1-y0<0)
                printf("输入错误");
        if (d1-d0<0)
                m1-=1;
        if (m1-m0<0)
                y1-=1;
        n=y1-y0;
        printf("今年为%d岁",n);


}

在这里插入图片描述

运行

在这里插入图片描述

编写程序,输入一个整数,打印出它是奇数还是偶数。

在这里插入图片描述

程序

#include "stdio.h"
main()
{

        int a;
        printf("请输入一个数:");
        scanf("%d",&a);
        if(a%2==0)
                printf("%d是一个偶数",a);
        else
                printf("%d是一个奇数",a);


}

在这里插入图片描述

运行

在这里插入图片描述

编写程序,输入a、b、c三个数,打印出最大者。

在这里插入图片描述

程序

#include "stdio.h"
main()
{

        int a,b,c;
        printf("请输入三个数:");
        scanf("%d,%d,%d",&a,&b,&c);
        if(a>b&&a>c)
                printf("%d",a);
        	else if(b>c)
                printf("%d",b);
       			 else
                printf("%d",c);
}

在这里插入图片描述

运行

在这里插入图片描述

对于以下函数:
编写程序,要求输入x的值,输出y的值。分别用:

不嵌套的if语句
嵌套的if语句
if-else语句
switch语句

在这里插入图片描述

不嵌套的if语句

程序

#include "stdio.h"
main()
{

        int x,y;
        printf("输入x的值:");
        scanf("%d",&x);
        if(x>-5&&x<0)
                y=x;
        if(x==0)
                y=x-1;
        if(x>0&&x<10)
                y=x 1;
        printf("%d",y);

}

在这里插入图片描述

运行

在这里插入图片描述

嵌套的if语句

程序

#include "stdio.h"
main()
{

        int x,y;
        printf("输入x的值:");
        scanf("%d",&x);
        if(x>-5&&x<=0)
        {
                if(x==0)
                        y=x-1;
                if(x<0)
                        y=x;


        }
        else
                y=x 1;
        printf("%d",y);
}

在这里插入图片描述

运行

在这里插入图片描述

if-else语句

程序

#include "stdio.h"
main()
{

        int x,y;
        printf("输入x的值:");
        scanf("%d",&x);
        if(x>-5&&x<0)
                y=x;
        else if (x==0)
                y=x-1;
        else
                y=x 1;
        printf("%d",y);

}

在这里插入图片描述

运行

在这里插入图片描述

switch语句

程序:

#include "stdio.h"
main()
{

        int x,y,z;
        printf("输入x的值:");
        scanf("%d",&x);
        if(x==0)
                z=1;
        if(x<0&&x>-5)
                z=2;
        if(x>0&&x<10)
                z=3;
        switch(z)
        {

                case 1:y=x;break;
                case 2:y=x-1;break;
                case 3:y=x 1;break;

        }
        printf("%d",y);

}

在这里插入图片描述

运行

在这里插入图片描述

编写程序,把560分钟换算成用小时和分钟表示,然后分别进行输出

程序

#include "stdio.h"
main()
{

        int a=560,s,f;
        s=560/60;
        f=560`;
        printf("560分钟=%d小时%d分钟",s,f);

}

在这里插入图片描述

运行

在这里插入图片描述

编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。

程序

#include "stdio.h"
main()
{

        double a,b,c,avg;
        printf("输入三个双精度数:");
        scanf("%lf,%lf,%lf",&a,&b,&c);
        avg=(a b c)/3;
        avg=avg*10 0.5;
        avg/=10;
        printf("这三个数的平均值为:%0.2lf",avg);

}

在这里插入图片描述

运行

在这里插入图片描述

编写程序,读入三个整数给a、b、c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a、b、c。

程序:

#include "stdio.h"
main()
{

        int a,b,c,d,e;
        printf("请输入abc的值:\n");
        scanf("%d,%d,%d",&a,&b,&c);
                d=b;
        b=a;
                e=c;
        c=d;
        a=e;
        printf("abc交换后的值:%d,%d,%d",a,b,c);

}

运行:

在这里插入图片描述

从一加到一百并输出它的和

程序:

我做了一些调整

#include "stdio.h"
main()
{

        int a=0,i=1,x;
        printf("请输入你要加的最后一个数:");
        scanf("%d",&x);
        while(i<=x)
        {

                a=a i;
                i  ;
        }
        printf("1-%d的和为:%d",x,a);

}

在这里插入图片描述

有这样一个数列(斐波那契数列): 1 1 2 3 5 8 13,求第30个数时值为多少?

程序:

不知道为什么我要用do while,应该用for更简单。。
作修改后的程序

#include "stdio.h"
main()
{

        long a=1,b=1,c,i=0,x;
        printf("请输入你要的多少个数:");
        scanf("%ld",&x);
        x-=2;
//      printf("%ld %ld",a,b);
        do
        {
//              printf(" %ld ",c=a b);
                c=a b;
                a=b;
                b=c;
                i  ;
        }while(i<x);
        printf("\n%ld",c);
}

运行

在这里插入图片描述
源程序是这样的。。。
在这里插入图片描述
在这里插入图片描述

编写程序,找出2-100以内的所有素数(质素)只能被1和它本身整除的数。

在这里插入图片描述

程序

#include "stdio.h"
main()
{
        int i,a,b;
        for(i=2;i<=100;i++)
        {

                a=0;
                for(b=2;b<i;b++)
                        if(i%b==0)
                                a=1;
                        if(a==0)
                                printf(" %d ",i);


        }
}

在这里插入图片描述

运行

在这里插入图片描述

从输入的若干个大于零的正整数中选出最大值,用-1结束输入

程序

#include "stdio.h"
main()
{
        int a,max;
        printf("请输入你的正整数最后输入-1结束:");
        do
        {
        scanf("%d",&a);
        }while(a<0&&a!=-1);
        max=a;
        while(a!=-1)
        {

                printf("请输入其它数:");
                scanf("%d",&a);
                if(a>0&&a>max)
                        max=a;
        }
        if(max!=-1)
                printf("最大值是%d",max);
}

运行

在这里插入图片描述

编写程序,求1-3+5-7…-99+101的值。

程序

#include "stdio.h"
main()
{

        int a,b,i,sum;
        for(i=1;i<=101;i+=4)
                a=a+i;
        for(i=3;i<=101;i+=4)
                b=b+i;
        sum=a-b;
        printf("它的值是:%d",sum);
}

在这里插入图片描述

编写程序,输入1000年至2000年所有闰年的年号。每输入3个年号换一行。判断公元年是否为闰年的条件是:

(1) 能被4整除而不能被100整除的年份

(2)能被400整除的年份

程序

#include "stdio.h"
main()
{

        int a,b,r,i;
        printf("请输入你要开始的年份:");
        scanf("%d",&a);
        printf("请输入你要结束的年份:");
        scanf("%d",&b);
        for(a;a<=b;a++)
        {       if(a%4==0&&a%100!=0||a%400==0)
                        {
                        printf("%d",a);
                        i++;
                        }
                if(i%3==0)
                        printf("\n");
        }

}

这里的结果第一行为什么第二个年份就换行了我没想明白。。

在这里插入图片描述
奇怪的是我在输出加两个空格又可以正常输出了,奇怪。。
在这里插入图片描述

编写程序,打印以下信息

在这里插入图片描述

程序 经过n次修改后…其实也可以一条一条输出的,题目又没有要求怎样编写。

#include "stdio.h"
main()
{

        int i,k,x,i1,k1,x1;
        for(i1=0;i1<4;i1++)
        {       for(k1=0;k1<4-i1;k1++)
                        printf(" ");
                for(x1=0;x1<1+2*i1;x1++)
                        printf("*");
                printf(" \n");
        }
        printf("*********\n ");
        for(i=0;i<4;i++)
        {

                for(k=1;k<=i;k++)
                        printf(" ");
                for(x=0;x<7-i*2;x++)
                        printf("*");
                printf("\n ");
        }
}

运行

在这里插入图片描述

发布了70 篇原创文章 · 获赞 17 · 访问量 6691

猜你喜欢

转载自blog.csdn.net/qq_38626043/article/details/104161314