c语言试题及答案.docx

上传人:b****7 文档编号:25585397 上传时间:2023-06-10 格式:DOCX 页数:24 大小:28.42KB
下载 相关 举报
c语言试题及答案.docx_第1页
第1页 / 共24页
c语言试题及答案.docx_第2页
第2页 / 共24页
c语言试题及答案.docx_第3页
第3页 / 共24页
c语言试题及答案.docx_第4页
第4页 / 共24页
c语言试题及答案.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

c语言试题及答案.docx

《c语言试题及答案.docx》由会员分享,可在线阅读,更多相关《c语言试题及答案.docx(24页珍藏版)》请在冰豆网上搜索。

c语言试题及答案.docx

c语言试题及答案

《C语言》课程综合复习资料

一、单选题

1.在C语言中,字符型数据在存中的存储形式是

A)原码B)补码C)反码D)ASCII码

2.在C语言中,十进制数47可等价地表示为

A)2fB)02fC)57D)057

3.设有定义:

intx=12,n=5;则表达式x%=(n%2)的值为

A)0B)1C)2D)3

4.设有定义语句:

charstr[][20]={,"Beijing","中国石油大学"},*p=str;

则printf("%d\n",strlen(p+20));输出结果是

A)10B)6C)0D)20

5.已定义以下函数:

fun(int*p)

{return*p;}

该函数的返回值是

A)不确定的值B)形参p所指存储单元中的值

C)形参p中存放的值D)形参p的地址值

6.C语言中,函数返回值的类型是由

A)return语句中的表达式类型决定

B)调用函数的主调函数类型决定

C)调用函数时的临时类型决定

D)定义函数时所指定的函数类型决定

7.有以下函数定义:

voidfun(intn,doublex){……}

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是

A)fun(inty,doublem);B)k=fun(10,12.5);

C)fun(10,12.5);D)voidfun(10,12.5);

8.以下选项中不能正确赋值的是

A)charb[]={′H′,′e′,′l′,′l′,′o′,′!

′};

B)charb[10];b="Hello!

";

C)charb[10]="Hello!

";

D)char*str="Hello!

";

9.若有以下定义:

chars[20]="programming",*ps=s;则不能代表字符g的表达式是

A)ps+3B)s[3]C)ps[3]D)ps+=3,*ps

10.当对两个字符串进行比较时,应该使用的函数是

A)strcatB)strcmpC)strcpyD)strlen

11.若i为整型变量,则以下循环的次数是

for(i=2;i==0;)printf(“%d”,i--);

A)无限次B)0次C)1次D)2次

12.以下关于数组的描述正确的是

A)数组大小固定,但是可以有不同类型的数组元素

B)数组大小可变,但是所有数组元素的类型必须相同

C)数组大小固定,所有元素的类型必须相同

D)数组大小可变,可以有不同类型的数组元素

13.以下能正确定义数组并正确赋初值的语句是

A)intN=5,b[N][N];B)inta[1][2]={{1},{3}};

C)intc[2][]={{1,2},{3,4}};D)intd[3][2]={{1,2},{34}};

14.设有定义inta[]={1,5,7,9,11,13},*p=a+3;则*(p-2),*(a+4)的值是

A)511B)19C)59D)有错误

15.已知charb[5],*p=b;,则正确的赋值语句是

A)b=“abcd”;B)*b=“abcd”;C)p=“abcd”;D)*p=“abcd”;

16.用数组名作为函数调用时的实参,则实际传递给形参的是

A)数组的第一个元素值B)数组中全部元素值

C)数组的首地址D)数组的元素个数

17.以下叙述中不正确的是

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

B)函数中的形式参数是局部变量

C)在一个函数定义的变量只在本函数围有效

D)在一个函数的复合语句中定义的变量在本函数围有效

18.当对两个字符串进行比较时,应该使用的函数是

A)strcatB)strcmpC)strcpyD)strlen

19.有如下定义:

longm;charc;floatx;doubley;则表达式c+m*x/y的值的类型是

A)longB)charC)floatD)double

20.假设已定义charc[8]="test";inti;则下面的输出函数调用中错误的是

A)printf("%s",c);B)for(i=0;i<8;i++)printf("%c",c[i]);

C)puts(c)D)for(i=0;i<8;i++)puts(c[i]);

21.若有以下定义:

chars[20]="programming",*ps=s;则不能代表字符g的表达式是

A)ps+3B)s[3]C)ps[3]D)ps+=3,*ps

22.以下选项中不能正确赋值的是

A)charb[]={′H′,′e′,′l′,′l′,′o′,′!

′};

B)charb[10];b="Hello!

";

C)charb[10]="Hello!

";

D)char*str="Hello!

";

23.有以下函数定义:

voidfun(intn,doublex){……}

若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是_________。

A)fun(inty,doublem);B)k=fun(10,12.5);

C)fun(10,12.5);D)voidfun(10,12.5);

24.从变量的作用域来分,可分为全局变量和局部变量,形参是

