




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编辑版word编辑版word编辑版wordC语言部分一、选择题(每小题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].
**(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、静态局部变量在静态存储区内分配单元(
)B、静态外部变量可以赋初值,也可以不赋初值C、静态外部变量的作用与外部变量相同D、静态局部变量在函数调用结束时,仍保存其值,不会随着消失。E、静态局部变量只赋一次初值4、下列描述正确的是(
A
,C)。A、由main
函数及其参数argc和*argv[]可以实现命令行方式B、使用fclose关闭文件时,先释放文件指针,再写缓冲区数据到文件中//先写缓冲区数据到文件中,再释放文件指针C、字符数组并不要求它的最后一个字符是‘\0’//是的,以字符指针指向的字符串才要求,因为只有这样,才能知道字符串的长度,而在字符数组中,不用\0,一样可以知道到哪里是字符数组的结尾。D、‘A’和“A”都是字符串常量
E、若char*S=“\ta\017bc”;则指针变量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
输出结果:
n=6;
b=a<<(12-n);
x=(a>>n-2)^b;
//+,-,的优先级比<<,>>高。
printf(“\nb=%x,\nx=%x”,b,x);
}
在用2个字节表示整数的系统中结果为d8c0d8b6在用4个字节表示整数的系统中结果为1d8c01d8b6
故以上两种结果都正确。
(2)#include
〈stdin.h〉
structm
{intx;int*y;
}
*p;
inta[4]={12,33,-40,100};
structmb[4]={10,&a[2],9,&a[3],8,&a[0],7,&a[1]}'
main(){
p=b;
输出结果:
printf(“%d\n”,++p->x);//->的优先级高于++,因此等于是++(p->x),为11
printf(“%d\n”,(++p)->x);//p后移一个元素,其x值为9;
printf(“%d\n”,++(*p->y));
//->的优先级高于*,
此时p已指向b[1],故*(p->y)为a[3]为100.自加后为101;}故输出结果为:119101
三、程序设计(共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文件中,达到题意的要求。#include<stdio.h>main(){
FILE*fp,*fq,*fr;
charch;
if((fp=fopen("a.txt","r+"))==NULL)
{printf("cannotopenfilea.txt");
exit(0);
网址:/doc/26/9315.html}
if((fq=fopen("b.txt","r"))==NULL)
{printf("cannotopenfileb.txt");
exit(0);
}
fr=fopen("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);
}
rewind(fp);rewind(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、对宏定义不正确的描述是哪一个?①在进行宏定义时,可以引用已经定义的宏名,可以层层置换//可以引用已经定义了的宏名,可以层层置换②宏名的有效范围包括本文件的任何位置//宏名的有效范围定义命令之后到本源文件结束,可以用#define终止宏定义的作用域③宠定义不是语句,不必在行末加分号//是预处理定义语句④对程序中双引号括起来的字符串,即使与宏名相同,也不进行置换3、若定义staticchars[20]=”computer”;则执行语句x=strlen(s);之后,x的值为多少?①20
②9
③8
④19//strlen函数计算char*型字符串的长度的时候,并不包含末尾的\0;4、以下哪一个表达式取值是正确的?①6>5结果为6
②6&&5结果为7③6||5结果为7
④6<5结果为05、如定义enumweekday
{one,two,thr,fou,fiv};enumweekdayworking;以下哪个是不正确的枚举变量的使用?①working=thr;
②working=2;③working=(enumweekday)2;④working=(enumweekday)(5-3);//不能对其赋值6、下列说法中正确的是哪一个?①sizeof(char)
是结果为整型的表达式②sizeof(char)
是一个不合法的表示形式③sizeof(char)
是一种函数调用④sizeof(char)
是结果为实型的表达式二、阅读程序,并回答问题(共12分)1、下列程序的输出是什么?(3分)#include<stdio.h>voidmain()﹛char*aplha[6]=
﹛“ABC”,“DEF”,“GHI”,“JKL”,“MNO”,“PQR”﹜;char**p;inti;p=aplha;for(i=0;i<4;i++)printf(“%s”,p[i]);printf(“\n”);﹜
//输出结果ABCDEFGHIJKL刚好是字符串数组里面的前四个元素的内容连接起来
2、下列程序为什么无法将用户输入的三个整数按从小到大排序输出?应该如何修改?(6分)#include<stdio.h>voidswap(intx,inty)﹛intt=x;x=y;y=t;﹜voidmain()﹛inta,b,c;scanf(“%d,%d,%d”,
&a,
&b,
&c);if(a>b)
swap(a,b);if(a>c)
swap(a,c);if(b>c)
swap(b,c);printf(“%d,%d,%d”,a,b,c);﹜//函数swap采用值传递,虽然将形参x和y交换了,但是并不影响到实参。将值传递改成指针传递就可以了。C函数参数采用值传递方式,虽然swap函数将形式参数x和y的值进行了调换,但是影响不到相应的实在参数。所以在主函数中,通过调用sawp函数调换a和b(或a或c,或b和c)的值是根本达不到目的的。修改:(1)(2分)voidswap(int*x,int*y)﹛intt=*x;*x=*y;*y=t;﹜(2)(2分)主函数if(a>b)
swap(&a,&b);if(a>c)
swap(&a,&c);if(b>c)
swap(&b,&c);
3、假设系统为基本整型量分配2个字节,为字符型量分配1个字节。下列程序完成的功能是什么?(3分)#include<stdio.h>union﹛intn;charch[2];﹜u;voidmain()﹛intm;scanf(“%d”,&m);u.n=m;printf(“\n%u,%u”,u.ch[0],u.ch[1]);﹜
//该程序的功能,取用户输入的整数值的高字节和低字节,并按照任意整数的低字节和高字节分别输出。
三、程序设计题(12分)假设一个文本文件中保存着100个整数,请将这100个整数按从小到大的顺序写到另一个文本文件中去,并且在新文件中每10个整数占一行。源文件名和目标文件名通过命令行参数获取。
分数分配:变量定义
2分命令行参数处理
1分文件打开
1分文件读
2分排序
3分文件写
2分文件关闭
1分#include<stdio.h>voidmain(intargc,char*argv[])﹛FILE*fin,*fout;Inta[100],i,j,t;if(argc!=3)﹛printf(“Youforgottoenterafilename\n”);return;﹜fin=fopen(argv[1],“r”);fout=fopen(argv[2],“w”);for(i=0;i<100;i++)fscanf(fin,
“%d”,
&a[i]);for(i=0;i<99;i++)for(i=0;i<99-i;i++)if(a[j]>a[j+1])﹛t=a[j];a[j]=a[j+1];a[j+1]=t;﹜for(i=0;i<100;i++)﹛if(i%10=0)fprintf(fout,“%s”,“\n”);fprintf(fout,“%d”,a[i]);﹜fclose(fin);fclose(fout);﹜
1.3
四川大学2002年攻读硕士学位研究生入学考试试题
及
答案1.3.1
第2002年――C语言题目C语言程序设计(共30分)一、单项选择题(在每小题的四个备选答案中,选出一个正确答案。每小题1分,共6分)1、如果I为整型变量,f为float型变量,c表达式'a'+I*f的类型为
。A、字符型
B、整型
C、单精度型
D、双精度型//即使是两个float型的数据相加,都化成double型
float型的数据在运算时一律转化成双精度型,提高其运算精度2、关于c表达式5||(a=b+c)==3的值,正确的说法为
。A、值为1
B、值为5
C、值为0
D、仅这一个表达式,不能确定值,必须知道a,b,c的值后才能计算。//等号==的优先级高于||所以先计算(a=b+c)==3但是不论它为真或假,在与5进行或运算时,按照或运算的法则,只要一方为真,表达式的结果为真。
3、若整型变量a的值为50,则c表达式a>>2的值为
。A、50
B、25
C、12.5
D、12//每右移一位除以2,且由于a为整型,结果为整型4、若c,c1,c2均为字符型变量,下列语句执行后。c='a';c1=++c;c2=c++;c1,c2的值分别为
。A、c1='b',c2='c'
B、c1='a',c2='c'
C、c1='b',c2='b'
D、c1='a',c2='b'//前加加,先加1后使用值,后加加是先使用其值在加加,所以c加加后的值赋予c1,c1得值b,c2先使用值,再加加,c2得值b5、以下c
语句执行后,
inti,
s=0;for(i=0;i<10;i++)s+=i;printf
('%d\n',i);输出的内容为
。A、0
B、9
C、10
D、11//i值在循环外定义,所以其值循环结束仍有意义,得值106、以下c语句执行后,chars1[100]=″IlikeC1anguage″,s2[100];strcpy(s2,s1);strcat(s1,s2);puts(s2);输出的内容为
。A、I
B、IlikeClanguage
C、IlikeClanguageIlikeClanguageD、IlikeClanguageIlikeClanguageIlikeClanguage//连接后的串存在s1里,对s2没有影响二、阅读程序,写出该程序的执行结果。(4分)#include
〈stdio.h〉voidmain(
){
chara[3][10]={"Beijing","Shanghai","Chengdu"};charp1,(*p2)[10];p1=a[0];p2=a;printf("%c\n",*(a[1]+1));//a[1]代表是第一行字符串Shanghai,加1后得值第一个字符h的地址,*取出其地址里的值hprintf("%c\n",*(*(a+1)+2));//*(a+i)=a[i]
代表是第一行字符串Shanghai,加2后得值第2个字符a的地址,*取出其地址里的值printf("%c\n",*(p1+1));//p1是一字符指针,加一指向第零行第1个字符e的位置,*取出其地址里的值printf("%c\n",*(*(p2+1)+2));//p2为一指向数组的指针,p2是与数组名等价的指针,它指向2维数组的首行,p2+1指针指向了第一行字串Shanghai,加2后得值第2个字符a的地址,*取出其地址里的值printf("%s\n",*(p1+1));
//打印的从第一个字符开始的第零行余下的字符串eijingprintf("%s\n",*(p2[2]);//p2[2]指的是第二行,打印第二行字符串Chengduprintf("%s\n",*(p2+1));
//p2+1指向的是第一行字符串shanghai三、按要求编写函数。(8分)在一程序中定义了如下结构类型用于处理单向链表:structlinkage
{
intvalue;
structlinkage*pNext;};现已经编写出按节点的成员a值从小到大建立初始链表的函数create(
),如下所示:
structlinkage*create(void){
structlinkage*pHead;inta[4]={2,1,3,5};pHead=NULL;for
(i=0;i<4;i++)pHead=addItem(pHead,a[i]);returnpHead;}在该函数的for循环前,pHead为NULL;在执行整个for循环后,创建的链表如下所示:
即在被调函数addItem()中,需要动态分配内存,生成新节点,将传入的第二参数的值赋给该节点的成员value:并通过第一个参数链表首节点确定适当位置放置该新节点。请完成函数:structlinkage
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 发现潜力的裁判员试题及答案
- 农作物种子繁育员考试核心内容与试题答案
- 2024年篮球裁判员考试的未来趋势与试题与答案
- 游泳救生员心理辅导经验试题及答案
- 人教版初中英语九年级上册期末测试卷1试题含听力及答案解析
- (高清版)DB50∕T 799-2017 渝小吃 糯米糍粑烹饪技术规范
- 2024年足球裁判员考试分值分布试题及答案
- 2024年农业植保员综合练习题试题及答案
- 2024年农作物种子教育培训试题及答案
- 模具设计项目中的团队协作试题及答案
- 强酸强碱烧伤及中毒的处理方法
- 施工员培训课件(PPT-54张)
- 厂家管道吹扫方案(参考)
- 轧钢高线车间装配工工艺规程
- 钢板桩施工专项方案
- 水土保持常用监测表格(共9页)
- PPT翻书动画效果的制作
- 病理学第十六章-神经系统疾病
- 上海市南汇区医院检验科生物安全手册
- 股权投资邮箱
- 消防设施移交和清单-(精编版)
评论
0/150
提交评论