c语言程序设计案例教程 实验项目设计性题目参考答案Word文件下载.docx
《c语言程序设计案例教程 实验项目设计性题目参考答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《c语言程序设计案例教程 实验项目设计性题目参考答案Word文件下载.docx(31页珍藏版)》请在冰豆网上搜索。
r,&
h);
l=2*pi*r;
s=r*r*pi;
sq=4*pi*r*r;
vq=4.0/3.0*pi*r*r?
*r;
vz=pi*r*r*h;
圆周长为:
l=%6.2f\n"
l);
圆面积为:
s=%6.2f\n"
s);
圆球表面积为:
sq=%6.2f\n"
sq);
圆球体积为:
vq=%6.2f\n"
vq);
圆柱体积为:
vz=%6.2\n"
vz);
(3)分别用getchar函数和scanf函数读入2个字符给变量c1、c2,然后分别用putchar函数和printf函数输出这两个字符。
charc1,c2;
请输入两个字符c1,c2:
"
c1=getchar();
c2=getchar();
用putchar语句输出结果为:
putchar(c1);
putchar(c2);
用printf语句输出结果为:
%c%c\n"
c1,c2);
}
实验项目四分支结构程序设计
(1)程序填空。
输入四个整数,输出其中的最小值。
填空:
min=a;
if(b<
min)min=b;
elseif(c<
min)min=c;
elseif(d<
min)min=d;
(2)计算如下函数Y的值。
X(X<
1)
2X-1(1≤X<
10)
3X-11(X>
=10)
程序代码:
intx,y;
请输入x:
%d"
x);
if(x<
1)y=x;
elseif(x<
10)y=2*x-1;
elsey=3*x-11;
x=%d,y=%d"
x,y);
(3)给出一个百分制成绩,输出对应的等级分。
共分A、B、C、D、E五个等级。
90分以上为A,81-89分为B,70-79分为C,60-69分为D,60分以下为E。
要求分别用if语句和switch语句实现。
①用if-else语句实现:
intg;
Loop:
printf("
请输入g:
g);
if(g<
0||g>
100)gotoLoop;
if(g>
90)printf("
A"
seleif(g>
80)printf("
B"
elseif(g>
70)printf("
C"
elseif(g>
60)printf("
D"
elseprintf("
E"
②用switch语句实现:
switch(g/10)
{
case10:
case9:
case8:
case7:
case6:
default:
(4)编写程序,输入奖金数a,计算并输出税率、应缴税款和实得奖金数。
奖金税率
a<5000.00
500≤a<10000.05
1000≤a<20000.08
2000≤a<50000.10
5000≤a0.15
提示:
a=奖金数rate=税率值tax=应缴税款profit=实得奖金数。
计算公式:
tax=a*rate,profit=a–tax
#include<
floata,rate,tax,profit;
%f"
a);
if(a<
500)rate=0.0;
elseif(a<
1000)rate=0.05;
elseif(a<
2000)rate=0.08;
5000)rate=0.1;
elserate=0.15;
tax=a*rate;
profit=a-tax;
rate=%10.2f,tax=%10.2f,profit=%10.2f\n"
rate,tax,profit);
实验项目五循环结构程序设计
(1)猴子吃桃子。
猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第2天早上将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半多一个。
到第10天早上想再吃时,只剩下一个桃子。
问第一天共摘多少个桃子?
(要求使用While循环语句实现)。
算法提示
设total:
桃子的总数
x1
:
前一天的桃子数
x2:
后一天的桃子数
day:
天数
计算公式:
x1=(x2+1)*2
第1天的桃子数是第2天桃子数加1后的2倍。
intx1,x2,day,total;
day=9;
x2=1;
while(day>
0)
{x1=(x2+1)*2;
x2=x1;
day=day-1;
Total=x1;
total=%d\n"
x1);
(2)求200—300之间的素数。
intm,n,flag;
\nTheprimersfrom200to300is:
\n"
for(n=201;
n<
300;
n+=2)
{flag=1;
for(m=2;
m<
=n/2;
m++)
if(n/m==0)
{flag=0;
break;
if(flag==0)
continue;
%d"
n);
(3)程序填空
①求1-1/2+1/3-1/4+⋯⋯,输入1个正整数n(n<
=100),计算并输出1-1/2+1/3-1/4+⋯⋯的前n项和(保留3位小数)。
#include<
voidmain()
inti,n,flag;
floatsum;
&
n);
/*----以下为所填语句------*/
sum=0;
flag=1;
for(i=1;
i<
=n;
i++)
{sum+=flag*1.0/i;
flag=-flag;
%.3f\n"
sum);
②统计字符。
输入一个正整数repeat(0<
repeat<
10),做repeat次下列运算:
输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。
intri,repeat;
intblank,digit,letter,other;
charc;
repeat);
getchar();
for(ri=1;
ri<
=repeat;
ri++)
c=getchar();
blank=digit=letter=other=0;
while(c!
='
\n'
)
if(c>
a'
&
c<
z'
||c>
A'
Z'
)letter++;
elseif(c>
0'
9'
)digit++;
elseif(c=='
'
)blank++;
elseother++;
c=getchar();
}
printf("
letter=%d,blank=%d,digit=%d,other=%d\n"
letter,blank,digit,other);
}
③找最大值。
输入一个正整数repeat(0<
输入4个整数
输出其中的最大值。
例:
输入
3(repeat=3)
126190
10403020
-1-3-4-5
输出
maxis90(126190中的最大值是90)
maxis40(10403020中的最大值是40)
maxis-1(-1-3-4-5中的最大值是-1)
inta,b,c,d,max;
%d%d%d%d"
a,&
b,&
c,&
d);
max=a;
if(max<
b)max=b;
c)max=c;
d)max=d;
maxis%d\n"
max);
(4)编写程序:
输出“九九乘法表”。
inti,j;
9;
i++);
for(j=1;
j<
=i;
j++);
{
if(i==j)printf("
%d*%d=%d"
i,j,i*j);
实验项目六函数及其应用
计算代数多项式1.1+2.2x+3.3x2+4.4x3+5.5x4的值。
输入
1.5
54.52
floatf(float);
floatx,y;
scanf(“%f”,&
/*----以下为所填语句------*/
y=f(x);
%.2f\n"
y);
floatf(floatx)
floatsum=0,t=1;
inti;
=5;
i++){
sum+=(i+1.0*i/10)*t;
t*=x;
returnsum;
(2)编写程序,求s=1!
+2!
+3!
+....+10!
之和。
要求定义递归函数fact(n)求n!
,程序的输出形式为:
1!
+2!
+3!
+4+5!
+6!
+7!
+8!
+9!
+10!
=s,其中,s为求和值。
实验提示
求n!
的递归公式为:
1(n=0、n=1)
fact(n)=
fact(n)=n*fact(n-1)(n>
1)
注意:
s和fas(n)均为长整型。
!
{longintfas(int);
inti,m;
longints=0;
for(i=1;
=10;
{m=fas(i);
s=s+m;
print(“%d!
+”,i);
}print(“\b=%d\n”,s);
longintfas(intx)
if(x==0||x==1)
return
(1);
else
return(x*fas(x-1));
(3)编写程序,N名裁判给某歌手打分(假定分数都为整数)。
评分原则是去掉一个最高分,去掉一个最低分,剩下的分数取平均值为歌手的最终得分。
裁判给分的范围是:
60<
=分数〈=100,裁判人数N=10。
要求:
每个裁判的分数由键盘输入。
定义两个函数:
●max():
返回两个数中较大的值;
●min():
返回两个数中较小的值。
Intm=0;
n=100;
{inti,x,sum;
sum=0;
LOOP:
scanf(“%d”,&
x);
60||x>
100)
gotoLOOP;
m=max(x,m);
n=min(x,n);
sum=sum+x;
print(“%d”,(sum-m-n)/8);
}
intmax(intx)
{
if(x>
m)m=x;
return(m);
intmin(intx)
if(x<
n)n=x;
return(n);
(4)编写程序,用递归法将一个十进制整数转换成二进制数。
voidDtoB(intn);
intn;
scanf("
%d-----)"
DtoB(n);
voidDtoB(intn)
if(n)
DtoB(n/2);
n%2);
}
实验项目七数组及其应用
①求n个数中较大值及其下标。
输入一个正整数n(1<
=10),再输入n个整数,输出最大值极其下标(设最大值唯一,下标从0开始)。
inti,index,n;
inta[10];
ri++){
for(i=0;
i<
n;
i++)
a[i]);
index=0;
if(a[index]<
a[i])index=i;
max=%d,index=%d\n"
a[index],index);
②逆序输出。
=10),再输入n个整数,按逆序输出这些数。
inti,n,temp;
n/2;
temp=a[i];
a[i]=a[n-1-i];
a[n-1-i]=temp;
a[i]);
③找鞍点(选作)。
输入1个正整数n(1≤n≤6)和n阶方阵a中的元素,如果找到a的鞍点(鞍点的元素值在该行上最大,在该列上最小),就输出它的下标,否则,输出"
NO"
(设a最多有1个鞍点)。
#include"
stdio.h"
intri,repeat;
intflag,i,j,k,row,col,n,a[6][6];
ri<
ri++){
for(j=0;
j<
j++)
a[i][j]);
row=i;
col=0;
for(j=1;
if(a[row][col]<
a[row][j])
col=j;
flag=1;
for(k=0;
k<
k++)
if(a[row][col]>
a[k][col])
{flag=0;
break;
if(flag)
a[%d][%d]=%d\n"
row,col,a[row][col]);
if(!
flag)
NO\n"
(2)有10个数存放在一个数组中,先对该10个数从大到小排序,然后输入一个数,要求找出该数是数组中第几个元素的值,若找不到,输出未找到信息。
①用冒泡或者选择排序法对数组中的10个数进行排序;
②用折半查找的方法在数组中查找指定的数。
程序代码:
#defineN11
voidsort(inta[N])/*排序*/
{inti,j,min,temp;
=9;
{min=i;
for(j=i+1;
j++)
if(a[min]>
a[j])
min=j;
a[i]=a[min];
a[min]=temp;
{inti,j,x,a[N];
voidbadd(int,int[],int);
Enterdata:
{printf("
a[%d]="
i);
%5d"
a[i]);
sort(a);
\nThesortednumbers:
badd(x,a,N);
/*zhebanfindx*/
voidbadd(intx,inta[],intn)
{intmid,top,bot;
top=0;
bot=n-1;
while(top<
=bot)
{mid=(top+bot)/2;
if(x==a[mid])
\n%d=a[%3d]\n"
x,mid-1);
exit(0);
elseif(x>
mid)
top=mid+1;
elsebot=mid-1;
\ncan`tfind%d!
x);
(3)/**/统计6个学生各4门功课的成绩。
要求程序具有如下功能:
①每个学生的4门功课的成绩从键盘读入;
②计算每个学生的总分和平均分;
③按平均成绩进行排序,输出排序后的成绩单(四门功课的成绩和均分),给出名次。
如先输入学生4门课成绩:
1:
67,72,65,80
2:
75,82,94,95
3:
70,74,80,76
4:
......
程序代码:
#include<
inti,j,k,t,s,a[7][7];
=6;
i++)a[i][0]=i;
/*输入序号*/
{
t=0;