13年C语言上机真题Word格式.docx
《13年C语言上机真题Word格式.docx》由会员分享,可在线阅读,更多相关《13年C语言上机真题Word格式.docx(27页珍藏版)》请在冰点文库上搜索。
printf("
pleaseinputmatrixa:
\n"
);
for(j=0;
j<
j++)
scanf("
%d"
&
a[i][j]);
sum=add(a[0][0]);
/*$ERROR3$*/
sum=%d\n"
sum);
}
2、题目:
有N个数据存放在a数组中,请求出这N个数据的最小数,并与数组中第一个位置上的数进行交换。
#defineN12
inta[N]={3,6,-5,15,7,-23,67,10,-34,24,-2,78};
intmin,i,t;
min=a[0];
/*$ERROR1$*/
for(i=1;
{if(a[i]<
a[min])
min=a[i];
/*$ERROR2$*/
a[0]=t;
/*$ERROR3$*/
a[0]=a[min];
a[min]=t;
%5d"
a[i]);
3、题目:
将数组中的数按从大到小排序后输出,要求:
所有数据输出在一行,且每个数据占4列。
#defineN10
#include<
inta[N]={12,35,61,30,-62,75,-2,5,129,34};
inti,j,k;
for(j=1;
j++)
N-j;
{
if(a[i]>
a[i+1])/*$ERROR1$*/
k=a[i+1];
/*$ERROR2$*/
a[i]=a[i+1];
a[i+1]=k;
i++)
%4d"
a[i]);
4、题目:
计算200到500之间满足下列条件的数之和。
(1)这个数的三个数位上的数字积为42;
(2)这个数的三个数位上的数字和为12。
inti,g,s,b,sum;
sum=1;
for(i=200;
=500;
g=i/10;
s=i/10%10;
b=i/100;
if(g*s*b==42||g+s+b==12)/*$ERROR3$*/
{printf("
i);
sum=sum+i;
\nsum=%d\n"
5、题目:
6、题目:
删除一个给定的字符串中第p个字符起连续n个字符,输出删除后的字符串。
例如:
字符串s="
abcdefghi"
p=3,n=2,则输出结果是:
abefghi。
string.h>
voiddel(chars[],intp,intn)
inti,j;
if(p<
1||n<
0||p+n-1>
strlen(s))
inputerror!
return;
i=p;
/*$ERROR1$*/
j=p+n-1;
while(s[j]!
='
\0'
)
s[i]=s[j];
i++;
j++;
s[i]='
\n'
;
chars[]="
ABCDEFGHIJK"
intp,n;
pleaseinputbeginpositionandnumber:
"
%d%d"
p,&
n);
del(s[],p,n);
puts(s);
7、题目:
若有车的车牌号和罚分记录数据,统计罚分达到或超过12分的车辆总数并输出这些车辆的信息
(说明:
id域代表车牌号,score域代表罚分)。
structcar
{charid[12];
intscore;
};
{
inti,n=0;
carc[6]={{"
A-QQ111"
8},/*$ERROR1$*/
{"
A-TT222"
12},
B-WJ333"
C-LC444"
5},
F-PC555"
6},
B-MY666"
12}};
id\tscore\n"
i=0;
while(i<
6)
if(score>
=12)/*$ERROR2$*/
%s\t%d\n"
c[i].id,c[i].score);
n--;
n=%d\n"
n);
8、题目:
把字符串s中所有大写字母转换成小写字母,其它字符保持不变。
chars[81];
inti;
getchar(s);
while(s[i]!
{if(s[i]>
A'
&
s[i]<
Z'
s[i]=s[i]-32;
%c\n"
s);
9、题目:
输出大于100的前10个素数。
如101,103,107,......等。
inti,j,flag,n;
n=0;
i=101;
while(n<
=10)/*$ERROR1$*/
flag=0;
for(j=2;
i;
j++)
if(i/j==0)/*$ERROR2$*/
flag=1;
break;
if(flag==1)/*$ERROR3$*/
n=n+1;
%d\n"
i=i+2;
10、题目:
输入N个整数,输出其中最大值。
#defineN5
inti,x,max;
pleaseinput%dnum:
N);
x);
max=x;
i=1;
=N)
if(max>
x)/*$ERROR2$*/
i=i+1;
max=%d\n"
max);
/*$ERROR3$*/
二、改错题
注意事项:
1.请删除标有$BLANK?
$的程序行上的下划线,将正确的答案填在原下划线处;
2.请不要删除或修改$BLANK?
$标志;
3.请不要将需要填空的行分成多行;
4.请不要修改任何注释。
1、题目:
下列程序功能是实现计算1+(1+2)+(1+2+3)+...+(1+2+3+...+10),请填空。
{inttotal,sum,m,n;
total=___;
/*$BLANK1$*/
for(m=1;
m<
=10;
m++)
{sum=0;
for(n=1;
n___;
n++)/*$BLANK2$*/
sum=sum+n;
/*$BLANK3$*/
total=%d\n"
total);
}
下列程序功能是计算并输出a数组中所有元素的平方之和,数组元素由键盘输入。
请填空。
例如,输入数组的10个元素依次为1,2,3,4,5,6,7,8,9,10,输出应为:
s=385.0。
floata[10],s;
10;
%f"
_____);
_____;
/*$BLANK2$*/
______;
i++)/*$BLANK3$*/
s=s+a[i]*a[i];
s=%f\n"
3、题目:
voidmain()
m++)
下列程序的功能是将由数字字符'
0'
~'
9'
组成的字符串转换成整数。
#include"
stdio.h"
{charstr[]="
3250"
longvalue=0;
i=___;
/*$BLANK1$*/
while(str[i]!
=___)/*$BLANK2$*/
{value=value*10+str[i]-'
___;
/*$BLANK3$*/
%ld\n"
value);
下列程序的功能是分别统计字符串s中字母和数字字符的个数。
例如,若字符串s为:
WindowsXP2003SP3则输出结果应为:
alpha=11,digit=5
chars[81]="
WindowsXP2003SP3"
inti=0,alpha=0,digit=0;
=_____)/*$BLANK1$*/
if((s[i]>
&
s[i]<
)||(s[i]>
a'
z'
))
/*$BLANK2$*/
else
if(s[i]>
)
digit++;
alpha=%d,digit=%d\n"
alpha,digit);
6、题目:
以下程序的功能是:
输出所有的"
水仙花数"
,并输出"
的个数。
所谓"
是指一个三位数,其各位数字的立方和等于该数本身。
例如153是一个"
,因为153=1*1*1+5*5*5+3*3*3。
inti,a,b,c,n;
n=___;
for(i=101;
=999;
a=___;
b=i/10%10;
c=i/100;
if(a*a*a+b*b*b+c*c*c==i)
%6d"
\nn=%d\n"
下列程序功能是:
从键盘输入1个正整数,统计各位数字为1的个数,请填空。
如输入13121,则1的个数为3。
{intcount,n,t;
count___;
do
{t=n%10;
if(t___)/*$BLANK2$*/
count++;
n=n/10;
}while(___);
printf("
One=%d"
count);
8、题目:
下面程序的功能是输出杨辉三角形的前10行。
杨辉三角形如下:
1
11
121
1331
14641
......
每行第一列和最后一列元素均为1。
其他列元素为其所在位置的上一行对应列和上一行前一列元素之和。
voidyh(inta[][N])
{intj,k;
{a[j][0]=1;
a[j][j]=___;
for(k=1;
k<
j;
k++)
a[j][k]=____+a[j-1][k];
{inta[N][N],i,j;
{for(j=0;
=i;
%4d"
a[i][j]);
9、题目:
下列程序中函数fun的功能是:
计算正整数n的所有因子(n除外)之和作为函数值返回。
n=120时,函数值为240。
intfun(intn)
inti,sum=1;
for(i=2;
_____;
i++)/*$BLANK1$*/
if(_____)/*$BLANK2$*/
sum=sum+i;
returnsum;
intn,s;
Inputn:
s=_____;
10、题目:
输入一个大于1的正整数,将其分解成质因数的乘积(质因数即素数因子),并按下例中的格式输出。
126
Output:
126=2*3*3*7
longi,n;
%ld"
___);
%ld="
n);
i=2;
n)
if(n%i___)/*$BLANK2$*/
%ld*"
n=n/i;
11、题目:
[同构数问题]如果某整数能够在它的平方数的最右边出现,则该数就是"
同构数"
。
5是同构数,因为5的平方数是25,5是25中右侧的数。
下列程序的功能是:
调用函数fun判断整数x(0<
x<
100)是否是同构数。
若是同构数输出1,否则输出0。
intfun(intx)
inta,b;
a=_____;
if(x<
=9)
b=a%10;
else
b=a%100;
if(____)/*$BLANK2$*/
return1;
return0;
intx;
Inputx:
if(x>
0&
x<
100)
______);
Invalidnumber!
三、编程题
1.请不要修改题目中已经给出的任何语句,否则可能本题没有分数;
2.程序编辑确定后,必须运行一次;
3.只能在主函数main()的函数体内编写程序;
4.考生编写程序必须通过PRINT函数将计算结果存储到指定文件中。
根据下式求s的值(要求使用循环实现):
s=1/2-2/3+3/4-4/5+5/6-6/7+...+999/1000
输出格式:
s=0.1234
voidPRINT(doubles)
FILE*out;
s=%.4f\n"
if((out=fopen("
K:
\\24000101\\RESULT.DAT"
"
w+"
))!
=NULL)
fprintf(out,"
s=%.4ff"
fclose(out);
PRINT(s);
设有正整数a和b,其中:
(1)a<
50,b<
50;
(2)a+b*b等于1564;
(3)a*a+b*b等于3370。
求满足条件的a和b的值(说明:
a和b的值唯一)。
a=13,b=24
voidPRINT(inta,intb)
a=%d,b=%d\n"
a,b);
\\24000102\\RESULT.DAT"
a=%d,b=%d"
PRINT(a,b);
编程计算出30000以内所有Fibonacci数之和。
Fibonacci数列为:
1,1,2,3,5,8,13,21,......。
sum=123
voidPRINT(longsum)
\\24000103\\RESULT.DAT"
sum=%ds"
PRINT(sum);
求s=1+(2*2)+(3*3*3)+(4*4*4*4)+...+(9*9*9*9*9*9*9*9*9)的值(要求使用循环实现)。
输出格式:
s=123456789
voidPRINT(longs)
s=%ld\n"
\\24000104\\RESULT.DAT"
=NU