C语言程序设计课后练习题答案带原题_第1页
C语言程序设计课后练习题答案带原题_第2页
C语言程序设计课后练习题答案带原题_第3页
C语言程序设计课后练习题答案带原题_第4页
C语言程序设计课后练习题答案带原题_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、简答题1、程序设计(Programming)是根据要解决的问题,使用某种程序设计语言,设计出能够完成这一任务的计算机指令序列。程序设计是指设计、编制、调试程序的方法和过程。 程序=算法+数据结构+程序设计方法+语言工具和环境2、程序设计语言,通常简称为编程语言,是一组用来定义计算机程序的语法规则。它是一种被标准化的交流技巧,用来向计算机发出指令。 语言处理程序把源程序翻译成语义等价的计算机能够识别的低级语言,它是在高级语言(或汇编语言)与计算机之间起到翻译作用的程序。经过语言处理程序处理后得的程序称目标程序。3、程序设计的基本原则:正确性、有效性、鲁棒性、可理解性、可维护性、可移植性。4、算法

2、(Algorithm)是为解决某一具体问题而采取的确定的、有限的方法和步骤。5、算法的基本特征:有穷性(有限性)、确定性(唯一性)、可行性(能行性)、有0到多个输入、一个算法执行结束之后必须有数据处理结果输出。6、自然语言描述法:用人们日常使用的语言来描述算法,称为算法的自然语言描述,特点是:存在很大缺陷,如果算法中含有多分支或循环操作,则很难表述清楚。此外,使用自然语言描述算法还很容易造成歧义;程序流程图描述法:程序流程图(Program Flow Chart)是软件开发者最熟悉的一种算法表达工具,它独立于任何程序设计语言。它的优点是直观、清晰、易于掌握,便于转化成任何计算机程序设计语言。因

3、此,它是软件开发者常用的算法表示方式;缺点:程序流程图的符号在使用过程中不容易规范,特别是在标准中没有严格规定流程线的用法,流程线能够指示流程控制方向的随意转移,很容易造成算法中操作步骤的执行次序混乱,而且不便于开发人员交流。N-S图描述法:N-S图是1973年由美国学者I.Nassi和B.Shneiderman提出的一种新的流程图形式,N和S是两学位者姓氏的首字母。在这种流程图中,摒弃了带箭头的流程线。算法的具体内容都写在一个矩形柜内,框内又可以包含其他的从属框。7、略8、结构化程序设计是一种面向过程的设计思想,把程序定义为数据结构+算法,它包括三种基本结构:顺序结构、选择结构和循环结构。9

4、、(1)使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑; (2)选用的控制结构只允许有一个入口和一个出口; (3)程序语句组成容易识别的语句序列块,每块只允许有一个入口和一个出口; (4)复杂结构的程序设计时,仅用嵌套的基本控制结构进行组合嵌套来实现; (5)严格控制无条件转移(goto)语句的使用。一、选择题1-8、CABDDCCC二、填空题1、main 2、/* */3、头文件4、数据类型5、函数首部 函数体三、简答与程序设计1、略2、略3、#include stdio.h void main() printf(*n); printf( C语言的学习要努力!n);

5、printf(*n); 4、#include stdio.h void main() int a,b; printf(输入两个数值分别给 a,b:); scanf(%d%d,&a,&b); printf(%d-%d=%dn,a,b,a-b); 一、选择题15:CBBCB 610:CDCCD 11-12:DB二、填空题1、162、b=i+1 c3、i=9 j%3!=04、1 3 25、j=i f=f*j三、程序设计题1、void main() int a,b; scanf(%d,&a);if(a/10000=a%10&(a/1000%10)= (a%100)/10) printf(%d,a);2

6、、void main() int i=1,s=0,flag=1; for(i=1;i=100;i+) s=s+i*flag; flag=flag*(-1); printf(%d,s);3、void main() int n,i,s=1; scanf (%d, &n); for(i=1;i=n;i+) s=s*i; printf ( n!=%d, s);4、#include #include int fun(float a,float b,float c)if(b*b+c*c=a*a|a*a+c*c= b*b|b*b+a*a=c*c) return 1;void main() float a,b

