间隔一月多才发第七章是因为开始写毕业论文了,向各位道歉,之后会加快速度。第六章从阅读量上看还是较受欢迎的,涨了二十多个关注,开心噢=w=,进入正题。
首先,最近尝试安装了Visual Stdio 2017,比起Dev C++来说复杂很多但真正工程肯定得用它,为了方便目前以后者为主。不过学完这本书后,我会继续学计算机专业其他课程,然后开始学着用VS。毕竟很多新特性、新需求在VS上才能实现。
其次,关于这一章,学习的过程整体不算困难,我卡壳的地方有三个。一是P188程序7.5里头关于使用“标记”这一方法,二是P195程序7.7里关于“标记”应用实例,三是P198程序7.9里求多个数最值时设min=MAX、max=MIN的技巧。
前两者都是关于如何用“标记”方法解决逻辑问题,后者是一种解决结构问题的手段。
这些方法给时间是能够想出替代品的,但这三个案例里给出的是前人千锤百炼总结的技巧,类似于数学题的巧解方法。如果不是出生科班有老师教授,那么我认为这值得类似于我这样的自学萌新反复理解然后尝试,以期达到掌握。
最后,提及我发现的一些问题,1、多重选择的else if结构以if开头,中间用多个else if,结尾用else结束,但实际上也能用else if结尾,switch结构最后的default也是同理可以省略的。2、switch结构里case:后面输入 return 0作为语句,你可以结束整个程序,目前章节还没提及这个我是参考别人写的第八题中如何实现“输入5,结束整个程序”而得知的,相信后面的章节会讲解。
附上程序。
#include <stdio.h>
#include <ctype.h>
int main(void)
{
char c, prev;
int m, p, q;
m = p = q = 0;
while((c = getchar()) != '#')
{
if(!isspace(c))
m++;//统计其他字符数
if(c == '\n')
p++;//统计换行数
if(isspace(c))
q++;//统计换行数与空格的总和(即空白数)
prev = c;
}
q = q - p;//没有函数能直接算空格数,只能间接算:空白数-换行数=空格数
if(prev != '\n')
p++;//参照P194考虑,#在一行中间算换行数需要加一的情况,且不能放在空格数计算前,否则会少算空格数
printf("空格数为%d,换行符数为%d,其他字符数%d", q, p, m);
return 0;
}
#include <stdio.h>
int main(void)
{
char c;
int n;
n = 0;
while((c = getchar()) != '#')
{
if(c != '\n')//这个if使最后不把Enter也打印出来
{
n++;
printf("%c-%d ", c, c);
if(n % 8 == 0)
printf("\n");
}
}
return 0;
}
#include <stdio.h>
int main(void)
{
int n, p, q, odd_and, even_and;
float odd_avg, even_avg;
p = q = odd_and = even_and = 0;
scanf("%d", &n);
while(n != 0)
{
if(n % 2 == 0)
{
p++;
odd_and += n;
}
else
{
q++;
even_and += n;
}
scanf("%d", &n);
}