高级语言程序设计课程第五次个人作业
这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C
这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2024C/homework/13298
学号:102400124
姓名:邱语堂
编写并运行书本第8章8.11编程练习题目中的第1~8题。
第一题:统计字符数
当用户输入&则结束输入,添加条件判断while(getchar()=='&')来判断是否读取结束。
第二题:分别打印每个输入的字符及其ASCII码
使用循环printf("%c对应%d",ch,ch)来输出字符及其对应ASCII码。
第三题:统计大写字母和小写字母
通过ASCII码判断大小写并计数。
第四题:报告输入的内容中每个单词的平均字母
当读取到' '空格字符,'.'句号字符或者','字符,单词数量加一,通过判断ASCII码统计所有字母字符,平均字母束=总的字母字符数量/单词数量。
第五题:最小二分法猜测数字
使用guess变量guess=(范围上限+范围下限)/2,每次询问后根据用户的输入结果来改变数字范围的上限或者下限,不断缩小数字范围。
第六题:返回读取的第一个非空白字符
1、逻辑是使用循环,条件是:当读取的是空白字符,就一直去读取下一个字符。
当读取到非空白字符,则循环结束。此时读取到的是第一个非空白字符。
2、用户输入换行符时就结束输入了,因此如果读取到'\n',那么没有说明输入内容中非空白字符。
第七题:修改编程练习8,用字符代替菜单选项
修改menu函数将选项数字变为字母,然后将int number改为char letter,switch函数中的case 1修改为case 'a',以此类推。
第八题:显示简单计算器计算两个数字的加减乘除
1、方法形同计算税金和收入的题目,用自定义函数分别实现menu部分,计算部分和交互部分
2、当用户输入字母后使用switch调用计算部分的不同功能(加减乘除)。
3、当用户输入q则直接break跳出循环结束程序。
4、使用【while(getchar()!='\n')continue;】来避免getchar()函数读取到换行符。
第9章9.11编程练习题目中的第1~11题。
第一题:设计自定义函数,返回两个double值得较小值
使用x<y?x:y实现
第二题:设计函数打印字符j行i列
使用两个循环嵌套实现打印j行i列。
第三题:接受三个参数,字符打印j行i列
使用两个循环嵌套实现打印j行i列。
第四题:计算两数的调和平均数
自定义函数接收两个参数,返回两个参数的计算结果。
第五题:将两个数的值替换为较大的值
比较两个数并返回较大值然后分别赋值即可。
第六题:三个变量从小到大排序
一、使用三个if条件判断依次实现
1)若a>b交换a和b 2)若b>c交换b,c 3)此时还存在一种情况b<a<c,则再次交换a,b。
二、函数需要返回多个值,因此每个变量使用指针实现交换排序。用&i,&j和&k取地址,在自定义函数中使用doublea,doubleb,double*c来获得地址里的实际值,然后对地址里的数排序。
第七题:编写函数报告读取的字符是否是字母,是字母则报告字母表中的数值位置。
通过对比ASCII码来实现是否是字母的判断,如果时小写字母,则将ASCII码减去32,将字母变为对应的大写字母,在统一大小写后计算字母表的位置。
第八题:优化power函数,计算负数次幂和0次幂
只要用if条件判断当次幂是负数和0时,分别计算xpow的值即可。
第九题:使用递归实现第八题
使用pow=n*power(n,p-1)以递归的形式实现了次幂计算。
第十题:to_base_n函数计算整数在2到10进制数的转化
通过取余后输出余数得出每一位上的数,用递归来实现每一位的倒序输出,再将n\base来实现更新原本的数。
第十一题:使用循环计算斐波那契数列的指定第n位的值
分别两个变量result1和result2记录斐波那契数列的前两个值,用temp暂存数字实现每次循环更新数列的前两位。
总结
使用递归方法可以很轻松地实现倒序输出余数,这在不同进制转换中很有用。