C上机题加答案Word文件下载.docx
《C上机题加答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《C上机题加答案Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。
n
%d="
n);
i=2;
while(i<
n)
if(n%i==0)
%ld*"
i);
n=___;
/*$BLANK2$*/
else
i++;
%ld\n"
/*$BLANK3$*/
程序设计:
有100匹马驮100担货,大马驮4担,中马驮3担,5匹小马驮1担.问三种马各有几匹?
注意:
1.大、中、小马都必须有;
2.问题的解只有一种
输出格式:
big=30,mid=40,small=30
voidPRINT(inta,intb,intc)
FILE*out;
big=%d,mid=%d,small=%d\n"
a,b,c);
if((out=fopen("
C:
\\24000101\\RESULT.DAT"
"
w+"
))!
=NULL)
fprintf(out,"
big=%d,mid=%d,small=%d."
fclose(out);
{inta,bc;
for(a=1;
a<
=25;
a++)
for(b=1;
b<
=33;
b++)
for(c=5;
c<
=100;
c=c+5)
if(a*4+b*3+c/5)==100&
&
a+b+c==100)
PRINT(a,b,c);
第二套
从键盘输入一个不多于4位的十进制正整数,求出它是几位数.如输入528,则结果为n=3。
intx,n;
%d"
x);
/*$ERROR1$*/&
x
if(x<
=0||x>
=10000)
DataError!
\n"
=10)n=1;
/*$ERROR2$*/x<
10
elseif(x<
100)n=2;
1000)n=3;
n=4;
/*$ERROR3$*/elsen=4;
n=%d\n"
n);
}
输出以下图形(字符*之间没有空格,第一行之前有一个空格)。
请填空。
*
***
*****
*******
*********
程序如下:
inti,j;
for(i=1;
i<
=___;
i++)/*$BLANK1$*/5
for(j=1;
j++)/*$BLANK2$*/i
"
j++)/*$BLANK3$*/2*i-1
*"
计算并输出Fibonacci数列中小于30000的最大一项。
说明:
Fibonacci数列的前两项均为1,从第3项开始每一项都是其前两项的和。
数列如下:
1,1,2,3,5,8,13,21,……
f=2345678
voidPRINT(longf)
f=%ld\n"
f);
\\24000102\\RESULT.DAT"
f=%ldd"
{longf1,f2,f,I;
f1=f2=1;
for(i=2;
i++)
{f=f1+f2;
if(f>
30000)break;
f1=f2;
f2=f;
f=f2;
PRINT(f);
第三套
在屏幕上输出以下图形(说明:
第一行之前有3个空格,星号之间无空格).
*******
#include<
math.h>
for(i=-3;
=3;
j=1;
/*$ERROR1$*/j=0;
while(j<
abs(i))
j++;
j=0;
=7-2*abs(i))/*$ERROR2$*/j<
7-2abs(i))
/*$ERROR3$*/j++
以下程序的功能是:
输出所有的"
水仙花数"
并输出"
的个数.所谓"
是指一个三位数,其各位数字的立方和等于该数本身.请填空.
inti,a,b,c,n;
/*$BLANK1$*/0
=999;
{
a=i%10;
b=i/10%10;
c=___;
/*$BLANK2$*/i/100
if(a*a*a+b*b*b+c*c*c==i)n++
%6d"
___;
\nn=%d\n"
求出1900~2010之间个位数不是7的所有素数之和.
s=23456
voidPRINT(longs)
s=%ld\n"
\\24000103\\RESULT.DAT"
s=%ldf"
{longs=0;
inti,j;
for(j=2;
if(i%j==0)break;
if(j>
i/2&
i%10!
=7)s=s+i;
PRINT(s);
第四套
计算100~300之间满足下列条件的数之和.
(1)能被3整除
(2)个位数是7
inti,sum;
sum=1;
/*$ERROR1$*/
for(i=100;
=300;
if(i%3==0)
if(i%10==7)
sum=i;
/*$ERROR2$*/
print("
sum);
/*$ERROR3$*/
求满足条件1+2+3+……+n>
=1000的最小n的值。
请填空
inti,n,s;
s=___;
/*$BLANK1$*/
i=1;
while(s<
1000)
/*$BLANK2$*/
编写程序,计算各位数字之和等于15的三位数之和。
s=1234
printf("
s=%ldn"
第五套
输出一维数组中的最大元素及其下标值。
inta[10]={-3,1,-5,4,9,0,-8,7,-6,2};
inti,max,addr;
max=a[0];
addr=1;
=10)/*$ERROR2$*/
if(max<
a[i])
max=a[i];
i=addr;
max=%d,address=%d\n"
max,addr);
下面程序功能是:
从键盘输入一个学生成绩,输出对应的等级(100分为A,90~99为B,80~89为C,70~79为D,60~69为E,小于60为F),如果输入成绩小于0分或大于100分,输出提示信息“InputError!
:
。
intg;
Enteramark:
/*$BLANK1$*/
if(g<
0||g>
100)
InputError!
else
g=%d:
g);
switch(___)/*$BLANK2$*/
case10:
printf("
A\n"
break;
case9:
B\n"
case8:
C\n"
case7:
D\n"
case6:
E\n"
___:
F\n"
编写程序,计算900到2010之间所有能被11整除的奇数之和。
(要求用循环实现)
sum=2345678
voidPRINT(longsum)
sum=%ld\n"
sum=%ldt"
PRINT(sum);
或者
}
第六套
计算1-2/(1+2)+3/(1+2+3)-4/(1+2+3+4)+……+n/(1+2+3+……+n)的值。
(假设本题中的n的值从键盘输入,且大小在10以内。
)
inti,j,n,a;
doubles=0;
pleaseentern="
/*$ERROR1$*/
=n;
a=1;
/*$ERROR2$*/
=i;
j++)
a=a+j;
if(i%2==0)/*$ERROR3$*/
s=s+1.0*i/a;
s=s-1.0*i/a;
%f\n"
学生的记录由学号和成绩组成,以下程序在10名学生记录中找出最低成绩并输出该学生的信息(如果存在多名学生成绩并列最低,则均输出)。
#defineN10
structstudent
charnum[20];
intscore;
};
voidmain()
structstudentst[N]=
{{"
0906050401"
99},{"
0906050402"
76},
{"
0906050501"
80},{"
0906050502"
68},
0906050503"
76},{"
0906050504"
64},
0906050506"
98},{"
0906050508"
79},
0906050509"
64},{"
0906050510"
98}};
inti;
int___;
min=st[0].score;
N;
if(min>
___)/*$BLANK2$*/
min=st[i].score;
for(i=0;
___;
i++)/*$BLANK3$*/
if(min==st[i].score)
%s\t\t%d\n"
st[i].num,st[i].score);
根据下式求出s的值(要求使用循环实现):
s=1/2-2/3+3/4-4/5+……+99/100
s=0.1234
voidPRINT(doubles)
s=%.4f\n"
s=%.4ff"
第七套
将数组中的数按从小到大排序后输出,要求:
所有数据输出在一行,且每个数据占5列.
inta[11]={7,9,-6,10,50,32,24,-15,1,88,29};
inti,j,k;
for(j=0;
10;
10-j;
if(a[i]<
a[i+1])/*$ERROR1$*/
k=a[i+1];
a[i]=a[i+1];
a[i+1]=k;
11;
i++)
%5d"
&
a[i])/*$ERROR3$*/
9个评委给某个参赛选手打分(分数存于数组a中),去掉一个最高分和一个最低分,求该参赛选手的平均分.请填空.
floata[9],max,min,ave;
Inputarray:
9;
%f"
max=min=ave=___;
ave+=a[i];
a[i])
elseif(min>
ave=(ave-max-min)/7;
Mark=%.3f\n"
ave);
根据下式求s的值(要求使用循环实现):
s=1+1/(1+2)+1/(1+2+3)+……+1/(1+2+3+……+n)
本题以n=30为例
{FILE*out;
s=%.5f\n"
s=%.5fl"
PRINT(s);
第八套
计算1+(1+2)+(1+2+3)+……+(1+2+3+……+n)的值。
(本题中的n从键盘输入,且假设在20以内。
longs,t;
inti,j,n;
t=0;
=n)/*$ERROR3$*/
t+=j;
s=s+t;
下列程序的功能是:
从键盘输入10个数存入数组a中,求最大数和次最大数(假设10个数各不相同)。
inti,max1,max2,a[10];
if(a[0]>
a[1])
max1=a[0];
max2=a[1];
max1=a[1];
max2=a[0];
for(i=2;
if(max1<
max2=___;
max1=a[i];
if(max2<
max1=%d,max2=%d\n"
max1,max2);
某果农有一车苹果,第一天卖掉三分之二,并吃了两个,第二天卖掉了剩下的三分之二,并吃了两个,第三天到第七天都如此,到第八天一看只剩了五个苹果。
求此车共装有多少个苹果(要求用循环实现)。
voidPRINT(ints)
s=%ds"
第九套
将字符串str1和str2合并成一个新的字符串str,然后输出字符串str.
string.h>
charstr1[30],str2[30],str[80];
inti=0,j=0;
Enterthefirststring:
gets(str1);
Enterthesecondstring:
gets(str2);
while(str1[i])
str[i]=str1[i];
while(str2[j])
str[i++]=str2[j];
str[i]="
\0"
str:
%c\n"
str);
下列程序功能是调用swap()函数交换两个变量的值.请填空.
voidswap(int*x,int*y)
t=*x;
*x=___;
*y=t;
inta,b;
Inputa,b:
%d,%d"
a,&
b);
a=%d,b=%d\n"
a,b);
swap(&
a,___);
编程求满足下列条件的最小的正整数.
(1)大于400;
(2)加上2是6的倍数;
(3)加上3是7的倍数.
n=789
voidPRINT(intn)
{FILE*out;
n=%dn"
}
PRINT(n);
第十套
下面给定程序中,fun()函数的功能是:
判断字符串s中是否包含字符ch,若不包含则其插入到字符串s的最后.
voidfun(chars,charch)/*$ERROR1$*/
while(*s&
*s!
=ch)
s++;
if(*s=="
)/*$ERROR2$*/
s[0]=ch;