D.for(p=a,i=0;i<4;i+=2)printf(“%d”,p[i]);
12、下面关于循环语句for、while、do_while的叙述中,正确的是。
A.三种循环语句的循环体都必须放入一对花括号中
B.三种循环语句中都可以缺省循环终止条件表达式
C.三种循环语句的循环体都至少被无条件地执行一次
D.三种循环语句都可能出现无穷循环
13、已知有声明"chara[]="Itismine",*p="Itismine";",下列叙述中错误的是。
A.a="yes"和p="yes"都是正确的
B.strcpy(a,"yes")和strcpy(p,"yes")语法都是正确的
C.*a等于*p
D.sizeof(a)不等于sizeof(p)
14、有以下程序
main(){
inti,s=0;
for(i=1;i<10;i+=2)
s+=i+1;
printf("%d\n",s);
}
程序执行后的输出结果是。
A.自然数1~9的累加和
B.自然数1~10的累加和
C.自然数1~9中的奇数之和
D.自然数1~10中的偶数之和
15、若程序中定义了以下函数
doublemyadd(doublea,doubleb){return(a+b);}
并将其放在调用语句之后,则调用之前需对该函数进行说明,错误的说明是。
A.doublemyadd(double,double);
B.doublemyadd(doublea,b);
C.doublemyadd(doubleb,doublea);
D.doublemyadd(doublex,doubley) ;
16、以下程序的运行结果是______。
#defineMAX(A,B)(A)>(B)?
(A):
(B)
#definePRINT(Y)printf(“Y=%d\t”,Y)
main()
{
inta=1,b=2,c=3,d=4,t;
t=MAX(a+b,c+d);
PRINT(t);
}
A.Y=3B.存在语法错误C.Y=0D.Y=7
17、下面函数的功能是______。
intfunl(char*x)
{
char*y=x;
while(*y++);
return(y-x-1);
}
A.将字符串x复制到字符串yB.比较两个字符串的大小
C.求字符串的长度D.将字符串x连接到字符串y后面
18、以下程序的输出结果是______。
voidfun(inta,intb,intc)
{a=456;b=567;c=678;}
main()
{
intx=10,y=20,z=30;
fun(x,y,z);
printf("%d,%d,%d\n",x,y,z);
}
A.30,20,10B.456,567,678C.10,20,30D.678,567,456
19、若已定义inta[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是______。
A.p+1B.a++C.a+1D.++p
20、若有如下语句:
structpupil{
charname[20];
intage;
intsex;
}pup[5],*p;
p=pup;
则以下scanf函数调用语句中对结构体变量成员的不正确引用是______。
A.scanf(“%s”,pup[0].name);B.scanf(“%d”,&pup[0].age);
C.scanf(“%d”,p->age);D.scanf(“%d”,&(p->sex));
二、填空题(每空1分,共10分)
1、C语言的标识符只能由大小写字母,数字和下划线三种字符组成,而且第一个字符必须为【1】。
2、语句:
printf("%d",strlen("a0\0a0\0"));的输出结果是___【2】___。
3、若有以下定义chara;intb;floatc;doubled;则表达式a*b+d-c值的类型为___【3】___。
4、能表述”205、语句while(!
e)中表达式!
e等价于___【5】__。
6、执行以下程序段中的语句"k=M*M+1"后k的值是【6】。
#defineN2
#defineMN+1
k=M*M+1:
7、假定int类型变量占用两个字节,其有定义:
intx[10]={0,2,4};,则数组x在内存中所占字节数是___【7】___。
8、若有声明"intx;"且sizeof(x)的值为2,则当x值为【8】时"x+1>x"为假。
9、在以下程序的main函数中,语句"fun(x,10);"内的实参x表示数组x的【9】。
voidfun(inta[10],intn)
{inti;for(i=0;imain()
{intx[10]={0};fun(x,10);}
10、若要使表达式p="jiangsu"无任何错误(包括语法错误和警告错误),p的声明形式应为【10】。
三、程序阅读题(每题3分,共30分)
1、以下程序运行后,输出结果是【1】。
main(){
inta=3,b=4;
printf("%d%d\n",--a+b,++b);
}
2、以下程序运行后,输出的结果是【2】。
main(){
inta=3,b=4,c=5;
if(a>b)
c=a;a=b;b=c;
printf(“a=%d,b=%d\n”,a,b);
}
3、以下程序运行后,输出结果是【3】。
main(){
inti,j;
for(i=1,j=1;i<=100;i++){
if(j>=20)break;
if(j%3==1){j+=3;continue;}
j-=5;
}
printf("i=%d\n",i);
}
4、有如下程序
main()
{
intx=1,a=0,b=0;
switch(x){
case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是【4】。
5、以下程序运行后,输出结果的最后一行是【5】。
inti;
voidsums(intn){
ints=1;
for(i=1;i<10;i++)
s+=i;
printf(“%d\n”,s);
}
main(){
for(i=1;i<10;i++)
sums(i);
printf("i=%d\n",i);
}
6、以下程序运行后,输出结果是【6】。
main()
{inti,j,row,col,m;
intarr[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};
m=arr[0][0];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(arr[i][j]printf(“%d,%d,%d\n”,m,row,col);
}
7、以下程序运行后,输出结果是【7】。
main()
{
charch[7]={“65ab21”};
inti,s=0;
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'0';
printf("%d\n",s);
}
8、以下程序运行后,输出结果是【8】。
main()
{
staticchara[]="ABCDEFGH",b[]="abCDefGh";
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));
printf("\n");
}
9、以下程序运行后,输出结果是【9】。
#include
main(){
staticchara[]="Program",*ptr;
for(ptr=a;ptrputchar(*ptr);
}
10、以下程序运行后,输出结果是【10】。
main()
{
uniondata
{chara;
intb;
longc;
}a;
a.a=’A’;
a.b=0x4849;
a.c=0x30313233;
printf(“%c\n”,a.a);
}
四、程序填空题(每空2分,共10分)
1、以下程序是实现如下功能:
有两个正整数a和b,已知a*b=2048,求a、b各为何值时,a+b的值最小。
#include
main()
{inta,b,min=2048,i,mini;
for(i=1;i<=sqrt(2048);i++)
{if(2048%【1】==0)
{a=i;
b=2048/i;
if(min>a+b)
{min=【2】;
mini=i;
}
}
}
printf("%d,%d\n",mini,2048/mini);
}
2、以下程序是实现如下功能:
输出100到1000之间所有的素数并且每行只输出6个素数。
#include
intprime(intn)
{inti;
for(i=2;i<=sqrt(n);i++)
if(n%i==0)
【3】;
【4】;
}
main()
{inti,c=0;
for(i=100;i<1000;i++)
if(prime(i)==1)
{printf(“%d“,i);
if(【5】)
printf(“\n”);
}
}
五、编程题(每题5分,共10分)
1、编写程序,计算s=1+(1+2)+(1+2+3)+…+(1+2+3+…+10)的值。
2、完善下面fun函数,该函数功能是利用递归方法将一个存放在数组str中的字符串逆序输出。
(如:
原字符串China,输出结果为anihC)
voidfun(charstr[])
{
........
}
南京林业大学答题纸(A)
课程C程序设计2009~2010学年第一学期
题号
一
二
三
四
五
总分
得分
名
姓
号
学
号
班
一、选择题(每题2分,共40分)
1~~5
6~~10
11~~15
16~~20
二、填空题(每空1分,共10分)
【1】【2】【3】
【4】【5】【6】
【7】【8】【9】
【10】
三、程序阅读题(每题3分,共30分)
【1】【2】【3】
【4】【5】【6】
【7】【8】【9】
【10】
四、程序填空题(每空2分,共10分)
【1】【2】
【3】【4】
【5】
五、编程题(每题5分,共10分)
南京林业大学答案(A)
课程C程序设计2009~2010学年第一学期
题号
一
二
三
四
五
总分
得分
一、选择题(每题2分,共40分)
1~~5
C
B
D
C
A
6~~10
A
D
A
A
B
11~~15
B
D
A
D
B
16~~20
D
C
C
B
C
二、填空题(每空1分,共10分)
【1】字母或下划线【2】2【3】double
【4】(x>20&&x<30)||x<-100【5】e==0【6】6
【7】20【8】32767【9】首地址
【10】char*p
三、程序阅读题(每题3分,共30分)
【1】75【2】a=4,b=5【3】i=8
【4】a=2,b=1【5】i=11【6】-850,2,0
【7】6【8】CDG【9】Pgm
【10】3
四、程序填空题(每空2分,共10分)
【1】i【2】a+b
【3】return0【4】return1
【5】++c%6==0
五、编程题(每题5分,共10分)参考
1、
main()
{
inti,n,s,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
s=0;
for(j=1;j<=i;j++)
s+=j;
sum+=s;
}
printf("%d",sum);
}
2、
voidfun(charstr[])
{
if(*str!
=’\0’)
{
fun(str+1);
putchar(*str);
}
}