西北大学C语言课后习题第三章

赋给新的m,即m还是等于1 在最后一个三目表达式中,m=1,z=4,m<z成立,仍执行中间的语句m,所以m=m=1 因此最后m的值为1
答案:A
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
选择题第五题
二、改错题
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
1.下面程序用来计算如下公式的值,请修改程序错误
解答:本题考查三目表达式
对于三目表达式,如果第一个关系式成立,三目表达式的值是中间语句的值,如果不成立,则三
目表达式的值是最后一个语句的值 对题目中的三个三目表达式按顺序执行 开始时,w=1,x=2,w<x成立,则m的值等于中间语句的值(w),所以m=w=1;
在第二个三目表达式中,对等号右边进行计算,因为m=1,y=3,m<y成立,所以将中间语句m的值
解答:这个题目考查了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
C 语言辅导第三章 我们毕业啦
其实是答辩的标题地方
吴慈航 讲解人 化工学院2013级能源化学工程 西北大学学生校长助理,特等奖学金获得者
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
配套教材见右图
本章讲解选择题和程序设计题
一、选择题
每题后一页均附有相应的源程序和执仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
1.从键盘输入三条边长a,b,c,若它们能组成三角形,则用下列公式计算三角形的 面积,按题意编程:
p (a b c)/2
解析:
s
p( p a)( p b)( p c)
首先,分析这个程序的流程。要计算三角形的面积,首先要判断它是否能构成三角形 而三角形的判断方法是两短边之和大于第三边,所以需要把三角形的三个边长排序,这里我们 设定的是a<b<c。 所以,如果a>b,就将a和b的值交换(a中存入a,b中较小者)
本内容仅作西北大学新生学习C语言使用,版权所有,请勿私自翻印
2.下面程序按百分制计分,100分显示满分,90~99显示优秀,80~89显示优良,70~79显示良好, 60~69显示及格,59分以下显示不及格,请修改程序错误
#include<stdio.h> void main() { int x; printf("请输入成绩:"); scanf("%d",x); x=x/10; switch(x); case x=10: printf("满分"); case x=9: printf("优秀"): case x=8: printf("优良"); case x=7: printf("良好"); case x=6; printf("及格"); case x=5: case x=4: case x=3: case x=2: case x=1: case x=0: printf("不及格"); }
正解
#include<stdio.h> void main() { int x; printf("请输入成绩:"); scanf("%d",&x);(这里应该是&x,有&) x=x/10; switch(x)(没有分号) { case 10: printf("满分");break; case 9: printf("优秀");break; case 8: printf("优良");break; case 7: printf("良好");break; case 6: printf("及格");break; default: printf("不及格");break; } }
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) if(x>0); y=1; else; y=-1; printf("x=%d,y=%d\n",x,y); }
C.6
D.7
本内容仅作西北大学新生学习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++;}
#include <stdio.h> #include <math.h> void main() { float a,b,c,p,s; printf("请输入三角形三条边长a,b,c,用逗号隔开\n"); scanf("%f,%f,%f",&a,&b,&c); if(a>b) {a+=b;b=a-b;a=a-b;} if(a>c) {a+=c;c=a-c;a=a-c;} if(b>c) {b+=c;b=b-c;c=b-c;} if(a+b<=c) //三角形两边之和大于第三边 printf("不可以构成三角形\n"); else { p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("三角形面积是%.3f\n",s); } }
注意,这里的交换代码用的不是大家熟悉的{t=a;a=b;b=t;},这里不想引入新的变量
所以用了{a+=b;b=a-b;a=a-b;},这个代码在前一章的选择题出现过。 然后,再将a和c比较,如果a<c,将a,c交换,确保a中是最小的 最后,还要将b.c进行比较,确保次小的存在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; m=(m<z)?m:z; A.1 B.2 C.3 D.4
解答:本题考查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
解答:此题考查自加自减语句的加减顺序。 对于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++) 试一试,结果你一定不信
解答:本题考查if语句 注意,这里问的是可以判断的“表达式”,有的表达式不一定有实际的意义但也可以判断 用一个简单的例子,if(a+b>2||a+b<0) {语句} 这里综合运用了关系表达式(大于关系和小于小于) 逻辑表达式(逻辑或) 算数表达式(a+b) 单独用每一个表达式也能有结果,具体见下一页的测试图 答案:D
解析: 这个题目错误太多,罗列一下给大家看。 (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]

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语言版)习题集答案 第三章

