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

news2024/11/27 8:33:00

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<stdio.h>
int main() {
	int a=2,b=-1,c=2;
	if(a<b)
		if(b<0) c=0;
		else c+=1;
	printf("%d\n",c);
	return 0;
}

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

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

4、设有如下程序:

#include<stdio.h>
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<stdio.h>
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<c)
    a=c;
else
    a=b;c=b;b=a;  //a=5,c=4,b=5    

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

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

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

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

(1)

#include<stdio.h>
int main() {
	int a=100,x=10,y=20,ok1=5,ok2=0;
	if(x<y)
		if(y!=0)
			if(!ok1) a=1;
			else
				if(ok2) a=10;
		a=-1;
	printf("a=%d\n",a);
	return 0;
}

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

(2)

#include<stdio.h>
int main() {
	int x=2,y=-1,z=2;
	if(x<y)
		if(y<0) z=0;
		else z+=1;
	printf("a=%d\n",z);
	return 0;
}

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

(3)

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

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

(4)

#include<stdio.h>
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<stdio.h>
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<stdio.h>
int main() 
{
	int a,b,c,max;
	printf("请输入a,b,c的值(用逗号分隔):");
	scanf("%d,%d,%d",&a,&b,&c);
	max=a;
	if(max<b) max=b;
	if(max<c) max=c;
	printf("max=%d\n",max);
	return 0;
}

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

在这里插入图片描述

2、检验一个数的范围

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

#include<stdio.h>
#include<math.h>
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<stdio.h>
#include<math.h>
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元(100000<profits<=200000)时,低于 100000元的部分按 10% 提成,高于 100000元的部分按 7.5% 提成;200000<profits<=400000元时,低于 200000万元的部分仍按上述办法提成,高于 200000万元的部分按 5%提成;400000<profits<=600000元时,高于400000元的部分按3%提成;600000<profits<=1000000时,高于 600000元的部分按 1.5% 提成;当 profits>1000000时,超过 1000000元的部分按1%提成。用键盘输入当月利润 profits,求应发奖金总数。分别用if 语句和 switch 语句编程实现。

程序如下:

#include<stdio.h>
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<stdio.h>
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;
}

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/153520.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20230110配置ubuntu18.04为开机自动登录

20230110配置ubuntu18.04为开机自动登录 百度搜索&#xff1a;ubuntu 18.04 开机自动登录 https://blog.csdn.net/yang1994/article/details/124446319 通过配置文件启用/禁用Ubuntu 18.04自动登录 超级用户可以通过编辑custom.conf配置文件的方式&#xff0c;来为自己或任何其…

计算机如何存储浮点数和定点数?

1 浮点数的不精确性 能不能用二进制表示所有实数&#xff0c;然后在二进制下计算它的加减乘除呢&#xff1f; 打开Chrome Console&#xff0c;输入0.3 0.6&#xff1a; 简单加法在js算出结果居然不是准确的0.9&#xff0c;而是0.8999999999999999&#xff0c;why&#xff1…

火山语音丨AI创作惊艳四方 诸多挑战仍在路上

2022年8月&#xff0c;一幅名为《太空歌剧院》的数字画作获得冠军同时引发了巨大争议&#xff0c;AIGC&#xff08;AI产生内容&#xff1a;AI-Generated Content&#xff09;出圈的事件便频频出现在大众视野。同年11月30日OpenAI发布的聊天机器人模型ChatGPT免费开放&#xff0…

从0到1完成一个Vue后台管理项目(二十、地图涟漪、线图)

往期 从0到1完成一个Vue后台管理项目&#xff08;一、创建项目&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;二、使用element-ui&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;三、使用SCSS/LESS&#xff0c;安装图标库&#xff09; 从0到1完成一个Vu…

缓存穿透、布隆过滤器、布谷鸟过滤器

1.概述 缓存穿透&#xff1a; 当查询的数据在缓存&#xff08;redis&#xff09;中没有时&#xff0c;一般业务上就会去查询数据存储&#xff08;数据库&#xff09;&#xff0c;这种情况称为缓存穿透。穿透的数量太大会造成数据存储撑不住&#xff08;数据库&#xff09;而宕…

基于控制器软件需求事项进行单元测试和单元测试规范

基于需求事项的单元测试是什么&#xff1f; ​ 大多数汽车行业都遵循 ISO 26262 中定义的标准&#xff0c;这是 ISO 制定的汽车功能安全国际标准。 根据 ISO 26262 标准软件单元测试 (ISO 26262-6-9)&#xff0c;单元验证是验证要验证的单元&#xff08;功能或功能&#xff09…

智能优化算法应用:基于蜣螂优化算法的工程优化案例

智能优化算法应用&#xff1a;基于蜣螂算法的工程优化案例 文章目录智能优化算法应用&#xff1a;基于蜣螂算法的工程优化案例1.蜣螂算法2.压力容器设计问题3.三杆桁架设计问题4.拉压弹簧设计问题5.Matlab代码6.Python代码摘要&#xff1a;本文介绍利用蜣螂搜索算法&#xff0c…

