华中科技大学C语言实验报告

2026/4/27 20:15:43

华中科技大学计算机学院 C语言程序设计实验报告

流程图2-2程序设计题1的算法(switch结构)

测试:测试数据:见表2-1,在选取测试数据时,我们注意到,首先应检测程序能否正确判断输入的正确性,故我们输入-1(负数)与.(非数字)。其次,我们在各数据段中选取具有代表性且易于人工验算的数据,因此,我们在此处在各工资段中选取了500,1500,2500,3500,4500,5500.同时,选取边界数据0,1000,2000,3000,4000,防止程序无法正常处理边界值,图2-5的运行结果说明结果与理论分析吻合,验证了程序的正确性。

21

华中科技大学计算机学院 C语言程序设计实验报告

表2-1 编程题1的测试数据

图2-5 编程题1的测试用例一的运行结果

(2)编写一个程序,将输入的一行字符复制到输出,复制过程中将一个以上的空格字符用一个空格代替。

解答:这与C语言处理注释文字的方式相似,为此,我们定义两个字符单元,分别用于收集当前收集的字符与上一个收集的字符,当这两个单元都收集到空格字符时,停止输出收集到的字符,否则,正常输出收集到的字符,这样,便可以将一个以上的空格字符用一个空格代替。其余细节见程序注释,算法见流程图2-3,程序如下。 #include int main()

22

华中科技大学计算机学院 C语言程序设计实验报告

{ }

char c, d=0; //搜集当前字符的c单元与前一字符的d单元,注意由于最开始while ((c = getchar()) != EOF) {

if (c != ' ') printf(\非空格字符正常输出

if (c == ' ') if (d != ' ') printf(\非连续空格字符正常输出 d = c; //记录前一字符

―前一字符‖不存在,需给d赋初值

}

return 0;

流程图2-3程序设计题2的算法

测试:为了测试本程序应对各个位置的空格的能力,作者在各处放置了数量不等的空格,特别是首尾两处,其次,为了测试程序是否会错误的少输出字符,作者将所有的非空格字符均设为2个及以上。

测试数据:字符串(前有2个空格) 1122233 11aabb 111...33 11AAAA444+++///666 (后有2个空格)

理论输出结果:(前有1个空格)1122233 11aabbx111...33 11AAAA444+++///666 (后有1个空格)

23

华中科技大学计算机学院 C语言程序设计实验报告

对应测试测试用例的运行结果如图2-6所示。特别提示,为使程序效果显目,用字母x代表空格。下面的运行结果说明结果与理论分析吻合,验证了程序的正确性。

图2-6 编程题2的测试用例的运行结果

(3)编写一个程序,打印如下的杨辉三角形。

1 /*第0行 */ 1 1 /*第1行 */ 1 2 1 /*第2行 */ 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1

每个数据值可以由组合Cij计算(表示第i行第j列位置的值),而Cij的计算如下:

Ci0?1

(i=0,1,2,…)

(j=0,1,2,3,…,i)

Cij?Cij?1*(i-j?1) / j

说明:本程序中为了打印出金字塔效果,要注意空格的数目。一位数之间是3个空格,两位数之间有2个空格,3位数之间只有一个空格,程序编制过程中要注意区分。

解答:首先,定义一个函数用于生成组合数,题目中提供了一种很好的组合数生成方式,它能避免在计算到17的阶乘时就会造成int溢出的结果使计算结果异常,从而提供了计算范围更大的组合数的可能,当然,在本题中组合结果最大只能是999(否则会出现4位数而无法构成金字塔)。

而到了生成金字塔的环节,我们可以将每一个数的单元视作一个长度为4的砖块,这样,我们可以得到一个显然的结论:为了得到金字塔,从最下面一层开始,在其前方输出2个空格,并且每向上一层,就再增加两个空格。

最后这个10层的金字塔,塔底有10个数,但值得注意注意的是这是(a+b)9 的展开式各项系数而非(a+b)10 的,程序如下。

24


华中科技大学C语言实验报告.doc 将本文的Word文档下载到电脑
搜索更多关于: 华中科技大学C语言实验报告 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219