A)局部变量B)全局变量C)静态变量D)动态变量

二、读程序,写出程序的执行结果

1.#include

voidmain()

{intx[]={1,2,3};

ints,i,*p=x;

s=1;

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

s*=*(p+i);

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

}

答案6

2.#include

charfun(char*s)

{if(*s>=a&&*s<=z)

*s=*s-32;

return*s;

}

voidmain()

{chara[20]="Welcome",*p,ch;

for(p=a;*p!

=\0;p++)

{ch=fun(p);

putchar(ch);

}

}

答案WELCOME

3.#include

voidmain()

{intx=26587,x1,r,sum=0;

x1=x;

while(x>0)

{r=x%10;

sum+=r;

x/=10;

}

printf("Sumofthedigitsin%dis%d",x1,sum);

}答案Sumofthedigitsin26587is28

4.#include

intfun(intx)

{inty=1;

staticintz=4;

z+=1;++y;

return(x+y+z);

}

voidmain()

{inti;

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

printf("%3d",fun(i));

}

81012

5.#include

voidmain()

{intx=3,y=4;

intj;

for(j=1;y>0;y--)j=j*x;

printf(“j=%d\n”,j);

}

运行结果:

j=81

6.#include

voidmain()

{intx,y;

for(y=1,x=1;y<=20;y++)

{if(x>=8)break;

if(x%2==1){x+=5;continue;}

x-=3;

}

printf("x=%d,y=%d\n",x,y);

}

运行结果:

x=8,y=4

7.#include

voidmain()

{charx[]="language";

char*ptr=x;

while(*ptr)

{printf("%c\n",*ptr-32);

ptr++;

}

}

运行结果:

L

A

N

G

U

A

G

E

8.#include

voidmain()

{intx[]={5,6,7};

ints=1,i,*p=x;

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

s*=*(p+i);

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

}

运行结果:

210

9.#include

intfun(intx)

{return(x>0?

x:

-x);

}

voidmain()

{inta=12;

printf(“%d,%d\n”,a,fun(a));

}

运行结果:

12,12

10.#include

voidex()

{staticintx=3;

--x;

printf(“%d”,x);

}

voidmain()

{ex();

ex();

}

运行结果:

21

11.#include

voidmain()

{inti=0,a=0;

while(i<20)

{for(;;)

if((i%10)==0)break;

elsei--;

i+=11;

a+=i;

}

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

}

32

12.#include

voidmain()

{inta[3][4]={{1,2,3,4},{9,7,10,6},{-1,8,-5,5}};

inti,j,row=0,colum=0,max;

max=a[0][0];

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

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

if(a[i][j]>max)

{max=a[i][j];

row=i;

colum=j;

}

printf("max=%d,row=%d,colum=%d",max,row,colum);

}

max=10,row=1,colum=2

13.#include

intf(intb[],intm,intn)