7、,c; printf(Please input three numbers:n); scanf(%f%f%f,&a,&b,&c); if( fun(a,b,c) = 1) printf(Yesn); else printf(Non); getch(); 5、void main() int a,i,j,n,s=0,w=0; scanf(%d,%d,&a,&n); for(i=1;i=n;i+) w=0; for(j=1;j=i;j+) w=w*10+a; s=s+w; printf(%dn,s);6、void main()int a,b,c; for(a=1; ;a+) b=(int)sqrt(

8、a+100); c=(int)sqrt(a+268);if(b*b=a+100& c*c=a+268) printf(%dn,a); break; 7、void main()int x,y,z;/*x表示鸡翁,y表示鸡雏*/ for(y=1;y=300;y+) if(y%3!=0) continue; for(x=1;x=20;x+) if(100-x-y0) continue; if(x*5+(100-x-y)*3+y/3=100) printf(%d,%d,%dn,x,100-x-y,y); 8、void main() int i,s=0,w=0,n; scanf(%d,&n); for(

9、i=1;i=n;i+) w=0; for(j=1;j=i;j+) w=w+j; s=s+w; printf(%dn,s); 一、选择题1-5、CCBDC 6-10、BCAAD 11-15、AABCC 16-20、ADDDD二、填空题1、i=j aij2、jN aij=aji3、k=i j=i max=ak ak=aj aj=max 4、bij+1=aij i=0 i2 printf(n)5、aNN (i+1)*N-j6、587、1 2 3 0 5 6 0 0 98、5 7 4 8 9 1 1 5 7 4 8 9 9 1 5 7 4 8 8 9 1 5 7 4 4 8 9 1 5 7 7 4 8

10、 9 1 59、1 0 0 1 010、21三、程序设计1、#include stdio.h void main() int i,ave,sum=0,a10;for(i=0;i10;i+)scanf(%d,&ai);sum=sum+ai;ave=sum/10;printf(ave=%dn,ave);for(i=0;i10;i+)if(aiave)printf(%4d,ai); 2、#include stdio.h void main() int i,j,p,q,s,n,a11=127,3,6,28,54,68,87,105,162,18; for(i=0;i10;i+) p=i;q=ai; f

11、or(j=i+1;j10;j+) if(qaj) p=j;q=aj; if(p!=i) s=ai;ai=ap;ap=s; printf(%d ,ai); printf(ninput number:n); scanf(%d,&n); for(i=0;iai) for(s=9;s=i;s-) as+1=as; break; ai=n; for(i=0;i=10;i+) printf(%d ,ai); printf(n);3、#include stdio.h void main() int i,n,a5=0;printf(输入0到4之间的数,以-1结束!n);scanf(%d,&n);while(n

12、!=-1)switch(n)case 0:a0+;break;case 1:a1+;break;case 2:a2+;break;case 3:a3+;break;case 4:a4+;break;default:break;scanf(%d,&n);for(i=0;i5;i+) printf(%d:%d,i,ai);printf(n); 4、#include stdio.h #define SIZE 30 void main() float bSIZE/5,sum=0;int aSIZE,i,j,k;for(k=2,i=0;iSIZE;i+) ai=k; k+=2; for(k=0,i=0;

13、iSIZE;i+) sum+=ai; j=i+1; if(i+1)%5=0) bk=sum/5; sum=0; k+;printf(The result is:n);for(i=0;iSIZE/5;i+)printf(%5.2f ,bi);printf(n); 5、#include stdio.h #define N 10 void main() int i,j,aNN=0;for(i=0;iN;i+) for(j=0;jN;j+) if(i=j)|(j=0) aij=1; for(i=2;iN;i+) for(j=1;jN;j+) aij=ai-1j-1+ai-1j; for(i=0;iN;

