中国石油大学华东第二学期期末试题《C语言》综合复习Word格式.docx
《中国石油大学华东第二学期期末试题《C语言》综合复习Word格式.docx》由会员分享,可在线阅读,更多相关《中国石油大学华东第二学期期末试题《C语言》综合复习Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
66'
66"
B"
D)c=66;
A13.设a=3,b=4,c=-5,则逻辑表达式:
a||b+c&
b==c的值是
A)1B)0C)非0D)语法错
C14.以下能正确定义数组并正确赋初值的语句是
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}};
A15.结构化程序设计的三种基本结构是
A)顺序结构、选择结构、循环结构B)if、switch、break
C)for、while、do-whileD)if、for、continue
B16.在一个C程序中
A)main函数必须出现在所有函数之前B)main函数可以在任何地方出现
C)main函数必须出现在所有函数之后D)main函数必须出现在固定位置
C17.以下合法的字符常量是
A)‘\084’B)‘ab’C)‘\x43’D)“\0”
C18.用8位无符号二进制数能表示的最大十进制数为
A)127B)128C)255D)256
D19.设有定义:
intx=0,y=1,z=1;
则运行表达式:
x=y++>
z--后,x,y,z的值分别是
A)1,1,1B)1,2,0C)0,1,1D)0,2,0
A20.设有intx=11;
则表达式(x++*1/3)的值是
A)3B)4C)11D)12
D21.若有:
intx=1,n=5;
则执行语句x%=(n%2)后,x的值为
A)3B)2C)1D)0
B22.结构化程序的3种基本控制结构是
A)if-else结构、while结构、for结构B)顺序结构、分支机构、循环结构
C)while结构、do-while结构、for结构D)以上三种都不对
C23.下面程序段的输出结果是
intk=11;
printf(“%d,%o,%x”,k,k,k);
A)11,12,11B)11,13,13C)11,013,0xbD)11,13,b
B24.在微型计算机系统中,存储一个汉字的国标码所需要的字节数是
A)1B)2C)3D)4
C25.以下非法的赋值语句是
C26.语句:
printf("
%d"
(a=2)&
(b=-2));
的输出结果是
A)无输出B)结果不确定C)1D)2
C27.设有定义语句:
charstr[][20]={"
Hello"
"
Beijing"
},*p=str;
则printf("
%d\n"
strlen(p+20));
输出结果是
A)0B)5C)7D)20
B28.以下选项中,与k=++n完全等价的表达式是
A)k=n,n=n+1B)n=n+1,k=nC)k=++nD)k+=n+1
二、读程序,写出程序执行结果
1.#include<
stdio.h>
voidmain()
{inta=10,b=0;
if(a==12)
{a++;
b++;
}
else
{a=a+3;
b=b+3;
}
printf(“%d,%d\n”,a,b);
答:
13,3
2.#include<
{ints,i;
for(s=0,i=1;
i<
5;
i++,s+=i);
printf(“%d\n”,s);
14
3.#include“stdio.h”
{charn=‘c’;
switch(n++)
{default:
printf(“error!
”);
break;
case‘a’:
case‘A’:
case‘b’:
case‘B’:
printf(“good!
break;
case‘c’:
case‘C’:
printf(“pass!
case‘d’:
case‘D’:
printf(“warm!
pass!
warm!
4.#include<
{intk=4,n=0;
for(;
n<
k;
)
{n++;
if(n%3!
=0)continue;
k--;
%d,%d\n"
k,n);
3,3
5.#include<
intf(intb[],intm,intn)
{inti,s=0;
for(i=m;
=n;
i+=2)s+=b[i];
returns;
}
{intx,a[]={1,2,3,4,5,6,7,8,9,10};
x=f(a,3,8);
printf(“%d\n”,x);
18
6.#include<
voidcopy_str(charfrom[],charto[])
{intk=0;
while(from[k]!
=‘\0’)
{to[k]=from[k];
k++;
to[k]=‘\0’;
/*末尾加上串结束标志*/
{charstr1[80]=”red”,str2[80]=”green”;
copy_str(str1,str2);
puts(str2);
red
7.#include<
intd=1;
voidfun(intp)
{intd=5;
d+=p++;
printf(“%d”,d);
{inta=3;
fun(a);
d+=a++;
d);
84
8.#include<
{inti,j;
for(i=0;
i<
3;
i++)
{
for(j=0;
j<
=i;
j++)
*"
);
\n"
(空行)
*
**
9.#include<
{inti;
for(i=0;
3;
i++)
switch(i)
{case1:
printf("
%d"
i);
case2:
default:
011122
10.#include<
intws(intx)
{if(x/100>
0)
return(3);
elseif(x/10>
0)
return
(2);
return
(1);
{inta=123;
%d是%d位数\n"
a,ws(a));
123是3位数
11.#include<
#include<
string.h>
{chara[10]="
abc"
;
charb[]="
defg"
puts(a);
puts(b);
puts(strcat(a,b));
abc
defg
abcdefg
12.#include<
voidmain()
{inti,n[]={1,2,3,4,5};
2;
{n[i]=n[4-i]+1;
printf("
n[i]);
5;
6565345
13.#include<
{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;
=2;
for(j=0;
j<
=3;
if(a[i][j]>
max)
{max=a[i][j];
row=i;
colum=j;
}
max=%d,row=%d,colum=%d"
max,row,colum);
max=10,row=1,colum=2
14.#include<
=‘\0’)
to[k]=‘\0’;
{charstr1[80]="
good"
str2[80]="
abcdef"
copy_str(str1,str2);
puts(str2);
good
15.#include<
{inta=0;
a+=(a=8);
printf(“%d\n”,a);
16
16.#include<
{intx=4;
if(x++>
=5)
printf(“%d\n”,x);
printf(“%d\n”,x--);
5
17.#include<
#defineMAX(a,b)(a>
b?
a:
b)+1
{inti=6,j=8;
printf(“%d\n”,MAX(i,j));
9
18.#include<
{inti,j,m=0,n=0,k=0;
for(i=6;
=9;
for(j=2;
switch(i%j)
{case0:
m++;
case1:
n++;
case2:
k++;
default:
n++;
m++;
%d%d%d\n"
m,n,k);
431
19.#include<
for(i=1;
{if(i%2)
putchar(‘<
’);
continue;
putchar(‘>
putchar(‘#’);
<
>
#
20.与12题重复
21.#include<
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
{inta=7,b=5;
fun(a,b)/m);
2
22.#include<
{intn=2;
printf(“%d,%d,%d\n”,++n,n+=2,--n);
4,3,1
23.#include<
{intx=1,a=0,b=0;
switch(x)
{case0:
case1:
a++;
b++;
printf(“a=%d,b=%d\n”,a,b);
a=2,b=1
24.#include<
{ints,t,a=-2,b=6;
s=t=1;
if(a>
0)s=s+1;
b)t=s+t;
elseif(a==b)t=5;
elset=2*s;
t=%d"
t);
t=2
25.#include<
#defineS(a,b)(a)*(b)
{inta=3,area;
area=S(a,a+3);
area=%d\n"
area);
area=18
26.#include<
{inti=0,a=0;
while(i<
20)
{for(;
)
if((i%10)==0)break;
elsei--;
i+=11;
a+=i;
a);
32
27.#include<
{intaa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
inti,s=0;
for(i=0;
4;
i++)s+=aa[i][2];
29
28.#include<
fun(inta,intb)
{if(a>
b)return(a);
elsereturn(b);
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
r);
12
三、编程题
1.设有分段函数:
x(x<1)
Y=2x-1(1≤x<10)写一程序,输入x,输出y的值。
3x-11(x≥10)
intx,y;
printf(“输入x:
scanf(“%d\n”,&
x);
if(x<
1)
{y=x;
printf(“x=%3d,y=x=%d\n”,x,y);
elseif(x<
10)
{y=2*x-1;
printf(“x=%3d,y=2*x-1=%d\n”,x,y);
{y=3*x-11;
printf(“x=%3d,y=3*x-11=%d\n”,x,y);
2.编程任意输入两个实数a和b,计算下面函数的值,并输出y值。
a-ba>
b
y=
a<
a*ba=b
floata,b,y;
scanf(“%f,%f”,&
a,&
b);
if(a<
b)
y=a/b;
if(a==b)y=a*b;
elsey=a-b;
printf(“y=%f\n”,y);
3.编程序求如下分段函数的值
#include<
math.h>
voidmain()
{
floatx,y;
scanf(“%d”,&
=0)
y=fabs(x)+3;
1&
x>
=0)
{y=1+x*x;
{y=2*x+sqrt(x);
printf(“x=%f,y=%f\n”,x,y);
4.写一个判断素数的函数。
要求在主函数中输入一个整数并输出相应的判断信息。
{intn,i;
printf(“pleaseenteraintegernumber,n=?
n);
for(i=2;
=n-1;
if(n%i==0)break;
if(i<
n)printf(“%disnotaprimenumber.\n”,n);
elseprintf(“%disaprimenumber.\n”,n);
5.编程序计算s=1!
-2!
+3!
-4!
+……-10!
,并输出结果。
{inti,k=1,njie=1;
floatsum=0;
=10;
i++)
{njie=njie*i;
sum=sum+njie*k;
k=-1*k;
%f\n"
sum);
6.编写一个函数,将一个字符串(最多80个字符)中的大写字母变为小写字母,小写字母变为大写字母。
要求字符串的输入与输出在主函数中完成。
include<
inti;
chara[80];
gets(a);
puts(a);
80;
if(a[i]>
=65&
a[i]<
=90)
a[i]=a[i]+32;
7.编程计算:
s=1+12+123+1234+12345+123456(必须用循环控制语句实现)
longintt=0,s=0,i;
=6;
{t=i+t*10;
s=s+t;
}
printf(”s=%ld\n”,s);
8.编写函数change使输入的字符串按反序存放,在主函数中输入和输出字符串。
例如输入是:
12345abcde,则输出为:
edcba54321
{
chara[100];
gets(a);
change(a);
puts(a);
voidchange(chara[])
inti,j,k;
chartemp;
k=strlen(a);
k;
for(j=i+1;
temp=a[i];
a[i]=a[j];
a[j]=temp;
9.编程,在N×
N矩阵中(即N行N列的数组),求主对角线和次对角线上的各元素之和。
#defineN10;
main()
inti,j;
inta[N][N];
intsum=0;
N;
for(j=0;
scanf("
&
a[i][j]);
if(i==j||(i+j==N))//i==j是判断是否主对角线的元素i+j==N是判断是否是次对角线的元素sum+=a[i][j];
10.10个评委给出某选手打分,编程实现去掉一个最高分和一个最低分,求最后得分(平均分)
intmain()
inta[10],i,max,min;
floatsum;
10;
i++)
a[i]);
max=a[0];
min=a[0];
if(max<
a[i])
max=a[i];
elseif(min>
min=a[i];
{sum=sum+a[i];
sum=(sum-max-min)/8;