数据结构(C语言版)习题集答案 第三章

习题三3.1 3.10 3.133.5 3.6 3.15 3.17 3.19 3.243.29 3.313.5(1)给定操作序列P1P2P3…P i…P n(P k为S或X,k=1,2,…n )是合法的,当且仅当满足下列条件:a. 序列中包含的S的个数和X的个数相等;b. 对于任意的j(1≤j≤n);有P1P2P3…P j子序列中所包含的S的个数大于等于X的个数;(2)证明:设P1P2P3…P i…P n ,Q1Q2Q3…Q i…Q n是两个不同的合法序列;∵两者不同,∴ k=min{i| P i≠Q i , 1≤i≤n }且k>1, P k≠Q k(因P1,Q1肯定是S,否则不合法!)即,P1P2P3…P k-1 和Q1Q2Q3…Q k-1是相等的,但P k≠Q k由此可知:两个操作序列在前k-1步操作后输出序列和栈中所剩元素均相同,由于P k≠P k不妨设P k=X,而Q k=S;这样,在操作序列P1P2P3…P i…P n中的第k-1步后输出的第一个元素是目前栈中的元素,而对于操作序列Q1Q2Q3…Q i…Q n中的第k-1步后输出的第一个元素是目前还在栈外的元素。

所以输出序列不同。

即两个不同的合法操作序列,不可能得到相同的输出序列。

证毕!3.6 用反证法证明:假设存在这样的输出序列,P1…Pi…Pj…Pk…Pn,满足i<j<k,使Pj<Pk<Pi;因Pi 在这三个数中最大,且Pi最先出栈,按照题意所给进栈顺序,在Pi出栈时Pj 和Pk都还在栈中;又因,Pj <Pk,所以Pj比Pk先进栈,则出栈顺序应该是Pk先出栈而不是Pj先出栈,矛盾!证毕!3.10(1) 输出序列为:0,5,9,12,14,15(2)由于输入的数据个数不定,采用单链表存储输入的元素,又因是先输入的,后累加到累加器里,所以用链栈的形式存储。

