c语言题目及答案Word文档下载推荐.docx
《c语言题目及答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《c语言题目及答案Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
则循环结束后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<
c)fun2(__&
a,&
c____);
3.已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:
B33<
回车>
,则输出结果是1B。
#include<
>
chara,b;
a=getchar();
scanf("
%d"
&
b);
a=a-'
A'
+'
0'
b=b*2;
printf("
%c%c\n"
a,b);
4.以下程序运行后的输出结果是435。
inta=3,b=4,c=5,t=99;
if(b<
a&
&
a<
c){t=a;
a=c;
c=t;
if(a<
c&
b<
c){t=b;
b=a;
a=t;
%d%d%d\n"
a,b,c);
5.若已知a=10,b=20,则表达式!
a<
b的值是___0______
6.若s是unsignedint型变量,则下面表达式的值是__1__。
s%2+(s+1)%2
7.下面程序将字符数组a复制到字符数组b中。
chara[]="
Iamaboy."
b[20];
inti;
for(i=___0____;
a[i]!
='
\0'
__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;
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;
b);
输出结果:
b=4
2.写出程序运行后的输出结果
#include<
char*ss(char*s)
returns+strlen(s)/2;
{char*p,*str="
abcdefgh"
p=ss(str);
%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;
%d,%d,%d\n"
e,f,g);
4,3,7
四、编程(完形填空)(20分,每题10分)
1.以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:
yes!
,否则函数返回字符串:
no!
,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:
adgda。
请填空。
char*huiwen(char*str)
char*p1,*p2;
inti,t=0;
p1=str;
p2=_____str+strlen(str)-1____;
str+strlen(str)
for(i=0;
=strlen(str)/2;
if(*p1++!
=*p2--)
{
t=1;
break;
}
if(_t==0或!
t _)t==0
return("
);
else
charstr[50];
Input:
scanf("
%s"
str);
___huiwen(str)_____);
huiwen(srt)
2.下面程序完成以下功能:
(1)trans()函数将二维数组a进行转置,即行列互换,如下图所示;
12341257
24692481
58973696
7162149721
转置前转置后
(2)findmin()函数求新数组中对角线(左上到右下)上的最小元素的值;
请将程序填写完整。
voidtrans(intb[4][4])/*转置函数*/
inti,j,temp;
for(i=0;
4;
for(j=_0__;
j<
j++)
temp=b[i][j];
b[i][j]=b[j][i];
b[j][i]=temp;
intfindmin(intb[4][4])/*求对角线上最小的元素*/
intmin,i,j;
min=_______;
if(__b[i][i]<
min___)
min=_b[i][i]____;
returnmin;
inti,j;
inta[4][4],min;
for(j=0;
a[i][j]);
trans(a);
printf(“theresultis:
”);
%5d"
a[i][j]);
\n"
min=_findmin(a)__;
theminis%5d\n"
min);
2份
1.下面那个变量是合法的。
(A)
A)_a_2B)12aC)D)_3-2
2.不能用于实型数据的运算符是:
A)%B)/C)*D)+
3.下面正确的字符串常量是:
A)‘1+2=3’B)“1+2=10”C)[abcde]D){1234567}
4.程序段
inti,j;
i=10;
j=i--;
%d,%d"
i,j);
的输出应为:
A)9,9B)9,10C)10,9D)10,10
5.程序段
if(i==20)
break;
i)
A)21B)20C)10D)11
6.设有数组定义:
chararray[]=”Beijing”;
则数组array所占的存储空间为:
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的值为:
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
1.for(表达式1;
表达式2;
表达式3)
语句组
的执行顺序是先求解表达式1、再_计算表达式2__、如果成立则执行_一次for循环体___、然后__计算表达式3_
2.表达式:
765%2=____1___,765/2=___382____。
3.将下列字符串表示成字符串常量
D:
\office\word\"
\\office\\word\\"
_____
85%student"
85%studentpassed."
___________
4.下面程序段将字符数组b连接到数组a的后面。
chara[20]=."
Iam"
charb[]=."
astudent."
i=strlen(a);
for(j=__0___;
b[j]!
a[i+j_]=b[_j____];
a[_i+j]=__’\0’_;
}
5.已知fun1函数的功能是将三个数按由大到小的顺序调整后依次放入a,b,c三个变量中,其中a存放最大的数,利用fun2函数填空完成此功能。
1.写出程序运行结果(10分)
inti=5;
staticcharc[6]="
abcd"
do
c[i]=c[i-1];
i--;
}while(i>
0);
puts(c);
运行结果是:
aabcd
voidf(int*x,int*y)
*x=*y;
*y=t;
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12},i,*p,*q;
p=a;
q=&
a[11];
while(p<
q)
f(p,q);
p++;
q--;
12;
%d,"
a[i]);
运算结果是:
121110987654321
3.
(1)函数sub()的功能是什么
(2)写出程序运行的输出结果。
longsub(intnum)
longsubsum=1;
for(i=1;
=num;
subsum*=i;
return(subsum);
longsum=0;
=4;
sum+=sub(i);
sum%1d=%ld\n"
,i,sum);
i=1,sum=1
i=2,sum=3
i=3,sum=9
i=4,sum=33
1.写一个函数,实现将一个长度≤80的字符串按逆序存放。
解题要求:
该函数的唯一形参是字符串的起始地址。
voidconvert(charstring[])
intlength,mid,i;
chartemp;
length=___strlen_(string);
mid=__length-1_________;
for(__i=0________;
mid;
temp=__string[i]__________;
string[i]=string[_min--___];
string[(length-1)-i]=temp;
2.找出100以内(包括100)满足下列条件的正整数,并按每行4个数字的格式显示在屏幕上。
条件:
能被7整除但不能被9整除,或者不能被7整除但可以被11整除。
inti,count=__0____;
\nthesenumbersare:
for(i=1;
i_<
=__100;
if((i%7==0&
i%9!
=0)_||__(i%7!
=0_&
__i%11==0))
count++;
%10d"
i);
if(count%4==0)
__\n______"
3份
1.C语言中,最基本的数据类型包括:
A)整型、实型、逻辑型B)整型、字符型、数组
C)整型、实型、字符型D)整型、实型、结构体
2.下面正确的字符常量是:
3.C语言中,运算对象必须是整型的运算符是:
4.for(i=0;
if(i>
5)break;
则循环结束后i的值为(A)
A)6B)7C)9D)10
5.判断字符串a和b是否相等,应当使用:
A)if(a==b)B)if(a=b)
C)if(strcpy(a,b))D)if(strcmp(a,b)==0)
6.程序段
inti,a;
a=i;
A)0B)9C)10D)11
7.C语言中的标示符只能有字母、数字和下划线组成,且第一个字符_D____.
A)必须为字母B)必须为下划线
C)必须为字母或下划线D)可以是字母或数字
8.若有说明:
charc=‘\72’;
则变量c:
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];
p1=a;
p2=&
a[5];
则p2-p1的值为:
A)无法确定B)10C)5D)12
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中。
for(i=__0___;
____b[i]=a[i]_____;
______b[i]=’\0’_____;
7.下面程序的功能是计算1-3+5-7+…-99+101的值存在s中,请填空。
inti,t=1,s=0;
=101;
__i+=2___)
s=s+i*t;
t=___(-1)*t____;
}
8.若已知a=10,b=20,则表达式!
b的值是____0___
1.
(1)函数func()的功能是什么
(2)写出程序运行的输出结果。
intfunc(intx,inty)
intz;
z=x+y;
returnz;
intc;
inta=5;
intb=7;
c=func(a,b);
printf(“A+B=%d\n”,c);
A+B=12
intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;
i++)
{for(j=0;
=i;
j++)
%4c"
'
'
for(j=i;
%4d"
num[i][j]);
****1***2***3***4
********6***7***8
***********11**12
***************16
(注意:
*表示空格)
3.
(1)程序的功能是什么
(2)写出程序运行的输出结果。
#definen8
inti,j,t,min,a[n]={65,55,90,100,40,70,5,20};
n-1;
min=i;
for(j=i+1;
n;
if(a[j]<
a[min])
min=j;
if(min!
=i)
t=a[min];
a[min]=a[i];
a[i]=t;
功能是:
从大到小排序
1009070655540205
1.编程将两个2*3的二维数组中的对应元素的值相加后存入第3个数组中。
inti,j,c[2][3]_;
inta[2][3]={1,2,3,4,5,6};
intb[2][3]={7,8,9,10,11,12};
_i<
2_____;
_j<
3_____;
c[i][j]=a[_i__][_j__]+b[i][j];
2.以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差,例如:
输入的两个字符