C语言程序设计实验57.docx

上传人:b****2 文档编号:11516855 上传时间:2023-06-01 格式:DOCX 页数:11 大小:19.62KB
下载 相关 举报
C语言程序设计实验57.docx_第1页
第1页 / 共11页
C语言程序设计实验57.docx_第2页
第2页 / 共11页
C语言程序设计实验57.docx_第3页
第3页 / 共11页
C语言程序设计实验57.docx_第4页
第4页 / 共11页
C语言程序设计实验57.docx_第5页
第5页 / 共11页
C语言程序设计实验57.docx_第6页
第6页 / 共11页
C语言程序设计实验57.docx_第7页
第7页 / 共11页
C语言程序设计实验57.docx_第8页
第8页 / 共11页
C语言程序设计实验57.docx_第9页
第9页 / 共11页
C语言程序设计实验57.docx_第10页
第10页 / 共11页
C语言程序设计实验57.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言程序设计实验57.docx

《C语言程序设计实验57.docx》由会员分享,可在线阅读,更多相关《C语言程序设计实验57.docx(11页珍藏版)》请在冰点文库上搜索。

C语言程序设计实验57.docx

C语言程序设计实验57

实验4

1.以下几段源程序有错,请调试修改正确。

①/*源程序实现的功能:

输入两个实数,按从小到大的顺序输出*/main()

{floata,b,t;

scanf(“%f,%,f&”a,&b);

if(a>b)

t=a;a=b;b=t

printf(“%5.2f,%5.2f”,a,b);

}

#include

intmain(){

floata,b,t;

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

if(a>b){

t=a;a=b;b=t;}printf("%5.2f,%5.2f",a,b);

}

②该源程序实现的功能是:

有如下函数关系:

x(x>0)

y=2(x=0)

3x(x<0)

根据输入的x值,求出y的值。

main(){intx,y;

printf(“Enterx:

”);

scanf(“d%”&,x);

ifx>0y=x;

elseif(x=0)y=2;

elsey=3*x;

printf(“x=%yd=%dn”,x,y);

}

#include

intmain(){

intx,y;

printf("Enterx:

");scanf("%d",&x);

if(x>0)y=x;

elseif(x==0)

y=2;elsey=3*x;

printf("x=%dy=%d\n",x,y);}

#includeintmain(){

intx,y;scanf("%d",&x);if(x<1)

y=x;

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

y=3*x-11;

printf("y=%d",y);

}

t(月数)确定如下:

某物品原有价值为p,由于使用使其价值降低,价值的折扣率根据时间t<3,无折扣

3<=t<6,2%折扣

6<=t<12,5%折扣

12==21,10%折扣编程实现:

根据输入的时间和原有价值计算物品的现有价值。

#include

