资源描述:
《c语言试题及答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C语言部分一、选择题(每小题2分,共10分)(下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在该小题题干后的括号内。错选或漏选均不得分)。1、若定义:inta[2][3]{0,2,4,6,8,10};以下描述正确的有( A,C,D,E )A、*(a+1)为元素6的地址 这里a+1=a[1]的地址;*(a+1)的值是6,故A正确。B、*(a[1]+1)的值为2为8,故B不正确C、**(a+1)+2的值为8这里a+1是一个指针,指向的是a[1]. *(a+1)为a[1],a[1]指向的是a[1][0].
2、**(a+1)为6,加2得8,故C正确;D、a[0]与a相同 因二者都是指针,指针的地址都是指向数组中的第一个元素的地址,故D正确。E、a[1][2]的值为10它是指第二行的第三个元素,为10,正确2、对函数的正确使用方法描述( A,C,D )。A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组B、实参数组元素和形参数组元素类型可以不一致C、形参数组长度可以不指定 D、形参数组长度可以大于实参数组长度E、数组名做参数属于值传递3、对静态变量的正确描述( A,B,D,E )A、静态局部变量在静态存储区
3、内分配单元( )B、静态外部变量可以赋初值,也可以不赋初值C、静态外部变量的作用与外部变量相同D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。E、静态局部变量只赋一次初值4、下列描述正确的是( A ,C)。A、由main 函数及其参数argc和*argv[]可以实现命令行方式B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中//先写缓冲区数据到文件中,再释放文件指针C、字符数组并不要求它的最后一个字符是‘ ’//是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,
4、而在字符数组中,不用 ,一样可以知道到哪里是字符数组的结尾。D、‘A’和“A”都是字符串常量 E、若char*S=“ta 17bc”;则指针变量S指向的字符串所占的字节数是75、在缓冲文件系统中用于读写的函数有( A,B,D )A、putchar() B、fread() C、rewind() D、purw() E、fseek()二、程序阅读,并给出运行结果(共10分,每题5分)。(1)main(){ unsigneda,b,x intn; a=0x763
5、 输出结果: n=6; b=a<<(12-n); x=(a>>n-2)^b; //+,-,的优先级比<<,>>高。 printf(“b=%x,x=%x”,b,x); } 在用2个字节表示整数的系统中结果为d8c0d8b6在用4个字节表示整数的系统中结果为1d8c01d8b6 故以上两种结果都正确。 (2)#include 〈stdin.h〉 structm {intx;int*y; } *p; inta[4]={12,33,-40,100}; stru
6、ctmb[4]={10,&a[2],9,&a[3],8,&a[0],7,&a[1]}' main(){ p=b; 输出结果: printf(“%d”,++p->x);//->的优先级高于++,因此等于是++(p->x),为11 printf(“%d”,(++p)->x);//p后移一个元素,其x值为9; printf(“%d”,++(*p->y)); //->的优先级高于*, 此时p已指向b[1],故*(p->y)为a[3]为100.自加后为101;}故输出结果为:1191
7、01 三、程序设计(共10分)设在文件a.txt和文件b.txt中分别存有两个字符串,设计一个程序将这两个字符串按依序交叉的方式合并为一个字符串(例如“aaaaa”与“bbb”的合并结果为“abababaa”,而“bbb”与“aaaaa”的合作结果为“ bababaa”,)并将结果存入文件a.txt中。【答案】写程序时,可以分别读取a.txt文件和b.txt文件,注意(1),无论a文件先读完还是b文件先读完,程序都能作出适应性的判断。注意(2)把a和b合并的结果,写到一个临时文件c中,最后把c的文件覆盖到a文件中,达到题意的
8、要求。#includemain(){ FILE*fp,*fq,*fr; charch; if((fp=fopen("a.txt","r+"))==NULL) {printf("cannotopenfilea.txt"); exit(0); 网址:http: