C程序设计实验四实验报告

     

工学   土木工程专业 09  20## 2012 学年度 1 学期

学号:xxxxxx 姓名:xxxxxxx  2011 10 20  3~4  综合 325教室

 

第二篇:C程序设计 实验报告 第四章

班级: 信科 121 学号: 12477218 C程序设计实验报告 第四章 循环结构程序设计

第四章 循环结构程序设计

【实验目的】

1、学习绘制简单的框图

2、学习循环结构的程序设计

【上机准备】

第一题:求出前20个不能被2,3,5,7整除的数,并求出这些数的和。画出流程图并写出程序

第二题:写程序求1-3+5-7+…-99+101的值,画出流程图并写出程序。

第三题: 线面的框图是通过公式??1?111??? …来求出?的近似值,1!2!3!精度要求为10-6 。根据框图写出程序。提示:精度公式为?n?Sn?1?Sn?

1 n!

第四题:计算圆周率方法中有一种称为蒙特卡罗法。其思路是在平面坐标系的第一象限中,以(0,0),(0,1),(1,0)四个角为顶点的正方形中,产生随机点。已知由圆心为(0,0),起点为(1,0),终点为(0,1)的四分之一圆的扇形区域面积为s=1所以若随机点到圆心距离小于1则认为落在这个扇形内?,4

部。根据落在这个扇形内部点的比例再乘以4即可得到圆周率的近似值。画出框图,编写程序,分别输出当随机点点数为10,100,1000,10000,50000等所求出的圆周率。并求出当随机点数为多少的时候,求出圆周率精度为小数点后3位。

第五题:下面程序用来求100以内个位数为6且能够被3整除的所有数,请填空

第六题:下面程序功能是计算100-1000之间有多少个数,其各位数字之和是5,请填空

第七题:编程求所有4位数,这些数具有以下特点:这数本身是平方数,且其

低2位和高2位所组成的2个2位数也是平方数。使用伪码描述算法,画出流程图,写出程序。

第八题:下面程序的功能是求出用一元人民币兑换一分、二分、五分的所有兑换方案请填空:

【上机内容】

【第一部分上机操作】:

一、 P4_1

#include<stdio.h> void main() { int s=0,n=1,i=1;

while(n<=20)

{

if(i%2!=0&&i%3!=0&&i%5!=0&&i%7!=0) {

n++;

s+=i; printf("%d\t",i);

} i++;

}

} printf("sum=%d\n",s);

实验数据:

1 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 sum=858

错误记录:忘记i++;

二、 P4_2

#include<stdio.h> void main() { int i,x,s;

i=1;

s=0;

x=1;

while(x<=101&&x>-103)

{

s+=x;

i++;

x=2*i-1;

if(i%2==0)

x=x*(-1);

}

} printf("sum=%d\n",s);

实验数据:sum=51

错误记录:\

三、 P4_3

#include<stdio.h> #include<math.h> void main() { int i; float e,term,a; e=1; a=1; i=1,term=1; while(term>=1e-6) // int(a*pow(10,-6))!=(a*pow(10,-6)) { a=a*i; term=1/a; e=e+term; i++; } printf("sum=%f\n",e); }

实验数据: sum=2.718282 错误记录:刚开始未能正确理解精度的含义

四、 P4_4

#include<stdio.h> #include<stdlib.h> #include<math.h> void main() { int k,i,n; float m,q,l,p; printf("请输入随机点的点数:"); scanf("%d",&n); i=1; k=0; while(i<=n) { m=(float)rand()/RAND_MAX; q=(float)rand()/RAND_MAX; l=sqrt(m*m+q*q); i++; if(l<=1) k++; } p=k*1.000/n*4; printf("圆周率为:%f",p); }

实验数据:3.139087

错误记录:随机数使用方法错误

五、 P4_5

#include<stdio.h> void main() { int i,j; for(i=0;i<10;i++) { j=i*10+6; if(j%3!=0) continue; printf("%d\t",j); } }

实验数据: 6 36 66 96 错误记录:循环判断条件错误,应为if(j%3!=0)而不是if(j%3==0)

六、 P4_6

#include<stdio.h> void main() { int i,s,k,count=0; for(i=100;i<1000;i++) { s=0; k=i; while(k>=10) { s=s+k%10; k=k/10; } if(s!=5) continue; else count++; } printf("%d\n",count); }

实验数据: 54

错误记录:\

七、 P4_7

#include<stdio.h> #include<math.h> void main() { int a,c,e,g,h,i; float b,d,f; for(a=1000;a<=9999;a++) { b=sqrt(a); g=b;

c=a%100; /*低两位*/ d=sqrt(c); h=d; e=(a-c)/100; /*高两位*/ f=sqrt(e); i=f; if(g*g==a&&h*h==c&&i*i==e)/*判断是小数或整数*/ printf("%d\t",a); } }

实验数据: 1600 1681 2500 3600 4900 6400 8100 错误记录:逻辑混乱g*g==a&&h*h==c&&i*i==e误输入为g*g==b&&h*h==d&&i*i==f

八、 P4_8

#include<stdio.h> void main() { int i,j,k,l=1; for(i=0;i<=20;i++) for(j=0;j<=50;j++) { k=100-5*i-2*j; if(k>=0) { printf("%2d%2d%2d",i,j,k); l=l+1; if(l%5==0) printf("\n"); } } }

【上机小结】:

通过第四章的学习,我理解并掌握了循环结构的基本知识,学会了C语言编写代码时的一些小技巧。

相关推荐