当前位置:文档之家› C语言试题

C语言试题

C语言题一、判断题(每题1分,共计10分)1.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参。

()2.使用float b定义的外部变量存放在内存中的动态存储区。

()3.如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量为局部变量,只在该复合语句中有效;。

()4.int (*ptr) (),则ptr是一维数组的名字。

()5.指针在任何情况下都可进行>,<,>=,<=,==运算。

()6.形参是局部变量,函数调用完成即失去意义。

()7.C语言程序总是从main()函数开始执行,C语言程序中的main()函数必须放在程序的开始部分。

()8.在C语言程序中,函数的定义不能嵌套,但函数的调用可以嵌套。

()9.若函数调用时用数组名作为函数参数,实参与其对应的形参共占用同一段存储空间,在调用函数中必须说明数组的大小,但在被调函数中可以使用不定尺寸数组。

()10.局部变量不能和全局变量重名。

()二、(共计10分)1. 以下为Windows NT 下的32 位C程序,请计算sizeof 的值char str[] = “Hello” ;char *p = str ;int n = 10;long d=12;请计算sizeof (str ) =__ (0.5分)sizeof ( p ) =__ (0.5分)sizeof ( n ) =__ (0.5分)sizeof(d)=__(0.5分)2. 请给出如下程序的结果int a = 3;int b = a << 3;a = ____ ,(0.5分)b = ____(0.5分)3.int i=10, j=10, k=3; k*=i+j; k 最后的值是__(1分)4. 1.-1,2,7,28,,126请问28和126中间那个数是__(2分)5.如有定义语句int a[]={1,8,2,8,3,8,4,8,5,8}; ,则数组a的大小是___(1分)6.以下程序:#include<stdio.h>void main(){ int x=10,y=10;printf("%d %d\n",x--,--y);}输出结果为:___(0.5分),___ (0.5分)7.函数调用语句:func((exp1,exp2),(exp3,exp4,exp5));含有实参个数为:___(2分)。

三、选择题(每题2分,共20分)1.在执行语句:int a[ ][3]={1,2,3,4,5,6}; 后,a[1][0]的值是____ ____.A) 4 B) 1 C) 2 D) 52.有如下程序#include<stdio.h>void main(){ char ch[80]="123abcdEFG*&";int j;long s=0;puts(ch);for(j=0;ch[j]>'\0';j++)if(ch[j]>='A'&&ch[j]<='Z')ch[j]=ch[j]+'e'-'E';puts(ch);}该程序的功能是________.A) 测字符数组ch的长度B) 将数字字符串ch转换成十进制数C) 将字符数组ch中的小写字母转换成大写D) 将字符数组ch中的大写字母转换成小写3.下述对C语言字符数组的描述中错误的是_____.A) 字符数组可以存放字符串B) 字符数组中的字符串可以整体输入、输出C) 可以在赋值语句中通过赋值运算符"="对字符数组整体赋值D) 不可以用关系运算符对字符数组中的字符串进行比较4.运行下面程序时,若从键盘输入"3,4 <CR>",则程序的输出结果是_______.#include <stdio.h>void main( ){ int a,b,s;scanf("%d,%d",&a,&b);s=a;if (s<b) s=b;s=s*s;printf("%d\n",s) ;}A) 14 B) 16 C) 18 D) 205.假定等级和分数有以下对应关系:等级:A 分数:85~100等级:B 分数:60~84等级:C 分数:60 以下对于等级grade输出相应的分数区间,能够完成该功能的程序段是________.A) switch (grade){case 'A':printf("85--100\n");case 'B':printf("60--84\n");case 'C':printf("60以下\n");default:printf("等级错误!\n");}B) switch (grade){case 'A':printf("85--100\n");break;case 'B':printf("60--84\n");case 'C':printf("60以下\n");default:printf(" 等级错误!\n");}C) switch (grade){case 'A':printf("85--100\n");break;case 'B':printf("60--84\n");break;case 'C':printf("60以下\n");default:printf("等级错误!\n");}D) switch (grade){case 'A':printf("85--100\n");break;case 'B':printf("60--84\n");break;case 'C':printf("60以下\n");break;default:printf("等级错误!\n");}6.有如下程序:#include <stdio.h>void main( ){ int a=2,b=-1,c=2;if (a<b)if (b<0) c=0;else c++;printf("%d\n",c);}该程序的输出结果是________.A) 0 B) 1 C) 2 D) 37.假定w、x、y、z、m均为int型变量,有如下程序段:w=1;x=2;y=3;z=4;m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;则该程序段执行后,m的值是_________.A) 4 B) 3 C) 2 D) 18.对于for(表达式1;;表达式3)可理解为__________.A) for(表达式1;0;表达式3)B) for(表达式1;1;表达式3)C) for(表达式1;表达式1;表达式3)D) for(表达式1;表达式3;表达式3)9.C语言中,若未说明函数的类型,则系统默认该函数的类型是________。

A) float型B) long型C) int型D) double型10.C语言中,凡未指定存储类别的局部变量的隐含存储类别是________.A) auto B) static C) extern D) register四、简答题(每题3分,共24分)1.分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。

2.头文件中的ifndef/define/endif 干什么用?3.#include <filename.h> 和#include “filename.h”有什么区别?4.Const,static 有什么用途?5.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?6.Heap与stack的差别?7.用宏定义写出swap(x,y)。

8.什么是预编译,何时需要预编译?五、找错题1.Void test1(){1)char string[10];2)char* str1=”0123456789″;3)strcpy(string, str1);// 溢出,应该包括一个存放’\0′的字符string[11]4)Void test2()5){6)char string[10], str1[10];7)for(I=0; I<10;I++)8){str1[i] =’a'; // I,i没有声明。

9)}10)strcpy(string, str1);11)}12)Void test3(char* str1)13){char string[10];14)if(strlen(str1)<=10){15)strncpy(string, str1, strlen(str1)); }}2.int *test2(int *const p){1)int a = 2 ;2)int b = 3 ;3)int *c = malloc(4);4)p = c ;5)*c=b;6)if(*p > 1)7){8)a= *P * a ;9)}10)else11) a = *p*b;12) a +=*c;13)return &a;}六、编程题1.排序的一种方式的代码。

(10分)2.写出汉诺塔游戏代码。

(20分)。

相关主题