(类型定义与书本上第二章相同)void test( ){LinkList L ,P;int x,sum;L=NULL; //建立空链表sum=0;printf(sum);scanf(x);//读入第一个数while(x){P=(LinkList)malloc(sizeof(LNode));//产生一个结点P->data=x;P->next=L; L=P;//插入在链头scanf(x);//读下一个数}while(L){sum+=sum+L->data;//取值累加printf(sum);//输出P=L->next; free(L); L=P;}}3.15 所用类型定义如下:#define Stack_Init_Size 100typedef struct stack{SElemType base0,base1,*top0,*top1;int StackSize ;} DuSqStack;void Inistack(DuSqStack &tws){tws.base0=( SElemType*)malloc(Stack_Init_Size*sizeof(SElemType));if(!tws.base0) exit(OVERFLOW);tws.top0= tws.base0;tws.base1=tws.top1=tws0.base0+ Stack_Init_Size-1;tws.StackSize= Stack_Init_Size;}// InistackStatus Push( DuSqStack &tws ,int i , SElemType x){//将元素x插在第i个栈中if (tws.top0>tws.top1) return (OVERFLOW);switch(i){case 0: *tws.top0=x; tws.top0++;break;case 1: *tws.top1=x; tws.top1--;break;}return OK;}// PushStatus Pop( DuSqStack &tws ,int i , SElemType &x){//将第i个栈的栈顶元素弹出,由x带回switch(i){case 0: if(tws.base0==tws.top0) return ERROR; x=*(--tws.top0);break; case 1: if(tws.base1==tws.top1) return ERROR; x=*(++tws.top0);break; }return OK;}// Pop3.17Status judge( ){//判断输入的字符序列是否为型如序列1&序列2,其中序列2是序列1的逆序列InitStack(S); 初始化栈Sc=getchar( );//读第一个字符while(c!= '&'&&c!= '@'){push(s,c); c=getchar( );}if(c!= '&') return FALSE;c=getchar( );//读下一个while(c!= '@'&& !EmptyStack(s)){pop(s,e);if(c!=e) return FALSE;c=getchar( );}if(c== '@'&& EmptyStack(s)) return TRUE;return FALSE;}// judge3.19Status judged(SqList L){//L为数据元素类型为字符的顺序存储的线性表,表示一个表达式,判断该表达//式的括号是否匹配InitStack(S);//初始化栈Sfor(j=0;j<L.length;j++){switch(L.elem[j]){case ‘(‘:case ‘[‘:case ‘{‘: push(S, L.elem[j]) ;break;case ‘)’:case ‘]’:case ‘}’: if(EmptyStack(S) return FALSE;else{ Pop(S,e);switch(L.elem[j]){case ‘)’:if(e!=’(‘ ) return FALSE;break;case ‘]’:if(e!=’[‘ ) return FALSE;break;case ‘}’:if(e!=’{‘ ) return FALSE;break;}}}}if(EmptyStack(S) return TRUE;else return FALSE;}// judged3.24int g(int m,int n){// 不考虑输入参数的非法性if(m==0 && n>=0) return 0;else if(m>0 && n>=0) return (g(m-1,2*n)+n);}// g3.29 类型定义#define MAX_Init_Size 100typedef struct {QElemType *base;int front,rear ,tag;} SqQueue;Status InitQueue(SqQueue &Q ){//初始化一个队列Q.base=( QelemType* )malloc(MAX_Init_Size*sizeof(QelemType));If(!Q.base) exit(OVERFLOW);G.front=Q.rear=Q.tag=0;//表示队列为空return OK;}// InitQueueStatus EnQueue(SqQueue &Q , QelemType x){//将元素x入队列, 若队列满则返回函数值ERROR,否则返回OKif((Q.front==Q.rear)&&(Q.tag==1)) return ERROR;Q.base[Q.rear]=x;Q.rear=(Q.rear+1)%MAX_Init_Size;if(Q.front==Q.rear) Q.tag=1;//尾指针追上头指针return OK;}// EnQueueStatus DelQueue(SqQueue &Q , QelemType &x){//删除队头元素,让x带回,若队列为空则返回函数值ERROR,否则返回OK if((Q.front==Q.rear)&&(Q.tag==0)) return ERROR;x=Q.base[Q.front];Q.front= (Q.front+1)% MAX_Init_Size;if(Q.front==Q.rear) Q.tag=0;//头指针追上尾指针return OK;}//DelQueue3.31Status Ispalindrome ( ){//判断输入的字符序列是否为回文,是返回TRUE ,否则返回FALSE InitStack(S);// 初始化栈SInitQueue(Q);//初始化一个队列Qc=getchar( );//读第一个字符while(c!= '@'){push(S,c); //入栈EnQueue(Q,c);//入队列c=getchar( );}while(!EmptyStack(S)){Pop(S,e);DelQueue(Q,c);if(c!=e) return FALSE;}return TRUE;}// Ispalindrome3.24Status g(int m,int n,int &s)//求递归函数g的值s{if(m==0&&n>=0) s=0;else if(m>0&&n>=0) s=n+g(m-1,2*n);else return ERROR;return OK;}//g3.29Status EnCyQueue(CyQueue &Q,int x)//带tag域的循环队列入队算法{if(Q.front==Q.rear&&Q.tag==1) //tag域的值为0表示"空",1表示"满" return OVERFLOW;Q.base[Q.rear]=x;Q.rear=(Q.rear+1)%MAXSIZE;if(Q.front==Q.rear) Q.tag=1; //队列满}//EnCyQueueStatus DeCyQueue(CyQueue &Q,int &x)//带tag域的循环队列出队算法{if(Q.front==Q.rear&&Q.tag==0) return INFEASIBLE;Q.front=(Q.front+1)%MAXSIZE;x=Q.base[Q.front];//if(Q.front==Q.rear) Q.tag=1; //队列空return OK;}//DeCyQueue分析:当循环队列容量较小而队列中每个元素占的空间较多时,此种表示方法可以节约较多的存储空间,较有价值.。

c语言答案第三章

c语言答案第三章

第三章计习题解答3.1 用C语言描述下列命题。

(1) a小于b或小于c。

(2) a和b都大于c。

(3) a和b中有一个小于c。

(4) a是非正整数。

(5) a是奇数。

(6) a不能被b整除。

(7) 角A在第一或第三象限。

(8) a是一个带小数的正数,而b是一个带小数的负数。

[解答](1)a<b || a<c(2)a>c && b>c(3)a<c && b>=c || a>=c && b<c(4)a==(int)a && a<=0(5)a%2==1(6)a%b!=0(7)0<fmod(A,2*PI) && fmod(A,2*PI)<PI/2 || PI<fmod(A,2*PI) && fmod(A,2*PI)<3*PI/2(其中PI=3.14159265为圆周率)(8)a-(int)a>0 && b-(int)b<03.2 写出下列表达式的值。

(1) 1<4 && 4<7(2) 1<4 && 7<4(3) !(2<=5)(4) !(1<3)||(2<5)(5) !(4<=6) && (3<=7)[解答](1) 1 (2) 0 (3) 0 (4) 1 (5) 03.3 若x=3,y=z=4,求下列表达式的值。

(1) (z>=y>=x)? 1:0(2) z>=y && y>=x[解答](1) 0 (2) 13.4 若x=3,y=2,z=1,求下列表达式的值。

(1) x<y? y:x(2) x<y? x++:y++(3) z+=(x<y?x++:y++)[解答](1) 3 (2) 2 (3) 33.5 写出下面程序段的输出结果。

数据结构(C语言版)第三章习题解答

数据结构(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语言第三章习题答案

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语言习题-答案.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语言课后习题第三章汇编

else(还要考虑x=0情况) y=0;
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语言第三章答案

第三章数据类型和表达式3.1 把数学算式或不等式表示成C++表达式1.2x 2.3.4.5.6.7.0(x(20 8.ax-by≠c9.4x+7y-2=3ab 10.(5同时3x+2≠0 11.age(55或者pay(820 12.place="江苏"同时sex="女" 13.'a'(ch('z'或者'A'(ch('Z'14.s[2]='0'同时(s[1]='x' 或者 s[1]='X')参考解答:1.2*x*(1+x*x/3.0)2.(1+exp(x))/(1-exp(x))3.(-b+sqrt(b*b-4*a*c))/(2*a)4.1/(pow(3,x)*log(2*x+k))5.pow(sin(x+PI/4),3)/(3+pow(cos(x-PI/4),3)) //其中PI常量为3.14159 6.1/7.0*pow((1+exp(x+1)),n)7.x>=0 && x<=208.a*x-b*y!=c9.4*x+7*y-2==3*a*b10.fabs((2*x*x+1)/(3*x+2))<=5 && (3*x+2!=0)11.age>=55 || pay>=82012.place=="江苏" && sex=="女"13.(ch>='a' && ch<='z') || (ch>='A' && ch<='Z')14.s[2]=='0' && (s[1]=='x' || s[1]=='X')3.2 根据题目要求编写程序1.已知一个三角形中三条边的长度分别为a、b和c,试编写一个程序利用计算公式求出三角形的面积,其中s=(a+b+c)/2,假定a、b和c的值由键盘输入,并确保任何两边的长度大于等于第三条边。

第3章习题参考答案

第3章习题参考答案第3章 程序设计初步习题参考答案1、(略)2、解#include <iostream>#include <iomanip>using namespace std;const float pi=3.1415926; //也可定义为符号 #define pi 3.1415926void main ( ){float h,r,l,s,sq,vq,vz;cout<<"please enter r,h:";cin>>r>>h;l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;vq=3.0/4.0*pi*r*r*r;vz=pi*r*r*h;cout<<setiosflags(ios::fixed)<<setiosflags(ios::right)<<setprecision(2);cout<<"l= "<<setw(8)<<l<<endl;cout<<"s= "<<setw(8)<<s<<endl;cout<<"sq="<<setw(8)<<sq<<endl;cout<<"vq="<<setw(8)<<vq<<endl;cout<<"vz="<<setw(8)<<vz<<endl;}3、输入一个华氏温度,要求输出摄氏温度。

公式为C=95(F-32),输出要有文字说明,取两位小数。

解:#include <iostream.h>#include<iomanip.h>void main (){float c,f;cout<<"请输入一个华氏温度:";cin>>f;c=5.0/9.0*(f-32); //注意5和9要用实型表示,否则5/9值为0cout<<setiosflags(ios::fixed)<<setprecision(2)<<"摄氏温度为:"<<c<<endl; }4、编程序,用getchar 函数读入两个字符给c1,c2,然后分别用putchar 函数和cout 语句输出这两个字符。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档