当前位置: 首页 > news >正文

《C语言程序设计(第五版)》谭浩强--第4章习题答案

1. 什么是算术运算?什么是关系运算?什么是逻辑运算?

算术运算指对数值进行数学计算的基本操作,包括加减乘除等;

关系运算用于比较两个值的大小或相等性,返回布尔值(TrueFalse);

逻辑运算用于组合或操作布尔值,如与或非。


2. C语言中如何表示"真"和"假"?系统如何判断一个量的"真"和"假"?

非0为真,0为假。

3. 写出下面各逻辑表达式的值。

(1)0;

(2)1;

(3)1;

(4)0;

(5)1 。


4. 有3个整数a,b,c,由键盘输入,输出其中最大的数。

#include<stdio.h> void main(){ int a,b,c,max; printf("请输入三个数:"); scanf("%d,%d,%d",&a,&b,&c); max = a; if(max < b) max = b; else if(max < c) max = c; printf("max = %d",max); }


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

#include<stdio.h> #include<math.h> void main(){ int i,j; printf("请输入一个小于1000的数:"); scanf("%d",&i); while(i >= 1000 || i <= 0){ printf("输入不符合要求,请重新输入:"); scanf("%d",&i); } j = (int)sqrt(i); printf("%d的平方根的整数部分是%d",i,j); }

6. 写程序,输入x的值,输出y相应的值。

#include<stdio.h> void main(){ int x,y; printf("输入x的值:"); scanf("%d",&x); if(x < 1) y = x; else if(x >= 1 && x < 10) y = 2x-1; else y = 3x-11; printf("y = %d\n",y); }

7. 观察和分析结果。

(2)正确。

8. 给出一百分制成绩,要求输出成绩等级'A','B','C','D',E'.90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'.

#include<stdio.h> void main(){ float score; char grade; printf("请输入成绩:"); scanf("%f",&score); switch((int)(score/10)){ case 10: case 9:grade = 'A';break; case 8:grade = 'B';break; case 7:grade = 'C';break; case 6:grade = 'D';break; case 5: case 4: case 3: case 2: case 1:grade = 'E';break; } printf("成绩是%3.1f,等级为%c\n",score,grade); }


9. 给一个不多于5位的正整数,要求:

1求出它是几位数;
2分别输出每一位数字;
3按逆序输出各位数字,例如原数为321,应输出123.

#include <stdio. h> #include <math. h> int main(){ int num,indiv,ten,hundred,thousand,ten_thousand,n; printf("请输入一个整数(0~99999):"); scanf("%d",&num); ten_thousand=num/10000; thousand=(int)(num-ten_thousand*10000)/1000; hundred=(int)(num-ten_thousand* 10000-thousand*1000)/100; ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10; indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10); if(ten_thousand != 0) n = 5; else if(thousand != 0) n = 4; else if(hundred != 0) n = 3; else if(ten != 0) n = 2; else n = 1; switch(n){ case 5:printf("位数:%d,每位数字为:%d,%d,%d,%d,%d",n,ten_thousand,thousand,hundred,ten,indiv); printf("\n反序数字为:"); printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand); break; case 4:printf("位数:%d,每位数字为%d,%d,%d,%d",n,thousand,hundred,ten,indiv); printf("\n反序数字为:"); printf("%d%d%d%d\n",indiv,ten,hundred,thousand); break; case 3:printf("位数:%d,每位数字为%d,%d,%d",n,hundred,ten,indiv); printf("\n反序数字为:"); printf("%d%d%d\n",indiv,ten,hundred); break; case 2:printf("位数:%d,每位数字为%d,%d",n,ten,indiv); printf("\n反序数字为:"); printf("%d%d\n",indiv,ten); break; case 1:printf("位数:%d,每位数字为%d",n,indiv); printf("\n反序数字为:"); printf("%d\n",indiv); break; } return 0; }


10. 企业发放的奖金根据利润提成。利润I低于或等于100 000元的,奖金可提成10%;利润高于100 000元,低于200000元(100 000<I200 000)时,低于100 000元的部分按10%提成,高于100000元的部分,可提成7.5%;200 000<I400 000时,低于200 000元的部分仍按上述办法提成(下同)。高于200 000元的部分按5%提成;400 000< I600 000元时,高于400 000元的部分按3%提成;600 000<I1 000 000时,高于600 000元的部分按1.5%提成;I>1 000 000时,超过1000000元的部分按1%提成。从
键盘输入当月利润I,求应发奖金总数。
要求:
(1)用if语句编程序;
(2)用switch语句编程序。

