C 程序设计教程(15)—— 选择结构程序设计练习题
创始人
2024-05-10 05:21:37
0

C 程序设计教程(15)—— 选择结构程序设计练习题

该专栏主要介绍 C 语言的基本语法,作为《程序设计语言》课程的课件与参考资料,用于《程序设计语言》课程的教学,供入门级用户阅读。

目录

  • C 程序设计教程(15)—— 选择结构程序设计练习题
    • 一、选择题
    • 二、填空题
    • 三、编程题
        • 1、输入三个整数中的最大者
        • 2、检验一个数的范围
        • 3、取出一个整数的各位数字
        • 4、计算员工提成
        • 5、数据排序

一、选择题

1、为表示 x≥y≥z,在 C 语言中应使用表达式(A)。

A、(x>=y)&&(y>=z) B、(x>=y) AND (y>=z)

C、(x>=y>=z) D、(x>=y)&(y>=z)

2、能正确表示 a 和 b 同时为正或同时为负的逻辑表达式是(D)。

A、(a>0||b>0)&&(a<0||b<0) B、a>0 && b>0

C、a+b>0 D、a*b>0

3、设有如下程序:

#include
int main() {int a=2,b=-1,c=2;if(a

以上程序的输出结果为(B)。

A、1 B、2 C、3 D、0

4、设有如下程序:

#include
int main() {int x=1,a=0,b=0;switch (x){case 0:b++;case 1:a++;case 2:a++;b++;}printf("a=%d,b=%d\n",a,b);return 0;
}

以上程序的输出结果为(A)。

A、a=2、b=1 B、a=1、b=1 C、a=1、b=0 D、a=2、b=2

二、填空题

1、当 a=1、b=2、c=3 时,以下 if 语句执行后,a,b,c 中的值分别为(3)、(2)、(2)。

if (a>c)b=a;a=c;c=b;

2、以下程序段的输出结果是(&#)。

#include
int main() {int x=0,y=2,z=3;switch (x){case 0:switch(y=2){case 1:printf("*");break;case 2:printf("&");break;};case 1:switch(z){case 1:printf("$");case 2:printf("*");break;default:printf("#");};}return 0;
}

3、当 a、b、c 的值分别为 3, 4, 5 时,以下各语句执行后 a、b、c 的值分别为多少?

(1)

if (a>c){a=b;b=c;c=a;
}
else{a=c;c=b;b=a;  //a=5,c=4,b=5
}    

执行后 a、b、c 的值分别为(5)、(5)、(4)。

(2)

if (a

执行后 a、b、c 的值分别为(5)、(5)、(4)。

if (a!=c);
elsea=c;c=b;b=a;  //a=3,c=4,b=3    

执行后 a、b、c 的值分别为(3)、(3)、(4)。

4、写出以下程序的运行结果:

(1)

#include
int main() {int a=100,x=10,y=20,ok1=5,ok2=0;if(x

以上程序的运行结果为(a=-1)。

(2)

#include
int main() {int x=2,y=-1,z=2;if(x

以上程序的运行结果为(z=2)。

(3)

#include
int main() {int a=-1,b=3,c=3,s=0,w=0,t=0;if(c>0) s=a+b;  //s=2if(a<=0) w=a-b; //w=-4else if(c>0) w=a-b;else t=c;printf("%d,%d,%d\n",s,w,t);return 0;
}

以上程序的运行结果为(2,-4,0)。

(4)

#include
int main() 
{int a=2,b=7,c=5;switch(a>0){case 1:switch(b<0){case 1:printf("@");break;case 2:printf("!");break;}case 0:switch(c==5){case 0:printf("*");break;case 1:printf("#");break;default:printf("&");}default:printf("&");}printf("\n");return 0;
}

以上程序的运行结果为(#&)。

(5)

#include
int main() 
{int k=1;switch(k){case 1:k+=1;break;case 2:k+=2;break;case 3:k+=3;break;default:k+=4;break;}printf("k=%d\n",k);return 0;
}

以上程序的运行结果为(k=2)。

三、编程题

1、输入三个整数中的最大者

通过键盘输入 a,b,c 三个整型变量的值,输出其中的最大值。程序如下:

#include
int main() 
{int a,b,c,max;printf("请输入a,b,c的值(用逗号分隔):");scanf("%d,%d,%d",&a,&b,&c);max=a;if(max

以上程序的运行结果如下:

在这里插入图片描述

2、检验一个数的范围

从键盘输入一个小于 1000 的正数,要求输出它的平方根。要求在输入数据后先对其进行检查,是否为小于 1000 的正数。若不是,则要求重新输入。

#include
#include
int main() 
{int i,k;printf("请输入一个0~1000之间的整数:");scanf("%d",&i);if(i<=0||i>=1000) {printf("数据输入有误,请重新输入"); printf("请输入一个0~1000之间的整数:");scanf("%d",&i);}  //本部分的检验有问题:只能检验一次,如果第二次输入错误的数据,则不进行检查k=sqrt(i);printf("%d的平方根的整数部分为:%d\n",i,k);return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

3、取出一个整数的各位数字

输入一个不多于 5 位的正整数:(1)求出它是几位数。(2)分别输出每一位数字。(3)按逆序输出各位数字。

程序如下:

#include
#include
int main() 
{int i,k,ge,shi,bai,qian,wan;printf("请输入一个0~99999之间的整数:");scanf("%d",&i);if (i<0||i>99999) printf("输入范围有误。");if (i>=0&&i<10) k=1;if (i>=10&&i<100) k=2;if (i>=100&&i<1000) k=3;if (i>=1000&&i<10000) k=4;if (i>=10000&&i<100000) k=5;wan=i/10000;qian=(i-wan*10000)/1000;bai=(i-wan*10000-qian*1000)/100; shi=(i-wan*10000-qian*1000-bai*100)/10; ge=(i-wan*10000-qian*1000-bai*100-shi*10); printf("整数%d的位数为:%d\n",i,k);switch(k){case 1:printf("整数%d的各位数字为:%d\n",i,ge);printf("整数%d的反序数字为:%d\n",i,ge);break;case 2:printf("整数%d的各位数字为:%d,%d\n",i,shi,ge);printf("整数%d的反序数字为:%d,%d\n",i,ge,shi);break;case 3:printf("整数%d的各位数字为:%d,%d,%d\n",i,bai,shi,ge);printf("整数%d的反序数字为:%d,%d,%d\n",i,ge,shi,bai);break;case 4:printf("整数%d的各位数字为:%d,%d,%d,%d\n",i,qian,bai,shi,ge);printf("整数%d的反序数字为:%d,%d,%d,%d\n",i,ge,shi,bai,qian);break;case 5:printf("整数%d的各位数字为:%d,%d,%d,%d,%d\n",i,wan,qian,bai,shi,ge);printf("整数%d的反序数字为:%d,%d,%d,%d,%d\n",i,ge,shi,bai,qian,wan);break;} return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

4、计算员工提成

企业根据利润发放提成,利润(profits)低于或等于100000元,按 10% 发放提成;利润高于 100000元,低于 200000元(1000001000000时,超过 1000000元的部分按1%提成。用键盘输入当月利润 profits,求应发奖金总数。分别用if 语句和 switch 语句编程实现。

程序如下:

#include
int main() 
{float profits,commission;float b1,b2,b4,b6,b10;b1=100000*0.1;b2=b1+100000*0.075;b4=b2+200000*0.05;b6=b4+200000*0.03;b10=b6+400000*0.015;printf("请输入当月的利润总额:");scanf("%f",&profits);if(profits<=100000)commission=profits*0.1;if(profits<=200000&&profits>100000)commission=b1+(profits-100000)*0.075;if(profits<=400000&&profits>200000) 		commission=b2+(profits-200000)*0.05;	if(profits<=600000&&profits>400000) commission=b4+(profits-400000)*0.03;if(profits<=1000000&&profits>600000) 		commission=b6+(profits-600000)*0.015;if(profits>1000000) 		commission=b10+(profits-1000000)*0.01;printf("当利润为%f时的提成为:%f",profits,commission);return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

5、数据排序

输入4个整数,然后按从小到大的顺序输出。程序如下:

#include
int main() 
{int a,b,c,d,t;printf("请输入4个整数(使用逗号分隔):");scanf("%d,%d,%d,%d",&a,&b,&c,&d);if (a>b) {t=a;a=b;b=t;}if (a>c) {t=a;a=c;c=t;}if (a>d) {t=a;a=d;d=t;}if (b>c) {t=b;b=c;c=t;}if (b>d) {t=b;b=d;d=t;}if (c>d) {t=c;c=d;d=t;}printf("从小到大排序结果:%d,%d,%d,%d",a,b,c,d);return 0;
}

以上程序的运行结果如下:

在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...