C复习资料.docx

上传人:b****6 文档编号:5884667 上传时间:2023-01-01 格式:DOCX 页数:15 大小:28.01KB
下载 相关 举报
C复习资料.docx_第1页
第1页 / 共15页
C复习资料.docx_第2页
第2页 / 共15页
C复习资料.docx_第3页
第3页 / 共15页
C复习资料.docx_第4页
第4页 / 共15页
C复习资料.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

C复习资料.docx

《C复习资料.docx》由会员分享,可在线阅读,更多相关《C复习资料.docx(15页珍藏版)》请在冰豆网上搜索。

C复习资料.docx

C复习资料

一、选择题

1.以下叙述错误的是。

A.C程序在书写时,有严格的缩进要求,否则不能编译通过

B.一个C程序只能有一个主函数

C.一个C程序可以包含多个不同名的函数

D.C程序的主函数必须用main作为函数名

2.下列程序段的输出结果是4321。

voidfun(int*x,int*y)

{printf("%d%d",*x,*y);*x=1;*y=2;}

main()

{intx=3,y=4;

fun(&y,&x);

printf("%d%d",x,y);}

3.若有定义语句:

intx=3,y=2,z;在其后执行语句z=0.9+x/y;则z的值为1。

4.有以下程序

#include

main()

{inta;

scanf("%d",&a);

if(a++<8)printf("%d\n",a);

elseprintf("%d\n",a--);}

程序运行时键盘输入8<回车>,则输出的结果是9。

5.以下定义整型3行4列的二维数组a并初始化不正确的是。

A.inta[3][4]={0}B.inta[][4]={0,1,2,3,4,5,6,7,8,9,10,11,12}

C.inta[3][]={0,1,2,3,4,5,6,7,8,9,10,11,12}D.inta[3][4]={{1,2},{1,2,3},{1,2,3,4}}

6.有以下程序

#include

main()

{intc=0,k;

for(k=1;k<3;k++)

switch(k)

{default:

c+=k;

case2:

c++;break;

case4:

c+=2;break;

}

printf(“%d\n”,c);}

程序运行后的输出结果是3。

7.已知如下定义(设long型变量占4个字节,float型占4个字节,char型占1个字节)

unionstudent

{longnum;

charname[20];

floatscore[4];

};

unionstudentstu;

则变量stu所分配的存储空间是字节。

A.4B.16C.20D.32

8.设有以下语句

charch1,ch2,scanf(”%c%c”,&ch1,&ch2);

若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是AB。

9.有以下函数

#include

voidf(charc)

{if(c>'x')f(c-1);

printf("%c",c);}

main()

{f('z');}

程序运行输出结果是XYZ。

11.有以下程序

#include

#include

main()

{chara[5][10]={"china","beijing","you","tiananmen","welcome"};

inti,j;chart[10];

for(i=0;i<4;i++)

for(j=i+1;j<5;j++)

if(strcmp(a[i],a[j])>0)

{strcpy(t,a[i]);strcpy(a[i],a[j]);strcpy(a[j],t);}

puts(a[2]);}

程序运行后的输出结果是tiananmen。

12.有以下程序

#include

intf(intm)

{staticintn=1;

n+=m;

returnn;}

main()

{intn=2;printf("%d,",f(++n));printf("%d\n",f(n++));}

程序运行后的输出结果是4,7。

13.在程序中可以用来作为变量名的合法的标识符是。

A.staticB.23_b1C.stu_1tD.#33

14.有以下程序

#include

#include

voidfun(char*w,intm)

