1、109 计本C 语言程序设计期末复习资料说明:选择题一(较灵活题)下列各题 A) 、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项写在答题卡相应位置上,答在试卷上不得分。(1)以下所列的 C 语言常量中,错误的是A) 0xFF B) 1.2e0.5 C) 2L D) 72(2) 下列选项中,合法的 C 语言关键字是A) VAR B) cher C) integer D) default(3) 若 a 为 int 类型,且其值为 3,则执行完表达式 a+=a-=a*a 后,a 的值是A) -3 B) 9 C) -12 D) 6(4) 设 x、y、t 均为 int 型变量,则执行
2、语句:x=y=3;t=+x|+y;后,y 的值为A) 不定值 B) 4 C) 3 D) 1(5)若变量已正确说明为 float 类型,要通过语句 scanf(“%f %f %f “,给 a 赋于 10.0,b 赋予 22.0,c 赋予 33.0,不正确的输入形式是:A) 10 B) 10.0,22.0,33.02233C) 10.0 D) 10 2222.0 33.0 33(6)若变量已正确定义并赋值,下面符合 C 语言语法的表达式是 A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b (7)C 语言中运算对象必须是整型的运算符是 A) % B) /
3、 C) = D) =(8)若已定义 x 和 y 为 double 类型,则表达式 x=1,y=x+3/2 的值是 A) 1 B) 2 C) 2.0 D) 2.5(9) 若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1; 则执行后,c3 中的值是 A) 0 B) 0.5 C) 1 D) 2 (10) 有如下程序 main( ) int y=3,x=3,z=1; 2printf(“%d %dn”,(+x,y+),z+2); 运行该程序的输出结果是 A) 3 4 B) 4 2 C) 4 3 D) 3 3(11) 能正确表示逻辑关系:“a=10 或 a0”的 C 语言表达
4、式是 A)a=10or a=0|a=10printf(“%d”,n); 该程序段的输出结果是 A) 987 B) 876 C) 8765 D) 9876 (23) 设有说明语句:char a=72 ;则变量 a A)包含 1 个字符 B)包含 2 个字符 C)包含 3 个字符 D)说明不合法(24) 以下所列的各函数首部中,正确的是A) void play(var :Integer,var b:Integer)B) void play(int a,b)C) void play(int a,int b)D) Sub play(a as integer,b as integer)(25) 以下程序
5、的输出结果是A) 0 B) 29 C) 31 D) 无定值void fun(int x, int y, int z) z=x*x+y*y; void main() int a=31;fun(5,2,a);printf(“%d“,a);(26)当调用函数时,实参是一个数组名,则向函数传送的是A)数组的长度 B)数组的首地址5C)数组每一个元素的地址 D)数组每个元素中的值(27)有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5); 该函数调用语句中,含有的实参个数是 A) 3 B) 4 C) 5 D) 有语法错 (28) 有如下程序 int func(int a,
6、int b) return(a+b); main( ) int x=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%dn”,r); 该程序的输出的结果是 A) 12 B) 13 C) 14 D) 15(29)有如下程序 long fib(int n) if(n2) return(fib(n-1)+fib(n-2); else return(2); main( ) printf(“%dn”,fib(3); 该程序的输出结果是 A) 2 B) 4 C) 6 D) 8 (30) 在 C 语言中,函数的隐含存储类别是 A) auto B) static C) ex
7、tern D) 无存储类别(31)以下只有在使用时才为该类型变量分配内存的存储类说明是A) auto 和 static B) auto 和 registerC) register 和 static D) extern 和 register(32)以下程序的输出结果是A)20 B) 21 C)22 D)23main() int i, k, a10, p3;k=5;for (i=0;iy) f(x,y);else if(yz) f(y,z);else f(x,z);printf(“%d,%d,%dn“,x,y,z);(49)有以下程序,程序的执行结果是A)2 B)3 C)4 D)510void m
8、ain( ) char p10=“abc“,“aabdfg“,“dcdbe“,“abbd“,“cd“;printf(“%dn“,strlen(p4);(50)以下程序段中,不能正确赋字符串(编译时会出错)的是:A)char s10=”abcdefg”; B)char t=”abcdefg”; C)char s10;s=”abcdefg”; D)char s10;strcpy(s,”abcdefg”);选择题二(较容易题)1 下面关于 C 语言的叙述中,正确的是( D ) 。A 每行只能写一条语句 B 程序中必须包含有输入语句C main 函数必须位于文件的开头 D 每条语句最后必须有一个分号2
9、 以下( C )是正确的字符常量。 A “c“ B C W D “32a“3 语句 x=(a=3,b=+a);运行后, x、a、b 的值依次为(C ) 。A 3,3,4 B 4,4,3 C 4,4,4 D 3,4,34 若有定义:int a,b;则表达式(a=2,b=5,a*2,b+,a+b)的值是( B) 。 A 7 B 8 C 9 D 105 已知 char a;使用 scanf()函数输入一个字符给变量 a,不正确的函数调用是( B ) 。A scanf(“%d“, B scanf(“%lf“, C scanf(“%c“, D scanf(“%u“,6 若已定义:int a=-36,b=
10、-30,c; 则语句 c=a ,输出为:( A )#include #define N 5void main()int aN;int *p=a;while(pa)printf(“%d “,*(-p);A 5 4 3 2 1 B 1 2 3 4 5 C 2 3 4 5 1 D 4 3 2 1 517 若有定义:struct teacherint num;char name10;char sex;int age;float score;teacher1;则变量 teacher1 所占用的内存字节数是( C ) 。A 5 B 14 C 19 D 2018 若有以下定义:struct link int
11、 data;struct link *next; *head, *p;并已建立如下图所示的链表结构:p head datanext datanext.dataNULL13 则能保留链表其它结点,而删除 p 所指向结点的程序段是( A ) 。A head-next = p-next; free(p); B head-next = p; p-next = head-next; free(p);C free(p); head-next = p; p-next = head-next; D free(p); head-next = p-next; 19 若有定义:int a=20,b=28,c;则执行
12、语句 c=(a后 c 的值为( A) 。A 5 B 7 C 80 D 11220 对下面程序正确的描述是(C ) 。#include #include void main() FILE *in,*out;if(in=fopen(“infile.txt“,“r“)=NULL)printf(“cannot open infilen“);exit(0);if(out=fopen(“outfile.txt“,“w“)=NULL)printf(“cannot open outfilen“);exit(0);while(!feof(in)fputc(fgetc(in),out);fclose(in);fc
13、lose(out);A 程序实现在屏幕上显示磁盘文件 infile.txt 的内容B 程序实现将两个磁盘文件 infile.txt 和 outfile.txt 的内容合二为一C 程序实现将磁盘文件 infile.txt 复制到磁盘文件 outfile.txtD 程序实现将两个磁盘文件合并并在屏幕上输出第二部分 编程题1编写程序实现将一个整数存放到一个数组中,存放时按逆序存放,例如 483 存放成3842编写程序实现将指定的字符串用冒泡排序法进行从大到小排序。3. 编写程序实现从 10 个数中找出最大值和最小值。4编写程序实现是将 1 到 9 这 9 个数字分成三个 3 位数,要求第一个 3 位
14、数,正好是第14二个 3 位数的二倍,是第三个 3 位数的三倍的分法(重复的数应剔除) 。15参考答案选择题 1-50 题答案:1-5) BDCCB 6-10)CACAD 11-15)DBACD 16-20)ACCDC21-25)BBACC 26-30)BADBA31-35)BBCAB 36-40)DADAA41-45)CDCCB 46-50)DBCAC编程题参考答案:1. 编写程序实现将一个整数存放到一个数组中,存放时按逆序存放,例如 483 存放成384Conert(char *a,int n)int i;if(i=n/10)!=0) convert(a+,i);*a=n%10+0;cha
15、r str10= ;main()int number;scanf(%d,convert(str,number);puts(str);2编写程序实现将指定的字符串用冒泡排序法进行从大到小排序。#include main()char *str=Visual Foxpro, temp;int n,i;n=strlen(str);while(n1)for(i=0;i*q) min=*q;main()int i,num10;printf(Input 10 numbers:);for(i=0;i10;i+) scanf(%d,find_max_min(num,10);printf(max=%d,num=%
16、dn,max,min); 4编写程序实现是将 1 到 9 这 9 个数字分成三个 3 位数,要求第一个 3 位数,正好是第二个 3 位数的二倍,是第三个 3 位数的三倍的分法(重复的数应剔除) 。根据题意,只要确定第一个 3 位数后,再计算另外两个数,而第一个 3 位数可设置在(111333)范围内试探int a9;main ()int m;for(m=111;m=333;m+)if(ok(m,a)ok(int t,int *z) /* 分解 t 存入 z 指向的三个数组元素,若满足,要求返回 1 */int *p1,*p2;for(p1=z;p1z+3;p1+)*p1=t%10; /* 分解整数 m */t=t/10;for(p2=a;p2p1;p2+) /* 查询分解出的数字是否重复 */if(*p1=0|*p2=*p1)17return 0; return 1;