中国石油大学华东第二学期期末试题《C语言》综合复习.docx
《中国石油大学华东第二学期期末试题《C语言》综合复习.docx》由会员分享,可在线阅读,更多相关《中国石油大学华东第二学期期末试题《C语言》综合复习.docx(22页珍藏版)》请在冰豆网上搜索。
中国石油大学华东第二学期期末试题《C语言》综合复习
C语言综合复习资料
一、单选题
C1.C语言中基本数据类型有
A)整型、实型、逻辑型B)整型、字符型、逻辑型
C)整型、实型、字符型D)整型、实型、字符型、逻辑型
D2.在C语言中,数字029是一个
A)八进制数B)十进制数C)十六进制数D)非法数
A3.在以下关于C语言的不严格的叙述中,错误的说法是
A)在标识符中,大写字母和小些字母的意义相同
B)有些不同类型的变量可以在一个表达式中运算
C)在赋值表达式中等号“=”左边的变量和右边的值可以是不同类型
D)同一个运算符号在不同的场合可以有不同的含义
A4.已知inta=4,b=5;,这执行表达式a=a>b后,变量a的值为
A)0B)1C)4D)5
D5.设有定义inta=3,b=4,c=5;,则以下表达式中,值为0的表达式是
A)a&&bB)a<=bC)a||b+c&&b-cD)!
((a
c||1)
D6.以下不合法的赋值语句是
A)x=(1,y=2);B)++x;C)x=y=15;D)y=int(x);
D7.已定义c为字符型变量,则下列语句中正确的是
A)c='97';B)c="97";C)c="a";D)c=97;
D8.能将高级语言编写的源程序转换为目标程序的软件是
A)汇编程序B)编辑程序C)解释程序D)编译程序
D9.设有定义char*p=“abcde\0fghjik\0”;则printf(“%d\n”,strlen(p));输出结果是
A)12B)15C)6D)5
C10.以下选项中合法的实型常数是
A)5E2.0B)E-3C).2E0D)1.3E
C11.以下非法的赋值语句是
A)n=(i=2,++i);B)j++;C)++(i+1);D)x=j>0;
D12.已定义c为字符型变量,则下列正确的赋值语句是
A)c='66';B)c="66";C)c="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.以下非法的赋值语句是
A)n=(i=2,++i);B)j++;C)++(i+1);D)x=j>0;
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
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
voidmain()
{ints,i;
for(s=0,i=1;i<5;i++,s+=i);
printf(“%d\n”,s);
}
答:
14
3.#include“stdio.h”
voidmain()
{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
voidmain()
{intk=4,n=0;
for(;n{n++;
if(n%3!
=0)continue;
k--;
}
printf("%d,%d\n",k,n);
}
答:
3,3
5.#include
intf(intb[],intm,intn)
{inti,s=0;
for(i=m;i<=n;i+=2)s+=b[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
6.#include
voidcopy_str(charfrom[],charto[])
{intk=0;
while(from[k]!
=‘\0’)
{to[k]=from[k];k++;}
to[k]=‘\0’;/*末尾加上串结束标志*/
}
voidmain()
{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);
}
voidmain()
{inta=3;
fun(a);d+=a++;
printf("%d\n",d);
}
答:
84
8.#include
voidmain()
{inti,j;
for(i=0;i<3;i++)
{
for(j=0;j<=i;j++)
printf("*");
printf("\n");
}
}
答:
(空行)
(空行)
*
**
9.#include
voidmain()
{inti;
for(i=0;i<3;i++)
switch(i)
{case1:
printf("%d",i);
case2:
printf("%d",i);
default:
printf("%d",i);
}
}
答:
011122
10.#include
intws(intx)
{if(x/100>0)
return(3);
elseif(x/10>0)
return
(2);
else
return
(1);
}
voidmain()
{inta=123;
printf("%d是%d位数\n",a,ws(a));
}
答:
123是3位数
11.#include
#include
voidmain()
{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};
for(i=0;i<2;i++)
{n[i]=n[4-i]+1;
printf("%d",n[i]);
}
for(i=0;i<5;i++)
printf("%d",n[i]);
}
答:
6565345
13.#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
14.#include
voidcopy_str(charfrom[],charto[])
{intk=0;
while(from[k]!
=‘\0’)
{to[k]=from[k];k++;}
to[k]=‘\0’;/*末尾加上串结束标志*/
}
voidmain()
{charstr1[80]="good",str2[80]="abcdef";
copy_str(str1,str2);
puts(str2);
}
答:
good
15.#include
voidmain()
{inta=0;
a+=(a=8);
printf(“%d\n”,a);
}
答:
16
16.#include
voidmain()
{intx=4;
if(x++>=5)
printf(“%d\n”,x);
else
printf(“%d\n”,x--);
}
答:
5
17.#include
#defineMAX(a,b)(a>b?
a:
b)+1
voidmain()
{inti=6,j=8;
printf(“%d\n”,MAX(i,j));
}
答:
9
18.#include
voidmain()
{inti,j,m=0,n=0,k=0;
for(i=6;i<=9;i++)
for(j=2;j<=3;j++)
switch(i%j)
{case0:
m++;break;
case1:
n++;break;
case2:
k++;break;
default:
k++;n++;m++;
}
printf("%d%d%d\n",m,n,k);
}
答:
431
19.#include
voidmain()
{inti;
for(i=1;i<5;i++)
{if(i%2)
putchar(‘<’);
else
continue;
putchar(‘>’);
}
putchar(‘#’);
}
答:
<><>#
20.与12题重复
答:
6565345
21.#include
intm=13;
intfun(intx,inty)
{intm=3;
return(x*y-m);
}
voidmain()
{inta=7,b=5;
printf("%d\n",fun(a,b)/m);
}
答:
2
22.#include
voidmain()
{intn=2;
printf(“%d,%d,%d\n”,++n,n+=2,--n);
}
答:
4,3,1
23.#include
voidmain()
{intx=1,a=0,b=0;
switch(x)
{case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
答:
a=2,b=1
24.#include
voidmain()
{ints,t,a=-2,b=6;
s=t=1;
if(a>0)s=s+1;
if(a>b)t=s+t;
elseif(a==b)t=5;
elset=2*s;
printf("t=%d",t);
}
答:
t=2
25.#include
#defineS(a,b)(a)*(b)
voidmain()
{inta=3,area;
area=S(a,a+3);
printf("area=%d\n",area);
}
答:
area=18
26.#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
27.#include
voidmain()
{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;i<4;i++)s+=aa[i][2];
printf(“%d\n”,s);
}
答:
29
28.#include
fun(inta,intb)
{if(a>b)return(a);
elsereturn(b);
}
voidmain()
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);
printf("%d\n",r);
}
答:
12
三、编程题
1.设有分段函数:
x(x<1)
Y=2x-1(1≤x<10)写一程序,输入x,输出y的值。
3x-11(x≥10)
答:
#include
voidmain()
{
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);
}
else
{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
答:
#include
voidmain()
{
floata,b,y;
scanf(“%f,%f”,&a,&b);
if(a
y=a/b;
else
if(a==b)y=a*b;
elsey=a-b;
printf(“y=%f\n”,y);
}
3.编程序求如下分段函数的值
答:
#include
#include
voidmain()
{
floatx,y;
scanf(“%d”,&x);
if(x<=0)
y=fabs(x)+3;
elseif(x<1&&x>=0)
{y=1+x*x;}
else
{y=2*x+sqrt(x);
printf(“x=%f,y=%f\n”,x,y);
}
4.写一个判断素数的函数。
要求在主函数中输入一个整数并输出相应的判断信息。
答:
#include
voidmain()
{intn,i;
printf(“pleaseenteraintegernumber,n=?
”);
scanf(“%d”,&n);
for(i=2;i<=n-1;i++)
if(n%i==0)break;
if(ielseprintf(“%disaprimenumber.\n”,n);
}
5.编程序计算s=1!
-2!
+3!
-4!
+……-10!
,并输出结果。
答:
#include
voidmain()
{inti,k=1,njie=1;
floatsum=0;
for(i=1;i<=10;i++)
{njie=njie*i;
sum=sum+njie*k;
k=-1*k;
}
printf("%f\n",sum);
}
6.编写一个函数,将一个字符串(最多80个字符)中的大写字母变为小写字母,小写字母变为大写字母。
要求字符串的输入与输出在主函数中完成。
答:
include
voidmain()
{
inti;
chara[80];
gets(a);
puts(a);
for(i=0;i<80;i++)
if(a[i]>=65&&a[i]<=90)
a[i]=a[i]+32;
puts(a);
}
7.编程计算:
s=1+12+123+1234+12345+123456(必须用循环控制语句实现)
答:
#include
voidmain()
{
longintt=0,s=0,i;
for(i=1;i<=6;i++)
{t=i+t*10;s=s+t;}
printf(”s=%ld\n”,s);
}
8.编写函数change使输入的字符串按反序存放,在主函数中输入和输出字符串。
例如输入是:
12345abcde,则输出为:
edcba54321
答:
voidmain()
{
chara[100];
gets(a);
change(a);
puts(a);
}
#include
#include
voidchange(chara[])
{
inti,j,k;
chartemp;
k=strlen(a);
for(i=0;ifor(j=i+1;j{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
9.编程,在N×N矩阵中(即N行N列的数组),求主对角线和次对角线上的各元素之和。
答:
#defineN10;
main()
{
inti,j;
inta[N][N];
intsum=0;
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
for(i=0;ifor(j=0;jif(i==j||(i+j==N))//i==j是判断是否主对角线的元素i+j==N是判断是否是次对角线的元素sum+=a[i][j];
printf("%d",sum);
}
10.10个评委给出某选手打分,编程实现去掉一个最高分和一个最低分,求最后得分(平均分)
答:
#include
intmain()
{
inta[10],i,max,min;
floatsum;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
max=a[0];
min=a[0];
for(i=1;i<=9;i++)
{
if(maxmax=a[i];
elseif(min>a[i])
min=a[i];
}
for(i=0;i<=9;i++)
{sum=sum+a[i];}
sum=(sum-max-min)/8;
printf("%f\n",sum);
}
}