C语言基础练习.docx
《C语言基础练习.docx》由会员分享,可在线阅读,更多相关《C语言基础练习.docx(21页珍藏版)》请在冰豆网上搜索。
C语言基础练习
C语言基础练习(三)
1、选择题,
(1)以下叙述中正确的是
A)C语言的源程序不必通过编译就可以直接运行
B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C)C源程序经编译形成的二进制代码可以直接运行
D)C语言中的函数不可以单独进行编译
(2)以下符合C语言语法的实型常量是
A)1.2E0.5B)3.14.159E
C).5E-3D)E15
(3)以下4组用户定义标识符中,全部合法的一组是
A)_mainB)IfC)txtD)int
enclude-maxREALk_2
sinturbo3COM_001
(4)若以下选项中的变量已正确定义,则正确的赋值语句是
A)x1=26.8%3B)1+2=x2
C)x3=0x12D)x4=1+2=3;
(5)设有以下定义
#defined2
inta=0;
doubleb=1.25;
charc='A';
则下面语句中错误的是
A)a++;B)b++C)c++;D)d++;
(6)设有定义:
floata=2,b=4,h=3;,根据以下C语言表达式与出与之等价的代数式形式:
A)(a+b)*h/2______________
B)(1/2)*(a+b)*h______________
C)(a+b)*h*1/2______________
D)h/2*(a+b)______________
(7)有以下程序
main()
{intx=102,y=012;
printf("%2d,%2d\n",x,y);}
执行后输出结果是
A)10,01B)02,12
C)102,10D)02,10
(8)以下4个选项中,不能看作一条语句的是
A){;}B)a=0,b=0,c=0;
C)if(a>0);D)if(b==0)m=1;n=2;
(9)设有定义:
inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是
A)scanf("%d",pa)
B)scanf("%d",a)
C)scanf("%d",&pa)
D)scanf("%d",*pa)
(10)以下程序段中与语句k=a>b?
(b>c?
1:
0):
0;功能等价的是
A)if((a>b)&&(b>c))k=1;
elsek=0;
B)if((a>b)||(b>c))k=1
elsek=0;
C)if(a<=b)k=0;
elseif(b<=c)k=1;
D)if(a>b)k=1;
elseif(b>c)k=1;
elsek=0;
(11)有以下程序
main()
{chark;intI;
for(i=1;i<3;i++)
{scanf("%c",&k);
switch(k)
{case‘0':
printf("another\n");
case‘1':
printf("number\n");}
}}
程序运行时,从键盘输入:
01<回车>,程序执行后的输出结果是:
(12)有以下程序
main()
{intx=0,y=5,z=3;
while(z-->0&&++x<5)
y=y-1;
printf("%d,%d,%d\n",x,y,z);}
程序执行后的输出结果是
A)3,2,0B)3,2,-1
C)4,3,-1D)5,-2,-5
(13)有以下程序
main()
{inti,s=0;
for(i=1;i<10;i+=2)
s+=i+1;
printf("%d\n",s);}
程序执行后的输出结果是
A)自然数1~9的累加和
B)自然数1~10的累加和
C)自然数1~9中的奇数之和
D)自然数1~10中的偶数之和
(14)有以下程序
main()
{inti,n=0;
for(i=2;i<5;i++)
{do
{if(i%3)continue;
n++;
}while(!
i);
n++;
}
printf("n=%d\n",n);}
程序执行后的输出结果是
A)n=5B)n=2C)n=3D)n=4
(15)若程序中定义了以下函数
doublemyadd(doublea,doubleB)
{return(a+B)}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是
A)doublemyadd(doublea,B)
B)doublemyadd(double,double);
C)doublemyadd(doubleb,doubleA)
D)doublemyadd(doublex,doubley);
(16)有以下程序
charfun(charx,chary)
{if(xreturny;}
main()
{inta='9',b='8',c='7';
printf("%c\n",fun(fun(a,b),fun(b,c)));}
程序的执行结果是
A)函数调用出错B)8
C)9D)7
(17)设有定义:
intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是(此题多推敲一下,找出一个肯定正确的即可)
A)p=1;B)*q=2;
C)q=p;D)*p=5;
(18)有以下程序
voidf(intv,intw)
{intt;
t=v;v=w;w=t;}
main()
{intx=1,y=3,z=2;
if(x>y)
f(x,y);
else
if(y>z)
f(y,z);
else
f(x,z);
printf("%d,%d,%d\n",x,y,z);}
执行后输出结果是
A)1,2,3B)3,1,2
C)1,3,2D)2,3,1
(19)有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10};
int*p=&a[3],b;
b=p[5];
b中的值是
A)5B)6C)8D)9
(20)有以下程序
main()
{chara[]="abcdefg",b[10]="abcdefg";
printf("%d%d",sizeof(a),sizeof(b));}
执行后输出结果是
A)77B)88C)810D)1010
(21)有以下程序
voidswap1(intc[])
{intt;
t=c[0];c[0]=c[1];c[1]=t;}
voidswap2(intc0,intc1)
{intt;
t=c0;c0=c1;c1=t;}
main()
{inta[2]={3,5},b[2]={3,5};
swap1(a);
swap2(b[0],b[1]);
printf("%d%d%d%d\n",a[0],a[1],
b[0],b[1]);}
其输出结果是
A)5353B)5335
C)3535D)3553
(22)有以下程序
voidsum(int*a)
{a[0]=a[1];}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10};
inti;
for(i=2;i>=0;i--)
sum(aa);
printf("%d\n",aa[0]);}
执行后的输出结果是
A)4B)3C)2D)1
(23)有以下程序
intf(intb[][4])
{inti,j,s=0;
for(j=0;j<4;j++)
{i=j;
if(i>2)i=3-j;
s+=b[j];}
returns;}
main()
{inta[4][4]={{1,2,3,4},{0,2,4,5},
{3,6,9,12},{3,2,1,0}};
printf("%d\n",f(a));}
执行后的输出结果是
A)12B)11C)18D)16
(24)有以下定义
#include
chara[10],*b=a;
不能给数组a输入字符串的语句是
A)gets(a);B)gets(a[0]);
C)gets(&a[0]);D)gets(b);
(25)有以下程序
main()
{char*p[10]={"abc","aabdfg","dcd
be","abbd","cd"};
printf("%d\n",strlen(p[4]));}
执行后输出结果是
A)2B)3C)4D)5
(26)有以下程序
inta=2;
intf(int*A)
{return(*A)++;}
main()
{ints=0;
{inta=5;
s+=f(&a)}
s+=f(&a)
printf("%d\n",s);}
执行后输出结果是
A)10B)9C)7D)8
(27)有以下程序
#definef(x)x*x
main()
{inti;
i=f(4+4)/f(2+2);
printf("%d\n",i);}
执行后输出结果是
A)28B)22C)16D)4
(28)设有以下语句
typedefstructS
{intg;charh;}T;
则下面叙述中正确的是
A)可用S定义结构体变量
B)可以用T定义结构体变量
C)S是struct类型的变量
D)T是structS类型的变量
(29)有以下程序
strucSTU
{charname[10];
intnum;};
voidf1(structSTUc)
{structSTUb={"LiSiGuo",2042};
c=b;}
voidf2(structSTU*c)
{structSTUb={"SunDan",2044};
*c=b;}
main()
{structSTUa={"YangSan"
2041},b={"WangYin",2043};
f1(a);
f2(&b)
printf("%d%d\n",a.num,b.num);}
执行后的输出结果是
A)20412044B)20412043
C)20422044D)20422043
(30)有以下程序
main()
{unsignedchara,b;
a=4|3;
b=4&3;
printf("%d%d\n",a,b);}
执行后输出结果是
A)70B)07C)11D)430
(31)下面程序的功能是输出以下形式的金字塔图案是:
*
***
*****
*******
main()
{inti,j;
for(i=1;i<=4;i++)
{for(j=1;j<=4-i;j++)
printf("");/*输出一空格*/
for(j=1;j<=_______;j++)
printf("*");
printf("\n");}
}
在下划线处应填入的是
A)iB)2*i-1C)2*i+1D)i+2
(32)有以下程序其输出结果是
voidsort(inta[],intn)
{inti,j,t;
for(i=0;ifor(j=i+2;jif(a[i]{t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{intaa[]={1,2,3,4,5,6,7,8,9,10},i;sort(aa,10);
for(i=0;i<10;i++)
printf("%d",aa[i]);
printf("\n");}
A)1,2,3,4,5,6,7,8,9,10,
B)10,9,8,7,6,5,4,3,2,1,
C)9,2,7,4,5,6,3,8,1,10,
D)1,10,3,8,5,6,7,4,9,2,
(33)以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是
A)chars[10]="abcdefg";
B)chart[]="abcdefg",*s=t;
C)chars[10];s="abcdefg";
D)chars[10];strcpy(s,"abcdefg");
(34)有以下程序
#include
main(intargc,char*argv[])
{inti,len=0;
for(i=1;ilen+=strlen(argv);
printf("5d\n",len);}
经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行
exabcdefgh3k44
执行后输出结果是
A)14B)12C)8D)6
(35)有以下程序
voidf(inta[],inti,intj)
{intt;
if(i{t=a[i];a[i]=a[j];a[j]=t;
f(a,i+1,j-1);}
}
main()
{inti,aa[5]={1,2,3,4,5};
f(aa,0,4);
for(i=0;i<5;i++)
printf("%d,",aa[i]);
printf("\n");}
执行后输出结果是
A)5,4,3,2,1,B)5,2,3,4,1,
C)1,2,3,4,5,D)1,2,3,4,5,
(36)有以下程序
structSTU
{charname[10];
intnum;
intScore;};
main()
{structSTUs[5]={{"YangSan",20
041,703},{"LiSiGuo",20042,580},{"wangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045,537}},*p[5],*t;
inti,j;
for(i=0;i<5;i++)
p[i]=&s[i];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(p[i]->Score>p[j]->Score)
{t=p[i];p[i]=p[j];p[j]=t;}
printf("%d%d\n",s[1].Score,p[1]->Score);}
执行后输出结果是
A)550550B)680680
C)580550D)580680
*(37)有以下程序
#include
typedefstructNODE
{intnum;
structNODE*next;}NODES;
main()
{NODES*p,*q,*r;
intsum=0;
p=(NODES*)malloc(sizeof(NODES));
q=(NODES*)malloc(sizeof(NODES));
r=(NODES*)malloc(sizeof(NODES));
p->num=1;q->num=2;r->num=3;
p->next=q;q->next=r;r->next=NULL;
sum+=q->next->num;sum+=p->num;
printf("%d\n",sum);}
执行后的输出结果是
A)3B)4C)5D)6
(38)有以下程序
#include
main()
{FILE*fp;inti,k=0,n=0;
fp=fopen("d1.dat","w");
for(i=1;i<4;i++)
fprintf(fp,"%d",i);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);
printf("%d%d\n",k,n);
fclose(fp);}
执行后输出结果是
A)12B)1230C)123D)00
(39)有以下程序(提示:
程序中fseek(fp,-2L*sizeof(int),SEEK_END)语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)
#include
main()
{FILE*fp;
inti,a[4]={1,2,3,4},b;
fp=fopen("data.dat","wb");
for(i=0;i<4;i++)
fwrite(&a,sizeof(int),1,fp);
fclose(fp);
fp=fopen("data.dat","rb");
fseek(fp,-2L*sizeof(int),SEEK_END)
fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/
fclose(fp);
printf("%d\n",b)}
执行后输出结果是
A)2B)1C)4D)3
二、填空题
(1)已知字符A的ACSII码值为65,以下语句的输出结果是_________
charch='B';
printf("%c%d\n",ch,ch);
(2)有以下语句段
intn1=10,n2=20;
printf("_________",n1.n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10
n2=20
(3)有以下程序
main()
{intt=1,i=5;
for(;i>=0;i--)
t*=i;
printf("%d\n",t);}
执行后输出结果是_________。
(4)有以下程序
main()
{intn=0,m=1,x=2;
if(!
n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);}
执行后输出结果是_________。
(5)有以下程序
#include
main()
{charch1,ch2;
intn1,n2;
ch1=getchar();
ch2=getchar();
n1=ch1-‘0';
n2=n1*10+(ch2-‘0');
printf("%d\n",n2);}
程序运行时输入:
12<回车>,执行后输出结果是_________。
(6)有以下程序
voidf(inty,int*x)
{y=y+*x;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);}
执行后输出的结果是_________。
(7)函数fun的功能是计算xn
doublefun(doublex,intn)
{inti;doubley=1;
for(i=1;i<=n;i++)
y=y*x;
returny;}
主函数中已经正确定义m,a,b变量并赋值,并调用fun函数计算:
m=a4+b4-(a+b)3。
实现这一计算的函数调用语句为_________________。
(8)下面rotate函数的功能是:
将n行n列的矩阵A转置为A',例如:
123415913
5678转261014
9101112为371115
13141516481216
请填空
#defineN4
voidrotate(inta[][N])
{inti,j,t;
for(i=0;ifor(j=0;_______;j++)
{t=a[j];
_______;
a[j]=t;}
}
(9)以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。
请填空。
voidsstrcpy(char*s,char*t)
{while(*s++=_______);}
main()
{charstr1[100],str2[]="abcdefgh";
sstrcpy(str1,str2);
printf("%s\n",str1);}
(10)下列程序的运行结果是:
_______
#include
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);
printf("%s\n",p);}
(11)下面程序的运行结果是:
_______
intf(inta[],intn)
{if(n>1)
returna[0]+f(&a[1],n-1);
else
returna[0];}
main()
{intaa[3]={1,2,3},s;
s=f(&aa[0],3);
printf("%d\n",s);}
(12)以下程序中给指针p分配三个double型动态内存单元,请填空。
#include
main()
{double*p;
p=(double*)malloc(_______);
p[0]=1.5;p[1]=2.5;p[2]=3.5;printf("%f%f%f\n",p[0],p[1],p[2]);}
(13)以下程序的运行结果是_______.
#include
typedefstructstudent{
charname[10];
longsno;
floatscore;
}STU;
main()
{STU
a={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;
d=a;
if(strcmp(a.name,b.name)>