c语言题目及答案.docx

上传人:b****6 文档编号:4785468 上传时间:2022-12-08 格式:DOCX 页数:25 大小:21.46KB
下载 相关 举报
c语言题目及答案.docx_第1页
第1页 / 共25页
c语言题目及答案.docx_第2页
第2页 / 共25页
c语言题目及答案.docx_第3页
第3页 / 共25页
c语言题目及答案.docx_第4页
第4页 / 共25页
c语言题目及答案.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

c语言题目及答案.docx

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

c语言题目及答案.docx

c语言题目及答案

注意:

所有答案都要写在答题卡上

一、单项选择题(20分,每题2分)

1.执行下列程序段后,正确的结果是(B)

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

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

printf(“%2d”,a[k][k]);

A)123B)159C)147D)369

2.若a是int类型变量,则计算表达式a=25/3%3的值是:

(B)

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

3.下面正确的字符常量是:

(C)

A)“c”B)‘\\’’C)‘W’D)‘’

4.C语言中,运算对象必须是整型的运算符是:

(B)

A)%B)/C)*D)+

5.数字字符0的ASCII值为48,若有以下程序

main()

{

chara='1',b='2';

printf("%c,",b++);

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

}

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

(B)

A)3,2B)50,2C)2,2D)2,50

6.以下语句或语句组中,能正确进行字符串赋值的是。

(D)

A)char*sp;*sp="right!

";B)chars[10];s="right!

";

C)chars[10];*s="right!

";D)char*sp="right!

";

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

if(i〈=5〉break;

则循环结束后i的值为(B)

A)0B)1C)5D)10

8.执行下列程序段后,正确的结果是(C)

charx[8]={8,7,6,5,0,0},*s;

s=x+1;

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

A)nB)0C)5D)6

9.C语言规定,简单变量作为实参时,他和对应形参之间的数据传递方式是:

A

A)单向值传递B)地址传递C)相互传递D)由用户指定方式

10.设有数组定义:

charstr[]=”China”;则下面的输出为(C)

printf(“%d”,strlen(str));

A)4B)5C)6D)7

二、填空题(30分,每空2分)

1.下列程序段的输出结果是3。

inti=19,j;

j=i%4;

printf(“%d”,j);

2.已知fun1函数的功能是将三个数按由大到小的顺序调整后依次放入a,b,c三个变量中,其中a存放最大的数,利用fun2函数填空完成此功能。

voidfun2(int*x,int*y)

{

intt;

t=*x;*x=*y;*y=t;

}

voidfun1()

{

inta=20,b=30,c=25;

if(c>b)fun2(__&c,&b____);

if(a

if(a

}

3.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:

B33<回车>,则输出结果是1B。

#include<>

main()

{

chara,b;

a=getchar();

scanf("%d",&b);

a=a-'A'+'0';

b=b*2;

printf("%c%c\n",a,b);

}

4.以下程序运行后的输出结果是435。

main()

{

inta=3,b=4,c=5,t=99;

if(b

if(a

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

}

5.若已知a=10,b=20,则表达式!

a

6.若s是unsignedint型变量,则下面表达式的值是__1__。

s%2+(s+1)%2

7.下面程序将字符数组a复制到字符数组b中。

main()

{

chara[]="Iamaboy.",b[20];

inti;

for(i=___0____;a[i]!

='\0';i++)

{

__b[i]=a[i]___________;

}

__b[i]=’\0’__;

}

8.若有inta[3][2]={{1},{3,2},{4,5}};,则a[1][1]的值是2。

9.有以下程序,执行后输出结果是0。

main()

{

intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

10.在循环语句中,break语句的作用是是用来跳出当前一层循环的,continue语句的作用是终止本次循环。

三、写出程序的运行结果(30分,每题10分)

1.写出程序运行后的输出结果

main()

{

inta=1,b;

for(b=1;b<=10;b++)

{

if(a>=8)break;

if(a%2==1)

{

a+=5;

continue;

}

a-=3;

}

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

}

输出结果:

b=4

2.写出程序运行后的输出结果

#include<>

char*ss(char*s)

{

returns+strlen(s)/2;

}

main()

{char*p,*str="abcdefgh";

p=ss(str);

printf("%s\n",p);

}

输出结果:

efgh

3.写出程序运行后的输出结果

intf1(intx,inty){returnx>yx:

y;}

intf2(intx,inty){returnx>yy:

x;}

main()

{

inta=4,b=3,c=5,d=2,e,f,g;

e=f2(f1(a,b),f1(c,d));

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

g=a+b+c+d-e-f;

printf("%d,%d,%d\n",e,f,g);

}

4,3,7

四、编程(完形填空)(20分,每题10分)

1.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:

yes!

,否则函数返回字符串:

no!

,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:

adgda。

请填空。

#include<>

#include<>

char*huiwen(char*str)

{

char*p1,*p2;

inti,t=0;

p1=str;

p2=_____str+strlen(str)-1____;str+strlen(str)

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!

=*p2--)

{

t=1;

break;

}

if(_t==0或!

t _)t==0

return("yes!

");

else

return("no!

");

}

main()

{

charstr[50];

printf("Input:

");

scanf("%s",str);

printf("%s\n",___huiwen(str)_____);huiwen(srt)

}

2.下面程序完成以下功能:

(1)trans()函数将二维数组a进行转置,即行列互换,如下图所示;

12341257

24692481

58973696

7162149721

转置前转置后

(2)findmin()函数求新数组中对角线(左上到右下)上的最小元素的值;请将程序填写完整。

voidtrans(intb[4][4])/*转置函数*/

{

inti,j,temp;

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

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

{

temp=b[i][j];

b[i][j]=b[j][i];

b[j][i]=temp;

}

}

intfindmin(intb[4][4])/*求对角线上最小的元素*/

{

intmin,i,j;

min=_______;

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

{

if(__b[i][i]

min=_b[i][i]____;

}

returnmin;

}

main()

{

inti,j;

inta[4][4],min;

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

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

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

trans(a);

printf(“theresultis:

”);

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

{

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

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

printf("\n");

}

min=_findmin(a)__;

printf("theminis%5d\n",min);

}

2份

注意:

所有答案都要写在答题卡上

一、单项选择题(20分,每题2分)

1.下面那个变量是合法的。

(A)

A)_a_2B)12aC)D)_3-2

2.不能用于实型数据的运算符是:

(A)

A)%B)/C)*D)+

