《C程序设计》期末复习练习题及参考答案(3).doc_第1页
《C程序设计》期末复习练习题及参考答案(3).doc_第2页
《C程序设计》期末复习练习题及参考答案(3).doc_第3页
《C程序设计》期末复习练习题及参考答案(3).doc_第4页
《C程序设计》期末复习练习题及参考答案(3).doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

C程序设计期末复习练习题及参考答案(3)一、单项选择题 1.若有定义int (*p)4,则标识符p是一个 。A)指向整型变量的指针变量B)指向函数的指针变量C)指向有四个整型元素的一维数组的指针变量D)指针数组名,有四个元素,每个元素均为一个指向整型变量的指针2下列对字符串的定义中,错误的是: 。A) char str7 = FORTRAN;B) char str = FORTRAN;C) char *str = FORTRAN;D) char str = F,O,R,T,R,A,N,0; 3针对下面程序段,下面哪些说法是正确的?#include void Swap(int *x, int *y);main() int a, b; a = 5; b = 9; Swap(&a, &b); printf(a=%d,b=%d,a,b);void Swap(int *x, int *y) int *pTemp; *pTemp = *x; *x = *y; *y = *pTemp; A) 程序运行结果为乱码;B) 程序运行后将导致程序崩溃;C) 程序编译时出错导致程序无法运行; D) 程序执行了危险的操作;4已知学生记录描述为:struct student int no;charname20;charsex;struct int year;char month15;int day; birth;struct student s;设变量s中的生日是1984年11月11日,下列对生日的正确赋值方式是_A) s.birth.year = 1984; s.birth.month = 11; s.birth.day = 11;B) s.birth.year = 1984; s.birth.month = 11; s.birth.day = 11; C) s.birth.year = 1984; strcpy(s.birth.month, 11); s.birth.day = 11;D) s.birth.year = 1984; strcpy(s.birth.month, 11); s.birth.day = 11;5. 要使下面程序的输出1, 2, 34,则从键盘输入的数据格式应为 。#include main() char a,b; int c; scanf(%c%c%d,&a,&b,&c);printf(%c,%c,%dn,a,b,c);A)1 2 34 B)1, 2, 34 C)1,2,34 D)12 346. 以下选项中为合法整型常量的是( )。A) -080 B) -80 C) -8e1.0 D) -80.0e7. 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为( )。A) 4 B) 16 C) 32 D) 528. 下列程序执行后的输出结果是( )。#include void func(int *a, int b) b0=*a+6; main() int a,b5; a=0; b0=3; func(&a,b); printf(%dn,b0); A)6 B)7 C)8 D)99. 设有定义 char grade = A; 则以下给出的程序运行结果或说法正确的是( )。switch(grade) case A:case B:case C:printf(= 60 pass!n);case D:printf(= 60 pass! B) 60 C) error! D) 以上结果都不正确10. 以下程序执行后的输出结果是( )。#include int main() int i = 1, j = 1, k = 2;if(j+ | k+ ) & i+ )printf(%d,%d,%dn, i, j, k);return 0;A) 1,1,2 B) 2,2,1 C) 2,2,2 D) 2,2,311. 执行完循环语句 for(i = 1; i 10; i+); 后,以下关于变量i的值及循环体的执行次数的说法正确的是( )。A) i的值是9,循环体执行9次 B) i的值是9,循环体执行10次C) i的值是10,循环体执行9次 D) i的值是10,循环体执行10次12. 以下程序的运行结果是( )。#include int main()int m, n;for(m = 0, n = 10; m n; m+=3, n-);printf(%d,%dn,m,n);return 0; A) 6,7 B) 7,6C) 9,7 D) 7,913. 以下程序的运行结果是( )。#include int main()int i;int a33=1,2,3,4,5,6,7,8,9;for(i = 0; i 3; i+)printf(%d ,a2-ii);return 0;A) 1 5 9 B) 7 5 3 C) 3 5 7 D) 5 9 114. 下列可用于C语言用户标识符的一组是( )。A)void, define, WORD B)a3_3,_123,Car C)For, -abc, IF Case D)2a, DO, sizeof 15. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为( )。.A) a0 B) !a C) a=0 D) a!=016. 以下程序的输出结果是( )。 #includevoid main() int x=10,y=10; printf(%d %dn, x-, -y);A) 9 9 B) 10 9 C) 9 10 D) 10 1017. 若有定义:char *name = Follow me,BASIC,Great Wall,FORTRAN;,则name2的值是( )。A) 字符GB) 字符串Great WallC) 字符串Great Wall的首地址D) 不确定18. 有以下程序,程序执行后的输出结果是( )。#include void fun(char *p)char *q = p;while( *q != 0) (*q) +;q+; int main()char a = Program, *p;p = &a3;fun(p);printf(%sn,a);return 0;A) Prohsbn B) Prphsbn C) Progsbn D) Program19. 下面列出的C语言提供的合法的数据类型关键字是( )。A) DoubleB) shortC) integer D) Char20. 字符(char)型数据在微机内存中的存储形式是( )。A) 反码 B) 补码 C) EBCDIC码 D) ASCII码21. 设 int a=12,则执行完语句a+=a-=a*a后,a的值是( )。A) 552 B) 264C) 144D) -26423. 能够完成如下函数计算的程序段是( )。 -1 x0A) y=1; B) if (x=0) if(x!=0) if(x0) y=1; if(x0) y=1; else y=0; else y=0; else y=-1;C) y=0; D) y=-1; if (x=0) if (x0) y=1; if (x0) y=1; else y=0; else y=-1;24. 有如下程序 #include void main( ) int x=1,a=0,b=0; switch(x) case 0: b+; case 1: a+; case 2: a+;b+; printf(a=%d,b=%dn,a,b); 该程序的输出结果是( )。 A) a=2,b=1 B) a=1,b=1 C) a=1,b=0 D) a=2,b=225. 下面程序的输出结果是( )。 #include void main( ) int i; for(i=1;i6;i+) if (i%2!=0) printf(#);continue; printf(*); printf(n); A) #*#*# B) # C) * D) *#*#*26. C语言中while 和do-while 循环的主要区别是( )。. A) do-while的循环体至少无条件执行一次B) while 的循环控制条件比do-while 的循环控制条件严格C) do-while 允许从外部转到循环体内D) do-while 的循环体不能是复合语句27. 当对两个字符串进行比较时,应该使用的函数是( )。A) strcat B) strcmp C) strcpy D) strlen28. 以下程序的运行结果是( )。#include void main( ) int *p, a=1; p=&a; *p=10; printf(%dn, a); A) 1 B) 10 C) 不能确定 D) 1129. 设有定义 int a =1,5,7,9,11,13, *p=a+3; 则*(p-2) , *(a+4) 的值是( )。A)5 11 B)1 9 C)5 9 D)有错误30. 若i为整型变量,则以下循环的次数是( )。for(i=2;i=0;)printf(“%d”,i-); A) 无限次 B) 0次 C) 1次 D) 2次二、填空题1. C语言标识符由 _字母_、_数字_和_下划线_来构造。2 设有定义:FILE *fp;,请将以下打开文件的语句补充完整,以便可以向文本文件readme.txt的最后续写内容。fp = fopen(readme.txt, “a” );3. 若有说明和语句:int a=25,b=60;b=+a;则b的值是26 。4. 若int x=5;while(x0)printf(“%d”,x-);的循环执行次数为5 。5. 若有int a5,*p=a;则p+2表示第三 个元素的地址。6. 若有说明和语句:int a=5,b=6,y=6;b-=a;y=a+则b和y的值分别是1 、5 。7. 已知整型变量a=3,b=4,c=5,写出逻辑表达式a|b+cc&b-c的值是1 。8在C语言中,变量的存储类别有四种,它们是:自动(auto)、寄存器(register)、静态(static) 、外部 (extern)。9如果一个变量在某个范围内是有效的,该范围就称为变量的作用域。自动(auto)存储类别的局部变量,其作用域为:从定义的位置起,到函数体(或复合语句)结束为止 10设有定义int a,b;写出满足条件“a是3的倍数,或者b不是5的倍数”的逻辑表达式: a%3=0 | b%5!=0 。三、程序运行结果分析题1main()int i,j,x =0;for(i=0;i2;i+)x+;for(j=0;j3;j+)if(j%2) continue;x+;x+;printf(x=%dn,x);程序运行结果是: x=62#include struct date int year; int month; int day;struct date func(struct date p) p.year = 2000; p.month = 5; p.day = 22; return p;main() struct date d; d.year = 1999; d.month = 4; d.day = 23; printf(%d/%d/%dn, d.year, d.month, d.day); d = func(d); printf(%d/%d/%dn, d.year, d.month, d.day);程序的运行结果是:1999/4/232000/5/223#include main() char a = Hello ; char *p = NULL; for (p=a; pa+5; p+) printf(%sn, p); 程序运行结果是:Helloellolloloo4#include int fun(int x, int y)return x y ? x : y;main() int a=2,b=5,c=8; printf(%dn, fun(fun(a+c,b), a-c);程序运行结果是:105#include void Func(void);main()int i;for (i=0; i5; i+)Func();void Func(void)static int a = 1;int b = 2, c;c = a + b;a+;b+;printf(%dn, c);程序运行结果是:345676当运行以下程序时,从键盘输入如下内容并回车:ADescriptor ,则下面程序的运行结果是 v0=13,v1=4,v2=12 。#include int main()char c;int v0 = 1, v1= 0, v2 = 0;do switch(c = getchar()case a:case A:case e:case E:case i:case I:case o:case O:case u:case U: v1 += 1;default:v0 += 1; v2 += 1; while (c != n);printf(v0=%d,v1=%d,v2=%dn,v0,v1,v2);printf(n);return 0;7. 当运行以下程序时,运行结果是_。#include void fun(char *t, char *s)while( *t != 0) t+;while( ( *t + = *s + ) != 0 ) ;int main()char ss320=I ,dont ,know;int i;for(i = 2; i 0; i-)fun(ssi - 1, ssi);for( i = 0; i 3; i+)printf(%sn,ssi);return 0;I dont knowdont know know8. 当运行以下程序时,运行结果是_1,5,3,8_。#include int main()int a4 = 2,9,1,8,8,9,7,2,4,3,2,1,1,5,3,5, i, j, k, t;for(i = 0; i 4; i+)for(j = 0; j 3; j+)for(k = j + 1; k aki)t = aji;aji = aki; aki = t; for(i = 0; i 4; i+)printf(%d,aii );return 0;9. 有以下程序 #include #include typedef struct char name9; char sex; float score2; STU; void f(STU a) STU b=Zhao,m,85.0, 90.0; int i; strcpy(,); a.sex=b.sex; for(i=0;i2;i+) a.scorei=b.scorei; main() STU c=Qian,f,95.0,92.0; f(c);printf(%s,%c,%2.0f,%2.0fn,,c.sex,c.score0,c.score1); 程序的运行结果是_ Qian,f,95,92_。四、程序填空题阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。1. 先按学号由小到大的顺序从键盘输入学生的学号和成绩,然后从键盘任意输入一个学生的学号,查找并打印具有该学号的学生的成绩。#include #define ARR_SIZE 40int BinSearch(long a, int n, long x);main()float score ARR_SIZE;int n, i, pos;long numARR_SIZE, x;printf(Please enter total number:);scanf(%d, &n);printf(Please enter the number and score:n);for (i=0; in; i+) scanf(%ld%f, &numi, &scorei);printf(Please enter the searching number:);scanf(%ld, &x);pos = BinSearch(num, n, x);if (pos != -1) printf(score = %4.0fn, scorepos);else printf(Not found!n);int BinSearch(long a, int n, long x)int low, high, mid;low = 0;high = n - 1;while (low amid) low = mid + 1; else if (x amid)high = mid - 1; elsereturn (mid); return(-1);2. 输入一行字符,统计其中的英文字符、数字字符、空格及其它字符的个数。#inclu

温馨提示

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

评论

0/150

提交评论