c语言试题及答案_第1页
c语言试题及答案_第2页
c语言试题及答案_第3页
c语言试题及答案_第4页
c语言试题及答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、精品文档C 语言部分一、选择题(每小题2分,共10分)(下在各小题,分别有一个或多个正确答案,请将所有正确答案的编号,填写在 该小题题干后的括号内。错选或漏选均不得分)。1、若定义:int a230,2, 4, 6, 8,10;以下描述正确的有(A,C,D, E)A、* (a+1)为元素6的地址这里a+1=a1的地址;*(a+1)的值是6,故A正确。B、* (a1+1 )的值为 2为8,故B不正确C、* (a+1) +2 的值为 8这里a+1是一个指针,指向的是a1.*(a+1)为a1 , a1指向的是a10.*(a+1)为 6,加 2得 8,故 C正确;D a0与a相同因二者都是指针,指针的

2、地址都是指向数组中的第一个元素的地址,故D正确。E、a12的值为 10它是指第二行的第三个元素,为10,正确2、 对函数的正确使用方法描述(A, C, D )。A、用数组做函数参数时,必须在主调函数和被调函数中分别定义数组B、 实参数组元素和形参数组元素类型可以不一致|C、 形参数组长度可以不指定D形参数组长度可以大于实参数组长度E、数组名做参数属于值传递3、对静态变量的正确描述(A, B, D, E)A、静态局部变量在静态存储区内分配单元()B、静态外部变量可以赋初值,也可以不赋初值C、静态外部变量的作用与外部变量相同D静态局部变量在函数调用结束时,仍保存其值,不会随着消失。E、静态局部变量

3、只赋一次初值4、下列描述正确的是(慣,C)。A、 由main函数及其参数argc和* argv可以实现命令行方式B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中/先写缓冲区数据到文件中,再释放文件指针C、 字符数组并不要求它的最后一个字符是0 /是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用0, 样可以知道到哪里是字符数组的结尾。D A和“A”都是字符串常量E、若char*S= “ta017bc ”;则指针变量S指向的字符串所占的字节数是 75、 在缓冲文件系统中用于读写的函数有(A, B, D )A、putchar ()B、

4、fread()C、rewind () D purw() E、fseek()二、 程序阅读,并给出运行结果(共10分,每题5分)。(1) main() unsigned a,b,xint n;a=0x763输出结果:n=6;b=avv (12-n);x=(a n-2)S;/+,-, 的优先级比 高。printf(hb=%x,nx=%x ”,b,x);在用2个字节表示整数的系统中结果为d8c0d8b6在用4个字节表示整数的系统中结果为1d8c01d8b6故以上两种结果都正确。(2) #include stdin.h I门1Istruct m int x;int *y;*p;int a 4=12,

