c语言程序设计案例教程 实验项目设计性题目参考答案.docx

上传人:b****5 文档编号:7875447 上传时间:2023-01-26 格式:DOCX 页数:31 大小:27.62KB
下载 相关 举报
c语言程序设计案例教程 实验项目设计性题目参考答案.docx_第1页
第1页 / 共31页
c语言程序设计案例教程 实验项目设计性题目参考答案.docx_第2页
第2页 / 共31页
c语言程序设计案例教程 实验项目设计性题目参考答案.docx_第3页
第3页 / 共31页
c语言程序设计案例教程 实验项目设计性题目参考答案.docx_第4页
第4页 / 共31页
c语言程序设计案例教程 实验项目设计性题目参考答案.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

c语言程序设计案例教程 实验项目设计性题目参考答案.docx

《c语言程序设计案例教程 实验项目设计性题目参考答案.docx》由会员分享,可在线阅读,更多相关《c语言程序设计案例教程 实验项目设计性题目参考答案.docx(31页珍藏版)》请在冰豆网上搜索。

c语言程序设计案例教程 实验项目设计性题目参考答案.docx

c语言程序设计案例教程实验项目设计性题目参考答案

C语言程序设计案例教程(含实验)

设计性实验的程序参考答案

实验项目一C程序的编辑、编译、连接和运行

题目:

编写程序,要求屏幕上显示如下信息:

***********************

*ThisisaCprogram.*

***********************

程序:

#include

voidmain()

{

printf(“***********************”);

printf(“*ThisisaCprogram.*”);

printf(“***********************”);

}

实验项目二数据类型、运算符、表达式

题目

(1)程序填空:

输入1个实数x,计算并输出其平方根(保留1位小数)。

填空

1.doublex,root;

2.root=sqrt(x);

(2)输入一个大写英文字母,输出相应的小写字母。

填空

1.ch=ch+32;

实验项目三顺序结构程序设计

题目

(1)编写程序,输入三角形的三边长a、b、c,求三角形面积area。

程序代码:

#include

#include

main()

