C语言上机指导答案115章.docx

上传人:b****8 文档编号:10853899 上传时间:2023-02-23 格式:DOCX 页数:59 大小:37.79KB
下载 相关 举报
C语言上机指导答案115章.docx_第1页
第1页 / 共59页
C语言上机指导答案115章.docx_第2页
第2页 / 共59页
C语言上机指导答案115章.docx_第3页
第3页 / 共59页
C语言上机指导答案115章.docx_第4页
第4页 / 共59页
C语言上机指导答案115章.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

C语言上机指导答案115章.docx

《C语言上机指导答案115章.docx》由会员分享,可在线阅读,更多相关《C语言上机指导答案115章.docx(59页珍藏版)》请在冰豆网上搜索。

C语言上机指导答案115章.docx

C语言上机指导答案115章

第三部分实验项目答案

3.1C程序设计初步知识

1、改错题

(1)以下程序计算x*y的值并将结果输出。

请将程序中的9处错误改正。

#include"stdio.h"

voidmain()

{intx=3,y=4,z;

z=x*y;

printf("z=%d\n",z);

}

(2)以下程序输入圆的半径,求圆面积。

请将程序中的5处语法错误和逻辑错误改正。

#include"stdio.h"

voidmain()

{intr;

floats;

printf("Enterr:

");

scanf("%d",&r);

s=3.14159*r*r;

printf("s=%f\n",s);

}

2、填空题

(1)下面程序能对两个整型变量的值进行交换,请填空:

#include"stdio.h"

voidmain()

{inta=3,b=4,t;

t=a;a=b;b=t;

printf("a=%d,b=%d\n",a,b);

}

(2)下面程序的输出结果是16.00,请填空:

#include"stdio.h"

voidmain()

{inta=9,b=2;

floatx=6.6,y=1.1,z;

z=a/2+b*x/y+1/2;

printf("%5.2f\n",z);

}

3、程序设计题

(1)编程实现从键盘输入三个大写字母,把它们转换成小写字母后输出。

#include"stdio.h"

voidmain()

{charc1,c2,c3;

scanf("%c%c%c",&c1,&c2,&c3);

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

}

(2)已有定义语句:

inta=1,b=2,c=3;floatd=4;编程计算表达式

的值。

#include"stdio.h"

voidmain()

{inta=1,b=2,c=3;

floatd=4,e;

e=a/((b+c)*d);

printf("%f\n",e);

}

3.2顺序结构程序设计

1、改错题

(1)以下程序计算并输出长方形面积和体积,请改正程序中的错误。

#include"stdio.h"

voidmain()

{doublea,b,c,s,v;

printf("inputa,b,c:

\n");

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

s=a*b;//计算长方形面积

v=a*b*c;//计算长方体体积

printf("s=%f,v=%f\n",s,v);

}

(2)下列程序的功能是计算表达式x=2ab(a+b)2的值,请改正程序中的错误。

#include"stdio.h"

voidmain()

{inta,b;

floatx;

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

x=2*a*b*(a+b)*(a+b);

printf("x=%f\n",x);

}

2、填空题

(1)请填写以下程序,使其输入为9876543210时,输出为a=98,b=765.00,c=4321.00。

#include“stdio.h”

voidmain()

{inta;

floatb,c;

scanf(“%2d%3f%4f”,&a,&b,&c);

printf(“a=%d,b=%6.2f,c=%8.2f\n”,a,b,c);

}

(2)请按以下输入输出形式填空。

输入形式:

inputa,b:

34.5

输出形式:

a+b=7.5

#include“stdio.h”

voidmain()

{inta;

floatb;

printf(“inputa,b:

”);

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

printf(“a+b=%3.1f\n”,a+b);

}

3、程序设计题

(1)用scanf函数输入两个整数1500和350,求出它们的商和余数并输出。

#include"stdio.h"

voidmain()

{inta,b;

printf("inputa,b:

");

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

printf("%d/%d=%d\t%d%%%d=%d\n",a,b,a/b,a,b,a%b);

}

(2)编程实现对任意输入的四位整数,分别求出其各位数字,并按从后到前的顺序依次输出。

例如,输入为1234时,输出结果为4,3,2,1。

(提示:

利用求整和求余运算分别计算出个、十、百和千位数字,再输出。

#include"stdio.h"

voidmain()

{inta,b,c,d,x;

printf("输入4位整数:

");

scanf("%d",&x);

a=x%10;

b=x/10%10;

c=x/100%10;

d=x/1000;

printf("%d=%d%d%d%d\n",x,a,b,c,d);

}

3.3选择结构程序设计

1、改错题

(1)以下程序的功能是输入三个整数,输出其中的最大值。

请改正程序中的逻辑错误。

#include"stdio.h"

voidmain()

{inta,b,c,max;

printf("输入3个整数:

");

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

max=a;

if(c>b)

{if(b>a)max=c;}

else

{if(b>a)max=b;}

printf("3个数中最大的数是:

%d\n",max);

}

(2)以下程序的功能是输入1~12月的月份编号,输出该月份对应的英文名称。

例如,输入“2”,输出“February”。

请改正程序中的逻辑错误。

#include"stdio.h"

voidmain()

{charch;

printf("输入月份编号:

");

scanf("%c",&ch);

switch(ch)

{case'1':

printf("January\n");break;

case'2':

printf("February\n");break;

case'3':

printf("March\n");break;

case'4':

printf("April\n");break;

case'5':

printf("May\n");break;

case'6':

printf("June\n");break;

case'7':

printf("July\n");break;

case'8':

printf("Augest\n");break;

case'9':

printf("September\n");break;

case'10':

printf("October\n");break;

case'11':

printf("November\n");break;

case'12':

printf("December\n");break;

default:

printf("Error!

\n");

}

}

2、填空题

(1)输入整数a和b,若a2+b2大于100,则输出a2+b2百位以上的数字,否则输出两数之和。

#include"stdio.h"

voidmain()

{inta,b,x,y;

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

x=a*a+b*b;

if(x>100){y=x/100;printf("%d\n",y);}

elseprintf("%d\n",a+b);

}

(2)根据以下函数关系,对输入的不同的x值,计算出相应的y值。

0x<0

y=x0<=x<10

1010<=x<20

-0.5x+2020<=x<40

#include"stdio.h"

voidmain()

{intx,c;

floaty;

scanf("%d",&x);

if(x<0)c=-1;

elsec=c/10;

switch(c)

{case-1:

y=0;break;

case0:

y=x;break;

case1:

y=10;break;

case2:

case3:

y=-0.5*x+20;break;

default:

y=-2;

}

if(x<40)printf("y=%f\n",y);

elseprintf("error\n");

}

3、程序设计题

(1)用switch编程实现:

-1(x<0)

y=0(x=0)

1(x>0)

#include“stdio.h”

voidmain()

{floatx;

inty;

scanf(“%f”,&x);

switch(x<0)

{case1:

y=-1;break;

case0:

switch(x==0)

{case1:

y=0;break;

default:

y=1;

}

}

printf(“y=%d\n”,y);

}

(2)从键盘输入3个整数,计算并输出这3个整数的和、平均值(保留2位小数)、最大值和最小值。

#include“stdio.h”

voidmain()

{inta,b,c,sum,max,min;

floataverage;

printf(“输入三个整数:

”);

scanf(“%d%d%d”,&a,&b,&c);

sum=a+b+c;

average=sum/3.0;

max=min=a;

if(c>b)

{if(b>a)max=c;}

else

{if(b>a)max=b;}

if(c

{if(b

else

{if(b

printf(“sum=%d\taverage=%6.2f\tmax=%d\tmin=%d\n”,sum,average,max,min);

}

3.4单层循环程序设计

1、改错题

(1)以下程序可以按倒序打印26个英文字母,请改正程序中的错误。

#include"stdio.h"

voidmain()

{charc;

c='z';

while(c>='a')

{printf("%3c",c);

c--;

}

}

(2)已知鸡兔共有30只,脚共有90个,下面程序的功能计算并输出鸡兔各有多少只,请改正程序中的错误。

#include"stdio.h"

voidmain()

{intx,y;

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

{y=30-x;

if(2*x+4*y==90)printf("%d,%d\n",x,y);

}

}

2、填空题

(1)以下程序求111111的个、十、百位上的数字之和,请填空。

#include"stdio.h"

voidmain()

{inti,x=1,y=0;

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

x=x*111%1000;

do

{y=y+x%10;

x=x/10;

}while(x!

=0);

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

}

(2)某学校有近千名学生,现在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,求该校学生总数。

#include“stdio.h”

voidmain()

{intn=999;

while(n>800)

{if(n%5==2&&n%7==3&&n%3==1)break;

n--;

}

printf(“%d\n”,n);

}

3、程序设计题

(1)计算1-3+5-7+…-99+101的值。

#include“stdio.h”

voidmain()

{inti,t=-1,s=0;

for(i=1;i<=101;i+=2)

{t=(-1)*t;

s=s+t*i;

}

printf(“s=%d\n”,s);

}

(2)输入若干学生成绩,以负数作结束符,输出其中的最高分和平均分。

#include“stdio.h”

voidmain()

{intgrade,max,n=0,sum=0;

scanf(“%d”,&grade);

max=grade;

while(grade>0)

{sum+=grade;

scanf(“%d”,&grade);

if(grade>max)max=grade;

n++;

}

printf(“max=%d,average=%5.2f\n”,max,1.0*sum/n);

}

3.5嵌套循环程序设计

1、改错题

(1)以下程序的功能是计算下式的值。

请改正程序中的错误。

(1)×(1+2)×(1+2+3)×(1+2+3+4)×……×(1+2+……+10)

#include"stdio.h"

voidmain()

{inti,j;

floatx,y;

y=1;

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

{x=0;

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

x=x+j;

y=y*x;

}

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

}

(2)以下程序的功能是求算式xyz+yzz=532中x,y,z的值。

请改正程序中的错误。

#include"stdio.h"

voidmain()

{intx,y,z;

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

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

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

if(100*x+10*y+z+100*y+10*z+z==532)

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

}

2、填空题

(1)打印下面图形。

×

××

×××

××××

×××××

×

×

×

#include“stdio.h”

voidmain()

{

inti,j,k;

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

{

for(j=1;j

printf(“×”);

printf(“\n”);

}

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

printf(“×\n”);

}

(2)若打印如下阵列,请填空。

1234

2341

3412

4123

#include"stdio.h"

voidmain()

{inti,j;

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

{for(j=1;j<=4;j++)

printf(“%d\t”,(i+j)>5 ?

(i+j)%5 :

(i+j-1));

printf("\n");

}

}

3、程序设计题

(1)按下面的近似公式计算:

e=1+1/1!

+1/2!

+1/3!

+……1/10!

#include“stdio.h”

voidmain()

{inti,j,t=1;

floate=1;

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

{t*=i ;

e+=1.0/t ;

}

printf(“e=%f\n”,e);

}

(2)取1分、2分、5分的硬币共十枚,付一角八分钱,有几种不同的取法?

怎样取?

(提示:

某一种硬币可以取零枚。

先确定取值范围,再验证满足条件。

#include“stdio.h”

voidmain()

{inti,j,k,n=0;

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

for(j=0;j<=9;j++)

{k=10-i-j;

if(i+2*j+5*k==18)

printf(“%d:

%d,%d,%d\n”,++n,i,j,k);

}

}

实验6一维数组程序设计

1、改错题

(1)以下程序的功能是将若干学生成绩存于数组中,求平均成绩。

请改正程序中的错误。

#include"stdio.h"

voidmain()

{inta[50],i=0,sum=0;

floatave;

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

while(a[i]!

=-1)

{sum+=a[i];

i++;

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

}

ave=(1.0)*sum/i;

printf("average=%f\n",ave);

}

(2)以下程序输入10个整数,判断它们是否有重复,如果没有重复输出Yes,否则输出No。

请改正程序中的错误。

#include"stdio.h"

#defineN10

voidmain()

{inta[N],i,j,isyes=1;

for(i=0;i

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

for(i=0;i

for(j=i+1;j

if(a[i]==a[j])isyes=0;

if(isyes==1)printf("Yes\n");

elseprintf("No\n");

}

2、填空题

(1)以下程序的功能是输入5个整数,找出最大数和最小数所在的位置,并把二者对调,然后输出调整后的5个数。

请填空。

#include“stdio.h”

#defineSIZE5

voidmain()

{inta[SIZE],max,min,i,j,k;

for(i=0;i

max=min=a[0];

for(i=1;i

{if(a[i]>max){max=a[i];j=i;}

elseif(a[i]

}

a[j]=min;a[k]=max;

for(i=0;i

}

(2)以下程序中的a数组保存有10整数元素,从a中第二个元素起,分别将后项减前项之差存入b数组,并按每行3个元素输出数组b。

请填空。

#include“stdio.h”

voidmain()

{inta[10],b[10],i=0;

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

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

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

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

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

{printf(“%3d”,b[i]);

if(i%3==0)printf(”\n”);

}

}

3、程序设计题

(1)输入一英文单词,将其字母按字典顺序排序后输出。

如:

输入program,输出agmoprr。

#include“stdio.h”

#include“string.h”

voidmain()

{charch[10],i,j,x;

printf(“输入英文单词:

”);

scanf(“%s”,ch);

for(i=0;i

for(j=i+1;j

if(ch[i]>ch[j])

x=ch[i],ch[i]=ch[j],ch[j]=x;

printf(“%s\n”,ch)

}

(2)给一维数组a输入任意6个整数,如:

356218,建立一个以下内容的方阵并打印。

835621

183562

218356

621835

562183

356218

#include“stdio.h”

voidmain()

{inta[6],i,j,k,m;

printf(“输入6个整数:

”);

for(i=0;i<6;i++)scanf(“%d”,&a[i]);

for(i=5;i>=0;i--)

{k=a[5];

for(j=4;j>=0;j--)a[j+1]=a[j];

a[0]=k;

for(m=0;m<6;m++)printf(“%2d”,a[m]);

printf(“\n”);

}

}

实验7二维数组和字符数组程序设计

1、改错题

(1)以下程序分别统计字符串str中大写字母和小写字母的个数,请改正程序中的错误。

#include"stdio.h"

#include"string.h"

voidmain()

{charstr[80];

inta=0,b=0,i;

gets(str);

for(i=0;str[i]!

='\0';i++)

{if(str[i]>='a'&&str[i]<='z')a++;

if(str[i]>='A'&&str[i]<='Z')b++;

}

printf("%d,%d\n",a,b);

}

(2)以下程序输入n×n个数据,将其按n行n列的方阵输出。

请改正程序中的错误。

#include“stdio.h”

voidmain()

{inta[10][10],i,j,n;

scanf(“%d”,&n);

for(i=0;i

for(j=0;j

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

for(i=0;i

{for(j=0;j

printf(“%3d”,a[i][j]);

printf(“\n”);

}

}

2、填空题

(1)以下程序是将字符串s中所有的空格字符删去,请填空。

#include“stdio.h”

voidmain()

{

chars[]=”OurteacherteachsClanguage.”;

inti,j;

for(i=j=0;s[i]!

=’\0’;i++)

if(s[i]!

=’‘)s[j++]=s[i];

s[j]=’\0’;

printf(“%s\n”,s);

}

(2)以下程序给方阵中所有边上的元素和两个对角线上的元素置1,其它元素置0,并按方阵形式输出。

#include“stdio.h”

#defineN10

voidmain()

{

inta[N][N],i,j;

for(i=0;i

{

for(j=0;j

{

if(i==0||j==0||j==i||i==N-1||j==N-1||i+j==N-1)a[i][j]=1;

elsea[i][j]=0;

printf(“%3d”,a[i][j]);

}

printf(“\n”);

}

}

3、程序设计题

(1)有3名学生5门课程的考试成绩存于二维数组中,求每名学生的平均分及3名学生的总平

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

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

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

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