14、i+) for(j=0;j=i;j+) printf(%d ,aij); printf(n); 6、#include stdio.h void main() int day213=0,31,28,31,30,31,30,31,30,31,30,31,30,0,31,29,31,30,31,30,31,30,31,30,31,30;int year,month,leap=0;printf(请输入年份:);scanf(%d,&year);printf(请输入月份:);scanf(%d,&month);if(year%400=0|year%4=0&year%100!=0)leap=1;printf(

15、%d年%d月有%d天!n,year,month,dayleapmonth);7、#include stdio.h void main() int i,j,a55=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25;for(i=0;i5;i+) for(j=0;j=j) printf(%d ,aij); printf(n);一、选择题15:DBDAD610:BCDCD1115:ADACA1620:DACBC二、填空题1、4 22、3 53、99114、77776543215、166、*pmax=*px7、108、ef

16、gh9、s-1 *s+10、p+n三、程序设计题1、#include stdio.hvoid main() float f,*fpointer; fpointer=&f; scanf(%f,fpointer); printf(%f,*fpointer);2、#include void output(char *s)int i;for(i=0;i=strlen(s);i=i+2)printf(%c,*(s+i);void main( )char *s; gets(s); output(s);3、void Input(int a, int n)int i; for(i=0;in;i+) scanf

17、(“%d”,&ai);void Process(int a, int n)int i,k,w,t,max,min; max=min=a0; for(i=1;in;i+) if(maxai) min=ai;w=i; t=ak;ak=aw;aw=t;void Output(int a, int n)int i; for(i=0;in;i+) scanf(“%d”,&ai);void main( )int num10,n=10; Input(num, n);Process (num, n);Output(num, n);4、#includevoid main() char *str; int k;