intmain(){

intp,t;floaty;

printf("输入原有价值和使用时间:

");scanf("%d,%d",&p,&t);

if(t<3)y=p;

elseif(t<6)y=0.98*p;

elseif(t<12)y=0.95*p;

elseif(t<21)y=0.92*p;

elsey=0.9*p;

printf("现有价值为:

%.2f",y);

4.给一个不多于5位的正整数,要求:

①求出它是几位数;

②分别打出每一位数字;③按逆序打出各位数字,例如原数为321,应输出123

#include

intmain(){

intnum,a,ge,shi,bai,qian,wan;printf("enteranumber(0-99999):

");scanf("%d",&num);

if(num>9999)a=5;

elseif(num>999)a=4;

elseif(num>99)a=3;

elseif(num>9)a=2;elsea=1;

wan=num/10000;qian=num/1000%10;

bai=num/100%10;shi=num/10%10;

ge=num%10;

switch(a){

case5:

{printf("5位数");printf("---%d,%d,%d,%d,%d---",wan,qian,bai,shi,ge);printf("倒序为:

%d%d%d%d%d",ge,shi,bai,qian,wan);break;

}

case4:

{printf("4位数");printf("---%d,%d,%d,%d---",qian,bai,shi,ge);printf("倒序为:

%d%d%d%d",ge,shi,bai,qian);break;

}

case3:

{printf("3位数");printf("---%d,%d,%d---",bai,shi,ge);printf("倒序为:

%d%d%d",ge,shi,bai);break;

}

case2:

{printf("2位数");printf("---%d,%d---",shi,ge);printf("倒序为:

%d%d",ge,shi);break;

}

case1:

{

printf("1位数");

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

printf("倒序为:

%d%d%d%d%d",ge);break;}}}

实验5

1.以下程序的功能是实现从键盘输入一组字符,统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者。

程序中有错,请调试修改正确。

main()

{intm,n;charc;while((c=getchar())!

='\n');{if(c>='A'&&c<='Z')m++;

if(c>='a'&&c<='z')n++;

}

printf("%d\n",m

m:

n);

}

#include

intmain()

{intm=0,n=0;charc;

while((c=getchar())!

='\n')

{if(c>='A'&&c<='Z')m++;if(c>='a'&&c<='z')n++;

}printf("%d\n",m>n?

m:

n);}

2.以下程序可以实现从键盘输入一串数字,然后以相反的顺序将它们输出,如输入:

1234,输出4321,请填空。

main()

{intnumber,right;

printf("enteryounumber:

\n");scanf("%d",&number);

do

①→number%10

②→number/10

{right=①;printf("%d",right)number=②;

}

while(number!

=0);

printf("\n");}

3.求Sn=a+aa+aaa+⋯+aa⋯a之值,其中a是一个数字。

例如:

2+22+222+2222+22222(此时n=5),n由键盘输入。

#include

intmain(){

intSn=0,n,sum=0;

inta=2;printf("entern:

");scanf("%d",&n);for(inti=0;i

}printf("Sn=%d",Sn);

}

4.有一数列:

2/1,3/2,5/3,8/5,⋯求出这个数列的前20项之和。

#includeintmain(){floatsum=0,c,a=2,b=1;for(inti=0;i<20;i++){

sum=sum+a/b;c=a;a=b+c;b=c;

}

printf("sum=%.2f",sum);}

四、思考题

1.猜数游戏。

玩游戏者输入一个数,提示此数是太大、太小或猜中,重新输入数据直到猜

中为止。

(提示:

在程序中设置一个整数,此数即是玩游戏者要猜的数)

2.百钱买百鸡问题。

公鸡每只5元,母鸡每只3元,小鸡3只一元,问一百元买一百只鸡有几种解法。

提示:

设x,y,z为三种鸡的只数,按题目写出代数方程为:

x+y+z=1005x+3y+z/3=100

用穷举法列举出x、y、z的值能懂就懂,不懂就不看了。

#include

intmain(){

intx,y,z;

for(x=1;x<=20;x++)

for(y=1;y<=33;y++)

for(z=1;z<=100;z++)

if(x+y+z==100&x*5+3*y+z/3==100)printf("%d,%d,%d\n",x,y,z);}

这是结果输出,后面最后一个是小鸡的,但是很明显,小鸡的个数要能整

除3,所以,再怎么改,请自己操作。

TIP:

就只需要在一个地方加一个条件。

实验6

1.以下程序段将输出computer,请填空。

#include“stdio.h”

main()

{inti,j=0;

charc[]=”it'sacomputer”;

for(i=0;①;i++)①→i<8

{②;②→j=i+7

printf(“%c”,c[j]);

}}

2.以下程序的功能是求数组num中小于零的数据之和,程序中存在错误,请上机调试并改正。

#include“stdio.h”

main()

{intnum[20];

intsum,i;

for(i=0;i<=19;i++)

scanf(“%d”,&num[i]);

for(i=0;i<=19;i++);这个引号去掉程序就对了。

WHY?

自己去想。

if(num[i]<0)sum+=num[i];

printf(“sum=%6d”,sum);}

3.调试程序。

下面程序完成用气泡法对10个整型数排序(从小到大),其中带*行有错,请调试修正。

#include

main()

{

inta[10];

inti,j,t;

printf(“intput10numbne”rs:

);

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

*scanf(“%d”,i,a[i]);

printf(n“”);

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

*for(i=j+1;i<10;i++)if(a[i]

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

printf(“thesortednumbne”rs:

);

*for(i=1;i<11;i++)

*printf(“%d”,&a[i]);

}

第一个*:

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

第二个*:

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

第三个*:

for(i=0;i<10-j;i++)

第四个*:

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

第五个*:

printf("%d",a[i]);别问我原因。

4.已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中

#include

intmain(){

inta[10]={2,3,5,9,11,13,17,20,23};

intn,i=0;

printf("enteranumber:

");

scanf("%d",&n);

//先比较找到位置

while(a[i]

i++;}

//将位置向后面移动

for(intk=0;k<10-i;k++){

a[9-k]=a[8-k];

a[i]=n;

for(intj=0;j<10;j++)

strcat函数

printf("%3d",a[j]);}

5.编一程序,将两个字符串连接起来,不要用

#include

intmain(){

chara[100];

charb[50];

gets(a);

gets(b);

inti=0;

while(a[i]!

='\0')i++;

for(intj=0;b[j]!

='\0';j++){a[i]=b[j];i++;}

puts(a);}

6.求一个3×3矩阵对角线元素之和。

#include

/*求一个3×3矩阵对角线元素之和。

*/intmain(){

inta[3][3];

inti,j;

printf("enterninenumbers:

");

for(i=0;i<3;i++)

for(j=0;j<3;j++)scanf("%d",&a[i][j]);intsum=0;

sum=a[0][0]+a[1][1]+a[2][2];//只有一条对角线。

for(i=0;i<3;i++){for(j=0;j<3;j++){

printf("%3d",a[i][j]);}printf("\n");}printf("\nsum=%3d",sum);}

实验7

1.上机调试下面的程序,记录系统给出的出错信息,并指出出错原因main()

{

intx,y;printf("%d\n",sum(x+y));

intsum(a,b);

{

inta,b;return(a+b);

}}

#include

intmain(){

intx=1,y=2;

intsum(inta,intb);

printf("%d\n",sum(x,y));

}

intsum(inta,intb)

{

return(a+b);

}

2.已有变量定义和函数语句“inta=1,b=-5,c;c=fun(a,b);”,fun函数的作用是计算两个数之差的绝对值,并将差值返回给调用函数,请编写fun函数,并调试。

fun(intx,inty)

{}

函数如下:

intfun(intx,inty){

intz;

z=x+y;

if(z<0)

z=-z;

returnz;}

3.有一青年歌手大奖赛,试编写一个评分系统,具体实现方法为:

编写一个对n个数据从大到小的排序函数,再编写一个计算最后得分的函数,计算方法是去除一个最高分,去除一个最低分,其余的平均分为参赛选手的最后得分。

并在主函数中调用它们对有n个评委评分,m个选手参赛的最后得分,从大到小排序输出。

PS:

这个太复杂,不写。

(我不会告诉你有一部分我没写出来,所以不写了

4.自己写一个字符串复制函数strcpy(),并调试运行;

#include

intmain(){

chara[]="IloveChina!

";

charb[100];

for(inti=0;a[i]!

='\0';i++){b[i]=a[i];}puts(b);}

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2