高级语言程序设计课程第五次个人作业
这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/gjyycx
这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/gjyycx/homework/14581
学号:102500305
姓名:赖晓娟
一.设计一个getchar和putchar联合使用的程序,使得程序遇到空格符时结束。

二.建立一个in.txt和out.txt,分别使用这两个文件进行重定位代替键盘输入和屏幕输出in.txt存放一些字符小写字符,大写字符,数字字符,程序将这些小写字符转换成大写字符,然后全部输出到out.txt。

错误原因:一开始 命令行中直接执行源文件 helloworld.c ( helloworld.c<in.txt>out.txt ),但源文件无法直接运行,需先编译为可执行文件(如 helloworld.exe )。
三.从键盘上输入数据并进行加、减、乘、除四则运算(以“a运算b”的形式输入),判断输入的数据是否可以进行计算,若能计算,则输出计算结果,保留小数点后2位,否则显示“wrong input”。另外,碰到除数为0是能提示“division by zero”。形式参考第八章PPT18页。

注意:写法“case '+':” √ ; 写法“case +:” ×。一定要记得单引号'字符'。
四.混合读入字符、数值,形式参考第八章PPT19页。
问题描述:
先读入一个字符,再读入一个整数,最后又读入一个字符;然后分别输出它们
输入格式:n个空格和/或<回车>,一个字符,m个空格和/或<回车>,一个整数,k个空格和/或<回车>,一个字符
输出格式:字符整数字符

五.编写并运行书本第8章8.11编程练习题目中的第3~7题。
3.编写一个程序,在遇到EOF之前,把输入作为字符流读取。该程序要报告输入中的大写字母,小写字母的个数。假设大小写字母数值是连续的。或者使用ctype.h库中合适的分类函数更方便。

错误原因:一开始直接else upper++;按ctrl+Z后将ctrl+Z统计在else里面了,导致输出的大写字母数量会比实际输入数量多+1。改成else if(ch>=65&&ch<=90) upper++;后就可以忽略掉非字母字符ctrl+Z了。
使用ctype.h库:(ctype.h 中的 isupper() / islower() 可直接判断字符大写/小写类型,比手动比较ASCII码更简洁。)
4.写一个程序,在遇到EOF之前,把输入作为字符流读取。该程序要报告平均每个单词的字母数,不要把空白统计为单词的字母。实际上,标点符号也不应该统计,但是现在暂时不同考虑这么多(果你比较在意这点,考虑使用ctype.h系列中的ispunct()函数)。

知识点:ctype库中isspace()表示是空白,ispunct()表示是标点,isalpha()表示是字母
5.猜数字。使用二分查找策略。

注意:换行会被getchar()读取,所以要利用continue跳过换行。当读取到换行这种无效输入时,continue跳过后续代码进入到下一次循环。
6.修改程序清单8.8中的get_first()函数,让该函数返回读取的第1个非空白字符,并在一个简单的程序中测试。

7.

六.编写并运行书本第9章9.11编程练习题目中的第1~4,8,9,11题。
1.设计函数min(x,y),返回两个double类型值的较小值。

2.设计函数chline(ch,i,j),打印指定字符j行i列。

3.
4.
8.循环用power()函数返回一个double类型数的整数次幂

9.递归函数

注意:1.当指数是负数时if(p<0)return(1.0/n)*power(n,p+1)是p+1而不是p-1,应该逐步逼近p=-1的终止条件。
** 2.if(p1) return n;写在前**
** if(p>0)return n*power(n,p-1);写在后,当p-1时进入到前面的if(p==1)分支,直接返回n,不会再进入if(p>0)分支了。所以后面分支写(p>1)和(p>0)都可以。**
11.斐波那契数列的定义:第1项和第2项均为1;从第3项开始,每一项是前两项之和(如:1, 1, 2, 3, 5, 8...)。

七.设计一个多源代码文件序的编译。例如,first.c源代码文件包含主函数和一些头文件(second.h),second.c源代码文件是一些自定义的函数功能实现,second.h文件是一些常量声明和second.c中自定义函数的函数原型声明。
second.h

second.c

first.c

八.编写一个程序,在该程序中输出主函数内定义的变量的地址,以及函数中定义的同名变量的地址。

总结和反思:1.对于重定位和多源代码文件程序问题比较不熟悉,花费较多时间完成;2.换行会被getchar()读取,所以要利用continue跳过换行。当读取到换行这种无效输入时,continue跳过后续代码进入到下一次循环;3.字符要加单引号!
浙公网安备 33010602011771号