18、printf(请输入字符串:); scanf(%s,str); k=strlen(str);/*for(i=0;i=0&stri=9) aj=aj*10+stri- 0; i+; j+; 6、#include#includeint main() char *str; int count5=0,0,0,0,0;/创建计数器数组并初始化 char *p=str;/指针p指向字符串数组str int i,n; gets(str); n=strlen(str);/确定输入字符串的长度 for(i=0;i=A&*(p+i)=a&*(p+i)=0&*(p+i)=9) count2+;/统计数字数目 els

19、e if(*(p+i)=32) count3+;/统计空格数目 else count4+;/统计其他字符数目 printf(大写字母 小写字母 数字 空格 其他字符:n); for(i=0;i5;i+) printf(%dt ,counti);/打印各统计数目 7、#include main() int n; int array100; int a=0,b,c; int i,j; scanf(%d,&n); for(i=1;i=n;i+) arrayi=i; c=n; b=0; do for (i=1,j=0;i=n;i+) if(arrayi%3=0&arrayi!=0) arrayi=0;

20、j+; else if(arrayi=0); else arrayi=arrayi+c-j; b=c/3;c=c-j; a=a+c; while(b); for (i=1,j=0;i=n;i+) if(arrayi%3=0&arrayi!=0) arrayi=0;j+; else if(arrayi=0); else arrayi=arrayi+c-j; for(i=1;i=n;i+) if(arrayi!=0) printf(its %d!n,i); 8、#includeadjustAry5(int source55 ) int N=5,LOOP=4; int *pMax,*pAry4; i

21、nt i,j,k,z,ibreak,zbreak,tmp; pMax=pAry0=&source00; for(i=0;iN;i+) for(j=0;j *pMax) pMax=&sourceij; else if (sourceij *pAry0) pAry0=&sourceij; if(pMax=&source00) pMax=pAry0; tmp=source00;source00=*pAry0;*pAry0=tmp;pAry0=&source00; tmp=source22;source22=*pMax;*pMax=tmp;pMax=&source22; for(k=1;kLOOP;k

22、+) pAryk=pMax; ibreak=0; for(i=0;iN;i+) for(j=0;jN;j+) if(sourceij= *pAryk-1) zbreak=0; for(z=k-1;z-1;z-) if(pAryz= (&sourceij) ) zbreak=1; break; if(zbreak=1) continue; pAryk=&sourceij; if(*pAryk=*pAryk-1 ) ibreak=1; break; if(ibreak=1) break; switch(k) case 1: tmp=source04;source04=*pAryk;*pAryk=t

23、mp;pAryk=&source04; break; case 2: tmp=source40;source40=*pAryk;*pAryk=tmp;pAryk=&source40; break; case 3: tmp=source44;source44=*pAryk;*pAryk=tmp;pAryk=&source44; break; void print_array5(int source55) int i,j; for( i=0;i5;i+) for(j=0;j5;j+) printf(%2dt,sourceij); printf(n); printf(n);void main() i

24、nt i,j; int b55=35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11 ; printf(Please input data? (Array55)n); print_array5(b); adjustAry5(b); print_array5(b);9、void main()int n; char *name12=January,February,March,April,May,June,July,August,September,October,November,December;f

25、or(n=1;n=12;n+)printf(%sn,namen-1);10、void main()int n; char *name12=January,February,March,April,May,June,July,August,September,October,November,December;scanf(%d,&n);printf(%sn,namen-1);11、#define M 3#define N 4void main()int aMN;int i,j;for(i=0;iM;i+) for(j=0;jN;j+) scanf(%d,*(a+i)+j); for(i=0;iM

26、;i+) for(j=0;jN;j+) printf(%4d ,*(*(a+i)+j); printf(n); 12、#includeint s45;void fun1()/输入4个学生的5门成绩int i,j;for(i=0;i4;i+)printf(请输入第%d位学生的成绩,i+1);for(j=0;j5;j+)scanf(%d,*(s+i)+j);void fun2()/求第一门成绩的平均分float avg=0.0;int i,sum=0;for(i=0;i4;i+)sum=sum+*(*(s+i);avg=sum/4.0;printf(第一门课程的平均分是%fn,avg);void

27、fun3()/*找出有2门以上课程不及格的学生,输出他们的学号、全部课程成绩和平均分;*/int count4=0,0,0,0;/统计4个学生不及格课程的数目float avg4=0.0;/存放每个学生的平均分int sum;int i,j;for(i=0;i4;i+)for(j=0;j5;j+)if(*(*(s+i)+j)60)counti+;for(i=0;i4;i+)sum=0;for(j=0;j5;j+)sum=sum+*(*(s+i)+j);avgi=sum/5.0;for(i=0;i=2)printf(有2门以上课程不及格的学生学号是%dn,i+1);printf(其全部课程成绩如

28、下n);for(j=0;j5;j+)printf(第%d门成绩是:%dn,j+1,*(*(s+i)+j);printf(平均分是:%fn,avgi);void fun4()/*平均成绩在90分以上或全部课程在85分以上的学生*/float avg4=0.0;int flag4=0;/标记5门课程成绩是否都在85分以上int sum;int i,j;for(i=0;i4;i+)sum=0;for(j=0;j5;j+)sum=sum+*(*(s+i)+j);avgi=sum/5.0;for(i=0;i4;i+)for(j=0;j=85) flagi+;for(i=0;i=90.0|flagi=5)

29、printf(平均成绩在90分以上或全部课程在85分以上的学生学号是:%dn,i+1);void main()fun1();fun2();fun3();fun4();一、选择题15: BDABD610:ADBCB二、填空题1、552、423、54、14, 105、HELLO WORLD三、程序设计题1、#include stdio.h#define MOD(x,y) (x)%(y)void main() int x,y; scanf(%d,%d,&x,&y); printf(%dn,MOD(x,y);2、file1.c文件中程序#define PRINTINT(x) printf(%dn,x)

30、;#define PRINTFLOAT(x) printf(%fn,x);#define PRINTCHAR(x) printf(%cn,x);file2.c文件中程序#include stdio.h#include D:JMSOFTCYuYanfile1.cvoid main()int i=10;float f=11.2;char ch=A; PRINTINT(i); PRINTFLOAT(f); PRINTCHAR(ch);3、#include #define FLAG 1void main( ) char *s , ch; gets(s); #if FLAG while(*s) if(*

31、s = a & *s = A & *s =65&stri=97&stri122) stri=stri+1; #endif i+; puts(str); 一、选择题15:ABBCB610:BDBBB二、填空题1、112、303、44、975、36、Zhao三、程序设计题1、#include typedef struct int year; int month; int day;date;int days(date d) int num = 0; int m, da, i; if (d.year %4 = 0 & d.year %100!=0)|(d.year % 400 = 0) for (m