5、33, -40 , 100;struct m b 4=10,&a2,9,&a3,8,&a0,7,&a1mai n()p=b;输出结果:printf(“ dn”,+p- x) ; /- 的优先级高于 +,因此等于是 +(p-x),为11printf(“ dn” ,(+p)- x) ; /p后移一个元素,其 x 值为 9;printf(“ dn” ,+(*p- y);/-的优先级高于*,此时p已指向b1,故*(p-y)为a3为100.自加后为 101; r故输出结果为:119101三、程序设计(共10分)设在文件a.txt和文件b.txt中分别存有两个字符串,设计一个程序将这两个字 符串按依序交叉

6、的方式合并为一个字符串(例如“ aaaaa”与“bbb”的合并结果 为“ abababaa”,而“ bbb”与“ aaaaa”的合作结果为“ bababaa”,)并将结 果存入文件a.txt中。【答案】写程序时,可以分别读取a.txt文件和b.txt文件,注意(1),无论a文件先 读完还是b文件先读完,程序都能作出适应性的判断。注意(2)把a和b合并 的结果,写到一个临时文件c中,最后把c的文件覆盖到a文件中,达到题意的 要求。#i ncludemai n()FILE *fp,*fq,*fr;char ch;if(fp=fope n( a.txt,叶)=NULL) prin tf(ca nno

7、t ope n file a.txt);exit(0);网址:http:/www.docba.c n/doc/26/9315.html|if(fq=fope n(b.txt,广)=NULL) prin tf(ca nnot ope n file b.txt);exit(0); |fr=fope n( c.txt,w+);while(!feof(fp)|ch=fgetc(fp);fputc(ch,fr); if(!feof(fq)ch=fgetc(fq);fputc(ch,fr);while(!feof(fq)ch=fgetc(fq); fputc(ch,fr);rew in d(fp); re

8、wi nd(fr);while(!feof(fr)ch=fgetc(fr);fputc(ch,fp);fclose(fp);fclose(fq); fclose(fr);1.2四川大学2001年攻读硕士学位研究生入学考试试题 及答案1.2.1第2001年 C语言程序设计 题目一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码写在答题纸上。请注意注明题号。每小题 1分,共计6分)1、 t 表示什么? 字符串常数标识符 变量字符常量答案:2、对宏定义不正确的描述是哪一个? 在进行宏定义时,可以引用已经定义的宏名,可以层层置换/可以引用已经定义了的宏名,可以层层置换 宏名的有效

9、范围包括本文件的任何位置/宏名的有效范围定义命令之后到本源文件结束,可以用#define终止宏定义的作用域 宠定义不是语句,不必在行末加分号/是预处理定义语句 对程序中双引号括起来的字符串,即使与宏名相同,也不进行置换3、若定义 static char s20=” computer”; 则执行语句 x = strlen(s)后,x的值为多少?209 819/strlen 函数计算char*型字符串的长度的时候,并不包含末尾的0 ;4、以下哪一个表达式取值是正确的?65结果为66& 5结果为76|5结果为765结果为05、如定义enum weekday one, two, thr, fou, f

10、iv;enum weekday working ; 以下哪个是不正确的枚举变量的使用? worki ng = thr; worki ng =2; worki ng = (enum weekday)2; worki ng = (enum weekday) (5-3);/不能对其赋值 &下列说法中正确的是哪一个? sizeof (char) sizeof (char) sizeof (char) sizeof (char)是结果为整型的表达式 是一个不合法的表示形式 是一种函数调用是结果为实型的表达式 二、阅读程序,并回答问题(共12分)1、下列程序的输出是什么? ( 3分) # in clude

11、 void mai n ()char * aplha 6 = “ABC, “DEF,“GHI”,“ JKL”,“MNO, “PQR I; char *p;int i;p = aplha;for (i = 0; i4; i+)printf (%s,pi);printf (n ”);/输出结果ABCDEFGHIJKL刚好是字符串数组里面的前四个元素的内容连接起来2、下列程序为什么无法将用户输入的三个整数按从小到大排序输出?应该如何修改? ( 6分)# in elude void swap (int x, int y)int t = x;seanf (“%d, %d, %d” , &a, & b,

12、&e);if (ab)swap (a, b);if (ae)swap (a, e);if (be)swap (b, e);printf (%d, %d, %d”,a, b, e);/函数swap采用值传递,虽然将形参x和y交换了,但是并不影响到实参。将 值传递改成指针传递就可以了。C函数参数采用值传递方式,虽然swap函数将形式参数x和y的值进行了调换, 但是影响不到相应的实在参数。所以在主函数中,通过调用sawp函数调换a和b (或a或e,或b和c)的值是根本达不到目的的。修改:|(1) ( 2 分)if (ac) swap (& a, & c); if (bc) swap (& b, &

13、c);、假设系统为基本整型量分配2个字节,为字符型量分配1个字节。下列程序 完成的功能是什么? ( 3分)# in elude vstdio. hunionint n;char ch 2; u;void mai n ()int m;scanf (“ d,& m);.n = m;printf (“n%u, %u”,u.ch0, u.ch1);/该程序的功能,取用户输入的整数值的高字节和低字节,并按照任意整数的低字节和高字节分别输出。三、程序设计题(12分)假设一个文本文件中保存着100个整数,请将这100个整数按从小到大的顺序写 到另一个文本文件中去,并且在新文件中每 10个整数占一行。源文件名

14、和目标 文件名通过命令行参数获取。“ ”w”& ai);fin = fope n (argv1, fout = fope n (argv2, for (i = 0; i100; i+) fscanf (fin, “ %d for (i = 0; i99; i+)-i; i+)for (i = 0; iaj+1) t = aj; aj = aj+1; aj+1=t;for (i = 0; i2的值为A、50 B、25 C、12.512/每右移一位除以2,且由于a为整型,结果为整型4、若c,c1,c2均为字符型变量,下列语句执行后。c=a; c1=+c; c2=c+;c1,c2的值分别为。A、c1

15、=b,c2=cB c1=a,c2=cC、c1=b,c2=bD c1=a,c2=b/前加加,先加1后使用值,后加加是先使用其值在加加,所以c加加后的值赋 予cl, cl得值b, c2先使用值,再加加,c2得值b5、以下c语句执行后,int i, s=0;for (i=O;i v 10;i+)s+=i;printf (%dn, i);输出的内容为。A、0B、9 C、10 D 11/i值在循环外定义,所以其值循环结束仍有意义,得值106以下c语句执行后,char s1100 =I like C 1an guage ,s2100;strcpy(s2, s1);strcat (s1, s2);puts

16、(s2);输出的内容为。A、IB、I like C IanguageC、I like C Ianguage I like C IanguageD I like C Ianguage I like C Ianguage I like C Ianguage/连接后的串存在s1里,对s2没有影响二、 阅读程序,写出该程序的执行结果。(4分)# include stdio.h void mai n () char a 3 10=Beijing ,Shanghai, Chengdu;char p1, (*p2)10;p1=a0;p2=a;prin tf(%cn,*(a1+1);/ a1代表是第一行字符串

17、Shanghai,加1后得值第一个字符h的地址,*取 出其地址里的值hprin tf(%cn,*(*(a+1)+2);/ *(a+i)=ai代表是第一行字符串Shanghai,加2后得值第2个字符a的地址,*取出其地址里的值prin tf(%cn,*(p1+1);/p1是一字符指针,加一指向第零行第1个字符e的位置,*取出其地址里的值 prin tf(%cn,*(*(p2+1)+2);p2为一指向数组的指针,p2是与数组名等价的指针,它指向2维数组的首行, p2+ 1指针指向了第一行字串Shanghai,加2后得值第2个字符a的地址,*取 出其地址里的值prin tf(%sn,*(p1+1);

18、/打印的从第一个字符开始的第零行余下的字符串eijingprin tf(%sn,*(p22);p22指的是第二行,打印第二行字符串Che ngduprin tf(%sn,*(p2+ 1);p2+1指向的是第一行字符串 sha nghai三、按要求编写函数。(8分)在一程序中定义了如下结构类型用于处理单向链表:struct li nkage int value;struct lin kage *pNext;;现已经编写出按节点的成员a值从小到大建立初始链表的函数create (),如下所示:struct lin kage * create (void )struct lin kage * pHe

19、ad;int a4=2,1,3,5 ;pHead=NULL;for (i=0;i v4;i+ )pHead=addltem(pHead,ai);return pHead; | 在该函数的for循环前,pHead为NULL在执行整个for循环后,创建的链表如 下所示: 即在被调函数addltem()中,需要动态分配内存,生成新节点,将传入的第二 参数的值赋给该节点的成员value :并通过第一个参数链表首节点确定适当位置 放置该新节点。请完成函数:struct li nkage * addltem (struct lin kage *pHead, int value );返回值指向单向链表头节点

20、。你可能用到下面的动态内存分配函数。void* malloc (un sig ned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。返回值为指向分配域起始地址的指针。1、在空链表中加第一个节点2分;2、加到当前链表头节点前2分;3、 加到当前链表头节之后适当位置,可分为两步。2分;4、其它部分2分,包括整体结构,变量定义,返回值。struct li nkage *addltem (struct lin kgae *pHead ,int value) struct lin kage *p ,*q,*r,*s;p=pHead;if (!p) I r=(struct linkage *) malloc (sizeof (struct li

温馨提示

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

评论

0/150

提交评论