西北大学C语言课后习题第三章汇编
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印 选择题第一题
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
2.已知int x=10,y=20,z=30;以下程序执行后x、y、z的值是()
if(x>y) z=x;x=y;y=z;
A.x=10,y=20,z=30
B.x=20,y=30,z=30
二、改错题
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
1.下面程序用来计算如下公式的值,请修改程序错误
1 y(x) 0
1
(x 0) (x 0) (x 0)
书上题目
#include<stdio.h> void main() {
int x,y; scanf("%d",&x); y=-1; if(x!=0)
else printf("%d\n",m--);}
A.4
B.5
C.6
D.7
解答:此题考查自加自减语句的加减顺序。
对于m++,是先使用后加1。因为m的初值为5,if(m++>5)判断时使用的是m=5,判断后 m再自加1变成6。 所以m++>5不成立,此时判断后m=6,进入else部分 在else 的语句里printf("%d\n",m--),有一个m--。在printf中,如果遇到m++,m--,均将其视为m 对m的加减操作是在printf函数输出之后再一次性加减。 即当m=6时,printf("%d",m--),输出的结果是6,但输出后m就变成5了 答案:C 小扩展,printf配合m++等能出很多题。如m=4. printf("%d,%d,%d,%d",m++,++m,m--,m++) 试一试,结果你一定不信
C.x=20,y=30,z=10
D.x=20,y=30,z=20
解答:这个题目考查了if语句常用错误。 必须说明的是:if语句的作用范围仅限于它紧挨的那一条语句。 此题中if后面跟了三个赋值表达式,即z=x;x=y;y=z; 但只有第一个表达式z=x跟if函数有关。 也就是说,如果if为真,则z=x执行,if为假,z=x不执行 但不管if成立与否,后面的两个赋值表达式都会运行,因为if不会作用到它们身上 如果想整体运行,那么就必须加花括号把三个表达式作为一个整体 即 if(x>y) {z=x;x=y;y=z;} 因为x=10<y(y=20),所以z=x不执行,但x=y,y=z执行 所以x=20,y=30,z=30 答案:B
在第二个三目表达式中,对等号右边进行计算,因为m=1,y=3,m<y成立,所以将中间语句m的值
赋给新的m,即m还是等于1
在最后一个三目表达式中,m=1,z=4,m<z成立,仍执行中间的语句m,所以m=m=1
因此最后m的值为1
答案:A
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印 选择题第五题
C.算术表达式
D.任意表达式
解答:本题考查if语句 注意,这里问的是可以判断的“表达式”,有的表达式不一定有实际的意义但也可以判断 用一个简单的例子,if(a+b>2||a+b<0) {语句} 这里综合运用了关系表达式(大于关系和小于小于) 逻辑表达式(逻辑或) 算数表达式(a+b) 单独用每一个表达式也能有结果,具体见下一页的测试图 答案:D
m=(m<z)?m:z;
A.1
B.2
C.3
D.4
解答:本题考查三目表达式
对于三目表达式,如果第一个关系式成立,三目表达式的值是中间语句的值,如果不成立,则三
目表达式的值是最后一个语句的值
对题目中的三个三目表达式按顺序执行
开始时,w=1,x=2,w<x成立,则m的值等于中间语句的值(w),所以m=w=1;
C我语们言辅毕导业第三啦章
其实是答辩的标题地方
讲解人
吴慈航 化工学院2013级能源化学工程 西北大学学生校长助理,特等奖学金获得者
本内容仅作西北大学新ห้องสมุดไป่ตู้学习C语言使用,版权所有,请勿私自翻印
配套教材见右图
本章讲解选择题和程序设计题
一、选择题
每题后一页均附有相应的源程序和执行结果
选择题参考答案预览
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印 选择题第二题
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
3.下列程序执行后的输出结果是()
#include<stdio.h>
void main()
{ int m=5;
if(m++>5) printf("%d\n",m);
1-5 DBCBA
注意
为简化程序长度,所有源程序中均删除 #include<stdlib.h>和system("pause")代码
不影响最终的结果,请大家注意
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
1.在"if(表达式)"语句中,可以判断的“表达式”是()
A.关系表达式
B.逻辑表达式
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印 选择题第四题
编译出现错误
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
5.若w,x,y,z,m均为int型变量,则执行下列语句后m的值是()
w=1;x=2;y=3;z=4;
m=(w<x)?w:x;
m=(m<y)?m:y;
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印 选择题第三题
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
4.以下语法不正确的语句是()
A. if(x>y);
B. if(x=y)&&(x!=0) x+=y;
C. if(x!=y) scanf("%d",&x); else scanf("%d",&y);
D. if(x<y) {x++;y++;}
解答:本题考查if语句的语法 if语句的基本形式为: if(表达式) 语句1;
else 语句2; 注意,if后面的表达式是用括号括起来的 对于选项B,if语句中的表达式是一个逻辑与结构,但缺少括号,应该改为: if((x=y)&&(x!=0)) x+=y; 这个里面还要注意的是,逻辑与的两边是 (x=y)&&(x!=0),对于左半部分(x=y)的意思是 将y的值赋给x,然后看这个值是否为真(非0即为真) 这里不去追究到底是应该用(x==y)还是(x=y),但语法上这两个表达式都可以进行判断 答案:B
C语言课后习题参考答案(教材第三版 第七章以后只有选择填空题答案)[1]
第一章习题参考答案一、单项选择题1. C2. B3. B4.C5. D6. A7. C8. A二、填空题1. 判断条件2. 面向过程编程3. 结构化4. 程序5. 面向对象语言6. 基本功能操作控制结构7. 有穷性8. 直到型循环结构9. 算法10. 可读性11. 模块化12. 对问题的分解和模块的划分第二章习题参考答案一、单项选择题1. B2. D3. C4. B5. A6. A7. B8. C二、填空题1. 主2. C编译系统3. 函数一个主函数和若干函数4. 输入输出5. 以.h为扩展名的头文件6. .obj7. 库函数8. 文本第三章习题参考答案一、单项选择题1. D2. B3. A4. C5. C6. D7. B8. D9. B 10. C11. A 12. D 13. C 14. C 15. C16. C 17. B 18. C 19. C 20. D21. A 22. D 23. D 24. D A 25. D26. A二、填空1. 补码2. 取绝对值为10-308~1030815~16位3. 0或14. 赋值右向左5. 函数调用6. 65,89三、应用题1. 10 92. 111213. 区别是:求负:单目,右结合-a+b减法:双目,左结合a-b取地址:单目,右结合&a按位与:双目,左结合a&b第四章习题参考答案一、单项选择题1. D2. C3. D4. A5. D6. B7. A8. C9. B 10. B二、填空题1.一条;2. 5.1690003.(1)-200 2500(2)i=-200,j=2500(3)i=-200j=25004. a=98, b=765.000000, c=4321.0000005. 三种可能的输入是:(1)100<回车> 25.81<回车> 1.89234<回车>(2)100<空格> 25.81<空格> 1.89234<回车>(3)100<TAB > 25.81<TAB > 1.89234<回车>6. 0,0,37. 38. 输入语句是:scanf("%lf%lf%lf",&a,&b,&c);9. 13 13.000000 13.00000010. 3种方法:(1) 增加一个临时变量t。
C语言课后题编程标准答案(可编辑修改word版)
C 语言课后题编程答案所有章节的课后习题的选择题和填空题大家必须熟练掌握,编程题掌握到第九章即可。
希望大家通过课后的编程题熟悉典型的编程算法,掌握基本的编程思路,注意编程细节。
第3 章3-17编写程序,把560 分钟换算成用小时和分钟表示,然后进行输出。
#include<stdio.h>main(){int h,m。
h=560/60。
m=560%60。
printf(“560 分钟可转换成%d 小时%d 分钟”,h,m)。
}程序总结:(1)只要在程序中用到系统提供的库函数,必须把库函数所在的头文件用#include 命令包含进来。
否则库函数的使用无效。
输入输出库函数的头文件是:stdio.h。
数学函数的头文件是:math.h。
字符处理函数的头文件是:ctype.h。
字符串处理函数的头文件是:string.h。
(2)注意C 语言中的“/”和“%”两种运算符。
“/”的运算结果取决于两操作数的类型。
比如:1/2=0(与数学中不同,结果与操作数的类型一致,所以结果只取商值),1.0/2=0.5(除之前2 要自动类型转换成2.0,因为只有同类型的操作数才能进行除运算), 1/2.0=0.5, 1.0/2.0=0.5。
“%”的两个操作数都必须是整数。
(3)printf(“560分钟可转换成%d 小时%d 分钟”,h,m)。
printf 第一个参数要尽量详细,这样可以提高输出结果的可读性,恰当好处的添加提示性信息,可以提高程序的质量。
(4)i nt h,m。
变量起名要有艺术性,尽量做到见名知意。
3-18编写程序,输入两个整数,1500 和350,求出它们的商和余数并进行输出。
#include<stdio.h>main(){int a,b,m,n。
printf(“请输入两个整数:\n”)。
scanf(“%d%d”,&a,&b)。
m=a/b。
n=a%b。
printf(“%d 除以%d 商%d 余%d”,a,b,m,n)。
数据结构(C语言版)第三章习题解答
第三章习题解答1.分别写出对链栈的入栈和出栈操作的算法。
链栈的结点类型定义如下:Typedef struct stacknode {SElemtype data;struct stacknode *next;}stacknode, *linkstack;入栈操作:Status push( linkstack &S, SElemtype e){ p=(linkstack)malloc(sizeof(stacknode));If (!p) return ERROR;p->data=e;p->next=S;S=p;return OK;}出栈操作:Status pop(linkstack &S, SElemtype &e){ if (!S) return ERROR;p=s;s=p->next;free(p);return OK;}P24/3.15假设以顺序存储结构实现一个双向栈,即在一维数组的存储空间中存在着两个栈,它们的栈底分别设在数组的两个端点。
试编写实现这个双向栈tws的三个操作:初始化inistack(tws),入栈push(tws,i,x)和出栈pop(tws,i)的算法,其中i为0或1,用以分别指示设在数组两端的两个栈,并讨论按过程(正/误状态变量可设为变参)或函数设计这些操作算法各有什么优缺点。
双栈的结构类型定义如下:typedef struct{Elemtype *base[2];Elemtype *top[2];}BDStacktype; //双向栈类型栈的初始化操作:status Init_Stack(BDStacktype &tws,int m)//初始化一个大小为m的双向栈tws{ tws.base[0]=(Elemtype*)malloc(m*sizeof(Elemtype));tws.base[1]=tws.base[0]+m-1;tws.top[0]=tws.base[0];tws.top[1]=tws.base[1];return OK;}入栈操作:Status push(BDStacktype &tws,int i,Elemtype x) // x入栈,i=0表示低端栈,i=1表示高端栈{ if (tws.top[0]>tws.top[1]) return OVERFLOW;//注意此时的栈满条件if (i==0) *tws.top[0]++=x;elseif (i==1) *tws.top[1]--=x;else return ERROR;return OK;}出栈操作:Status pop(BDStacktype &tws, int i, Elemtype &x) // x出栈,i=0表示低端栈,i=1表示高端栈{ if (i==0){ if (tws.top[0]==tws.base[0]) return OVERFLOW;x=*--tws.top[0];}else if (i==1){ if (tws.top[1]==tws.base[1]) return OVERFLOW;x=*++tws.top[1];}else return ERROR;return OK;}P24/3.18试写一个判别表达式中开、闭括号是否配对出现的算法。
c语言第三章习题答案
2 #include <stdio.h> int main() {
double tax,rate,deduction; int salary;
printf("输入月薪(0<=月薪):"); scanf("%d",&salary); if(salary<=3500){
rate=0; deduction=0; } else if(salary<=5000){ rate=0.03; deduction=0; } else if(salary<=8000){ rate=0.1; deduction=105;
}else if(salary<=83500){ rate=0.3; deduction=5505;
} else{
rate=0.45; deduction=13505; }
tax=rate*(salary-3500)-deduction; printf("个人所得税=%.2lf\n",tax);
return 0;
第三章 1 #include <stdio.h> #include <math.h> void main() {
double area,permeter; double a,b,c,s; printf("输入三角形的三边长:"); scanf("%lf%lf%lf",&a,&b,&c); s=(a+b+c)/2.0; if(a+b>c&&a+c>b&&b+c>a){
}
4#include <stdio.h> int main() {
C语言习题-答案.docx
C语言章节习题目录C语言章节习题 (1)第一章C语言概述 (2)第三章数据类型、运算符和表达式 (3)笫四章顺序结构程序设计 (4)第五章选择结构程序设计 (10)第六章循环结构程序设计 (17)第7章数组习题 (25)第8章函数习题 (33)笫九章预处理 (40)第十章指针 (41)第一章c语言概述一、选择题:1、一个C程序的执行是从(A)。
A本程序的main函数开始,到main函数结束B木程序文件的第一•个函数开始,到木程序文件的最后一•个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到木程序main函数结束2、在C语言中,每个语句必须以(D)结束。
A. 回车符B.冒号C.逗号D.分号3、C语言规定:在一个源程序中,main函数的位置(C)。
A. 必须在最开始B.必须在系统调用的库函数的后面C. nJ以任意D.必须在最后4、一个C语言程序是由(B)oA. 一个主程序和若干子程序组成B.函数组成C.若T过程组成D.若干子程序组成5、下列说法中错误的是(D)。
A.主函数可以分为两个部分:主函数说明部分和主函数体B.主函数可以调用任何非主函数的其他函数C.任何非主函数可以调用其他任何非主函数D.程序可以从任何非主函数开始执行6、用C语言编写的源文件经过编译,若没冇产生编译错误,则系统将(B)。
A. 生成可执行目标文件B.生成目标文件C.输出运行结果D.自动保存源文件二、填空题:1、C语言只有(37)个关键字和(9)种控制语句。
2、每个源程序有且只有一个(main)函数,系统总是从该函数开始执行C语言程序。
3、C语言程序的注释可以出现在程序中的任何地方,它总是以(\*)符号作为开始标记,以(笛)符号作为结束标记。
4、C语言屮,输入操作是由库函S(scanf)完成的,输出操作是由库函数(printf)完成的。
5、系统默认的C语言源程序文件的扩展名是(・c),经过编译后生成的目标文件的扩展名是(.obj), 经过连接后生成的可执行文件的扩展名是(・exe ) o6、C语言的标识符只能由字母、数字和(下划线)三种字符组成。
程序设计基础-c语言-第三章程序结构-教材习题答案-科学出版社.doc
程序设计基础-C语言(科学出版社教材)第三章-程序结构教材习题答案1.0编写程序使整形变量:a=3,b=4,c=5,p=0xfffe,q=0xffff;浮点型变量:x=1.2,y=2.4,z=3.6;无符号型变量:u=5127486,n=128765,字符型变量:c1=’a’,c2=’b’;#include <stdio.h>void main(){int a,b,c,p,q;float x,y,z;unsigned int u,n;char c1,c2;a=3;b=4;c=5;p=0xfffe;q=0xffff;x=1.2;y=2.4;z=-3.6;u=5127486;n=128765;c1='a';c2='b';printf("a=%d b=%d c=%d\n",a,b,c);printf("p=%#x q=%#x\n",p,q);printf("x=%f,y=%f,z=%f\n",x,y,z);printf("x+y=%.2f y+z=%.2f x+z=%.2f\n",x+y,y+z,x+z);printf("u=%8u n=%8u\n",u,n);printf("c1='%c' or %d\n",c1,c1);printf("c2='%c' or %d\n",c2,c2);}2.0 读入三个双精度数,求出它们的平均值并保留此平均值小数点后二位,最后输出结果。
#include <stdio.h>void main(){double a,b,c,d;printf("请输入三个双精度数:");scanf("%lf,%lf,%lf",&a,&b,&c);d=(a+b+c)/3;printf("d=%.2lf",d );}3.0 编写一个程序,要求输入三个整数值a,b,c,把c中的值赋给b, 把b中的值赋给a, 把a中的值赋给c,最后输出a,b,c.#include <stdio.h>void main(){int a,b,c,t;printf("输入三个整数值:");scanf("%d,%d,%d",&a,&b,&c);t=a;a=b;b=c;c=t;printf("a=%d,b=%d,c=%d\n",a,b,c);}4.0 编写一个程序,要求输入一个华氏温度,输出对于的摄氏温度。
西北大学C语言课后习题第三章汇编
printf("x=%d,y=%d\n",x,y); }
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
2.下面程序按百分制计分,100分显示满分,90~99显示优秀,80~89显示优良,70~79显示良好,
60~69显示及格,59分以下显示不及格,请修改程序错误
case x=5:
解析: 这个题目错误太多,罗列一下给大家看。 (1)scanf("%d",x),缺少一个&,是&x (2)switch(x)后面没有分号 (3)case后面直接连数值,不用x=,应是 case 10 (4)printf("优秀")后面应是分号,题目写冒号 (5)case x=6后面应是冒号,不是分号(x=6也有错) (6)后面case 5,4,3,2,1,0太麻烦,直接用default就代 表了所有的其他情况 (7)更重要的一个错误,每个case后面应该接break, 否则程序会一直往下一个case执行。 在修改了其他错误,不加break,输出的结果是这样
不影响最终的结果,请大家注意
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
1.在"if(表达式)"语句中,可以判断的“表达式”是()
A.关系表达式
B.逻辑表达式
C.算术表达式
D.任意表达式
解答:本题考查if语句 注意,这里问的是可以判断的“表达式”,有的表达式不一定有实际的意义但也可以判断 用一个简单的例子,if(a+b>2||a+b<0) {语句} 这里综合运用了关系表达式(大于关系和小于小于) 逻辑表达式(逻辑或) 算数表达式(a+b) 单独用每一个表达式也能有结果,具体见下一页的测试图 答案:D
C语言第三章习题带答案-2012.10.9更新
练习3-1答案一、选择题1.在C语言库函数中,可以输出double型变量x值的函数是( D )。
A.getchar B.scanf C.putchar D.printf 2.执行语句:printf("The program\'s name is c:\\tools\book.txt");后输出是( D )。
A.The program's name is c:tools book.txtB.The program's name is c:\tools book.txtC.The program's name is c:\\tools book.txtD.The program's name is c:\toolook.txt3.以下程序的输出结果是( D )。
(注:□表示空格)main(){printf("\n*s1=%15s*", "chinabeijing");printf("\n*s2=%-5s*", "chi");}A.*s1=chinabeijing□□□* B.*s1=chinabeijing□□□*s2=**chi* *s2=chi□□*C.*s1=*□□chinabeijing* D.*s1=□□□chinabeijing* *s2=□□chi* *s2=chi□□*4.选择程序的运行结果,①是( B )、②是( B )、③是( D )、④是( C )。
#include<stdio.h>main(){int a=-10, b=-3;printf("%d\n", a%b); /*输出①*/printf("%d\n", a/b*b); /*输出②*/printf("%d\n", -a%b); /*输出③*/printf("%d\n", a-=b+++1); /*输出④*/}①A.-2 B.-1 C.0 D.1②A.-10 B.-9 C.-8 D.0③A.-2 B.-1 C.0 D.1④A.-10 B.-9 C.-8 D.-75.以下C程序正确的运行结果是( D )。
c语言详解(第五版)第三章程序设计项目答案
c语言详解(第五版)第三章程序设计项目答案1.假设买一辆车首付为500dollar。
请计算月供。
#include<stdio.h>#include<math.h>#include<stdlib.h>int main(void){double capital_sum,monthly_interest_rate,initial_payment,temp,payment,terms; printf("Please enter the price of the car>>");scanf("%lf",&capital_sum);printf("Please enter the monthly interest rate>>");scanf("%lf",&monthly_interest_rate);printf("Please enter the terms duration of loan>>");scanf("%lf",&terms);printf("Please enter the initial_payment>>");scanf("%lf",&initial_payment);temp=1+monthly_interest_rate;payment=(capital_sum-500)*monthly_interest_rate/(1-pow(temp,-terms));printf("The monthly contribution is %.2f dollars.",payment);printf("The capital sum is %.2f dollars.",capital_sum);system("pause");return 0;}2.编写两个函数,一个显示三角形,另一个显示矩形。
C语言第3章课后习题答案PPT课件
}2020/10/13
4
谢谢您的指导
THANK YOU FOR YOUR GUIDANCE.
感谢阅读!为了方便学习和使用,本文档的内容可以在下载后随意修改,调整和打印。欢迎下载!
汇报人:XXXX 日期:20XX年XX月XX日
5
printf("x=%3d,y=2*x+1=%d\n",x,y);
}
else
/*若x≥10*/
{ y=3*x+2;
printf("x=%3d,y=3*x+2=%d\n",x,y);
}
}
2020/10/13
2
程序如下: #include <stdio.h>
【习题3-13】答案
void main( )
printf("total=%f",money);
} 2020/10/13
3
【习题3-14】方法1
#include<stdio.h>
void main()
{ char chr;
char password;
chr=getchar();
password=chr+6;
if(chr<=90)
{ if(password>90)
password=(password%91)+'A';
else
password=password%91;
}
else
{ if(password>=123)
password=(password%123)+'a';
else
password=password%123;
