C语言学习笔记字符读入读出

本文介绍了一个简单的C语言程序,用于统计用户输入中空格、换行和其他字符的数量,并对比了两种不同的实现方式,解释了其中的逻辑错误及原因。

    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.当一个变量多次出现在一个表达式里面不要将增量或者减量运算符用于它上面


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值