{chars,*p1,*p2;

p1=w;p2=w+m-1;

while(p1

}

main()

{chara[]="abcdefghi";

fun(a,strlen(a));puts(a);}

程序运行后的输出结果是ihgfedcba。

15.有以下程序

main()

{inta[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i+2;

printf("%d\n",a[0][2]);}

程序运行后的输出结果是4。

16.有以下程序

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;

 printf("%d\n",*p+*q);}

程序运行后的输出结果是。

A.6B.8C.10D.16

17.有以下程序

#include

intf(intx,inty)

{return((y-x)*x);}

main()

{inta=1,b=2,c=3,d;

d=f(f(a,b),f(a,c));

printf("%d\n",d);}

程序运行后的输出结果是。

1.对于一个正常运行的C程序,以下叙述中正确的是。

A.程序的执行总是从main函数开始,在main函数结束

B.C语言程序总是从第一个定义的函数开始执行

C.C语言程序中的main()函数必须放在程序的开始部分

D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束

18.以下选项中非法的字符常量是。

A.’\102’B.’\65’C.’\xff’D.’\019’

19.假设所有变量均为整型,则表达式(a=2,b=5,a+b++,a+b)的值是。

A.7B.8C.5D.2

20.以下对一维数组a的正确说明是。

A.intn;scanf("%d",&n);inta[n];B.intn=10,a[n];

C.#defineSIZE10D.inta(10);

inta[SIZE];

21.若有以下定义和语句:

charc1='b',c2='e';

printf("%d,%c\n",c2-c1,c2-'a'+'A');

则输出结果是。

A.2,MB.3,E

C.2,ED.输出项与对应的格式控制不一致,输出结果不确定

22.对下述程序,是正确的判断。

 main()

{intx,y;scanf(“%d,%d”,&x,&y);

if(x>y)

 x=y;y=x;

else

 x++;y++;

printf(“%d,%d”,x,y); }

A.有语法错误,不能通过编译B.若输入3和4,则输出4和5

C.若输入4和3,则输出3和4D.若输入4和3,则输出4和5

23.fun函数的功能是:

通过键盘输入给x所指的整型数组所有元素赋值。

在下列划线处应该填写的是。

#include

#defineN5

voidfun(intx[N])

{intm;

for(m=N-1;m>0;m--)scanf(“%d”,);}

A.&x[++m]B.&x[m+1]C.x+(m++)D.x+m

24.有以下程序(注:

字符a的ASCIl码值为97)

#include

main()

{char*s={"abc"};

do

{printf("%d",*s%10);++s;}

while(*s);}

程序运行后的输出结果是789。

25.有以下函数

#include

voidfun(int*s)

{staticintj=0;

do{s[j]=s[j]+s[j+1];}while(++j<2);}

main()

{intk,a[10]={1,2,3,4,5};

for(k=1;k<3;k++)fun(a);

for(k=0;k<5;k++)printf("%d",a[k]);

printf("\n");}

程序运行输出结果是35745。

26.程序中定义以下宏#defineM(x,y)(x*y)

若定义inta;且令a=M(1+3,5);则变量a的值为。

A.16B.20C.9 D.以上均不是

27.以下程序运行后的输出结果是abedcfg。

#include

voidf(char*s,char*t)

{chark;k=*s;*s=*t;*t=k;}

main()

{charstr[10]="abcdefg",*p;

 p=str+strlen(str)/2+1;

 f(p,p-2);printf("%s\n",str);}

28.若有定义:

intaa[8];则以下表达式中不能代表数组元素aa[2]的地址的是。

A.&aa[2]+1B.&aa[1]C.aa+2D.&aa[1]++

29.以下程序的输出结果是1。

longfun(intn)

{longs;

if(n==1||n==2)s=2;

elses=n-fun(n-1);

returns;}

main()

{printf(“%ld\n”,fun(3));}

30.在if(x)语句中的x与下面条件表达式等价的是。

A.x==0B.x==1C.x!

=1D.x!

=0

31.以下对C语言函数的有关描述中,正确的是。

A.在调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B.函数既可以嵌套定义又可以递归调用

C.函数必须有返回值,否则不能使用函数

D.C程序中有调用关系的所有函数必须放在同一个源程序文件中

32.设有如下程序段

chars[20]=“Bejing”,*p;p=s;

则执行p=s;语句后,以下叙述正确的是。

A.可以用*p表示s[0]B.s数组中元素的个数和p所指字符串长度相等

C.s和p都是指针变量D.数组s中的内容和指针变量p中的内容相等

33.已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是。

if(x>y)

z=x;x=y;y=z;

A.10,20,30B.20,30,30C.20,30,10D.20,30,20

34.若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。

则以下不能满足要求的表达式是。

A.num%2==1B.!

(num%2==0)C.!

(num%2)D.num%2

35.若有定义语句:

intyear=2009,*p=&year;,以下不能使变量year中的值增至2010的语句是。

A.*p+=1;    B.(*p)++;    C.++(*p);    D.*p++

36.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'-i*f值的数据类型为双精度型。

37.执行下列语句中,sum变量的值是15。

intsum=0;

for(inti=0;i<5;i++,sum+=i);

38.以下不正确的说法为。

A.在函数内的复合语句中定义的变量在本函数范围内有效

B.形式参数是局部变量

C.在函数内定义的变量只在本函数范围内有效

D.在不同函数中可以使用相同名字的变量

39.有以下函数

#include

#include

main()

{printf(“%d\n”,strlen(”ATS\n012\\”));}

程序运行后的输出结果是8。

40.有以下函数

#include

voidfun(int*s)

{staticintj=0;

do{s[j]=s[j]+s[j+1];}while(++j<2);}

main()

{intk,a[10]={1,2,3,4,5};

for(k=1;k<3;k++)fun(a);

for(k=0;k<5;k++)printf("%d",a[k]);

printf("\n");}

程序运行输出结果是35745。

41.以下错误的定义语句是。

A.intx[][3]={{0},{1},{1,2,3}};

B.intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

C.intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};