MyBatis框架知识点总结

一、引言1.1 什么是框架&#xff1f;框架&#xff1a;框架使用你的&#xff0c;而不是你在使用框架的。框架让我们提供什么信息&#xff0c;配置信息&#xff0c;数据库连接用户名密码等&#xff0c;你必须提供&#xff0c;还得按照框架要要求的方式提供&#xff0c;否则你就别…

《图机器学习》-Node Embeddings

Node Embeddings一、Graph Representation Learning二、Node Embeddings&#xff1a;Encoder and Decoder三、Random Walk Approaches for Node Embeddings一、Graph Representation Learning 在传统的图机器学习中&#xff0c;依赖于手工特征工程(即由特征工程师去设计节点、…

每日一题:Leetcode54. 螺旋矩阵

文章目录 系列&#xff1a;数组专练 语言&#xff1a;java & go 题目来源&#xff1a;Leetcode54. 螺旋矩阵 难度&#xff1a;中等 考点&#xff1a;边界问题处理 思路和参考答案文章目录题目描述思路java参考代码go参考代码&#xff1a;题目描述 给你一个 m 行 n 列的矩…

力扣sql基础篇(三)

力扣sql基础篇(三) 1 查询结果的质量和占比 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # 把该列置为null的话,它就不会统计了 SELECT query_name,ROUND(sum(rating/position)/count(*),2) quality, ROUND(count(IF(rating<3,rating,null))/c…

【数据结构】—— Java实现双向链表

Java实现双向链表一、链表的概念及结构二、头指针与头结点的异同三、代码实现一、链表的概念及结构 我们在单链表中&#xff0c;有了next指针。这就使得我们查找下一个结点的时间复杂度为O(1)。可是我们要查找的是上一个结点的话&#xff0c;那最坏的时间复杂度就是O(n)了&…

用图记忆C语言中的运算符优先级

运算符优先级以及结合方向的统计表&#xff0c;网上到处可见。本文画了一张图&#xff0c;以便记忆&#xff01; 1. 总体来说优先级 初级运算 > 单目运算 > 双目运算 > 三目运算 > 赋值运算 > 逗号运算 2. 双目细分 算术运算 > 位移运算 > 关系运算 &g…

今年十八,基础过关

目录 前言 第一关&#xff1a;KEY在哪里 再加密一次你就得到key啦~ 猜猜这是经过了多少次加密&#xff1f; 据说MD5加密很安全&#xff0c;真的是么&#xff1f; 种族歧视 HAHA浏览器 key究竟在哪里呢&#xff1f; key又找不到了 冒充登陆用户​编辑 比较数字大小 就不让你…

Linux应用编程---14.UDP服务器、客户端编程

Linux应用编程—14.UDP服务器、客户端编程 ​ 之前有介绍过UDP是一种无连接、尽最大努力交付、面向报文的协议。应用层交给UDP多长的报文&#xff0c;UDP就照样发送。Linux下UDP属于数据报socket。数据报socket流程图如图1所示&#xff1a; 图1 数据报socket流程图 ​ 新引入的…

FourIE:一种最新联合事件抽取SOTA论文解读

Cross-Task Instance Representation Interactions and Label Dependencies for Joint Information Extraction with Graph Convolutional Networks 论文&#xff1a;Cross-Task Instance Representation Interactions and Label Dependencies for Joint Information Extractio…

Vue2的前端路由(vue-router)

一、路由 路由 (英文&#xff1a;router)就是页面地址与组件之间的对应关系 二、路由方式 服务器端路由、前端路由 三、前端路由 前端路由&#xff1a;地址和组件之间的对应关系&#xff0c;即由前端来维护一组路由规则&#xff08;地址和组件之间的对应关系&#xff09;&…

xlsx.utils.sheet_to_json的{ header: 1 }起的作用,header属性的研究

XLSX.utils.sheet_to_json 是为了把excel里面的数据解析出来&#xff0c;这是它的定义&#xff1a; 其中&#xff0c;worksheet表示特定表名的工作表&#xff0c;opts属于可要可不要的参数。 opts也有几种类型&#xff1a; export interface Sheet2JSONOpts extends DateNFOp…

selinux 控制

在某些Linux发行版上&#xff0c;默认情况下启用SELinux&#xff0c;如果不了解SELinux的工作原理以及如何配置它的基本详细信息&#xff0c;则可能会导致一些不必要的问题。一般强烈建议了解了SELinux 之后再去实现它。但是&#xff0c;在了解 SELinux 的实现细节之前&#xf…

由浅入深,详解ViewModel的那些事

Hi&#xff0c;你好 &#x1f603; 引言 关于 ViewModel &#xff0c;Android 开发的小伙伴应该都非常熟悉&#xff0c;无论是新项目还是老项目&#xff0c;基本都会使用到。而 ViewModel 作为 JetPack 核心组件&#xff0c;其本身也更是承担着不可或缺的作用。 因此&#x…