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

第2章C语言基本概念 练习题

2.1节
1.建立并运行由Kerighan和Ritchie编写的著名的“hello,world”程序:

#include <stdio.h> int main(void) { printf("Hello World"); return 0; }

2.2节
2.思考下面的程序:

#include <stdio.h> // 预处理指令 int main(void) { printf("Parkinson's Law: \nWork expands so as to "); // 输出语句 printf("fill the time\n"); // 输出语句 printf("available for its completion.\n"); // 输出语句 return 0; // 返回语句 }


(a)请指出程序中的指令和语句。
(b)程序的输出是什么?

2.4节
3.通过下列方法缩写程序dweight.c:

(1)用初始化式替换对变量height、length和width的赋值:

(2)去掉变量weight,在最后的printf语句中计算(volume +165)/166。

#include <stdio.h> int main(viod) { int heignt = 8,length = 12,width = 10, volume, weight; //声明变量 volume = heignt * length * width; printf("Dimensions:%d x %d x %d\n", heignt, length, width); //输出函数 printf("Volume:%d\n", volume); //输出函数 printf("Dimensional weight (pounds):%d\n", (volume + 165) / 166); //输出函数 return 0; //程序的正常结束 }

4.编写一个程序来声明几个int型和f1oat型变量,不对这些变量进行初始化,然后显示它们的值。这些值是否有规律?(通常情况下没有。

5.判断下列C语言标识符哪些是不合法的?
(a) 100_bottles
(b)_100_bottles
(c)onehundred bottles
(d) bottles_by_the_hundred_

答:a不合法,以为c语言中规定,标识符只能以 下划线、字母开头

6.为什么说在标识符中使用多个相邻的下划线(如current__balance)不太合适?

答:因为在阅读程序时很难分清到底有几个相邻的下划线,如current____balance和current_____balance,前者是4个下划线后者是5个下划线。在未来维护程序时不论是编写者本人还是他人,都容易弄混下划线的数量,造成不必要的混乱。

7.判断下列哪些是C语言的关键字?
(a) for
(b)If
(c)main
(d)printf
(e)while

答:只有(a)for和(e)while是关键字,其余全都不是。(b) If 是因为C语言区分大小写,所以If和if并不相同,if是关键字但是If不是。(c)main和(d)printf也不是关键字,main()函数是C语言自动调用的函数,但是我们依旧可以将变量命名为main(不建议这样做)。printf()则是我们头文件<stdio.h>内包含的函数,如果不调用这个头文件那么我们一样可以将变量命名为printf。总的来说只有在关键字表里的单词才是关键字,其余都不是关键字。

2.8节
8.下面的语句中有多少记号?
answer=(3*q-p*p)/3;,

答:14个记号,分别是answer、=、(、3、*、q、-、p、*、p、)、/、3、;。
9.在练习题8的记号之间插入空格,使该语句更易于阅读。

答:answer = (3 * q - p * p) / 3;
10.在dweight.c程序(2.4节)中,哪些空格是必不可少的?

答:程序当中出现两次的int后面空格不能少,return 0; 中间的空格不能少。程序其他部分的空格都是为了易于阅读而存在的,即使可去掉程序本身依旧能够正常执行,只是增加了阅读困难

编程题

1.编写一个程序,使用printf在屏幕上显示下面的图形:

int main(void) { printf(" *\n"); printf(" *\n"); printf(" *\n"); printf(" *\n"); printf("* *\n"); printf("* *\n"); printf(" *\n"); return 0; }

2.编写一个计算球体体积的程序,其中球体半径为10m,参考公式v=4/3πr ³。注意,分数4/3应写为4.0f/3.0f。(如果分数写成4/3会产生什么结果?)提示:C语言没有指数运算符,所以需要对r自乘两次来计算r ³。

3.修改上题中的程序,使用户可以自行录入球体的半径

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(void) { float r = 0.0f; printf("请输入立方值:"); scanf("%f", &r); printf("Sphere volume:%.2f cubic meters\n", 4.0f / 3.0f * 3.14f * r * r * r); return 0; }

4.编写一个程序,要求用户输入一个美金数量,然后显示出增加5%税率后的相应金额。格式如下所示:

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(void) { //声明变量 money 和 taxed_money并初始化 。money--金额 taxed_money 税后今日 float money = 0.0f; float taxed_money = 0.0f; printf("Enter an amount:"); //&取地址符拿到float变量money的地址 scanf("%f", &money); printf("debug money = %f\n", money);// 新增调试打印 //计算税后的金额 taxed_money = money * 1.05; //显示结果,使用.2f是因为题目中税后的金额只保留了两位小数 printf("With tax added: $%.2f\n", taxed_money); return 0; }


5.编程要求用户输入x的值,然后显示如下多项式的值:

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(void) { /* 声明并初始化变量x和计算结果result,选择float型是因为题目中没有说用户不能输入小数 */ float x = 0.0f; float result = 0.0f; /* 用户输入x的值,然后将值写入变量x中 */ printf("Enter the value of x:"); scanf("%f", &x); /* 计算公式的结果 */ /*result = 3 * x * x * x * x * x + 2 * x * x * x * x - 5 * x * x * x - x * x + 7 * x - 6;*/ result = ((((3 * x + 2) * x - 5) * x - 1) * x + 7) * x - 6; printf("The result is : % f", result); return 0; }

7.编写一个程序,要求用户输入一个美元数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款:

Enter a dollar amount: 93

$20 bills:4

$10 bills:1

$5 bills:0

$1 bills:3

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(void) { int amount = 0; int b20 = 0, b10 = 0, b05 = 0, b01 = 0; printf("Enter a dollar amount:"); scanf("%d", &amount); /* 因为要求是用最少张数付款,所以先用总金额除以20,得到的所需20美元的数量,再将总金额减去所需20美元后除以10,得到所需10美元数量,以此类推求出全部结果 */ b20 = amount / 20; amount = amount - 20 * b20; b10 = amount / 10; amount = amount - 10 * b10; b05 = amount / 5; amount = amount - 5 * b05; b01 = amount / 1; printf("\n$20 bills:%d\n$10 bills:%d\n $5 bills:%d\n $1 bills:%d\n", b20, b10, b05, b01); return 0; }

8.编程计算第一、第二、第三个月还贷后剩余的贷款金额:

Enter amount of loan: 20000.00

Enter interest rate:6.0

Enter monthly payment:386.66

Balance remaining after first payment:$19713.34

Balance remaining after second payment:$19425.25

Balance remaining after third payment:$19135.71

在显示每次还款后的余额时要保留两位小数。提示:每个月的贷款余额减去还款金额后,还需要加上贷款余额与月利率的乘积。月利率的计算方法是把用户输入的利率转换成百分数再除以12。

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(void) { float loan = 0.0f; float y_inter = 0.0f; float m_inter = 0.0f; float m_pay = 0.0f; //用户输入贷款金额、年利率、月还款数 printf("Enter amount of loan:"); scanf("%f", &loan); printf("Enter interest rate: "); scanf("%f", &y_inter); printf("Enter monthly payment: "); scanf("%f", &m_pay); //计算月利率,加1是因为如果直接是月利率乘以贷款金额得到的是利息,利息还要在加上贷款金额。加1之后可以直接求出贷款金额加利息后的结果 * m_inter = y_inter / 100 / 12 + 1; //求出第一个月还款的剩下金额 loan = loan * m_inter - m_pay; printf("Balance remaining after first payment: %.2f\n", loan); //求出第二个月还款之后的剩余金额 loan = loan * m_inter - m_pay; printf("Balance remaining after second payment: %.2f\n", loan); //求出第三个月还款之后的剩余金额 loan = loan * m_inter - m_pay; printf("Balance remaining after third payment: %.2f\n", loan); return 0; }
http://www.jsqmd.com/news/1257910/

相关文章:

  • 构建多币种会员订阅系统:支付集成、汇率处理与稳定性保障
  • Immich:私有化部署的Google Photos替代方案完整实践指南
  • 2026年四川立柱式悬臂吊厂家选购要点及靠谱供应方参考 - 品牌优推
  • ChatGPT、Codex、Plus与Pro:AI权限工程为什么比模型能力更重要?
  • Function Calling的语义理解优化:从意图识别到精准参数填充的完整链路
  • 阿里开源Page Agent:一行代码让网页听懂人话,实现自然语言交互
  • 2026年电力塔生产厂家怎么选 实用工程选购避坑全攻略 - 品牌优推
  • 从零开始设计riscv cpu九之降低LUT使用量语法技巧
  • 从LangChain入手:拆解AI Agent的ReAct循环与工程化实践
  • 江西高湖石手打粗糙面生产厂商 选购合作实用指南 - 品牌优推
  • AI生成社交媒体封面:3步搞定高点击率封面,新手5分钟上手,附12个Prompt黄金模板
  • 2026实地走访聊聊河南靠谱碎骨机生产厂家相关情况 - 起跑123
  • PLC控制气缸与电磁阀:从基础原理到工业自动化实战
  • Visa最新数据揭示2026年FIFA世界杯™如何在加拿大、墨西哥和美国催生“快闪经济”
  • 数据管道重构复盘:Lambda 到 Kappa 架构的演进与代价
  • ORB-SLAM3 Relocalization 2
  • Linux内核接班人计划:开源治理与单点故障解决方案
  • vivado使用那些事之优化时序利用implemention实现策略
  • 2026年佛山专业的汽车空气减震维修店铺联系方式 - 品牌排行榜
  • 石家庄本地防水补漏精选TOP5推荐:正规漏水检测维修公司上门师傅推荐:厕所/棚顶/屋面/飘窗/阳台/地下室/厨房渗漏水精准测漏维修(2026最新) - 即刻修防水
  • 城市道路景观升级需求 找北京道路花箱厂家全流程选型指南 - 品牌优推
  • Francisco Partners旗舰基金及Agility基金完成210亿美元募集
  • Immich私有化照片管理方案:自托管部署与功能详解
  • 深入学LangChain官方文档(二十二):Frontend 高级形态——Headless Tools、Time Travel 与 Generative UI
  • 2026年日常生产场景里接触到河南胶体磨生产厂家的点滴 - 起跑123
  • 2026珠海漏水检测维修本地口碑榜TOP5权威推荐-专业仪器精准测漏-正规防水补漏公司推荐:卫生间/厨房/屋顶/阳台/外墙渗漏水检测师傅上门 - 安佳防水
  • RISC-V U型与J型指令:大立即数编码原理与工程实践
  • Linux命令行系统观:从基础命令到问题排查的思维链路
  • 魔兽争霸3现代化升级指南:5大场景化解决方案重塑经典体验
  • 悟空AICRM Docker部署实战:从一键安装到生产级运维全解析