D.intx[][3]={1,2,3,4};

42.凡在函数中未指明存储类别的变量,其隐含的存储类别为auto。

43.若有以下定义及语句:

structs1

{chara[3];

intnum;

}t={‘a’,’b’,’c’},*p;

p=&t;

则输出值为c的语句是。

A.printf(“%c\n”,p->t.a[2]);B.printf(“%c\n”,(*p).a[2]);

C.printf(“%c\n”,p->a[3]);D.printf(“%c\n”,(*p).t.a[2]);

二、程序填空题

1.设变量a和b已定义为int类型,若要通过scanf(”a=%d,b=%d”,&a,&b);语句分别给a和b输入1和2,则正确的数据输入内容是1,2。

2.若有定义:

inta[]={1,3,5,7,9,11},*p=a;则*(p+2)的值和*(a+5)的值分别是412。

3.有以下程序段

s=1.0;

for(k=1,k<=n;k++)s=s+1.0(k*(k+1));

printf(“%f\n”,s);

请填空,使以下程序段的功能与上面的程序段完全相同。

s=1.0;k=1;

whilek<=n

{s=s+1.0(k*(k+1));k=k+1;}

printf(“%f\n”,s);

4.下面程序的功能是用辗转相除法求两个正整数m和n的最大公约数。

hcf(intm,intn)

