1.编写一个程序。该程序读取输入直到遇到#字符,然后报告读取的空格数目、读取的换行符数目以及读取的所有其他字符数目。
个人给出答案
#include "stdafx.h"
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
char c;
int i, j, k;
i = 0;
j = 0;
k = 0;
while (c = getchar() != '#')
{
if (c == ' ')
{
i++; // the number of blank
}
else if (c == '\n')
{
j++;// the number of enter
}
else
{
k++;
}
}
printf("the number of blank is %d\n", i);
printf("the number of enter is %d\n", j);
printf("the number of other characters is %d", k);
system("pause");
return 0;
}运行时发现无论如何都不执行空格和回车的条件判断语句参考答案
#include<stdio.h>
int main(void)
{
int space=0,newline=0,others=0;
char a;
printf("Please input a string end by#:");
while((a=getchar()) != '#')
if(a == ' ') space++;
else if (a == '\n') newline++;
else others++;
printf("space: %d,newline: %d,others:%d\n",space,newline,others);
return(0);
}与参考答案的区别只有两句while的条件不同
while (c = getchar() != '#') while((a=getchar()) != '#')
错误主要出现在理解错运算符的优先级,!也有很高的优先级。
运算符优先级例子:y=6*12+5*20,此时运算符和数学上学习到的求值的顺序相同也是先乘除后加减,括号的优先级高
遇到++,--,前缀表达式和后缀表达式,增量和减量运算符有很高的结合优先级只有括号()比他们的优先级高 x*y++
C语言有大约40个运算符(4个比较常用的)
1.sizeof 运算符和size_t类型 返回值为无括号的整数类型
2.取模运算符:% 取模运算符%(modulus operator)用于整数运算
3.增量和减量运算符++,--
4.括号()
注意一下原则防止犯错
1.如果一个变量出现在同一个函数的多个参数中时不要将增量或者减量运算符用于上面
2.当一个变量多次出现在一个表达式里面不要将增量或者减量运算符用于它上面
本文介绍了一个简单的C语言程序,用于统计用户输入中空格、换行和其他字符的数量,并对比了两种不同的实现方式,解释了其中的逻辑错误及原因。
3404

被折叠的 条评论
为什么被折叠?



