C语言结构化程序设计实验报告
- 格式:doc
- 大小:51.00 KB
- 文档页数:4
实验2 结构化程序设计
一、 实验目的
1.了解C/C++语言表示逻辑量的方法(以0代表“假”,以非0代表“真” )。
2.学会正确使用逻辑运算符和逻辑表达式。
3.熟练掌握if 语句和switch 语句。
4.熟练掌握while 语句、do ...while 语句和for 语句格式、使用方法以及区别,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。
5.掌握break 和continue 程序控制语句的使用。
6.掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。
7.结合程序掌握一些简单的算法。
8.学习调试程序。
二、实验环境
PC 微机
Windows 操作系统
VS 2019 程序集成环境
三、实验内容与步骤
1.编写程序:根据公式
2
222213121116n ++++= π ,输出 π的值。 要求:
(1)变量π为单精度类型,n 为整型;
(2)计算当n 的取值分别为20,50 ,100,200时的π值,说明什么问题?
(3)修改程序,不给出n 值,而改为求π值,直到最后一项的数值小于10-4 为止。
(4)对修改后的程序,输出π值以及总的项数n 。输出格式为:π=值;n=值。 代码①:
#include
#include
int main()
{
int n,i;
float pi;
double sum = 0;
while ((scanf("%d", &n) != EOF)) {
for (i = 1; i <= n; i++) {
sum += 1.0 / (i * i);
}
pi = (float)sqrt(6 * sum);
printf("%f\n", pi);
sum = 0;
}
return 0;
}
代码②:
#include
#include
int main()
{
int n,i;
float pi;
double sum = 0;
for (i = 1; 1.0 / (i * i) >= 1e-4; i++) {
sum += 1.0 /( i * i);
}
pi = (float)sqrt(6.0 * sum);
n = i;
printf("pi = %f;n = %d",pi,n);
return 0;
}
结果分析:
1.第一问:当n = 20、50、100、200时pi分别为“3.094670、3.122627、3.132077、3.136826”,
由此可知当n越大时,pi的精度越高。
2.第二问:pi =
3.132077,n = 101。
实验总结:这道题主要是运用for语句来实现变量的增长和控制,做题时应注意对限制量的思考。
2.编程实现:由用户从键盘输入一串字符(以回车键结束),统计其中数字、大、小写字母、空格、其它字符的个数。
要求:
(1)通过键盘输入字符。
(2)给出相应的输入/输出信息提示。并按照数字、大写字母、小写字母、空格、其它字符数的顺序输出结果。
代码:
#include
int main()
{
int a = 0, b = 0, C = 0, d = 0,e = 0;
char c;
while ((c = getchar()) != '\n') {
if ('0' <= c && c <= '9') a++;
else if ('A' <= c && c <= 'Z') b++;
else if ('a' <= c && c <= 'z') C++;
else if (c == ' ') d++;
else e++;
}
printf("%d %d %d %d %d", a, b, C, d, e);
return 0;
}
实验结果:
输入:123 asvdu23ADasd @#$a
输出:5 2 9 2 3
实验结果和预期一致。
实验总结:应注意题目要求回车键结束和对各种类型的字符的判断。
3.计算并输出1000以内最大的10个素数以及它们的和。
要求:
(1)在程序内部加必要的注释。
(2)由于偶数不是素数,可以不考虑对偶数的处理。
(3)虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。
(4) 输出形式为:素数1+素数2+素数+…+素数10=总和值。
代码:
#include
int main()
{
int a[11] = { 0 }, sum = 0, n = 0, cnt = 0, j;
for (int i = 1000;cnt < 10; i--) {//从1000倒着搜索,取前十个素数
if (i % 2 == 0) continue;//排除偶数
for (j = 2; j*j <= i; j++) {//判断是否为素数
if (i % j == 0) break;
}
if (j * j > i) {