logo资料库

哈工大软件工程硕士C辅导题.doc

第1页 / 共39页
第2页 / 共39页
第3页 / 共39页
第4页 / 共39页
第5页 / 共39页
第6页 / 共39页
第7页 / 共39页
第8页 / 共39页
资料共39页,剩余部分请下载后查看
第一部分 选择填空题
数据类型,表达式,输入输出
控制结构
函数
数组
指针
结构
文件
第二部分 程序填空
第三部分 编写程序
第一部分 选择填空题 数据类型,表达式,输入输出 1. 可用作 C 标示符的一组字符为: D a.b, sum, i, _go yan, Class, go_1, 3weeks A) B) C) 5$, month, stu, zhao D) D555, r_1_2, _st_1, DAY 2. 以下正确的叙述是: D A)在 C 程序中,每行中只能写-条语句 B)若 a 是实型变量,C 程序中允许赋值 a=10,因此实型变量中允许存放整型数 C)在 C 程序中,无论是整数还是实数,都能被准确无误地表示 D)在 C 程序中,%是只能用于整数运算的运算符 3. 以下程序打印出: B int x = 2,y =4; float z = (float)(x/y); printf(“%4.2f”,z); int main() { } A) 0 B) 0.00 C) 0.50 D) 0.5 4. 以下不正确的叙述是: D A)在 C 程序中,逗号运算符的优先级最低 B)在 C 程序中,APH 和 aph 是两个不同的变量 C)若 a 和 b 类型相同,在执行了赋值表达式 a=b 后 b 中的值将放人 a 中, 而 b 中的值不变。 D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型 变量只能输入实型数值。 5. 若有说明语句:char c='\72'则变量 c: A A)包含 1 个字符 B)包含 2 个字符 C)包含 3 个字符 D)说明不合法,c 的值不确定 6. 阅读以下程序,当输入数据的形式为 25,13,10正确的输出结果为: D main() {int x,y,z 1
scanf("%d%d%d",&x,&y,&z ); printf("x+y+z=%d\n ,x+y+z); } A)x+y+z=48 C)x+z=35 B)x+y+z=35 D)不确定值 7. 以下叙述正确的是: C A)在 C 程序中,main 函数必须位于程序的最前面 B)C 程序的每行中只能写-条语句 C)C 语言本身没有输入输出语句 D)在对一个 C 程序进行编译的过程中,可发现注释中的拼写错误 8. 以下不正确的 C 语言关键字是: C (A)break (B)if (C)printf (D)sizeof 9. 以下程序的输出结果是: D main() { int a=12,b=12; printf("%d %d\n",--a,++b); } (A)10 10 (B)12 12 (C)11 10 (D)11 13 10. c 语言的简单数据类型包括: B (A)整型、实型、逻辑型 (C)整型、字符型、逻辑型 (B)整型、实型、字符型 (D)整型、实型、逻辑型、字符型 11. 在 C 语言中,字符型数据在内存中以(D)形式存放 (D)ASCII 码 (A)原码 (B)BCD 码 (C)反码 12. 在C语言中,逻辑值"真"用(D)表示 (A)true (B)大于0的数 (C)非零整数 (D)非零的数 13. 若 int x;且有下面的程序片断,则输出结果为: D for (x=3; x<6; x++) { printf((x%2) ? "**%d" : "##%d\n", x); } A) **3 ##4 **5 B) ##3 **4 ##5 C) ##3 **4##5 D) **3##4 **5 14. 用 8 位无符号二进制数能表示的最大十进制数为 C A) 127 B) 128 C) 255 D)256 2
15. 若变量 i、j 已正确定义,以下不合法的语句是( D )。 A.j==1 B.++i C.j=5 D.j=int(i) 16. 以下选项中,与 k=n++完全等价的表达式是( A )。 A.k=n,n=n+1 B.n=n+1,k=n C.k=++n D.k+=n+1 17. 计算机可以直接识别的语言是( D )。 C.汇编语言 B.BASIC A.C D.机器语言 18. 下列关于程序调试的说法,错误的是:B A. 可以一条语句一条语句地执行 B. 调试过程中如果修改了源代码,不需要重新编译就能继续运行 C. 可以随时查看变量值 D. 可以跟踪进入自己编写的函数内部 19. 设整型变量 n=10,i=4,则赋值运算 n%=i+1 执行后,n 的值是( A )。 A. 0 B. 1 C. 2 D. 3 20. 下列叙述中正确的是:D A) C 语言中既有逻辑类型也有集合类型 B) C 语言中没有逻辑类型但有集合类型 C) C 语言中有逻辑类型但没有集合类型 D) C 语言中既没有逻辑类型也没有集合类型 21. 不能进行++和--运算的数据类型是: B D. long A. 指针 B. double C. int 控制结构 1. 以下正确的描述是:B A)continue 语句的作用是结束整个循环的执行 B)只能在循环体内和 switch 语句体内使用 break 语句 C)在循环体内使用 break 语句或 continue 语句的作用相同 D)从多层循环嵌套中退出时, 只能使用 goto 语句 2. 设有程序段: C int k=10; while 则下面描述中正确的是: k= k-1; (k=0) A) while 循环执行 10 次 C) 循环体语句一次也不执行 D)循环体语句执行一次 B)循环是无限循环 3. 在 C 语言中,下列叙述正确的是( D )。 A.不能使用 do-while 语句构成循环 3
B.do-while 语句构成的循环,必须用 break 语句才能退出 C.do-while 语句构成的循环,当 while 语句中的表达式值为非零时循环结束 D.do-while 语句构成的循环,当 while 语句中的表达式值为零时结束循环 4. 结构化程序设计一般可以用( D )三种基本结构组合而成。 A.循环、选择、递归 C.循环、递归、分支 B.顺序、循环、嵌套 D.顺序、选择、循环 5. 以下不是死循环的语句为: D A. for(; ; x+=k); C. for(k=10; ;k--)sum+=k; B. while(1){x++}; D. for(;(c=getchar())!=’\n’;)printf(“%c”,c); 6. 为了避免嵌套的 if-else 语句的二义性,C 语言规定 else 总是与__C__组成配 对关 (A)缩排位置相同的 if (C)在其之前未配对的最近的 if (B)在其之前未配对的 if (D)同一行上的 if 7. 以下程序段 C x= -1; do { x=x*x; }while(!x); A)是死循环 C)循环执行一次 B)循环执行二次 D)有语法错误 8. 下面有关 for 循环的正确描述是: D A) for 循环只能用于循环次数已经确定的情况 B) for 循环是先执行循环体语句,后判断表达式 C) 在 for 循环中,不能用 break 语句跳出循环体 D) for 循环的循环体语句中, 可以包含多条语句, 但必须用花括号括起来 函数 1. 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为 A A)自动(auto) C)外部(extern) B)静态(static) D)寄存器(register) 2. 以下错误的描述是 D 函数调用可以 A)出现在执行语句中 B)出现在一个表达式中 C)做为一个函数的实参 D)做为一个函数的形参 4
3. 以下不正确的说法为 D A)在不同函数中可以使用相同名字的变量 B)形式参数是局部变量 C)在函数内定义的变量只在本函数范围内有效 D)在函数内的语句块中定义的变量在本函数范围内有效 4. 若使用一维数组名作函数实参,则以下正确的说法是 A A)必须在主调函数中说明此数组的大小 B)实参数组类型与形参数组类型可以不匹配 C)在被调函数中,不需要考虑形参数组的大小 D)实参数组名与形参数组名必须一致 5. 以下正确的描述是: B 在 C 语言程序中 A)函数的定义可以嵌套,但函数的调用不可以嵌套 B)函数的定义不可以嵌套,但函数的调用可以嵌套 C)函数的定义和函数的调用均不可以嵌套 D)函数的定义和函数的调用均可以嵌套 6. 以下正确的说法是 C A)定义函数时,形参的类型说明可以放在函数体内 B) C)如果函数值的类型与返回值类型不一致,以函数值类型为准 D)如果形参与实参的类型不一致,以实参类型为准 return 后边的值不能为表达式 7. C 语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是 B A)地址传递 B)单向值传递 C)由实参传给形参,再由形参传回给实参 D)由用户指定传递方式 8. 以下正确的说法是 A 在 C 语言中 A)实参和与其对应的形参各占用独立的存储单元 B)实参和与其对应的形参共占用一个存储单元 C)只有当实参和与其对应的形参同名时才共占用存储单元 D)形参是虚拟的,不占用存储单元 9. 一个 C 语言程序是由 B A) 一个主程序和若干子程序组成 C)若干过程组成 B)函数组成 D)若干子程序组成 10. 一个 C 程序的执行是从: A 5
A)本程序的 main 函数开始,到 main 函数结束 B)本程序文件的第-个函数开始,到本程序文件的最后-个函数结束 C)本程序的 main 函数开始,到本程序文件的最后-个函数结束 D)本程序文件的第-个函数开始,到本程序 main 函数结束 11. 在 C 语言中,若对函数类型未加显式说明,则函数的隐含类型是(C) (A)void (B)double (C)int (D)char 12. 有如下的函数调用语句:Fun(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,函数实参个数是( A )。 A.3 C.5 B.4 D.有语法错误 13. 定义 int *swap()指的是 B swap (A)指一个返回整型值的函数 swap (B)指一个返回指向整型值指针的函数 (C)指一个指向函数 swap()的指针,函数返回一个整型值 (D)以上说法 均错 14. C 语言中规定函数的返回值的类型是由(B )。 return 语句中的表达式类型所决定 A. B. 在定义该函数时所指定的函数类型所决定 C. 调用该函数时系统临时决定 D. 调用该函数时的主调用函数类型所决定 15. 若用数组名作为函数调用时实参,则实际上传递给形参的是( A )。 A.数组首地址 C.数组中全部元素的值 D. 数组元素的个数 B. 数组的第一个元素值 16. 关于 return 语句,下列正确的说法是 C A.只能出现在 main 函数中 C.可以在同一个函数中出现多次 D. 只能在除主函数以外的函数中出现 一次 B. 必须在每个函数中出现 数组 a[]={ 2,4,6,8,10,12,14,16,18,20,22,24},q[4],k; (k=0;k<4;k++) 1. 若有定义:int 则下面程序段的输出是: C for q[k]=a[k*3]; printf("%d\n",q[3]); A)8 C)20 B)16 D)输出项不合法,结果不确定 2. 若有定义:int a[4][6];则能正确表示 a 数组中任一元素 a[i][j] 6
(此处 0<=i<4,0<=j<6)地址的表达式是: A A)&a[0][0]+6*i+j C)&a[0][0]+4*i+j B)&a[0][0]+4*j+i D)&a[0][0]+6*i+i 3. 以下正确的说明语句是 B A)int B)int c)int *b[]={1,3,5,7,9} a[5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]}; a[]={1,3,5,7,9}; int *num[5]={a[0],a[1],a[2],a[3],a[4]}; D)int a[3][4],(*num)[4]; num[1]=&a[1][3]; 4. 以下对二维数组 a 进行正确初始化的是(B) (A)int a[2][3]={{1,2},{3,4},{5,6}}; (C)int a[2][ ]={1,2,3,4,5,6}; (B)int a[ ][3]={1,2,3,4,5,6}; (D)int a[2][ ]={{1,2},{3,4}}; 5. 要说明一个有 10 个 int 元素的数组,应当选择语句: A (A)int a[10]; (B) int a[2,5]; (C) int a[]; (D) int *a[10]; 6. 为了判断两个字符串 s1 和 s2 是否相等,应当使用( D )。 A. C. if(s1 == s2) if(strcpy(s1,s2)) B. if(s1 = s2) D.if(strcmp(s1,s2)==0) 7. 下列数组声明中,正确的是 A A. C. #define size 10 int num['10']; char str[size+2]; D. int n = 5; int a[n]; B. char str[]; 指针 1. 若有以下定义, int A)元素 a[5]的地址 B)元素 a[5]的值 C)元素 a[6]的地址 D)元素 a[6]的值 a[10],*p=a ;则*(p+5)表示: B int *ptr1,*ptr2;且 ptrl 和 Ptr2 均已指向变量 k,下 2. 已有定义 int k=2; 面不能正确执行的赋值语句是: B A)k=*ptrl+*ptr2; C)ptrl=ptr2; B)ptr2=k D)k=*ptrl*(*ptr2); 3. 以下程序中调用 scanf 函数给变量 a 输入数值的方法是错误的, 其错误原因是 B main() 7
{ int *p,*q,a,b; p=&a; printf("input scanf("%d",*p); a:"); } A) *p 表示的是变量 p 的地址 B) *p 表示的是变量 a 的值,不是变量 a 的地址 C) *p 表示的是指针变量 p 的值 D) *p 只能用来说明 p 是一个指针变量 4. 下面程序应能对两个整型变量的值进行交换。以下正确的说法是: D main( { ) int a=10,b=20; printf("(1)a=%d,b=%d\n",a,b); swap(&a,&b); prinif("(2)a=%d,b=%d\n",a,b); } swap(int { int q) p,int t; t=p;p=q;q=t; } A)该程序完全正确 B)该程序有错,只要将语句 swap(&a,&b);中的参数改为 a,b 即可 C)该程序有错,只要将 swap()函数中的形参 p 和 q 以及 t 均定义为指针 (执行语句不变)即可 D)以上说法都不正确 5. 已知: int **p;则变量 p 是__B__. (A)指向 int 的指针 (B)指向指针的指针 (C)int 型变量 (D)以上三种说法 均是错误的 6. 定义 int *p,i;以下含义正确的语句是( C) (A)p=10; (B)i=p; (C)i=*p; (D)p=2*p+1; 7. 对于指向类型相同的两个指针变量,不能进行(A)运算 (A)+ (B)- (C)= (D)== 8. 下列说法不正确的是( D ) A.指针是一个变量 C.指针可以进行加、减等算术运算 B.指针中存放的是地址值 D.指针变量不占用存储空间 9. 若要说明 x 是整型变量,p 为指向 x 的整型指针变量,下列说明语句中正确 的是( A )。 A.int x,*p=&x ; C.int *p=&x,x ; B.int x,p=&x ; D.int x,*p=*x ; 8
分享到:
收藏