实验6-答案 下载本文

C语言实验6

实验6、循环结构程序设计(2)

一、实验目的

1、进一步掌握用for、while、do while语句的格式和执行流程;

2、掌握循环的嵌套(至少两层)以及用循环的方法实现一些常用算法; 3、掌握用break和continue语句的作用及其区别; 4、进一步学习调试程序。

二、实验内容

1、程序改错(必做题)

下面程序的功能是:输入10名学生某门课程的成绩,计算平均分,并求出其中的最高分和最低分。程序中存在四处错误,请调试修改,使程序运行能输出正确的结果。(标明出错的行号及其修改的内容) #include main() //1 { int i; //2

float score,max,min,sum,ave; //3

printf(\ //4 scanf(\ //5

max=min=sum=0; //6 max=min=sum=score for(i=1;i<=10;i++) //7 for(i=1;i<10;i++),for(i=1;i<=9;i++),for(i=2;i<=10;i++) { scanf(\ //8 sum+=score; //9 if(max>score) //10 if(maxscore) min=score; //13 }

ave=sum/10; //14

printf(\ //15 }

2、编程题

请根据自己的实际能力在以下A、B两组中任选两题进行编程。 A组:(难道较高,成绩A-~A+)

(1)编写程序,输入多个两位正整数(敲回车键结束输入),统计出其中小于等于40、大于40小于等于70、大于70的数据个数。 #include main() { int a;

int i=0,j=0,k=0;

printf(\ do {

C语言实验6

scanf(\ if(a<=40) i++; else if(a<=70) j++; else k++;

} while((a=getchar())!='\\n');

printf(\ 40 to 70=%d higher than 70=%d\\n\}

(2)任意输入一串字符(敲回车键结束输入),将其中所有的大写字母均转换为小写,然后将所有字母均用其前面的第3个字母替换,其他字符不变,输出转换后的字符串。例如:如果输入Asia Game 2010,输出xpfx dxjb 2010. #include int main() { char c;

while((c=getchar())!='\\n')

{ if((c>='A' && c<='Z')) c=c+32; if((c>='d' && c<='z')) c=c-3; else if((c>='a' && c<='c')) c=c-3+26; printf(\ }

printf(\}

#include int main() { char c;

while((c=getchar())!='\\n')

{ if((c>='A' && c<='Z')) c=c+32; if((c>='a' && c<='z')) { c=c-3; if(c<'a') c=c+26; }

printf(\ }

printf(\}

(3)输入一个整数,求它的位数以及各位数字之和,例如,若输入123,则输出“123的位数为3,各位数字之和为6”。 #include main()

{ int a,n,len=0,sum=0,num; /*n代表整数a的每一位数字,len代表a的位数*/

C语言实验6

printf(\请输入一个整数a=\ scanf(\ num=a; while(a>0)

{ n=a; /*求整数的个位、百位、...位的数字*/ sum+=n; a=a/10; len++; }

printf(\整数%d共有%d位,\ printf(\其各位数字之和为%d\\n\\n\}

(4)输入2个正整数m和n(m>1,n<=500),输出m和n之间的所有素数,要求每行输出10个素数。

B组:(难道一般,成绩C~B+)

(1)编写程序,求满足2+4+6+…….+n>1000时的n的最小值及其和值。 (2)任意输入一串字符(敲回车键结束输入)。分别统计出其中英文字母、数字字符、其它字符的个数。

提示:先定义char c;用循环while((c=getchar())!=’\\n’)接收一行字符(敲回车表示字符输入结束,对输入的每一个字符进行判断并累加个数) (3)输出所有的“水仙花数”。所谓“水仙花数”是指一个3位整数,其各位数字的立方和等于该数本身,例如153=13+53+33

(4)编写一个C程序,对用户任意输入的整数,判断该数是否为素数。要求:用户每输入一个整数后,就给出该数是否是素数的信息,然后等待用户重新输入一个整数继续判断,直到输入一个-1时结束。 #include

#include main()

{ int a,i,flag=1; do

{ printf(\请任意输入一个正整数,输入-1结束:\ scanf(\ if(a==-1) {printf(\结束输入\ for(i=2;i<=sqrt(a);i++) { if(a%i==0) {flag=0;break;} else flag=1; }

if(flag) printf(\是一个素数\\n\\n\ else

C语言实验6

printf(\不是一个素数\\n\\n\ while(a!=-1); }

三、实验结果及分析

1、将实验内容1中的错误行号及其修改的正确内容抄写在实验报告纸上,并记录调试过程中出现的问题及解决办法。

2、编程题将选择的两题的代码抄写在实验报告本上,并标明是否调试通过。适当记录编程调试过程中的问题。

四、实验小结

五、回答问题

到目前为止,你对C语言编程的三种基本结构掌握的情况如何?学习过程中你感觉有困难吗?主要是什么问题?