C语言综合练习题.docx
- 文档编号:6767143
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:25
- 大小:31.01KB
C语言综合练习题.docx
《C语言综合练习题.docx》由会员分享,可在线阅读,更多相关《C语言综合练习题.docx(25页珍藏版)》请在冰豆网上搜索。
C语言综合练习题
C语言综合练习
一、选择题(本题中包含了读程序写结果的题目,对于这类题目,要能分析其运行过程,然后写出结果)
1、有如下语句inta=10,b=20,*p1,*p2;p1=&a;p2=&b;如图1所示,若要实现图2所示的存储
结构,可选用的赋值语句是___________。
p1p2p1p2
abab
A)*p1=*p2;B)p1=p2;C)p1=*p2;D)*p1=p2;
2.变量的指针,其含义是指该变量的_________.
a)值b)地址
c)名d)一个标志
3.关于运算符:
&(取地址运算符)、->、&&(逻辑与)的优先级,下列说法正确的是_________。
A)&高于->高于&&B)->高于&高于&&
C)&&高于->高于&D)&&高于&高于->
4有以下程序
#include
main()
{FILE*fp;inti=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);
}
程序运行后的输出结果是_________
A)2030
B)2050
C)3050
D)3020
5.有变量定义intstr[12],*p=str;则下列说法正确的是_________。
A.*p的值为strB.&p的值为str
C.*p的值为&strD.p的值为str
6.若有语句int*point,a=4;和point=&a;下面均代表地址的一组选项是_____.
a)a,point,*&ab)&*a,&a,*point
c)*&point,*point,&ad)&a,&*point,point
7阅读以下程序及对程序功能的描述,其中正确的描述是_________
#include
main()
{FILE*in,*out;
charch,infile[10],outfile[10];
printf("Entertheinfilename:
\n");
scanf("%s",infile);
printf("Entertheoutfilename:
\n");
scanf("%s",outfile);
if((in=fopen(infile,"r"))==NULL)
{printf("cannotopeninfile\n");
exit(0);
}
if((out=fopen(outfile,"w"))==NULL)
{printf("cannotopenoutfile\n");
exit(0);
}
while(!
feof(in))fputc(fgetc(in),out);
fclose(in);
fclose(out);
}
A)程序完成将磁盘文件的信息在屏幕上显示的功能
B)程序完成将两个磁盘文件合二为一的功能
C)程序完成将一个磁盘文件复制到另一个磁盘文件中
D)程序完成将两个磁盘文件合并并在屏幕上输出
8.若有说明;int*p,m=5,n;以下正确的程序段的是________.
a)p=&n;b)p=&n;
scanf("%d",&p);scanf("%d",*p);
c)scanf("%d",&n);d)p=&n;
*p=n;*p=m;
9有如下定义
structperson{charname[9];intage;};
structpersonclass[10]={"John",17,"paul",19,"Mary",18,"Adam",16,};
根据上述定义,能输出字母M的语句是_________
A)printf("%c\n",class[3].name);
B)printf("%c\n",class[3].name[1]);
C)printf("%c\n",class[2].name[1]);
D)printf("%c\n",class[2].name[0]);
10.以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是________.
main()
{
int*p,*q,a,b;
p=&a;
printf(“inputa:
”);
scanf(“%d”,*p);
……
}
a)*p表示的是指针变量p的地址
b)*p表示的是变量a的值,而不是变量a的地址
c)*p表示的是指针变量p的值
d)*p只能用来说明p是一个指针变量
11设有如下定义:
strucksk
{inta;
floatb;
}data;
int*p;
若要使P指向data中的a域,正确的赋值语句是_________
A)p=&a;
B)p=data.a;
C)p=&data.a;
D)*p=data.a;
12、下面判断正确的是____________。
A)char*a=”china”;等价于char*a;*a=”china”;
B)charstr[10]={“china”};等价于charstr[10];str[]={“china”};
C)char*s=”china”;等价于char*s;s=”china”;
D)charc[4]=”abc”,d[4]=”abc”;等价于charc[4]=d[4]=”abc”;
13.设有定义intarray[3][4],则在下面几种引用下标为i和j的数组元素的方法中,正确的是_________。
A.*(array[i][j])B.*(*(array+i)+j)
C.array[i]+jD.*(array+i*4+j)
14.已有变量定义和函数调用语句:
inta=25;print_value(&a);下面函数的正确输出结果是________.
voidprint_value(int*x)
{printf(“%d\n”,++*x);}
a)23b)24c)25d)26
15、下面程序的运行结果是______________。
#include
main()
{staticchara[]=”Language”,b[]=”programe”;
char*p1,*p2;intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf(“%c”,*(p1+k));
}
A)gaeB)gaC)LanguageD)有语法错
16、若有以下定义:
intx[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};
int(*p)[3]=x;
则能够正确表示数组元素x[1][2]的表达式是____________。
A)*((*p+1)[2])B)(*p+1)+2
C)*(*(p+5))D)*(*(p+1)+2)
17、main函数的正确说明形式是___________。
A)main(intargc,char*argv)B)main(intabc,char**abv)
C)main(intargc,charargv)D)main(intc,charv[])
18、若有说明:
char*language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};
则表达式*language[1]>*language[3]比较的是______________。
A)字符F和字符PB)字符串BASIC和字符串JAVA
C)字符B和字符JD)字符串FORTRAN和字符串PASCAL
19、若有说明:
char*language[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};
则language[2]的值是______________。
A)一个字符B)一个地址C)一个字符串D)一个不定值
20、语句int(*prt)();的含义是____________。
A)prt是一个指向一维数组的指针变量
B)prt是指向int型数据的指针变量
C)prt是指向函数的指针,该函数返回一个int型数据
D)prt是一个函数名,该函数的返回值是指向int型数据的指针
21、若要对a进行++运算,则a应具有下面说明______
A)inta[3][2];B)char*a[]={“12”,”ab”};
C)char(*a)[3]D)intb[10],a=b;
22.若有说明:
long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是_________
A)*p=&a;scanf("%ld",p);
B)p=(long*)malloc(8);scanf("%ld",p);
C)scanf("%ld",p=&a);
D)scanf("%ld",&a);
23.已知
struct
{inta;
floatb;
doublec;
}data,*p;
若有p=&data;则对data中成员c的正确引用是_________。
A.p->data.cB.p.c
C.p->cD.p.data.c
24.有以下程序
#include
main()
{intm=1,n=2,*p=&m,*q=&n,*r;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",m,n,*p,*q);
}
程序运行后的输出结果是_________
A)1,2,1,2B)1,2,2,1
C)2,1,2,1D)2,1,1,2
25.有以下程序
main()
{inta=1,b=3,c=5;
int*p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
执行后的输出结果是_________
A)1B)2C)3D)4
26.下列关于结构类型与结构变量的说法中,错误的是_________。
A.结构类型与结构变量是两个不同的概念,其区别如同int类型与int型变量的区别一样。
B.结构可将不同数据类型、但相互关联的一组数据,组合成一个有机整体使用。
C.结构类型中的成员个数不能少于两个。
D.结构类型中的成员名,可以与程序中的变量同名。
27.有以下程序
main()
{inta,k=4,m=4,*p1=&k,*p2=&m;
a=p1==&m;
printf("%d\n",a);
}
程序运行后的输出结果是_________
A)4B)1C)0D)运行时出错,无定值
28在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是_________
A)p向高地址移了一个字节B)p向高地址移了一个存储单元
C)p向高地址移了两个字节D)p与a+1等价
29.有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是_________
A)5B)6C)8D)9
30.若有以下定义,则对a数组元素的正确引用是_________.
inta[5],*p=a;
a)*&a[5]b)a+2c)*(p+5)d)*(a+2)
31.若有以下定义,则p+5表示_______.
inta[10],*p=a;
a)元素a[5]的地址b)元素a[5]的值
c)元素a[6]的地址d)元素a[6]的值
32.设已有定义:
inta[10]={15,12,7,31,47,20,16,28,13,19},*p;下列语句中正确的是_________
A)for(p=a;a<(p+10);a++);
B)for(p=a;p<(a+10);p++);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 综合 练习题