C程序设计期末考试习题(含答案)文档格式.doc
《C程序设计期末考试习题(含答案)文档格式.doc》由会员分享,可在线阅读,更多相关《C程序设计期末考试习题(含答案)文档格式.doc(45页珍藏版)》请在冰豆网上搜索。
则下面语句中错误的是()。
A)a++;
B)b++ C)c++;
D)d++;
5.
以下4个选项中,不能作为一条C语句的是()。
A){;
} B)a=0,b=0,c=0;
C)if(a>
0);
D)if(b==0)m=1;
n=2;
6.
有以下定义语句doublea,b;
intw;
longc;
若各变量已正确赋值,则下列选项中正确的表达式是()。
A)a=a+b=b++B)w%(int)a+b)C)(c+w)%(int)aD)w=a==b;
7.
设有定义:
intn=0,*p=&
n,**q=&
p;
则以下选项中,正确的赋值语句是()。
A)p=1;
B)*q=2;
C)q=p;
D)*p=5;
8.
inta,*pa=&
以下scanf语句中能正确为变量a读入数据的是()。
A)scanf(“%d”,pa);
B)scanf(“%d”,a);
C)scanf(“%d”,&
pa);
D)scanf(“%d”,*pa);
9.
若有说明:
char*language[]={”FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};
则表达式*language[1]>
*language[2]比较的是()。
A)字符B和字符PB)字符串FORTRAN和字符串BASIC
C)字符F和字符BD)字符串BASIC和字符串PASCAL
10.
执行语句for(i=1;
i++<
4;
);
后变量i的值是()。
A)3B)4C)5D)不定
一、填空题(每空2分,共18分)
若有定义:
inta=7;
floatx=2.5,y=4.7;
则表达式x+a%3*(int)(x+y)%2/4的值为。
有程序段:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&
a[3],b;
b=p[5];
则b中的值是。
函数swap(intx,inty)实现对x和y值的交换。
则执行语句{inta[2]={1,2};
swap(a[0],a[1]);
}后,a[0]=,a[1]=。
设有以下宏定义:
#definef(z)z*z,执行赋值语句k=f(4+4)/f(2+2);
(k为int型变量)后,k的值是。
书写语句求a,b两个数的最大值max。
?
:
;
若x为int型变量,则执行x=7;
x+=x-=x+x;
语句后,x的值是。
二、读程序写结果(每题6分,共24分)
有以下程序
intf(inta)
{intb=0;
staticc=3;
b=b+1;
c=c+1;
return(a+b+c);
}
voidmain()
{inta=2,i;
for(i=0;
i<
3;
i++)printf(“%2d”,f(a));
执行后输出的结果是。
voidf(inty,int*x)
{y=y+*x;
*x=*x+y;
voidmain()
{intx=2,y=4;
f(y,&
x);
printf(“x=%d,y=%d\n”,x,y);
#defineLETTER1
#include<
stdio.h>
voidmain()
{charstr[20]="
CLanguage"
c;
inti=0;
while((c=str[i])!
='
\0'
)
{i++;
#ifdefLETTER
if(c>
a'
&
&
c<
'
z'
c=c+1;
elseif(c=='
)c=c-25;
#else
Z'
c=c-1;
)c=c+25;
#endif
printf("
%c"
c);
}}
voidfun(int*a,inti,intj)
{intt;
if(i<
j)
{t=a[i];
a[i]=a[j];
a[j]=t;
i++;
j--;
for(i=0;
i++)printf("
%2d"
a[i]);
fun(a,i,j);
}
{intx[]={2,6,1,8},i;
fun(x,0,3);
x[i]);
printf("
\n"
四、程序填空(每空1分,共8分)
下面程序的功能是:
计算从命令行中输入的第2个参数开始的所有参数中是回文字符串的参数个数。
(顺读和倒读都一样的字符串称为“回文”,如“level”就是回文)请填空。
【1】
intsumhw(char**p,intn);
charjughw(char*str);
voidmain(intargc,char*argv[])
{ints;
if(argc<
2)printf("
请输入有效参数"
else
{s=sumhw(【2】,argc-1);
printf("
共有%d个回文串\n"
s);
}
}
intsumhw(char**p,intn)
{charflag;
inti,sum=0;
for(i=0;
n;
i++)
{flag=jughw(【3】);
if(【4】)sum++;
returnsum;
charjughw(char*str)
{char*p1,*p2;
intn;
n=strlen(str);
p1=str;
p2=【5】;
while(【6】)
{if(*p1!
=*p2)break;
else{p1++;
【7】;
if(【8】)return('
N'
elsereturn('
Y'
五、编程题(30分)
用指针和数组两种方法实现如下功能:
将一个字符串按逆序存放。
(18分)
要求
(1)主函数中完成输入和输出字符串。
(2)逆序存放功能用子函数完成。
一个整型数组有10个元素,编写程序删除所有值为n的元素。
(12分)
要求
(1)主函数完成n的输入,数组元素输入以及删除后数组元素的输出。
(2)删除功能用子函数完成。
C语言模拟试卷一参考答案
1、A
2、D
3、C
4、B
5、D
6、C
7、D
8、A
9、A
10、C
二、填空题(每空2分,共18分)
1、2.500000
2、9
3、12
4、28
5、(a>
b)max=amax=b
6、-14
三、读程序写结果(每题6分,共24分)
1、789
2、x=8,y=4
3、CLbohvbhf
4、86128612
【1】#include<
string.h>
【2】argv+1
【3】*(p+i)
【4】flag==’Y’
【5】str+n-1
【6】p1<
p2
【7】p2--
【8】p1<
五、编程题(共30分)
1.
(1)数组法(9分)
#defineN20
voidinv(charstr[],intn);
{charstr[N];
gets(str);
inv(str,strlen(str));
puts(str);
voidinv(charstr[],intn)
{inti,j,temp;
for(i=0,j=n-1;
=j;
i++,j--)
{temp=str[i];
str[i]=str[j];
str[j]=temp;
(2)指针法(9分)
voidinv(char*str,intn);
voidinv(char*str,intn)
{char*i,*j,temp;
for(i=str,j=str+n-1;
{temp=*i;
*i=*j;
*j=temp;
2.(12分)
intm;
voiddel_element(intnum[],intn);
{intnum[10];
inti,n;
m=10;
for(i=0;
10;
scanf("
%d"
&
num[i]