32、= 1; m = d.month ; m+) if (m = 2) da = 29; else if (m=4|m=6|m=8|m=11) da = 30; else da = 31; for (i = 1; i = da;i+) num+; if ( m = d.month & i = d.day ) return num; else for (m = 1; m = d.month ; m+) if (m = 2) da = 28; else if (m=4|m=6|m=8|m=11) da = 30; else da = 31; for (i = 1; i = da;i+) num+; i

33、f ( m = d.month & i = d.day ) return num; void main() date d; scanf(%d%d%d,&d.year,&d.month,&d.day); printf(%d年%d月%d日是该年的第%d天,d.year,d.month,d.day,days(d);2、#define N 13 struct person int number; int nextp; linkN+1; void main() int I,count,h; for(I=1;I=N;I+) if(I=N) linkI.nextp=1; else linkI.nextp=I

34、+1; linkI.number=I; count=0; h=N; printf(出来的顺序是:); while(countN-1) I=0; while(I!=3) h=linkh.nextp; if(linkh.number) I+; printf(%5d,linkh.number); linkh.number=0; count+; printf(n最后留下来的是:); for(I=1;I=N;I+) if(linkI.number) printf(%3d,linkI.number); 3、#include stdio.h#define N 5struct student char num

35、10;char name10;int score;stuN;void main()int i,max,flag; for(i=0;iN;i+) printf(请输入第%d位学生信息:,i+1); scanf(%s,stui.num); scanf(%s,); scanf(%d,&stui.score); max=stu0.score; for(i=1;istui.score) max=stui.score; flag=i; printf(成绩最低的学生信息是:); printf(学号%s,姓名%s,分数%dn,stuflag.num,,stuflag.

36、score);4、#include stdio.h#includemalloc.h#includestring.h#define LEN sizeof(struct number)struct number int n; struct number *next; struct number *create( ) struct number * head; struct number * p1,*p2; char ch; int a=0; head=NULL; printf(是否输入新数据?(y/n):); while(toupper(ch=getche()=Y) p1=(struct numb

37、er *)malloc(LEN); a+; printf(n请输入数据:); scanf(%d,&p1-n); printf(是否输入新数据?(y/n):); if(a=1) head=p1; p2=p1; else p2-next=p1; p2=p1; p1-next=NULL; return(head); struct number *reverse(struct number *head)struct number *p,*q,*r;p=head;q=p-next;while(q!=NULL)r=q-next;q-next=p;p=q;q=r; head-next=NULL;head=p

38、;return head;void print(struct number *head) struct number *p;p=head; while(p!=NULL) printf(%dn,p-n);p=p-next;void main() struct number *p; p=create(); printf(逆置前链表中的数据是:); print(p); p=reverse(p); printf(逆置后链表中的数据是:); print(p);5、#include #define MAXSIZE 10enum January = 1, February, March, April, Ma

39、y, June, July, August, September, October, November, December;char month12MAXSIZE = January, February, March, April, May, June, July, August, September, October, November, December;void ShowMonth(int mon);int main() ShowMonth(September); ShowMonth(3); ShowMonth(13); return 0;void ShowMonth(int mon)

40、printf(%i:t, mon); if(mon12) printf(Invalid month!n); else printf(%sn, monthmon-1);一、选择题1-5、BADCB 6-10、DBCAC 11-15、BBBBB 16-19、ADAB二、填空题1、file2.dat fgetc(fpr)2、Progra3、2 64、I love right5、second三、程序设计题1、#include stdio.h void main( ) FILE *fp; char str80, ch; printf(Please input a string(#):); if (fp

