当前位置:文档之家› 大一上期C语言实验报告5 循环控制语句

大一上期C语言实验报告5 循环控制语句

成都工业学院·计算机工程学院
《程序设计基础》实验报告
1.实验目的
(1)熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利
用三种循环语句实现循环结构;
(2)掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧;
(3)进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。

2.实验内容
(1)输出两个整数m和n,求它们的最大公约数和最小公倍数。

要求:
①画出算法流程图,从键盘输入m和n;
②对负数和零可不做考虑;
③运行程序,对m>n、m<n和m=n的情况进行测试,验证程序的
正确性。

(2)输出1000以内最大的10个素数以及它们的和。

要求:
①由于偶数不是素数,可以不对偶数处理;
②画出算法流程图;
③输出形式为:素数1+素数2+素数3+...+素数10=总和值。

(3)根据公式π2
6
=1
12
+1
22
+1
32
+⋯+1
n2
,求出π的值
要求:
①画出算法流程图
②以变量pi表示π,并将其定义为单精度类型,变量n定义为整形
③计算当n的取值分别为20、50、100、200时的π的值
④输出π值以及总的项数n,输出格式为“n=值,pi=值”
(4)输入一串字符(以回车键结束),统计其中数字、大写字母、小写字母以及其他字符的个数。

要求:
①画出算法流程图,通过键盘输入字符串;
②在输出字符串之前给出相应提示;
③ 按照数字、大写字母、小写字母及其他字符数的顺序输出结果
3. 流程图
4. 源程序
(2)求1000内最大的10个素数之和 #include<stdio.h> void main()
{int n,r,i,k=0,a[10],sum=0; for(n=997;n>0;n-=2) {for(i=2;i<=n-1;i++) {r=n%i;
if(r==0) break;} if(i>=n)
{a[k]=i;sum=sum+a[k]; k++; if (k==10)break; continue;} else continue;}
printf("素数%d+素数%d+素数%d+素数%d+素数%d+素数%d+素数%d+素数%d+素数%d+素数%d+=%d\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],sum);}
(1)求最大公约数和最小
公倍数
#include<stdio.h>
void main()
{int m,n,a,b,d,i=2;
printf("Enter two number:");
scanf("%d%d",&m,&n);
a=(m>n)?m:n;
b=(m>n)?n:m;
d=a;
while((a%b)!=0)
{a=d*i;
i++;}
printf("%d,%d",m*n/a,a);}
5. 运行结果
(1)求最大公约数和最小公倍数
(2)求1000内最大的10个素数之和
(3)计算π值
(3)计算π值 #include<stdio.h> #include<math.h> void main() {int n,i;float pi=0; scanf("%d",&n); i=n; do{pi+=1/pow(n,2);n--;} while(n!=0); pi=sqrt(6*pi); printf("n=%d,pi=%f",i,pi);}
(4)统计字符串中各种类型数据的个数
#include<stdio.h> void main()
{char ch[200];int i,a=0,b=0,c=0,d=0; gets(ch);
for(i=0;ch[i]!='\0';i++)
{if(ch[i]>='0'&&ch[i]<='9') a++; else if(ch[i]>='A'&&ch[i]<='Z') b++; else if(ch[i]>='a'&&ch[i]<='z') c++; else d++;}
printf("%d,%d,%d,%d",a,b,c,d);}
(4)统计字符串中各种类型数据的个数
6.出现问题及解决办法
(1)求最大公约数和最小公倍数时,为定义变量d,直接写成
while((a%b)!=0){a=a*i; i++;}运算结果出错,原因是a的值一
直在变化,后来就增加变量d,写成while((a%b)!=0){a=d*i;i++;},运
算就正确了。

(2)求1000内最大的10个素数之和时,sum未赋初值,照成
sum=sum+a[k]语句错误,后来将0赋值给sum;判断语句的最后写成else break,造成循环语句提前结束,后经过查阅,了解break和continue语句的用法,将else break修改成else continue
(3)编写统计字符串中各种类型数据的个数的程序时将for(i=0;ch[i] !='\0';i++)中的’\0’写成’\n’,导致运算错误。

解决方法:先查阅得知字符串是以’\0’,表示字符串的结束,’\n’是换行符,转义序列的一种
7.实验心得
通过编写不同的程序,以及自己的调试,掌握了for,while,do…
while三种循环控制语句的基本使用方法,以及循环结构的嵌套使用,学会了语法错误和逻辑错误的检查方法。

还了解了break,continue语句的用法,如何使用gets函数输入字符串。

相关主题