2022年C语言上机实验题 .pdf
《2022年C语言上机实验题 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言上机实验题 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章循环控制通过本章实验作业应达目标1熟悉 while 、for 、do_while 、break 、 continue语句的作用与使用规范。2学习并掌握利用while 语句、 for语句、 do_while语句实现循环结构。3掌握循环结构和选择结构之间嵌套、多重循环间嵌套的设计方法。4进行算法设计训练,能综合所学控制结构语句解决一般问题。本章必须上交作业程序 6_1.c 、6_2.c 、6_5.c 、6_6.c 、6_8.c 上传至 211.64.135.121/casp。本章开始, 上机实验项目量加大,希望同学们多多自行上机。本章实验项目有余力都可以做一下并上交。循环程序设计计算机解决问
2、题都是按指定的顺序执行一系列的动作。按照特定的顺序执行相应的动作来求解问题的过程称为算法。程序中的语句是算法的体现,而算法要解决的是“做什么”和“怎么做”的问题。计算机程序中指定语句的执行顺序称为“程序控制”。结构化的程序控制包含三种基本结构:顺序结构,选择结构和循环结构。1. 循环设计循环是在循环条件为真时反复执行的一组计算机指令,是计算机解题的一个重要结构。循环控制有两种基本方法:计数法和标志法。1)计数器控制的循环事先准确地知道循环次数,因此设计一个循环控制变量,由变量值来控制循环次数。每循环一次,循环变量的值会递增(增值通常为1 或-1) ,当其值达到终值时结束循环。教材例 6.2、6
3、.3、6.7 都是典型的计数器控制的固定次数次数循环。2)标志控制的循环事先不知道准确的循环次数,由某一目标值标记循环的结束。如,教材例6.6 中以 |t|的值达到标记下限值1e-6 作为循环的结束。循环设计时要注意合理设计循环条件,使得循环不会成为死循环。2. 算法程序设计的首要工作是算法设计,离开了算法也就没有了程序。算法, 是指完成某一项工作而采取的方法和步骤,具体到程序设计,是对解题过程的准确而完整的描述,并用一种程序设计语言的来实现。循环主要用来解决程序设计中两类基本的算法:穷举和迭代。1)穷举穷举的基本思想是对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止。穷举
4、是一种重复型算法,其核心是设计循环,在循环体中依次测试。例:输入两个正整数x 和 y,求其最大公约数。main() int x,y,i,flag; printf(Please input two numbers:); scanf(%d%d,&x,&y); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - for(i=x=1;i-) /* 使用 i 进行穷举*/ if(x%i=0&y%i=0) break; /* 条件满足,就结束
5、循环*/ printf(greatest common divisor=%dn,i); 两个数中的小者到2 之间任何一个数都有可能是公约数,因此用变量i 从大到小一一穷举,直到找到为止。若两数互质,当i=1 时也能使条件满足。2)迭代按照特定规律和方法,不断用新值取代变量的旧值,或由旧值递推出变量新值,直至问题解决为止,这种解决问题的方法为迭代。迭代的关键因素是:迭代初值、迭代公式和迭代次数(精度要求) 。例:使用辗转相除法求两数的最大公约数。辗转相除法:如果x 除以 y 的余数为0,则除数y 就是最大公约数,或余数不为0,则被除数 x 被除数 y 取代,除数y 被余数取代,再用新的x 除以新
6、的y,判断余数是否为0,如果不为0,则重复此迭代过程,直至余数为0,此时的除数y 即为最大公约数。main() int x,y,temp; printf(Please input tw o numbers:);scanf(%d%d,&x,&y); temp=x%y; while(temp!=0) /* 辗转相除,直到temp 为 0 */ x=y; /* 迭代 */ y=temp; /* 迭代 */ temp=x%y; printf(greatest common divisor=%dn,y); 运行时输入:66 121 输出: greatest common divisor=11 各值的变化
7、如下:x y temp=x%y 66 121 66 121 66 11 66 11 0 实验一 固定次数的循环设计【实验目的】学习设计固定次数的循环。【实验内容】编写程序,计算x 的 y 次方。这里x 为 double 型, y 为 int型。 x、y 通过键盘输入,要考虑 y 为负数的情况。例:当输入2.5 3时,输出15.625000 ;当输入2.5 -3时则输出0.064000 。程序以6_1.c 命名并上交。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页
8、 - - - - - - - - - 输入输出屏幕示例【指导】本实验中,假设y 为正数时,可定义结果变量sum,想办法使sum*=x语句执行y 次。对固定次数的循环,通常方法是设计一个循环变量i ,让其在初值与终值之间变化控制控制循环次数,循环条件通常是:i 终值。如:for(i=初 值 ;i 终 值 ;i+) 循环体语句 ; 实验二整数按位折分求和【实验目的】学习设计与控制循环,并熟练%(求余)运算。【实验内容】输入一个不大于2 109(用 long 型数据)的正整数x,求这个数每位数字之和。例如,若输入 33456781,输出 37。程序以 6_2.c 命名并上交。【提示】设计循环,每次求
9、出x 的个位数(使用求余运算)并累加到和值变量中,再迭代操作,改变 x 的值,使原来的十位变个位。【讨论与思考】long 型数据的最大值是2147483647,受变量类型限制,本程序只能接收不大于2109的正整数。如果进行扩充,要求能接收并计算一个30 位整数的各位之和,那么数据类型应如何设置,程序应该如何编写?实验三输出九九乘法表【实验目的】学习多重循环的嵌套。【实验内容】下面程序输出九九乘法表如下图。请完善程序并以6_3.c 命名 。#include void main() int i,j; clrscr(); for(_) for(_ ) printf(%d*%d=%-2d ,i,j,i
10、*j); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - _; 实验四打印数字塔图形【实验目的】学习使用循环语句构成的多重循环嵌套。【实验内容】编写程序,使用循环输出如下图所示的数字塔图形。程序以6_4.c 命名 。【提示】此图形上下对称,可将程序分为上下两部分实现。上半部输出9 行,下半部输出8 行。每一行包含三部分内容:开始的空格、 中间的数字及最后的换行符。需要考虑的是字符个数与行号的关系。下面程序用于输出如下*字符塔,
11、供本题参考。#include void main() int i,j; clrscr(); /* 清屏 */ for(i=1;i=9;i+) /* 行循环 */ for(j=1;j=9-i;j+) /* 输出行左空格*/ printf( ); for(j=1;j=2*i-1;j+) /* 输出若干 * 字符 */ printf(%c,*); printf(n); /* 换行 */ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - -
12、 实验五寻找素数【实验目的】领会并牢固掌握素数算法,深入循环结构设计。【实验内容】从键盘输入一个大于3 的正整数, 输出距离该数最近的素数。根据输入的数不同,此问题可能有一个答案(或者比输入的数大或者比输入的数小),也可能需要输出两个值(一个比输入的数大, 一个比输入的数小,两个距离输入的数一样近)。程序以 6_5.c 命名并上交。实验六不等式求解【实验目的】学习在循环中使用break 控制语句。【实验内容】键盘输入一个数给m,计算并返回满足表达式:1+ (1+2)+ (1+2+3)+(1+2+3+4) +,+(1+2+3+ ,+n)=m 最大的 n。例如,当m=10000 时,程序输出:n=
13、38。程序以 6_6.c命名并上交。【提示】参考解法:for(i=1;1;i+) /* 循环条件为恒真 */ 计算( 1+2+3+,+i )s; 将计算结果s 累加到变量sum中 ; 判断 sum的值是否大于m 是,则终止循环否,则继续进入下一次循环 输出与对应结果,其值会与i 相关。实验七统计字数【实验目的】学习使用循环处理字符串相关问题。【实验内容】完善以下程序6_7.C 。程序任务:输入一串字符,以“#”作为输入结束标志,显示其中字母与数字字符的个数。#include void main() int ch_num,dig_num;char ch; ch_num=dig_num=0; do
14、ch=getchar(); /* 完善程序,统计52 个英文字母与十个数字字符的个数 */ while(_); /* 给出循环条件*/ printf(The number of chars is:%dn,ch_num); printf(The number of digital is:%dn,dig_num); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - 实验八 礼炮响声统计【实验目的】学习循环中条件的设计与数据统计。【实
15、验内容】活动中有三门礼炮,各装有十枚炮弹。第一门礼炮每隔3 秒发一枚炮弹,第二门每隔5秒、第三门每隔7 秒发一枚炮。问观礼群众一共听到几声炮响。同一时间发出炮声算一响。程序以 6_8.c 命名并上交。【实验提示】程序中可分别设置计时器变量与计数器变量。计时器以秒为单位递增,测试此时有无炮发出。只要有一枚炮发出,则计数器增1。注意不要重复统计。实验九验证哥德巴赫猜想【实验目的】综合运用多重循环结构、标志法、穷举法解决问题。【问题描述】1742 年 6 月,德国数学家哥德巴赫在给大数学家欧拉的信中提出一个问题:任何大于4的偶数均可以表示为两个素数之和吗?欧拉复信道:任何大于4 的偶数均可以表示为两
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年C语言上机实验题 2022 语言 上机 实验
限制150内