41、= fopen(result.txt, wt) = NULL) printf(File open for writing error!); exit(0); while (ch = getchar( ) != #) if (ch = A & ch = a & ch = z) fputc(ch - 32, fp); fclose(fp); 2、#include stdio.hvoid main( ) FILE *fin, *fout; char s180, s280, ch; printf(Please input the name of source file:); gets(s1); if

42、(fin = fopen(s1, r) = NULL) printf(File open for reading error!); exit(0); printf(Please input the name of target file:); gets(s2); if (fout = fopen(s2, w) = NULL) printf(File open for writing error!); exit(0); while (!feof(fin) ch = fgetc(fin); fputc(ch, fout); fclose(fin); fclose(fout);3、#include

43、stdio.h struct studentint num;char name20;float ave,total,score3; ; void main( ) FILE *fp;int i,j;float f,ave,total;struct student stu5;if( (fp=fopen(stud.txt, w)=NULL ) printf(文件打不开。n); exit(1); for(i=0;i5;i+) printf(请输入第%d个学生的姓名、学号及三科学习成绩:, i+1); scanf(%s%s, stui.num, ); stui.total = 0; f

44、or( j=0; j3; j+) scanf(%f, &f); stui.scorej = f; stui.total += f; stui.ave= stui.total / 3.0; for(i=0;i5;i+) fprintf( fp, %10d%15s, stui.num, ); for( j=0; j 1000 & t.salary b)&(y=cd) 的值为( )。(A)0 (B) 1 (C) 5 (D) 6【答案】A以下( )是正确的字符常量。(A)c (B) (C) W (D) 32a【答案】C以下( )是不正确的字符串常量。 (A) abc (B) 1212

45、 (C) 0 (D) 【答案】A以下是正确的浮点数的是( )。(A)e3 (B) .62 (C) 2e4.5 (D) 123【答案】B若有定义:int a=2; 则正确的赋值表达式是( )。(A)a-=(a*3) (B) double(-a) (C) a*3 (D) a*4=3【答案】A若有定义:int x=1111,y=222,z=33;则语句printf(%4d+%3d+%2d, x, y, z);运行后的输出结果为( )。 (A)111122233(B)1111,222,33(C)1111 222 33(D)1111+222+33【答案】D已有如下定义和输入语句:int a,b;scan

46、f(%d,%d,&a,&b); 若要求a、b的值分别为11和22,正确的数据输入是哪一个?( )(A)11 22 (B)11,22 (C)a=11,b=22 (D)11;22【答案】B已有如下定义和输入语句,int a; char c1,c2;scanf(%d%c%c,&a,&c1,&c2);若要求a、c1、c2的值分别为40、A和A,正确的数据输入是( )。 (A) 40AA (B) 40 A A (C) 40A A (D) 40,A,A【答案】A语句a=(3/4)+3%2;运行后,a的值为( )。 (A) 0 (B) 1 (C) 2 (D) 3【答案】Bchar型变量存放的是( )。 (A

47、) ASCII代码值 (B) 字符本身 (C) 十进制代码值 (D) 十六进制代码值【答案】A在下列运算符中,优先级最高的运算符是( )。 (A) =j|ij 的值为( )。 (A) 1 (B) 变量i的值 (C) 0 (D) 变量j的值【答案】A若希望当a的值为奇数时,表达式的值为真,a的值为偶数时,表达式的值为假。则不能满足要求的表达式是( )。 (A) a%2=1 (B) !(a%2=0) (C) !(a%2) (D) a%2【答案】C若有定义:int x=3,y=4,z=5;则值为0的表达式是( )。 (A) x&y (B) x=y (C) x|y+z&y-z (D) !(xy)&!z

48、|1)【答案】D若有定义:float x=3.5;int z=8;则表达式 x+z%3/4 的值为( )。(A) 3.75 (B) 3.5 (C) 3 (D) 4【答案】B已知char a=R; 则正确的赋值表达式是( )。 (A) a=(a+)%4 (B) a+2=3 (C) a+=256- (D) a=078【答案】A若有定义:int b=7; float a=2.5,c=4.7;则表达式a+(b/2*(int)(a+c)/2)%4的值是( )。 (A) 2.5 (B) 3.5 (C) 4.5 (D) 5.5【答案】C若已定义:int i=3,k; 则语句 k=(i-)+(i-); 运行后

49、k的值为( )。 (A) 4 (B) 5 (C) 6 (D) 7【答案】C若已定义:int a=5;float b=63.72; 以下语句中能输出正确值的是( )。 (A) printf(%d %d,a,b); (B) printf(%d %.2f,a,b); (C) printf(%.2f %.2f,a,b); (D) printf(%.2f %d,a,b);【答案】BC语言中,能正确表示条件10 x20的逻辑表达式是( )。 (A) 10 x10 | x10 & 10) & (x20)【答案】D若表达式!x的值为1,则以下哪个表达式的值为1( )。 (A) x=0 (B) x=1 (C)

50、x=!1 (D) x!=0【答案】A语句x=(y=3,b=+y);运行后,x、y、b的值依次为( )。 (A)4,4,3(B)3,3,3(C)4,4,4(D)4,3,4【答案】C若有定义:int x,c;则语句x=(c=3,c+1);运行后,x,c的值分别是( )。(A)3,3(B)4,4(C)3,3(D)4,3【答案】D语句a=(6/8)+6%5;运行后,a的值为( )。(A)1(B)2(C)1.75(D)1.2【答案】A若有定义:int x,y;则表达式(x=2,y=5,x*2,y+,x+y)的值是( )。(A)7(B)8(C)9(D)10【答案】B对代数式(4ad)/(bc),不正确的C

51、语言表达式是( )。(A)a/b/c*d*4 (B)4*a*d/b/c (C)4*a*d/b*c (D)a*d/c/b*4【答案】C若x和y为整数,以下表达式中不能正确表示数学关系|x-y|10的是( )。(A)abs(x-y)-10&(x-y)10(C)!(x-y)10 (D)(x-y)*(x-y)100【答案】C若有以下程序段,则z的二进制值是( )。int x=3,y=6,z;z=xyb; 运行后c的值为 。【答案】0若有定义:int a=2,b=3; float x=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值是 。【答案】3.5已知doub

52、le a=5.2; 则语句a+=a-=(a=4)*(a=3);运行后a的值为 。【答案】-18.0若有定义:int x,y;则表达式(x=2,y=5,x+,x+y+)的值是 。 【答案】8若有定义:int m=3,n=5;则表达式(m+1,n+1,(-m)+(n-)的值是 。 【答案】7若有定义:int x=3,y=4;则表达式 !x|y 的值为 。【答案】1若有定义:int a=5,b=2,c=1;则表达式a-bc|b=c的值是 。【答案】0若有定义:int a=2,b=2,c=2; 则语句 +a|+b&+c;运行后b的值为 。 【答案】2以下程序段中,要将a的值的低4位取反,b的值应取 。

53、unsigned char a=0 x39,b;b= ;a=ab;【答案】15或0 xfpow(3.0,2.0)的函数值是 。【答案】9.0若有定义:int k,i=3,j=3; 则表达式 k=(+i)*(j-) 的值是 。 【答案】12三、程序设计题1. 编写程序,从键盘输入大写字母,用小写字母输出。【参考答案】void mainchar c1;printf(“input a uppercase:”);scanf(“%c”,&c1);c1=c1+32;/*在ASCII表中,小写字母的ASCII值比对应的大写字母大32*/printf(%cn, c1);2. 编写程序,从键盘输入一个矩形的长度

54、和宽度,输出面积和周长。【参考答案】void mainfloat len,wid,size;/*len,wid,size分别表示矩形的长、宽、面积*/printf(input length:);scanf(%f,&len);printf(input width:);scanf(%f,&wid);size=len*wid;printf(size of the rectangle is: %fn, size);3. 编写一个程序,从键盘输入华氏温度,将其转换成摄氏温度值后输出。转换的公式为:C=(F-32)/1.8【参考答案】void mainfloat c,f;printf(input Fahr

55、enheit temperature f:);scanf(%f,&f);c=(f-32)/1.8;printf(Centigrade temperature c is: %fn, c);4. 编写程序,输入两个字符,利用条件运算符,输出其中较小字符的ASCII 码值。【参考答案】void main()char c1,c2;int i;printf(input two letters:);scanf(%c,%c,&c1,&c2); /*注意:输入的两个字符之间要用逗号隔开*/i= c1c2?c1:c2;printf(minimum ASCII is %dn,i);5. 用C赋值语句表示以下计算式

56、:1)Area=r2+2rh2)Torque=3)Side=4)Energy=massaccelerationheight+【参考答案】1)Area=PI*r*r+2*PI*r*h2)Torque=((2*m1*m2)/(m1+m2))*g3)Side=sqrt(a*a+b*b-2*a*b*cos(x)4)Energy=mass(acceleration*height+velocity*velocity/2)第6章 函数习题解答一、 选择题1下列关于函数定义的描述中,错误的是( )。 A定义函数时函数的存储类型可以省略B定义函数时函数名和函数类型必须指明C定义函数时必需有函数体D定义函数时必需