3.下面正确的字符串常量是:

(B)

A)‘1+2=3’B)“1+2=10”C)[abcde]D){1234567}

4.程序段

inti,j;

i=10;

j=i--;

printf("%d,%d",i,j);

的输出应为:

(B)

A)9,9B)9,10C)10,9D)10,10

5.程序段

inti;

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

{

if(i==20)

break;

}

printf("%d",i)

的输出应为:

(D)

A)21B)20C)10D)11

6.设有数组定义:

chararray[]=”Beijing”;则数组array所占的存储空间为:

(B)

A)7个字节B)8个字节C)9个字节D)10个字节

7.以下说法正确的是(C)

A)C程序总是从第一个定义的函数开始执行

B)在C程序中,要调用的函数必须在main()函数中定义

C)C程序总是从main()函数开始执行

D)C程序的main()函数必须放在程序的开始部分

8.程序段

int*p,a=1;

p=&a;

*p=10;

a的值为:

(C)

A)1B)10C)不能确定D)11

9.以下定义语句中,错误的是(D)

A)inta[]={1,2};B)char*a[3];

C)chars[10]="test";D)intn=5,a[n];

10.假定int类型变量占用两个字节,有定义:

intx[10]={0,2,4};,则数组x在内存中所占字节数是(D)

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

二、填空题(30分,每空2分)

1.for(表达式1;表达式2;表达式3)

语句组

的执行顺序是先求解表达式1、再_计算表达式2__、如果成立则执行_一次for循环体___、然后__计算表达式3_

2.表达式:

765%2=____1___,765/2=___382____。

3.将下列字符串表示成字符串常量

D:

\office\word\"D:

\\office\\word\\"_____

85%student"85%studentpassed."___________

4.下面程序段将字符数组b连接到数组a的后面。

main()

{

chara[20]=."Iam";

charb[]=."astudent.";

inti,j;

i=strlen(a);

for(j=__0___;b[j]!

='\0';j++)

{

a[i+j_]=b[_j____];

}

a[_i+j]=__’\0’_;

}

5.已知fun1函数的功能是将三个数按由大到小的顺序调整后依次放入a,b,c三个变量中,其中a存放最大的数,利用fun2函数填空完成此功能。

voidfun2(int*x,int*y)

{

intt;

t=*x;*x=*y;*y=t;

}

voidfun1()

{

inta=20,b=30,c=25;

if(c>b)fun2(__&c,&b____);

if(a

if(a

}

三、写出程序的运行结果(30分,每题10分)

1.写出程序运行结果(10分)

#include<>

main()

{

inti=5;

staticcharc[6]="abcd";

do

{

c[i]=c[i-1];

i--;

}while(i>0);

puts(c);

}

运行结果是:

aabcd

2.写出程序运行后的输出结果

voidf(int*x,int*y)

{

intt;

t=*x;*x=*y;*y=t;

}

main()

{

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

p=a;

q=&a[11];

while(p

{

f(p,q);

p++;

q--;

}

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

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

}

运算结果是:

121110987654321

3.

(1)函数sub()的功能是什么

(2)写出程序运行的输出结果。

longsub(intnum)

{

inti;

longsubsum=1;

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

subsum*=i;

return(subsum);

}

main()

{

inti;

longsum=0;

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

{

sum+=sub(i);

printf("sum%1d=%ld\n",i,sum);

}

}

运行结果是:

i=1,sum=1

i=2,sum=3

i=3,sum=9

i=4,sum=33

四、编程(完形填空)(20分,每题10分)

1.写一个函数,实现将一个长度≤80的字符串按逆序存放。

解题要求:

该函数的唯一形参是字符串的起始地址。

voidconvert(charstring[])

{

intlength,mid,i;

chartemp;

length=___strlen_(string);

mid=__length-1_________;

for(__i=0________;i

{

temp=__string[i]__________;

string[i]=string[_min--___];

string[(length-1)-i]=temp;

}

}

2.找出100以内(包括100)满足下列条件的正整数,并按每行4个数字的格式显示在屏幕上。

条件:

能被7整除但不能被9整除,或者不能被7整除但可以被11整除。

main()

{

inti,count=__0____;

printf("\nthesenumbersare:

\n");

for(i=1;i_<=__100;i++)

if((i%7==0&&i%9!

=0)_||__(i%7!

=0_&&__i%11==0))

{

count++;

printf("%10d",i);

if(count%4==0)

printf("__\n______");

}

}

3份

一、单项选择题(20分,每题2分)

1.C语言中,最基本的数据类型包括:

(C)

A)整型、实型、逻辑型B)整型、字符型、数组

C)整型、实型、字符型D)整型、实型、结构体

2.下面正确的字符常量是:

(C)

A)“c”B)‘\\’’C)‘W’D)‘’

