39) 设有如下说明 typedef struct { int n; char c; double x;}STD; 则以下选项中 ,能正确定义结构体数组并赋初值的语句是 A) STD tt[2]={{1,'A',62},{2,'B',75}}; B) STD tt[2]={1,"A",62,2,"",75}; C) struct tt[2]={{1,'A'},{2,'B'}}; D) struct tt[2]={{1,"A",62.5},{2,"B",75.0}}; (40) 有以下程序 main() { union{ unsigned int n; unsigned char c; }ul; ul.c='A'; printf("%c\n",ul.n); } 执行后输出结果是 A) 产生语法错 B) 随机值 C) A D) 65 (41) 有以下程序 main() { char str[]="xyz",*ps=str; while(*ps) ps++; for(ps--;ps-str>=0;ps--) puts(ps);} 执行后输出结果是 A) yz<回车>xyz B) z<回车>yz C) z<回车>yz<回车>xyz D) x<回车>xy<回车>xyz (42) 有以下程序 main() {int a[][3]={{1,2,3},{4,5,0}},(*pa)[3],i; pa=a; for(i=0;i<3;i++) if(i<2) pa[1][i]=pa[1][i]-1; else pa[1][i]=1; printf("%d\n",a[0][1]+a[1][1]+a[1][2]); } 执行后输出结果是 A) 7 B) 6 C) 8 D) 无确定值 (43) 有以下程序 void fun(int *a,int i,int j) { int t; if (i<j) { t=a[i];a[i]=a[j];a[j]=t; fun(a,++i,--j); } } main() { int a[]={1,2,3,4,5,6},i; fun(a,0,5); for(i=0;i<6;i++) printf("%d",a[i]); } 执行后输出结果是 A) 6 5 4 3 2 1 B) 4 3 2 1 5 6 C) 4 5 6 1 2 3 D) 1 2 3 4 5 6 (44) 有以下程序 main(int argc,char *argv[]) { int n,i=0; while(argv[1][i]!='\0') { n=fun(); i++;} printf("%d\n",n*argc); } int fun() { static int s=0; s+=1; return s; } 假设程序编译、连接后生成可执行文件exam.exe,若键入以下命令 exam 123〈回车〉 则运行结果为 A) 6 B) 8 C) 3 D) 4 (45) 以下程序中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是 A) main() {int *p; fun(p);… } int fun(int *p) { int s; p=&s;} B) main() {int *p; fun(&p);…} int fun(int **p) {int s; *p=&s;} C) #include<stdlib.h> main() {int *p; fun(&p);…} int fun(int **p) {*p=(int*)malloc(2);}… D) #include<stdlib.h> main() {int *p; fun(p);…} int fun(int *p) {p=(int*)malloc(sizeof(int));} (46) 若要说明一个类型名STP,使得定义语句STP s;等价于char *s;,以下选项中正确的是 A) typedef STP char *s; B) typedef *char STP; C) typedef STP *char; D) typedef char* STP ; (47) 设有如下定义 struct ss { char name[10]; int age; char sex; } std[3],* p=std; 下面各输入语句中错误的是 A) scanf("%d",&(*p).age); B) scanf("%s",&std.name); C) scanf("%c",&std[0].sex); D) scanf("%c",&(p->sex)); (48) 设char型变量x中的值为10100111,则表达式(2+x)∧(~3)的值是 A) 10101001 B) 10101000 C) 11111101 D) 01010101 (49) 以下叙述中不正确的是 A) C语言中的文本文件以ASCII码形式存储数据 B) C语言中对二进制位的访问速度比文本文件快 C) C语言中,随机读写方式不使用于文本文件 D) C语言中,顺序读写方式不使用于二进制文件 (50) 以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入 字符#号时结束输入和输出操作,但程序有错。 #include <stdio.h> main() { FILE *fout; char ch; fout=fopen('abc.txt','w'); ch=fgetc(stdin); while(ch!='#') { fputc(ch,fout); ch =fgetc(stdin); } fclose(fout); } 出错的原因是 A) 函数fopen调用形式有误 B) 输入文件没有关闭 C) 函数fgetc调用形式有误 D) 文件指针stdin没有定义
二) 填空题(每空2分,共40分) 请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。 (1) 用十六进制给存储器中的字节地址进行编号,若地址编号从0000到FFFF,则该存储器的容量为【1】KB。 (2) 假设在当前盘的当前目录下有两个文件A.TXT和B.TXT,现在要将文件B.TXT合并连接到文件A.TXT的后面。若使用COPY命令,则完整的命令为【2】。 (3) E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【3】。 (4) 假设在当前盘当前目录下有一个可执行程序USER.EXE。现要执行该程序,并要求在执行过程中将显示输出的结果信息存入当前盘当前目录的文件OUT.DAT中,则完整的DOS命令为【4】。 (5) 在DOS环境下,表示打印机的设备文件名是【5】。 (6) 若有语句 int i=-19,j=i%4; printf("%d\n",j); 则输出的结果是【6】。 (7) 若有程序 main() { int i,j; scanf("i=%d,j=%d",&i,&j); printf("i=%d,j=%d\n ",i,j); } 要求给i赋10,给j赋20,则应该从键盘输入【7】。 (8) 若有以下程序 main() { int p,a=5; if(p=a!=0) printf("%d\n",p); else printf("%d\n",p+2); } 执行后输出结果是【8】。 (9) 若有以下程序 main() { int a=4,b=3,c=5,t=0; if(a<b)t=a;a=b;b=t; if(a<c)t=a;a=c;c=t; printf("%d %d %d\n",a,b,c); } 执行后输出结果为【9】。 (10) 若有以下程序 main() { int a[4][4]={{1,2,-3,-4},{0,-12,-13,14} ,{-21,23,0,-24},{-31,32,-33,0}}; int i,j,s=0; for(i=0;i<4;i++) { for(j=0;j<4;j++) { if(a[i][j]<0) continue; if(a[i][j]==0) break; s+=a[i][j]; } } printf("%d\n",s); } 执行后输出结果是【10】。 (11) 若有以下程序 main() { char a; a='H'-'A'+'0'; printf("%c\n",a); } 执行后输出结果是【11】。 (12) 若有以下程序 int f(int x,int y) { return(y-x)*x; } main() { int a=3,b=4,c=5,d; d=f(f(3,4),f(3,5)); printf("%d\n",d); } 执行后输出结果是【12】。 (13) 函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1. 其构成规律是: (1) 第0列元素和主对角线元素均为1 (2) 其余元素为其左上方和正上方元素之和 (3) 数据的个数每行递增1 请将程序补充完整。 #define N 6 void yanghui(int x[N][N]) { int i,j; x[0][0]=1; for(i=1;i<N;i++) { x[i][0]=【13】=1; for(j=1;j<i;j++) x[i][j]=【14】; } } (14) 以下函数的功能是删除字符串s中的所有数字字符。请填空。 viod dele(char *s) { int n=0,i; for(i=0;s[i];i++) if(【15】) s[n++]=s[i]; s[n]=【16】; }
(15) 设函数findbig已定义为求3个数中的最大值。以下程序将利用函数指针调用findbig函数。请填空。 main() { int findbig(int,int,int); int (*f)(),x,y,z,big; f=【17】; scanf("%d%d%d",&x,&y,&z); big=(*f)(x,y,z); printf("big=%d\n",big); } (16) 以下程序的输出结果是【18】。 #define MCRA(m) 2*m #define MCRB(n,m) 2*MCRA(n)+m main() { int i=2,j=3; printf("%d\n",MCRB(j,MCRA(i))); } (17) 设有以下定义 stuct ss { int info; struct ss *link;}x,y,z; 且已建立如下图所示链表结构: _____ _____ _____ | | | | | | | | | | | -|→| | -|→| | | |__|__| |__|__| |__|__| x y z
请写出删除结点y的赋值语句【19】。 (18) 已有文本文件test.txt,其中的内容为:Hello,everyone!。以下程序中,文件test.txt已正确为“读”而打开,由此文件指针fr指向文件,则程序的输出结果是【20】。 #include <stdio.h> main() { FILE *fr; char str[40]; ...... fgets(str,5,fr); printf("%s\n",str); fclose(fr); }
|