#include <stdio.h> int main(){ int i; double bonus,bon1,bon2,bon4,bon6,bon10; bonl = 100000*0.1; bon2 = bonl + 100000*0.075; bon4 = bon2 + 100000*0.05; bon6 = bon4 + 100000*0.03; bon10 = bon6 + 400000*0.015; printf("请输入利润i:"); scanf("%d",&i); if(i <= 100000) bonus=i * 0.1; else if (i <= 200000) bonus=bonl+(i - 100000)*0.075; else if(i <= 400000) bonus=bon2+(i - 200000)*0.05; else if (i <= 600000) bonus=bon4+(i - 400000)*0.03; else if(i <= 1000000) bonus=bon6+(i - 600000)*0.015; else bonus=bon10+(i-1000000)*0.01; printf("奖金是:%10.2f\n",bonus); return 0; }


11. 输入4个整数,要求按由小到大的顺序输出。

冒泡排序。


12. 有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1,见图4.17。这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建
筑高度(塔外的高度为零).

#include <stdio.h> int main(){ int h=10; float x1=2,y1=2,x2=-2,y2=2,x3=-2,y3=-2,x4=2,y4=-2,x,y,d1,d2,d3,d4; printf("请输入一个点(x,y):"); scanf("%f,%f",&x,&y); d1=(x-x4)*(x-x4)+(y-y4)*(y-y4); d2=(x-xl)*(x-xl)+(y-yl)*(y-yl); d3=(x-x2)*(x-x2)+(y-y2)*(y-y2); d4=(x-x3)*(x-x3)+(y-y3)*(y-y3); if (d1>1 && d2>1 && d3>1 && d4>1) h=0; printf("该点高度为%d\n",h); return 0; }
http://www.jsqmd.com/news/449894/

相关文章:

  • 一文讲透|当红之选的降AI率工具 —— 千笔·专业降AI率智能体
  • 1388: PIPI的逃跑路线Ⅳ
  • 基本复现:阶梯式碳交易机制与电制氢的综合能源系统热电优化
  • 为什么要关闭数据库连接,可以不关闭吗?
  • OpenAI发布GPT-5.4模型,朝自主智能体迈出重要一步
  • 女程序员如何高效率、不被骗地找到优质男友?——一份融合认知科学、行为心理学与系统化择偶策略的实战指南
  • 共享储能背景下微网运营商与用户聚合商间的Stackelberg博弈模型:MATLAB仿真与优化策略
  • 2026年汇总超声波液位计性价比高的品牌,值得收藏 - 工业品网
  • 计算机毕业设计之springboot大学生二手闲置物品置换交易管理系统
  • 亲测好用!2026 年私藏的 6 个 AI 论文写作宝藏网站
  • 郑州室内家装公司哪个靠谱,分享品牌推荐 - 工业设备
  • 帛书《周易》“泰壮”象不是《易经》“大壮”卦
  • OpenClaw 暴露面分析:当火爆的 AI 代理框架成为攻击者的“肥肉”
  • 基础算法题型——高精度
  • 采购供货货源供需抖音快手微信小程序看广告流量主开源
  • 韩语BERT模型详解[特殊字符]——KcBERT实战指南
  • Comsol 锂枝晶模型:探索锂离子电池枝晶生长的奥秘
  • MQ的运用
  • 华芯微特如何通过U盘烧写到外部flash
  • 【MacOS配置】——新Mac开发环境配置
  • 2026别错过!最受喜爱的AI论文网站 —— 千笔写作工具
  • Solidity 高级合约交互 3| 委托调用 (Delegatecall)
  • 苹果发布iPhone 17e和搭载M4芯片的新iPad Air
  • 唯品会购物额度合规回收全攻略(2026全方面总结) - 容易提小溪
  • 计算机毕业设计之jsp飞机订票系统
  • WordPress 文章如何更改作者
  • 时间序列趋势检验方法
  • 降重压力小了!全网爆红的降AI率软件 —— 千笔·降AIGC助手
  • C++学习笔记:类和对象
  • 打造直线电机12槽10极Maxwell模型:参数化之路