3.C语言中,运算对象必须是整型的运算符是:

(B)

A)%B)/C)*D)+

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

if(i>5)break;

则循环结束后i的值为(A)

A)6B)7C)9D)10

5.判断字符串a和b是否相等,应当使用:

(D)

A)if(a==b)B)if(a=b)

C)if(strcpy(a,b))D)if(strcmp(a,b)==0)

6.程序段

inti,a;

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

a=i;

printf("%d",i)

的输出应为:

(D)

A)0B)9C)10D)11

7.C语言中的标示符只能有字母、数字和下划线组成,且第一个字符_D____.

A)必须为字母B)必须为下划线

C)必须为字母或下划线D)可以是字母或数字

8.若有说明:

charc=‘\72’;则变量c:

(A)

A)包含一个字符B)包含2个字符

C)包含3个字符D)说明不合法,c的值不确定

9.以下说法正确的是(C)

A)C程序总是从第一个定义的函数开始执行

B)在C程序中,要调用的函数必须在main()函数中定义

C)C程序总是从main()函数开始执行

D)C程序的main()函数必须放在程序的开始部分

10.int*p1,*p2,a[10];(C)

p1=a;

p2=&a[5];

则p2-p1的值为:

A)无法确定B)10C)5D)12

二、填空题(30分,每空2分)

1.C语言中实型数据分为两种他们是__小数数形式_和_指数形式_。

2.在C语言中,逻辑真用_非零__表示,逻辑假用_零__表示。

3.若有定义:

doublex[3][5];

则x数组行下标的上限是__2__,列下标的下限是_0__。

4.表达式(a==b)&&(a>b)的值是___0____。

5.已知’a’的ASCII码为97,printf(“%5c\n”,’e’)的输出是__e__;printf(“%5d\n”,’e’)的输出是___101___。

6.下面程序将字符数组a复制到字符数组b中。

main()

{

chara[]="Iamaboy.",b[20];

inti;

for(i=__0___;a[i]!

='\0';i++)

{

____b[i]=a[i]_____;

}

______b[i]=’\0’_____;

}

7.下面程序的功能是计算1-3+5-7+…-99+101的值存在s中,请填空。

#include<>

#include<>

main()

{

inti,t=1,s=0;

for(i=1;i<=101;__i+=2___)

{

s=s+i*t;

t=___(-1)*t____;

}

}

8.若已知a=10,b=20,则表达式!

a

三、写出程序的运行结果(30分,每题10分)

1.

(1)函数func()的功能是什么

(2)写出程序运行的输出结果。

intfunc(intx,inty)

{

intz;

z=x+y;

returnz;

}

main()

{

intc;

inta=5;

intb=7;

c=func(a,b);

printf(“A+B=%d\n”,c);

}

A+B=12

2.写出程序运行后的输出结果

main()

{

intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;

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

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

printf("%4c",'');

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

printf("%4d",num[i][j]);

printf("\n");

}

}

运行结果是:

****1***2***3***4

********6***7***8

***********11**12

***************16

(注意:

*表示空格)

3.

(1)程序的功能是什么

(2)写出程序运行的输出结果。

#definen8

main()

{

inti,j,t,min,a[n]={65,55,90,100,40,70,5,20};

for(i=0;i

{

min=i;

for(j=i+1;j

if(a[j]

min=j;

if(min!

=i)

{

t=a[min];

a[min]=a[i];

a[i]=t;

}

}

for(i=0;i

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

}

功能是:

从大到小排序

运行结果是:

1009070655540205

四、编程(完形填空)(20分,每题10分)

1.编程将两个2*3的二维数组中的对应元素的值相加后存入第3个数组中。

#include<>

#include<>

main()

{

inti,j,c[2][3]_;

inta[2][3]={1,2,3,4,5,6};

intb[2][3]={7,8,9,10,11,12};

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

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

c[i][j]=a[_i__][_j__]+b[i][j];

}

2.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差,例如:

输入的两个字符

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

当前位置:首页 > 高中教育 > 高考

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

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