{inti,s=0;

for(i=m;i

returns;

}

voidmain()

{intx,a[]={1,2,3,4,5,6,7,8,9,10};

x=f(a,3,8);

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

}

18

14.#include

voidswap(intb[])

{int*p,*p1,*p2;

p1=&b[0];p2=&b[1];

p=p1;p1=p1+1;p2=p;

}

voidmain()

{inta[]={5,9};

printf("%d,%d\n",*a,*(a+1));

swap(a);

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

}

5,9

15.#include

intb=3;

intfun(int*a)

{b+=*a;

return(b);

}

voidmain()

{inta=2,b=2;

b+=fun(&a);

printf(“%d\n”,b);

}

7

16.#include

voidmain()

{inta[10],*p,*s,i;

for(i=0;i<10;i++)scanf(%d”,a+i);

for(p=a,s=a;p-a<10;p++)if(*p>*s)s=p;

printf(“max=%d,index=%d\n”,*s,s-a);

}

简述上列程序完成的功能:

查找数组中最大值并记录元素下标

17.#include

voidmain()

{intx,y;

for(y=1,x=1;y<=20;y++)

{if(x>=8)break;

if(x%2==1){x+=5;continue;}

x-=3;

}

printf(“x=%d,y=%d\n”,x,y);

}运行结果:

x=8,y=4

18.#include

#defineN3

voidzz(intx[N][N])

{inti,j,t;

for(i=0;i

for(j=0;j

{t=x[i][j];x[i][j]=x[j][i];x[j][i]=t;}

}

voidmain()

{intstr[N][N]={1,2,3,4,5,6,7,8,9},i,j;

zz(str);

for(i=0;i

{for(j=0;j

printf("\n");

}

}

运行结果:

147

258

369

19.#include

voidmain()

{chara[20]="abcXYZ",c;

inti,j;

j=strlen(a)-1;

for(i=0;j>i;i++,j--)

{c=*(a+i);*(a+i)=*(a+j);*(a+j)=c;}

puts(a);

}运行结果:

ZXYcba

20.#include

inta=100,b=200;

voidf()

{printf(“%d,%d\n”,a,b);

a=1;b=2;

}

voidmain()

{inta=5,b=7;

f();

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

}运行结果:

5,7

21.#include

intd=1;

intfun(intp)

{staticintd=3;

d+=p;

printf("%3d",d);

return(d);

}

voidmain()

{printf("%3d\n",fun(2+fun(d)));

}运行结果:

5,12,12

22.#include

voidmain()

{charx[]="123456789",*p=x;

inti=0;

while(*p)

{if(i%2==0)*p='*’;

p++;i++;

}

puts(x);

}

运行结果:

*2*4*6*8*

三、编程题

1.编程输入实数x,计算下面函数的值,并输出y值。

x2x<1

y=3x-11x10

x>10

程序结果:

#include

voidmain()

{

intx,y;

scanf(“%d”,&x);

if(x<1)

y=x*x;

else

if(x>=1&&x<=10)y=3*x-1;

elsey=x/5;

printf(“x=%d,y=%d\n”,x,y);

}

2.编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,并输出统计结果。

程序结果:

#include

#include

voidmain()                    /*主函数*/

{

charc;                           /*定义变量*/

intm=0,n=0,a=0,b=0;

printf("请输入任意字符串.\n");  /*输入提示部分,提示输入*/

while((c=getchar())!

='\n')      /*循环语句,将由键盘输入的非'\n'字符赋值给c*/

{

  if((c>=65&&c<=90)||(c>=97&&c<=122))   /*第一个选择语句,统计英文字符个数*/

  {

   m=m+1;

  }

        elseif(c==32)                         /*第二个选择语句,统计空格字符的个数*/

  {

    n=n+1;

  }

  elseif(c>=48&&c<=57)                       /*第三个选择语句,统计数字字符的个数*/

  {

   a=a+1;

  }

  else                                       /*统计其他字符的个数*/

   b=b+1;

}

printf("%d%d%d%d",m,a,n,b);                   /*输出最后统计结果*/  

  getch();                                   /*输出结果后屏幕停留*/

}

3.编写打印如下图形的程序(必须用循环语句实现)

*

**

***

****

*****

程序结果:

#include

main()

{

intn,i,j;

printf(“n=%d\n”);

scanf(“%d”,&n);

for(i=0;i

{

for(j=0;j

for(j=0;j

printf(“\n”);

}

4.编写程序,从键盘上任意输入20个整数,存入一个数组中,然后输出这些数中最大数及其下标以及最小数及其下标

程序结果:

#include

voidmain()

{

inta[20],i,max,min,num1,num2;

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

{printf(“inputthenumber%d:

”,i);

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

printf(“\n”);

}

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

{

If(a[i]<=a[0])

{min=a[i];

Num1=i;

}

Else

{max=a[i];

num2=i;

}

}

printf(“min=%d,num1=%d\n”,min,num1);

printf(“max=%d,num2=%d\n”,max,num2);}

 

5.编程打印下列的辉三角形。

(设8行)

1

11

121

1331

14641

15101051

程序结果:

#include

#defineN11

voidmain()

{

inti,j,a[N][N];/*数组为11行11列,0行0列不用*/

for(i=1;i

{

a[i][1]=1;/*使第1列元素的值为1*/

a[i][i]=1;/*使对角线元素的值为1*/

}

for(i=3;i

for(j=2;j<=i-1;j++)

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

for(i=1;i

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

printf(“%6d”,a[i][j]);

printf(“\n”);

}

printf(“\n”);

}

6.求分段函数的值

程序结果:

#include

#inclde

main()

{doublex,y;

scanf(“%lf”,&x);

if(x<0)y=log(x*x);

elseif(x==0)y=1;

elsey=1+exp(x);

printf(“Y=%lf”,y);

}

7.编程打印以下图形(要求用循环控制语句实现)

&

&&

&&&

&&&&

&&&&&

&&&&&&

程序结果#include

main()

{

inti,j;

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

{

for(j=1;j<=6-i;j++)

printf("");

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

printf("&");

printf("\n");

}

}:

 

《C语言》课程综合复习资料答案

一、单选题:

1D2D3A4A5D6B7C8B9A10B11B12C13D14A15C16C17D18B19D20D21A22B23C24A

二、读程序写出程序执行结果:

1、6

2、WELCOME

3、Sumofthedigitsin26587is28

4、81012

5、j=81

6、x=8,y=4

7、L

A

N

G

U

A

G

E

8、2109、12,1210、21

11、3212、max=10,row=1,colum=2

13、1814、5,915、716、查找数组中最大值并记录元素下标

17、x=8,y=4

18、14719、ZYXcba

25820、5,7

36921、5,12,12

22、*2*4*6*8*

三、编程题

1、#include

voidmain()

{

intx,y;

scanf(“%d”,&x);

if(x<1)

y=x*x;

else

if(x>=1&&x<=10)y=3*x-1;

elsey=x/5;

printf(“x=%d,y=%d\n”,x,y);

}

2.#include

#include

voidmain()                   

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

当前位置:首页 > 工程科技 > 电力水利

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

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