春季试题Word文档格式.docx
《春季试题Word文档格式.docx》由会员分享,可在线阅读,更多相关《春季试题Word文档格式.docx(26页珍藏版)》请在冰点文库上搜索。
=8)
printf(“%d\n”,t--)
;
else
printf(“%d\n”,t++)
}
A)9B)8C)7D)6
3.有以下程序段
{inti=1,sum=0,n;
scanf(“%d”,&
n);
do
{i+=2;
sum+=i
}while(i!
=n);
printf(„%d”,sum);
}
若使程序的输出值为8,则应该从键盘输入的n的值是:
A)1B)3C)5D)7
4.若有以下定义及语句:
structs1
{
chara[3];
intnum;
}t={‘a’,’b’,’c’,4},*p;
p=&
t;
则输出值为c的语句是________。
A)printf(“%c\n”,p->
t.a[2]);
B)printf(“%c\n”,(*p).a[2]);
C)printf(“%c\n”,p->
a[3]);
D)printf(“%c\n”,(*p).t.a[2]);
5.C语言规定:
在一个源程序中,main函数的位置。
A)必须在程序的最开始
B)必须在系统调用的库函数的后面
C)可以任意
D)必须在程序的最后
二、写出下列程序的运行结果。
1.
#include<
stdio.h>
inti,j;
for(i=1;
i<
=3;
i++)
{for(j=i;
j>
=1;
j--)
printf("
*
“);
printf("
\n“);
运行结果是:
2.
inta,b,c;
scanf("
%2d%2d%*2c%2d"
&
a,&
b,&
c);
%d\n"
a+b-c);
程序执行时从键盘输入:
54457766↙
3.
string.h>
{
char*p=”abcde”,a[20]=”ABC”,*q=a;
p+=3;
printf(“%s\n”,strcat(q,p));
4.
intfun()
autointx=1;
staticinty=1;
x+=2;
y+=2;
returnx+y;
inta,b;
a=fun();
b=fun();
printf(“%d,%d\n”,a,b);
5.
{intk=0;
charc=’A’;
do
{switch(c++)
{case‘A’:
k++;
break;
case‘B’:
k--;
case‘C’:
k+=2;
case‘D’:
k=k%2;
continue;
case‘E’:
k=k*10;
default:
k=k/3;
}
k++;
}while(c<
’G’);
printf(“k=%d\n”,k);
三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。
(10分,每空2分)
1.下面这个程序的功能是将字符串s中所有的字符c删除。
chars[80];
inti,j
Pleaseenterstrings:
"
);
gets(s)
for(i=j=0;
_______
{
if(s[i]!
=’c’)_______;
s[j]=’\0’;
puts(s);
2.以下程序的功能是输出二维数组中最大值所在行内最小元素的值。
intfun(inta[4][5])
inti,j,m=0,n=0,min;
for(i=0;
4;
i++)
for(j=0;
j<
5;
j++)
if(a[m][n]<
a[i][j])
{____;
______;
}
____________;
for(j=1;
{
if(min>
a[m][j])
min=a[m][j];
}
returnmin;
inta[4][5]={{2,3,6,4,1},{25,54,23,28,26},
{7,9,15,20,35},{67,18,30,88,38}};
inti,j,min;
for(i=0;
i<
i++)
{
printf(“%3d”,a[i][j]);
printf(“\n”);
min=fun(a);
printf(“%d\n”,min);
四、在下面给出的4个程序中,共有15处错误(包括语法错误和逻辑错误),请找出其中的错误,并改正之。
(30分,每找对1个错误,加1分,每修改正确1个错误,再加1分。
)
1.下面程序的功能是对a数组中的元素按从大到小的顺序排序。
#defineN10;
inta[N]={2,17,8,3,24,53,82,1,29,101};
inti,j,k,t;
for(i=0;
9;
{k=i;
for(j=i+1;
10;
if(a[j]<
a[k])
k=j;
if(k=i)
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
2.下面程序的功能是交换变量a和b中的值。
inta,b,*p,*q,*t;
p=&
a;
q=&
b;
请输入变量a和b的值:
%d%d"
&
p,&
q);
*t=*p
*p=*q
*q=*t
交换后a和b的值:
a=%db=%d\n"
a,b);
3.假设某袋子中装有3个红球,5个白球,6个黑球,现从该袋子中任意取出8个球,下面程序的功能是输出这8个球中至少有一个白球的所有方案。
{inti,j,k;
for(j=0;
=5;
{k=8-i-j;
if(0<
=k<
=6)
printf(“hong=%d\t,bai=%d\t,
hei=%d\t\n”,i,j,k);
4.以下程序有若干语法错误。
structdate
inty;
m;
d;
structstu
{charn[10];
structdateb;
inta;
}s={“Wang”,{1980,11,11},30};
printf(“%c,%d,%d\n”,s.n,s.d,s.a);
五、编程(40分)
1.打印如下图案。
(12分)
*****
*****
2.输入8个整数放入一维数组w中,输出交换前的数组;
找出其中最小和最大数,并将他们分别与数组中的第一个元素和最后一个元素交换位置;
输出交换后的数组。
(15分)
3.不用标准库函数strcpy,自己编写一个函数MyStrcpy实现将两个字符串复制的功能,然后从键盘输入源字符串,并输出复制后的目的字符串。
(13分)
参考答案
A。
D。
sum+=i
C。
则输出值为c的语句是___B_____。
在一个源程序中,main函数的位置C。
for(i=1
=3
{for(j=i
j>
=1
j--)printf("
*
**
***
33
printf(“%s\n”,strcat(q,p);
ABCde
autointx=1
staticinty=1
x+=2
y+=2
returnx+y
inta,b
a=fun()
b=fun()
6,8
k++;
break;
k--;
k+=2;
k=k%2;
continue;
k=k*10;
k=k/3;
k=4
s[i]
!
=’\0’;
=’c’)s[j++]=s[i];
{inti,j,m=0,n=0,min;
for(i=0;
if(a[m][n]<
{m=i;
n=j;
min=a[m][0];
for(j=1;
if(min>
a[m][j])min=a[m][j];
returnmin;
{inti,j,min;
inta[4][5]={{2,3,6,4,1},{25,54,23,28,26},
{for(j=0;
错!
应为:
#defineN10
a[k])k=j;
错!
if(a[j]>
a[k])
if(k=i)错!
if(k!
=i)
t=a[k];
a[k]=a[i];
t
scanf("
p,q);
t=*p
*q=*t
*q=t
inti,j,k;
错!
for(j=1;
=6)错!
if(k>
=0&
&
k<
=6)
inty,m,d;
}错!
};
printf(“%s,%d,%d\n”,s.n,s.b.d,s.a);
inti,j,k;
{for(j=1;
=i;
j++)printf(“”);
for(k=1;
k<
k++)printf(“%c”,’*’);
参考答案1:
{intw[8],i,min,max,t;
请输入8个整型数据:
8;
i++)scanf("
%d"
w[i]);
交换前的数组:
i++)printf("
%d\t"
w[i]);
\n"
min=0;
if(w[i]<
w[min])min=i;
}
t=w[0];
w[0]=w[min];
w[min]=t;
交换最小值后的数组:
max=0;
if(w[i]>
w[max])max=i;
t=w[7];
w[7]=w[max];
w[max]=t;
交换最大值后的数组:
参考答案2:
min=max=0;
elseif(w[i]<
if(min==7)min=max;
交换后的数组:
参考答案3:
if(max==0)max=min;
#defineARR_SIZE80
voidMyStrcpy(chardstStr[],charsrcStr[]);
chars[ARR_SIZE],t[ARR_SIZE];
Pleaseentersourcestring