C语言基础练习.docx

上传人:b****5 文档编号:28226401 上传时间:2023-07-09 格式:DOCX 页数:21 大小:20.22KB
下载 相关 举报
C语言基础练习.docx_第1页
第1页 / 共21页
C语言基础练习.docx_第2页
第2页 / 共21页
C语言基础练习.docx_第3页
第3页 / 共21页
C语言基础练习.docx_第4页
第4页 / 共21页
C语言基础练习.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言基础练习.docx

《C语言基础练习.docx》由会员分享,可在线阅读,更多相关《C语言基础练习.docx(21页珍藏版)》请在冰豆网上搜索。

C语言基础练习.docx

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(x

returny;}

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;i

for(j=i+2;j

if(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;i

len+=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;i

for(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)>

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1