{intr;

if(m

 r=m%n;

 while(r!

=0)、

 {m=n;n=r;r=m%n;}

  returnn;}

5.有一个3*4矩阵,求其中的最大元素。

max_value(intarray[][4])

{inti,j,max;

max=array[0][0];

for(i=0;i<3;i++)

for(j=0;j<4;j++)

if(array[i][j]>max)max=array[i][j];

returnmax;}

main()

{inta[3][4],i,j;

for(i=0;i<3;i++)

for(j=0;j<4;j++)scanf("%d",&a[i][j]);

printf(“maxvalueis%d\n”,max_value(a));}

6.下面程序通过指向整型的指针将数组a[3][4]的内容按3行×4列的格式输出,请给printf()填入适当的参数,使之通过指针p将数组元素按要求输出。

inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*p=a;

main()

{inti,j;

 for(i=0;i<3;i++)

 {for(j=0;j<4;j++)printf("%4d",*(*(p+i)+j));

 }}

7.以下程序段的输出结果是4。

inta=47;

a+=a%=9;printf(“%d\n”,a);

8.下面程序段是从键盘输入的字符中统计数字字符的个数,当输入换行符时结束循环。

请分析程序填空。

intn=0,c;

c=getchar();

while(c!

='\n')

{if

(1)n++;

c=getchar();}

9.下面程序的功能是统计用0至9之间的不同的数字组成的三位数的个数。

main()

{inti,j,k,count=0;

for(i=1;i<=9;i++)

  for(j=0;j<=9;j++)

   if(i==j)continue;

   elsefor(k=0;k<=9;k++){if(j!

=k&&i!

=k)count++;}

printf("%d",count);}

10.有以下程序

#include

main()

{chara[20]=”Thisisaprogram!

”,b[20];

scanf(“%s”,b);printf(“%s%s\n”,a,b);

}

程序运行时从键盘输入:

Thisisaprogram!

<回车>

则输出结果为Thisisaproblem!

This。

11.设a、b、c都是整型变量,如果a的值为2,b的值为3,则执行c=a++||b++;语句后,变量b的值是3。

12.下面这个程序的功能是将字符串s中所有的字符b删除。

main()

{chars[80];inti,j;

printf("Pleaseenterstrings:

");gets(s);

for(i=j=0;i<80;i++)

{if(s[i]!

=’b’)s[j++]=s[i];}

s[j]=’\0’;

puts(s);

}

13.下面函数的功能是判断一个数是不是素数。

intprime(intm)

{inti;

for(i=2;i<=sqrt(m);i++)

if(a%i==0)return0;

return1;}

14.有一个3*4矩阵,求其中的最大元素。

max_value(intarray[][4])

{inti,j,max;

max=array[0][0];

for(i=0;i<3;i++)

for(j=0;j<4;j++)

if(array[i][j]>max)max=array[i][j];

returnmax;}

main()

{inta[3][4],i,j;

for(i=0;i<3;i++)

for(j=0;j<4;j++)scanf("%d",&a[i][j]);

printf(“maxvalueis%d\n”,max_value(a));}

三、编程题

1.任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果。

2.编程检查用户输入的字符是数字、字母、空白还是其它字符,直到用户输入'q'为止。

3.打印出如下图案(菱形)

*

***

******

********

******

***

*

 

4.输入n值,输出如图所示高和上底均为n的等腰梯形。

当n=5时

5.编写程序,将两个字符串连接起来,不要使用strcat函数。

 

6.有一分数序列:

,求出这个数列的前20项之和。

#include

voidmain()

{

floatm=1,n=2,sum=0,b,i;

for(i=1;i<21;i++)

{

sum=sum+n/m;

b=n+m;

m=n;

n=b;

}

printf("%2f\n",sum);

}

 

7.写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。

#include

voidmain()

{

voidcopy(charstr[100]);

chars1[100];

printf("输入一个字符串:

");

gets(s1);

copy(s1);

}

voidcopy(charstr[100])

{

inti,j;

chars[100];

for(i=0,j=0;str[i]!

='\0';i++)

if((str[i]=='a')||(str[i]=='e')||(str[i]=='i')||(str[i]=='o')||(str[i]=='u')

||(str[i]=='A')||(str[i]=='E')||(str[i]=='I')||(str[i]=='O')||(str[i]=='U'))

{s[j]=str[i];j++;}

s[j]='\0';

puts(s);

}

8.自键盘读入由小到大的10个整数,然后再读入一个数,要求按原来的规律将它插入数组中。

#include

voidmain()

{

inta[11],i,j,temp;

printf("按由小到大输入十个数:

");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

printf("\n");

printf("插入一个新数:

");

scanf("%d",&a[10]);

for(i=0;i<10;i++)

for(j=0;j<10-i;j++)

{if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

printf("重新排列的数:

");

for(i=0;i<11;i++)

printf("%3d",a[i]);

printf("\n");

}

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

当前位置:首页 > 自然科学

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

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