中国矿业大学C语言程序设计期末考试上机题库.pdf_第1页
中国矿业大学C语言程序设计期末考试上机题库.pdf_第2页
中国矿业大学C语言程序设计期末考试上机题库.pdf_第3页
中国矿业大学C语言程序设计期末考试上机题库.pdf_第4页
中国矿业大学C语言程序设计期末考试上机题库.pdf_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

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

文档简介

1、函数fun的功能是计算xn。 double fun(double x,int n) int i; double y=1; for(i=1;i main() double *p; p=(double*)malloc(_); p0=1.5; p1=2.5;p2=3.5; printf(“%f%f%fn“,p0,p1,p2); 答案:1:3*sizeof(double) 评析: malloc(size)在内存的动态存储区中分配一个长度为size的连续空间。此函数的值(即 “返回值“)是一个指针,它的值是该分配域的起始地址。如果此函数未能成功地执行,则返回 值为0。 本题中要求分配三个double型动态内存单元,所以size处应当为3*sizeof(double)。 知识点:知识点/指针/各类型的指针及指针变量,通过指针引用各类型数据 4、以下程序运行后的输出结果是_。 main() int a,b,c; a=25; b=025; c=0x25; printf(“%d%d%dn“,a,b,c); 答案:25 21 37 评析:本题考查的是格式字符的输出。 变量a、b、c分别为十进制、八进制、十六进制的25,格式字符d所代表的含义是,以带符 号的十进制形式输出整数(正数不输出符号),所以本题a=25则输出值为25;b=025转换为10 进制:b=2*8+5=16+5=21,则输出的值为21;c=0x25转换为10进制:c=2*16+5=32+5=37,则输出 的值为37,而且printf中三个%d之用的是空格,所以输出的几个数字之间也必须是空格。 知识点:知识点/函数/变量的存储类别,变量的作用域和生存期 5、以下程序运行后的输出结果是_。 main () char a=“Language“,b=“Programe“; char *p1,*p2; int k; p1=a; p2=b; for(k=0;kaji)k=j; s+=_ ; _ =s; main() int xMN=3,2,5,1,4,1,8,3,s; SumColumMin(_); printf(“%dn“,s); 答案:1:aki 2:*sum 3:x, a+=(a=8); printf(“%dn“,a); 答案:16 评析:本题的考查点是表达式。 表达式a+=8相当于a=a+8,对表达式逐步求解过程如下: a+=(a+8)此时,a的值赋值为8,而不再是0; a+=8 a=a+8 a=16 故本题答案为16。 知识点:知识点/函数/形式参数与实在参数,参数值的传递 9、以下程序的输出结果是_。 #defineMAX(x,y)(x)(y)?(x):(y) main() int a = 5, b = 2,c = 3, d = 3, t; t = MAX(a + b, c + d)*10; printf(“%dn“, t); 答案:7 评析:本题的考查点是宏定义。 宏替换后,表达式t = MAX(a + b, c + d)*10即变为:t = (a+b)(c+d) ? (a+b) : (c + d)*10; 由于(a+b)(c+d)为真, 所以t = (a+b),即为7。 故本题答案为:7。 知识点:知识点/编译预处理/宏定义:不带参数的宏定义;带参数的宏定义 10、函数mycmp(char *s,char *t)的功能是比较字符串s和t的大小,当s等于t时返回0,当st 返回正值,当s main() charstr1 =“How do you do“,*p1=str1; strcpy(str1+strlen(str1)/2,“es she“); printf(“%sn“,p1); 答案:How does she 评析:本题的考查点是字符串拷贝函数strcpy()。 strlen(str1)是求str1字符串的长度,为13,然后,进行除2运算,结果为6。strcpy()函 数是把字符串“es she“拷贝到str1后的第6个字符后面,也就是说,拷贝后的结果是“How does she“。 故本题答案为:How does she。 知识点:知识点/函数/库函数的正确调用 14、下面的函数strcat(str1,str2)实现将字符串str2拼接到字符串str1后面的功能。请填空使 之完整。 char *strcat(str1,str2) char *str1,*str2; char *t=str1; while(_)str1+; while(_); return(t); 答案:1:*str1!=0 2:*str1+=*str2+ 评析:本题的考查点是字符串连接函数strcat()。 函数strcat(str1,str2)实现将字符串str2连接到字符串str1后面, 所以首先要找到字符串 str1的串尾,根据C语言的语法规定,一个串的串尾一定是一个隐含字符“0“,而在程序中,对 字符串中字符的访问是通过两个指针变量来完成的,因此要找到字符串str1的串尾,要判断 *str1是否为“0“,要找到字符串str2的串尾,要判断*str2是否为“0“,程序中必须可以使字 符串中字符逐一顺序体现,所以在题中我们应填写“*str1“和“*str1+=*str2+ “。 知识点:知识点/函数/库函数的正确调用 15、以下程序的输出结果是_。 voidfun() staticinta=0; a +=2;printf(“%d“,a); main() intcc; for(cc=1;cc #define N 100 int fun(int(*a)N) int row,col,max,min; for(row=0;rowb ? a:b); 答案:double max 评析:本题的考查点是C程序设计。调试程序,把不完善的程序进行修改和补充,使之能得 到正确的结果。 主函数里可以看到调用了一个max函数,函数在被调用之前需要先定义,所以要求填空的内 容应该是对函数进行定义的语句。由题目内容也可以看出此函数是double型的。 知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用 29、有以下程序 void f(int y,int *x) y=y+*x; *x=*x+y; main() int x=2,y=4; f(y, printf(“%d%dn“,x,y); 执行后输出的结果_。答案:84 评析:f函数中变量x传递的是变量的地址,可以实现值的变换,而变量y是传递的值,执行 完f后,y的值是变了,但main函数中的y并未变化。也就是说由于“单向传送“的“值传递“方式, 形参值的改变无法传给实参。 知识点:知识点/函数/形式参数与实在参数,参数值的传递 31、C语言程序的基本单位是_ 答案:函数 32、设有说明语句:char a= 72;则变量a包含_个字符、答案:1 33、c语言是一种_(选择面向对象或面向过程)高级程序设计语言。 答案:面向过程 34、C语言中唯一的三目运算符是_ 答案:条件运算符#? : 35、C语言中结束一次循环的语句是_ 答案:continue 36、C语言中结束整个循环的语句是_答案:break 37、二维数组a中元素a22的值是_ a451,2,3,3,2,1,6,1;答案:0 38、写出下面个逻辑表达式的值,设a=3,b=4,则c=5 a | b+c do j=j+i; i-; while(i2); printf(“%dn“,j); 答案:52 45、设有以下程序: main() int n1,n2; scanf(“%d“, while(n2!=0) n1=n2%10; n2=n2/10; printf(“%d“,n1); 程序运行后,如果从键盘上输入1298;则输出结果为_答案:8921 46、以下程序输出的最后一个值是_ int ff(int n) static int f=1; f=f*n; return f; main() int i; for(i=1;i main() int i,j; for(i=1; i50) printf(“%d“,a); if(a40) printf(“%d“,a); if(a30) printf(“%d“,a); 答案:585858 58、以下程序的输出结果是_ main() char *p=“abcdefgh“,*r; long *q; q=(long*)p; q+; r=(char*)q; printf(“%s/n“,r); 答案:efgh 59、以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量 link是指向自身结构体的指针.请将定义补充完整。 struct node int info; _ link; 答案:struct node * 60、有以下程序 main( ) int n=0,m=1,x=2; if(!n) x-=1; if(m) x-=2; if(x) x-=3; printf(“%dn“,x); 执行后输出结果是_答案:-4 61、#include main() char ch1,ch2; int n1,n2; ch1=getchar(); ch2=getchar(); n1=ch1-0; n2=n1*10+(ch2-0); printf(“%dn“,n2); 程序运行时输入:12,执行后输出结果是_ 答案:12 62、有以下程序 void f( int y,int *x) y=y+*x; *x=*x+y; main( ) int x=2,y=4; f(y, printf(“%d %dn“,x,y); 执行后输出的结果是_答案:84 63、 以下程序段打开文件后, 先利用fseek函数将文件位置指针定位在文件末尾, 然后调用ftell 函数返回当前文件位置指针的具体位置,从而确定文件长度,请天空。 FILE *fp;long f1; fp=fopen(“test”,”rb”); _ F1=ftell(fp); fclose(fp); 答案:fseek(fp,0,SEEK_END)#fseek(fp,0,-2) 64、以下程序功能是将数组里面的元素写入文件d2.dat中(使用fprintf函数),请填空。 #include main() FILE *fp;a3=1,2,3; fp=fopen(“d2.dat“,“w“); _ fclose(fp); 答案:fprintf(fp,“%d%d%dn“,a0,a1,a2); 65、以下程序功能是从文件d2.dat中读入读出数据放到数组a中(使用fscanf函数),请填空。 #include main() FILE *fp;a2; fp=fopen(“d2.dat“,“r“); _ fclose(fp); 答案:fscanf(fp,“%d%d“, 66、以下程序的输出结果是_ main( ) char s = “abcdef “; s3= 0; printf(“%sn“,s); 答案:abc 67、下列程序段的输出结果是_ main( ) char b=“Hello,you“; b5=0; printf(“%s“, b ); 答案:Hello 68、以下程序的输出结果是_ main() int a=30,25,20,15,10,5,*p=a; p+; printf(“%d“,*(p+3); 答案:10 69、以下程序运行后的输出结果是_ main( ) char s=“9876“,*p; p=s; p+; +p; puts(p); 答案:76 70、mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回,请填空: int mystrlen(char *str) int i; for(i=0; stri != 0;i+) ; return _; 答案:i-1 71、以下程序用来统计文件中字符个数、请填空: #include“stdio、h“ main( ) FILE *fp; long num=0L; if(fp=fopen(“fname、dat“,“r“)=NULL) printf(“Open errorn“); exit(0); while(_) fgetc(fp); num+; printf(“num=%ldn“,num-1); fclose(fp); 答案:!feof(fp) 72、下面程序把从终端读入的文本(用作为文本结束标志)输出到一个名为bi.dat的新文件中, 请填空. #include “stdio.h“ FILE *fp; char ch; if( (fp=fopen (_) )= = NULL) exit(0); while( (ch=getchar( ) !=) fputc (ch,fp); fclose(fp); 答案:”bi.dat”,”r” 73、用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。 st=(char*) _;答案:malloc(11) 74、若要使指针p指向一个double类型的动态存储单元,请填空. p=_malloc(sizeof(double); 答案:(double*) 75、以下程序通过函数指针p调用函数fun,请在填空栏内,写出定义变量p的语句、 void fun(int *x,int *y) main( ) int a=10,b=20; _; /定义变量p */ p=fun; p( 答案:void (*p)(int,int); 76、以下程序的输出结果是_ main( ) int arr =30,25,20,15,10,5, *p=arr; p+; printf(“%dn“,*p+); 答案:30 77、若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是_ int w10=23,54,10,33,47,98,72,80,61, *p=w; 答案:*(p+5)#p5 78、以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整型数据;成员变量 link是指向自身结构体的指针,请将定义补充完整、 struct node int info; _ link; 答案:struct node * 79、设有如下宏定义 #define MYSWAP(z,x,y) z=x;x=y;y=z 以下程序段通过宏调用实现变量a,b内容交换,请填空: float a=5,b=16,c; MYSWAP(_,a,b);答案:c 80、以下程序段用于构成一个简单的单向链表,请填空. struct STRU int x, y ; float rate; _p; a, b; a.x=0; a.y=0; a.rate=0; a.p= b.x=0; b.y=0; b.rate=0; b.p=NULL; 答案:struct STRU * 81、设有以下结构类型说明和变量定义,则变量a在内存所占字节数是_ Struct stud char num6; int s4; double ave; a,*p;答案:14 82、下列程序段的输出结果是_ int n=c; switch(n+) default: printf(“error“);break; case a: case A: case b: case B: printf(“good“);break; case c: case C: printf(“pass“); case d: case D: printf(“warn“); 答案:passwarn 83、以下程序的输出结果是_ main( ) int s,i; for(s=0,i=1;ibc); printf(“%dn“,d); 答案:0 90、以下程序的输出结果是_ main( ) int x=0; sub( printf(“%dn“,x); sub(int *a,int n,int k) if(k,为使语句”zx=fopen(“c:n.txt”,r”) 能正常执行,在该语句之前必须有定义_ 答案:FILE *zx 93、以下程序的输出结果为_ main() int a=10; a=(3*5,a=4); printf(“%d”,a); 答案:14 94、变量a所占的字节数是_ unionchar aa10,longbb, int cc a;答案:10 95、以下函数的功能是删除字符串s中的所有空格。请填空。? viod?dele(char?*s)? ?int?n=0,i;? for(i=0;si;i+)? if(ai!= )? sn+=si;? sn= _;? ?答案:0 96、有以下程序 main() charch=“uvwxyz”,*pc; pc=ch;printf(“%cn”,*(pc+5); 程序运行后的输出结果是_答案:z 97、设有如下说明? typedef?struct? ?int?n;?char?c;?double?x;STD; 则要定义一个变量stu是以上说明的变量则正确定义方式是_ 答案:STDstu 98、c语言运算符中优先级最低的是_运算符 答案:,#逗号 99、设有定义:FILE *fw;请将以下文件的语句补充完整,以便可以向文本文件readme.txt的最 后续写内容。 fw=fopen(); 答案:”readme.txt”,”a” 100、以下程序输出结果是_ #include #define M5 #define N M+M main() int k; k=N*N*5; k=N*N*5; printf(“%d“,k); _ 答案:55 所有单选题 1、C语言中下列叙述正确的是_。 A:不能使用do-while语句构成的循环 B:do-while语句构成的循环,必须用break语句才能退出 C:do-while语句构成的循环,当while语句中的表达式值为非零时结束循环 D:do-while语句构成的循环,当while语句中的表达式值为零时结束循环答案:D 评析:本题的考查点是do-while语句。 选项A是错误的, C语言支持do-while语句; 选项B是错误的, do-while构成的循环,当while 语句中的表达式值为零时结束循环,而不是非零;选项C也是错误的。故本题答案为D。 知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构 2、以下选项中属于C语言的数据类型是_。 A:复数型B:逻辑型C:双精度型D:集合型 答案:C 评析:本题的考查点是C语言的数据类型。 C语言的数据类型分为基本类型,构造类型,指针类型,空类型四大类。其中,基本类型分 为整型,字符型,实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。故本 题答案为C。 知识点:知识点/数据类型及其运算/C的数据类型及其定义方法 3、下列描述中不正确的是_。 A:字符型数组中可以存放字符串 B:可以对字符型数组进行整体输入、输出 C:可以对整型数组进行整体输入、输出 D:不能在赋值语句中通过赋值运算符“=“对字符型数组进行整体赋值答案:C 评析:本题的考查点是对数组的理解。 C语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将 整个字符串一次输入或输出。所以,选项C的说法是不正确的。 故本题答案为C。 知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用 4、以下程序的输出结果是_。 main() intx10,y10,i; for(i0;x8 ;y+i) printf(“%d%d“,x-,y); A:10192B:9876 C:10990D:101091 答案:D 评析:本题的考查点是for循环语句。 for语句的一般格式为:for(表达式1;表达式2;表达式3)语句执行中只要表达式2为真, 则执行for语句中指定的内嵌语句。所以,本题在条件为真的情况下,先执行printf函数。x- 是先使用后运算。 知识点:知识点/循环结构程序设计/FOR循环结构 5、以下程序的输出结果是_。 main() chara101,2,3,4,5,6,7,8,9,0,*p; int i ; i8; pa+i; printf(“%sn“,p-3); A:6B:6789C:6D:789答案:B 评析:本题的考查点是通过指针引用数组元素。 指针p指向数组中第8个元素,即a8=9。输出时,输出字符串,且指针把a8作为初始 位置往前指3个元素,也就是共有4个字符输出。最后指向a5为6,所以输出为6789。 知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数 6、能正确表示a和b同时为正或同时为负的逻辑表达式是_。 A:(a=0|b=0) while(n-)printf(“%d“,-n); A:20B:31 C:321D:210答案:A 评析:本题的考查点是while语句的判断。 n-是先使用后运算,-n是先运算后使用。n=4时,执行n-后,n变为3,执行-n后,n变 为2,所以,第一次输出时,n为2;同上过程,第二次输出时,n为0。 知识点:知识点/循环结 构程序设计/WHILE和DO WHILE循环结构 8、以下程序的输出结果是_。 main() intk=17; printf(“%d,%o,%xn“,k,k,k); A:17,021,0x11B:17,17,17 C:17,0x11,021D:17,21,11答案:D 评析:本题的考查点是不同格式的数据输出。 printf函数对不同类型的数据用不同的格式字符,“%d“是以带符号的十进制形式输出整数 (正数不输出符号);“%o“以8进制无符号形式输出整数(不包括前导符0);“%x“以16进制无 符号形式输出整数(不包括前导符0x)。 知识点:知识点/数据类型及其运算/C的数据类型及其定义方法 9、若有说明:long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是_。 A:*p=scanf(“%ld“,p); B:p=(long *)malloc(8);scanf(“%ld,p); C:scanf(“%ld“,p= D:scanf(“%ld“,答案:A 评析 本题的考查点是格式输入函数Scanf()的使用。 scanf函数输入形式为:scanf(格式控制,地址表列); 选项B中,p=(long*)malloc(8)是分配8 个字节的long型存储单元,所以能通过scanf语句正确给输入项读入数据; 选项C中,p= char b10; s; B:struct double a; charb10; s; C:structABC double a; char b10; ABC s; D:typedefABC double a; char b10; ABC s;答案:B 评析:本题的考查点是结构体变量的定义。 定义一个结构体类型的变量,可采用三种方法: (1)先定义结构体类型再定义变量名; (2)在定义类型的同时定义变量; (3)直接定义结构类型变量,即不出现结构体名; 选项B符合第三种定义方法。 知识点:知识点/结构体(即“结构“)与共用体(即“联合“)/结构体和共用体类型数据的 定义方法和引用方法 11、请读程序: #include main() int a, b ; for(a = 1 , b = 1 ; a = 20)break ; if (b%3 = 1) b += 3 ; continue ; b -= 5 ; printf(“%dn“, a) ; 上面程序的输出结果是_。 A:7B:8C:9D:10答案:B 评析:本题的考查点是break语句和continue语句。 “%“是求余运算符,执行第一次循环时,条件(b%3 = 1)为真,b=4,继续下一次循环,如 此反复,当b=22时,条件(b = 20)为假,跳出循环,此时共循环8次,即a=8。 知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构 12、请选出合法的C语言赋值语句_。 A:a=b=58B:i+; C:a=58,b=58D:k=int(a+b); 答案:B 评析:本题的考查点是赋值语句。 选项A和C没有用分号表示语句结束,不合法; 选项D,函数名和C语言的关键字重名,不合法。 故本题答案为B。 知识点:知识点/基本语句/表达式语句,空语句,复合语句 13、请选出可用作C语言用户标识符的一组标识符_。 void a3_b3 For 2a define_123_abcDO WORDIFcasesizeof A:B: C: D:答案:B 评析:本题的考查点是C语言的标识符。 C语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或 下划线。 中的void和define都和C语言的关键字重名,不合法; 中的case和C语言的关键字重名,不合法; 中的2a是数字打头而且sizeof和C语言的关键字重名,不合法。 知识点:知识点/数据类型及其运算/C的数据类型及其定义方法 14、若x和y都是int型变量,x=100、y=200,且有下面的程序片段 printf(“%d“,(x,y) ); 上面程序片段的输出结果是_。 A:200B:100C:100200 D:输入格式符不够,输出不确定的值 答案:A 评析:本题的考查点是逗号表达式。 在(x,y)中的“,“是一个特殊的运算符,叫做逗号运算符,它的一般形式为:表达式1,表 达式2,求解过程为:先求解表达式1,再求解表达式2,整个表达式的值是表达式2的值, (x,y) 的值为200,所以输出结果为200。 知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用 15、若x是int型变量,且有下面的程序片段 for(x=3;xb) 5int i; 6for(i=0;i main() int i=10,j=10; printf(“%d,%dn“,+i,j-); A:11,10B:9,10C:010,9D:10,9 答案:A 评析:本题的考查点是变量的自增、自减运算。 +i是先对i进行加1运算,再使用i的值;j-是先使用j值,再对j进行减1运算。所以,程 序的打印结果应当为“11,10“。 知识点:知识点/数据类型及其运算/C运算符的种类、运算优先级和结合性 37、以下的for循环: for(x=0,y=0;(y!=123) char ch2; a; main() a.ch0=13; a.ch1=0; printf(“%dn“,a.i); 程序的输出结果是(注意:ch0在低字节,ch1在高字节)_。 A:13B:14C:208D:209 答案:A 评析:本题的考查点是共用体类型数据的特点。 根据共用体的定义可知:共用体a的成员i和成员ch2是共用着同一段内存空间,所以,当 程序给a.ch0赋值后,实际上,共用体成员i的值也确定了,为13,所以打印输出的结果应当 为13。 知识点:知识点/结构体(即“结构“)与共用体(即“联合“)/结构体和共用体类型数据的定义 方法和引用方法 39、有以下程序 main() int c; while(c=getchar() )!=n) switch(c-2) case 0: case 1: putchar(c+4); case 2:putchar(c+4);break; case 3:putchar(c+3); default:putchar(c+2);break; 从第一列开始输入以下数据,代表一个回车符。 2473 程序的输出结果是_。 A:668977 B:668966 C:66778777D:6688766 答案:A 评析:本题的考查点是switch()语句。 getchar()函数是从键盘接受一个字符输入;当用户键入的字符不是回车符时,会进入一个 多分支选择语句,根据表达式c-2的值进行分支选择;putchar()是在屏幕上打印一个字符, 最后的结果应当为 668977。 知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构 40、执行下面程序片段的结果是_。 int x=23; do printf(“%2d“,x-); while(!x); A:打印出321B:打印出23 C:不打印任何内容D:陷入死循环答案:B 评析:本题的考查点是do-while循环语句的判断。 x-是自减运算,先使用x的值,后进行自减运算,所以打印出来的结果应当为23。 知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构 41、执行下面的程序段 int x=35; char z=A; int B; B=(x printf(“%d“,n); 该程序的输出结果是_。 A:987 B:876 C:8765 D:9876答案:B 评析:本题考查点是While语句循环次数的问题。 符合n6的n只有7,8,9; 所以循环次数为3。 选项C、 D可以排除。 又因n在输出之前要执行n-, 所以输出结果只能是876。 知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构 46、设有说明语句: chara = 72; 则变量a _。 A:包含1个字符B:包含2个字符 C:包含3个字符D:说明不合法答案:A 评析:本题考查点是转义字符的应用。 转义字符常量xx可以把后面的数字转换为对应的ASCII字符,72表示的是ASCII码 等于72的那个字符,即为“H“,所以在字符变量中存储的只是“H“这一个字符。 知识点:知识点/数据类型及其运算/不同类型数据间的转换与运算 47、若变量已正确定义并赋值,下面符合C语言的表达式是_。 A:a:=b+1B:a=b=c+2 C:int 18.5%3D:a=a+7=c+b答案:B 评析:选项A和C显然错误;对于表达式a=a+7=c+b(答案D),是先执行赋值表达式a+7=c+b, 再把这个表达式的值赋给a,显然,表达式a+7=c+b非法,因为赋值表达式的左值不能为常量或 表达式。 知识点:知识点/基本语句/表达式语句,空语句,复合语句 48、若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是_。 A:1 B:2C:2.0D:2.5答案:C 评析:这是一个逗号表达式, 它的值应为表达式y=x+3/2的值, 而前一个表达式已给x赋值1, 在没有进行类型转换的情况下,3/2的值为1,所以x+3/2的值应为2.0。 知识点:知识点/基本语句/表达式语句,空语句,复合语句 49、若变量a、i已正确定义,且i已正确赋值,合法的语句是_。 A:a=1B:+i;C:a=a+=5D:a=int(i); 答案:B 评析:选项D显然是错的,而选项A没有分号结束,不是C语句;a+=5违反了赋值表达式左 值必须为一个变量(不能是常量或表达式)的规定. 知识点:知识点/基本语句/表达式语句,空语句,复合语句 50、有如下程序 main() inty=3,x=3,z=1; printf(“%d %dn“,(+x,y+),z+2); 运行该程序的输出结果是_。 A:34B:42 C:43D:33答案:D 评析:逗号表达式(+x,y+)的值应该是y+的值,由于y+是先引用后自增,所以y+的值 是3。 知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用 51、有如下程序 main() intx=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=1B:a=1,b=1 C:a=1,b=0D:a=2,b=2答案:A 评析:在这个switch语句中,因为x的值为1,所以执行case 1:后面的a+,这样a = 1。但 又由于其下没有break语句,所以其后面的语句(a+;b+)也将被执行,这样一来,a = 2,b = 1。 知识点:知识点/选择结构程序设计/用SWITCH语句实现多分支选择结构 52、有如下程序 main() floatx=2.0,y; if(x6)n-;printf(“%d“,n); 该程序段的输出结果是_。 A:987B:876C:8765D:9876答案:B 评析:符合n6的n只有7,8,9;所以循环次数为3。C,D可以排除。又:n在输出之前要执 行n-,所以输出结果只能是876。 知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构 56、设有说明语句:chara=72;则变量a_。 A:包含1个字符B:包含2个字符 C:包含3个字符D:说明不合法答案:A 评析:转义字符常量xx可以把后面的数字转换为对应的ASCII字符,72就是H。 知识点:知识点/基本语句/表达式语句,空语句,复合语句 57、有如下程序段 int*p,a=10,b=1; p=a=*p+b; 执行该程序段后,a的值为_。 A:12B:11C:10D:编译出错答案:B 评析:执行p = 后,p指向整数a,*p即p的目标变量,也就是a;所以a = *p + b等价于 a = a+b,可知a的值最终为11。 知识点:知识点/指针/指针与指针变量的概念,指针与地址运算符 58、对于基类型相同的两个指针变量之间,不能进行的运算是_。 A:next=q-next; B:(*p).next=(*q).next; free(q); C:q=(*q).next; (*p).next=q; free(q); D:q=q-next; p-next=q; p=p-next;free(p); 答案:B 评析:选项A的错误在于,已经先把q结点给释放,无法再进行余下语句了;选项C和D的错 误在于因为有了q=(*q).next做了赋值,则free(q)释放了原来q后面的一个结点。 知识点:知识点/结构体(即“结构“)与共用体(即“联合“)/用指针和结构体构成链表 81、以下程序的输出结果是_。 main() int x=05; charz=a; printf(“%dn“,(x scanf(“%d“, if(x-=0;i-) ai=10-i; printf(“%d%d%d“,a2,a5,a8); A:258B:741C:852D:369答案:C 评析:本题使循环语句给数组元素赋值。 C语言中for循环语句的一般形式为: for(表达式1;表达式2;表达式3) 语句部分; 知识点:知识点/循环结构程序设计/FOR循环结构 96、以下程序的输出结果是_。 main() char st20=“hello0t“; printf(“%d%dn“,strlen(st),sizeof(st); A:99B:520C:1320D:2020答案:B 评析:本题主要考查C语言的字符串与库函数。 C语言中字符串是以0字符结束的, 且strlen()函数计算的是0字符前的所有字符的个 数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中 有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的 sizeof(st)为20。 知识点:知识点/数据类型及其运算/不同类型数据间的转换与运算 97、以下程序输出正确的是_。 amovep(int*p,int (*a)3,int n) int i,j; for(i=0;ix,(h1.p)-y); A:12B:23C:14D:32答案:D 评析:本题考查的是C语言中结构体与链表。本题中是一个含有两个结点的循环链表。 C语言中结构体的定义为: struct 结构体类型名 成员表列; ; 知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用 99、以下程序的输出结果是_。 main() int a,b; for(a=1,b=1;a=10) break; if(b%3=1) b+=3;continue; printf(“%dn“,a); A:101B:6C:5D:4答案:D 评析:本题主要考查考生对C语言中的循环语句和程序的执行逻辑。本题中for循环语句共 执行3次,所以a的值累加3次,结果为4。 知识点:知识点/循环结构程序设计/FOR循环结构 100、以下程序的输出结果是_。 union myun struct int x,y,z;u; intk; a; main(0 a.u.x=4;a.u.y=5;a.u.z=6; a.k=0; printf(“%dn“,a.u.x); A:4B:5C:6D:0答案:D 评析:本题主要考查C语言中构造类型,联合体与结构体。结构体中的成员使用各自的存储 区,而联合体中的成员使用共同的存储区。 知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用 101、以下程序的结果是_。 inta,b; void fun() a=100; b=200; main() inta=5,b=7; fun(); printf(“%d%dn“,a,b); A:100200B:57C:200100D:75答案:B 评析:本题主要考查的是C语言中的变量作用域。 全程变量是可以在子函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子 函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。所以本题主函数的局部 变量a,b把同名的全程变量屏蔽了。 知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用 102、以下选项中不属于C语言的类型和是_。 A:signed short int B:unsigned char C:singed longD:long short答案:D 评析: C语言中归纳起来,基本类型数据有以下几种: singed char;unsiged char; signed short int;unsigned short int; signed long int;unsighed long int; float;double. 知识点:知识点/数据类型及其运算/C的数据类型及其定义方法 103、若有说明语言:int a,b,c,*d=则能正确从键盘读入三个整数分别赋给变量a、b、c的 语句是_。 A:scanf(“%d%d%d“, B:scanf(“%d%d%d“, C:scanf(“%d%d%d“,a,b,d); D:scanf(“%d%d%d“,a,b,*d);答案:A 评析:在scanf语句中, 要为某一变量赋值, 引用的是该变量的地址, 所以在这里要为a,b,c 赋值可以写成两种形式,除了采用答案B的形式外,还可以写成scanf(“%d%d%d“,,则能给a赋40000的正确语句是_。 A:a=20000+20000B:a=4000*10 C:a=30000+10000D:a=4000L*10L答案:D 评析: 除D之外的选项的右边的表达式都超过了16位带符号整数的范围(32767)。 知识点:知识点/基本语句/表达式语句,空语句,复合语句 105、以下叙述正确的是_。 A:可以把define和if定义为用户标识符 B:可以把define定义为用户标识符,但不能把if定义为用户标识符 C:可以把if定义为用户标识符,但不能把define定义为用户标识符 D:define和if都不能定义为用户标识符答案:B 评析:if属于系统定义的32个标准标识符之一,所以不可以供用户定义。define不在其中。 知识点:知识点/数据类型及其运算/C的数据类型及其定义方法 106、若定义:int a=511,*b= printf(“%dn“,d=ac?(ac?a:c):(b); A:5B:4C:6D:不确定答案:C 评析:本题最重要的分析d=ac?(ac?a:c):(b),首先运算括号内的式子ac?a:c,它的值 是c的值6,即式子化成d=ac?6:4。 显然ac,所以将6赋给d。 知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用 108、以下程序中,while循环的循环次数是_。 main() int i=0; while(i main() int i=0,a=0; while(i void f(int n); main() void f(int n); f(5); void f(int n) printf(“%dn“,n); 则以下叙述中不正确的是_。 A:若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f B:若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数f C:对于以上函数程序,编译时系统会提示出错信息;提示对f函数重复说明 D:函数f无返回值,所

温馨提示

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

评论

0/150

提交评论