{

floata,b,c,s,arer;

printf("请输入三角形的三个边a,b,c:

\n");

scanf("%f,%f,%f",&a,&b,&c);

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf("三角形的边为a=%7.2f,b=57.2f,c=%7.2f\n",a,b,c);

printf("三角形的面积area=%7.2\n",area);

(2)设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。

程序代码:

#include

main()

{

floath,r,l,s,sq,vq,vz;

floatpi=3.1415926;

printf("请输入圆半径r,圆柱高h:

");

scanf("%f,%f",&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;

printf("圆周长为:

l=%6.2f\n",l);

printf("圆面积为:

s=%6.2f\n",s);

printf("圆球表面积为:

sq=%6.2f\n",sq);

printf("圆球体积为:

vq=%6.2f\n",vq);

printf("圆柱体积为:

vz=%6.2\n",vz);

(3)分别用getchar函数和scanf函数读入2个字符给变量c1、c2,然后分别用putchar函数和printf函数输出这两个字符。

程序代码:

#include

main()

{

charc1,c2;

printf("请输入两个字符c1,c2:

");

c1=getchar();

c2=getchar();

printf("用putchar语句输出结果为:

");

putchar(c1);

putchar(c2);

printf("用printf语句输出结果为:

");

printf("%c%c\n",c1,c2);

}

实验项目四分支结构程序设计

题目

(1)程序填空。

输入四个整数,输出其中的最小值。

填空:

min=a;

if(b

elseif(c

elseif(d

(2)计算如下函数Y的值。

X(X<1)

2X-1(1≤X<10)

3X-11(X>=10)

程序代码:

#include

main()

{

intx,y;

printf("请输入x:

");

scanf("%d",&x);

if(x<1)y=x;

elseif(x<10)y=2*x-1;

elsey=3*x-11;

printf("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语句实现:

#include

main()

{

intg;

Loop:

printf("请输入g:

");

scanf("%d",&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语句实现:

#include

main()

{

intg;

Loop:

printf("请输入g:

");

scanf("%d",&g);

if(g<0||g>100)gotoLoop;

switch(g/10)

{

case10:

case9:

printf("A");

case8:

printf("B");

case7:

printf("C");

case6:

printf("D");

default:

printf("E");

}

}

(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

main()

{

floata,rate,tax,profit;

scanf("%f",&a);

if(a<500)rate=0.0;

elseif(a<1000)rate=0.05;

elseif(a<2000)rate=0.08;

elseif(a<5000)rate=0.1;

elserate=0.15;

tax=a*rate;

profit=a-tax;

printf("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倍。

程序代码:

#include

voidmain()

{

intx1,x2,day,total;

day=9;

x2=1;

while(day>0)

{x1=(x2+1)*2;

x2=x1;

day=day-1;

}

Total=x1;

printf("total=%d\n",x1);

}

(2)求200—300之间的素数。

程序代码:

#include

voidmain()

{

intm,n,flag;

printf("\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;

printf("%d",n);

}

printf("\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;

scanf("%d",&n);

/*----以下为所填语句------*/

sum=0;

flag=1;

for(i=1;i<=n;i++)

{sum+=flag*1.0/i;

flag=-flag;

}

printf("%.3f\n",sum);

}

②统计字符。

输入一个正整数repeat(0

输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。

程序代码:

#include

voidmain()

{

intri,repeat;

intblank,digit,letter,other;

charc;

scanf("%d",&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'&&c<='Z')letter++;

elseif(c>='0'&&c<='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)

程序代码:

#include

voidmain()

{

intri,repeat;

inta,b,c,d,max;

scanf("%d",&repeat);

/*----以下为所填语句------*/

for(ri=1;ri<=repeat;ri++)

{

scanf("%d%d%d%d",&a,&b,&c,&d);

/*----以下为所填语句------*/

max=a;

if(max

if(max

if(max

printf("maxis%d\n",max);

}

}

(4)编写程序:

输出“九九乘法表”。

程序代码:

#include

voidmain()

{

inti,j;

for(i=1;i<9;i++);

for(j=1;j<=i;j++);

{

if(i==j)printf("\n");

printf("%d*%d=%d",i,j,i*j);

}

}

实验项目六函数及其应用

题目

(1)程序填空。

计算代数多项式1.1+2.2x+3.3x2+4.4x3+5.5x4的值。

例:

输入

1.5

输出

54.52

程序代码:

#include

floatf(float);

voidmain()

{

floatx,y;

scanf(“%f”,&x);

/*----以下为所填语句------*/

y=f(x);

printf("%.2f\n",y);

}

/*----以下为所填语句------*/

floatf(floatx)

{

floatsum=0,t=1;

inti;

for(i=1;i<=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)均为长整型。

程序代码:

#include

voidmain()

{longintfas(int);

inti,m;

longints=0;

for(i=1;i<=10;i++)

{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():

返回两个数中较小的值。

程序代码:

#include

Intm=0;n=100;

voidmain()

{inti,x,sum;

sum=0;

for(i=1;i<=10;i++)

{

LOOP:

scanf(“%d”,&x);

if(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

return(n);

}

 

(4)编写程序,用递归法将一个十进制整数转换成二进制数。

程序代码:

#include

voidDtoB(intn);

voidmain()

{

intn;

scanf("%d",&n);

printf("%d-----)",n);

DtoB(n);

printf("\n");

}

voidDtoB(intn)

{

if(n)

{

DtoB(n/2);

printf("%d",n%2);

}

}

实验项目七数组及其应用

题目

(1)程序填空。

①求n个数中较大值及其下标。

输入一个正整数n(1

程序代码:

#include

voidmain()

{

intri,repeat;

inti,index,n;

inta[10];

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

/*----以下为所填语句------*/

index=0;

for(i=1;i

if(a[index]

printf("max=%d,index=%d\n",a[index],index);

}

}

 

②逆序输出。

输入一个正整数repeat(0

输入一个正整数n(1

程序代码:

#include

voidmain()

{

intri,repeat;

inti,n,temp;

inta[10];

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

/*----以下为所填语句------*/

for(i=0;i

{

temp=a[i];

a[i]=a[n-1-i];

a[n-1-i]=temp;

}

for(i=0;i

printf("%d",a[i]);

printf("\n");

}

}

 

③找鞍点(选作)。

输入1个正整数n(1≤n≤6)和n阶方阵a中的元素,如果找到a的鞍点(鞍点的元素值在该行上最大,在该列上最小),就输出它的下标,否则,输出"NO"(设a最多有1个鞍点)。

程序代码:

#include"stdio.h"

voidmain()

{

intri,repeat;

intflag,i,j,k,row,col,n,a[6][6];

scanf("%d",&repeat);

for(ri=1;ri<=repeat;ri++){

scanf("%d",&n);

for(i=0;i

for(j=0;j

scanf("%d",&a[i][j]);

/*----以下为所填语句------*/

for(i=0;i

{

row=i;col=0;

for(j=1;j

if(a[row][col]

col=j;

flag=1;

for(k=0;k

if(a[row][col]>a[k][col])

{flag=0;

break;}

if(flag)

{

printf("a[%d][%d]=%d\n",row,col,a[row][col]);

break;

}

}

if(!

flag)

printf("NO\n");

}

}

 

(2)有10个数存放在一个数组中,先对该10个数从大到小排序,然后输入一个数,要求找出该数是数组中第几个元素的值,若找不到,输出未找到信息。

实验提示

①用冒泡或者选择排序法对数组中的10个数进行排序;

②用折半查找的方法在数组中查找指定的数。

程序代码:

#include

#defineN11

#include

#defineN11

voidsort(inta[N])/*排序*/

{inti,j,min,temp;

for(i=1;i<=9;i++)

{min=i;

for(j=i+1;j<=10;j++)

if(a[min]>a[j])

min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

}

voidmain()

{inti,j,x,a[N];

voidbadd(int,int[],int);

printf("Enterdata:

\n");

for(i=1;i<=10;i++)

{printf("a[%d]=",i);

scanf("%d",&a[i]);

}

printf("\n");

for(i=1;i<=10;i++)

printf("%5d",a[i]);

printf("\n");

sort(a);

printf("\nThesortednumbers:

\n");

for(i=1;i<=10;i++)

printf("%5d",a[i]);printf("\n");

scanf("%d",&x);

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])

{printf("\n%d=a[%3d]\n",x,mid-1);

exit(0);

}

elseif(x>mid)

top=mid+1;

elsebot=mid-1;

}

printf("\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

main()

{

 inti,j,k,t,s,a[7][7];

 for(i=1;i<=6;i++)a[i][0]=i; /*输入序号*/

 for(j=1;j<=6;j++)

   {  t=0;

   

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1