57、指明函数参数 【答】D2下列关于函数(原型)声明的描述中,错误的是( )。A函数声明可放在函数体内,也可放在函数体外B函数声明既要给出函数名和类型,又要指出函数参数C函数调用前必须给出被调函数的函数声明,否则出错D被调函数的定义在主调函数前面时,可以不用函数声明 【答】C 3以下正确的定义函数首部的形式是( )。Afloat func(int n;float x)Bfloat func(int n,float x);Cfloat func(int n;float x);Dfloat func(int n,float x) 【答】D4下列关于函数参数的描述中,错误的是( )。A定义函数时可以有参

58、数,也可以没有参数B在传值调用时,实参只能是变量名,不可以是表达式C函数的形参在该函数被调用前是没有确定值的D要求函数的形参和对应的实参个数应相等、类型应赋值兼容 【答】B5下列说法中,不正确的是( )。 A实参可以为任意类型 B形参与对应实参的类型要赋值兼容 C形参可以是常量、变量或表达式 D实参可以是常量、变量或表达式【答】C6下面函数调用语句中,实参的个数是( )。 func(n1,n2+n3,func(n4,n5,n6);A6 B5 C4 D3 【答】D7设有下面函数调用语句,则其所调函数fun中形参的个数是( )。 fun(f(n1,n2),n3,n4 + n5);A5 B4 C3

59、D2【答】C8下面说法中正确的是( )。 A实参占用存储单元,形参不占用存储单元 B相对应的实参与形参共用同一存储单元 C相对应的实参与形参同名时,它们共用同一存储单元D相对应的实参与形参占用不同的存储单元【答】D9实参为简单变量,其与对应形参之间的数据传递方式为( )。 A 由用户另外指定传递方式 B 双向值传递 C 单向值传递D 地址传递【答】C10实参用数组名,则传递给对应形参的是( )。 A数组的地址 B数组的长度 C数组中每一个元素的地址 D数组中每一个元素的值【答】A11下列关于函数调用的描述中,错误的是( )。 A在函数调用中,形参是变量名,实参可以是变量、常量和表达式 B在函数

60、调用中,形参是指针时,实参必须是地址值C在传址调用方式中,可以在被调用函数中改变调用函数的参数值D在传值调用方式中,可以在被调用函数中改变调用函数的参数值 【答】D12下列关于函数返回值的论述中,错误的是( )。 A函数返回值能够实现函数间的数据传递 B函数返回值是由return实现的 C函数返回的值和值的类型是由返回语句中表达式的值和类型决定的 D一个函数可有多条返回语句,但只可有一个返回值 【答】C13函数返回值的类型由( )。 A调用该函数的函数类型决定 Breturn语句中表达式的类型决定 C主函数决定 D该函数的函数类型决定【答】D14下列关于函数的论述中正确的是( )。A不允许函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论