新手求助一下getchar这个问题
while((ch=getchar() != '\n')和
while(ch=getchar() != '\n')
这两个区别是啥,为啥我如果写下面这种的话程序就运行错误呢? (我想应该是跟优先级有关,但是不太懂)
还有就是为什么这个 '\n' 就表示换行符? 本帖最后由 xiaosi4081 于 2020-8-4 21:24 编辑
ch=getchar()的意思是获得一个字符给ch,如果获得的字符不是'\n'(回车符),就执行循环,否则退出循环。 \n 就是 \n ,没有什么为什么 xiaosi4081 发表于 2020-8-4 21:22
ch=getchar()的意思是获得一个字符给ch,如果获得的字符不是'\n'(回车符),就执行循环,否则退出循环。
我的意思是上下两个不同表达式那个括号的区别体现在哪 学编程的盆子 发表于 2020-8-4 21:30
我的意思是上下两个不同表达式那个括号的区别体现在哪
第一个不符合语法啊 while ((ch = getchar()) != '\n')
和while (ch = getchar() != '\n') 应该是这两个的区别 打错了抱歉 第一种写法:while((ch=getchar() != '\n'),少了半个括号,while((ch=getchar()) != '\n')
加上之后就对了。
先将getchar获取的键盘输入字符赋值给ch,然后判断该字符是不是'\n',若不是的话,则进行循环。ch为键盘输入的字符
第二种写法:while(ch=getchar() != '\n'),因为优先级问题,会先进行不等于判断,然后在将判断结果赋值给ch,ch为0或1
两种写法都能达到非'\n'即循环的目的,但是ch值不一样,第一种写法,ch为键盘输入的字符,第二种写法,ch为0或1
'\n'为回车,这是语法规定。 sunrise085 发表于 2020-8-4 21:32
第一种写法:while((ch=getchar() != '\n'),少了半个括号,while((ch=getchar()) != '\n')
加上之后就对 ...
可以 谢谢老铁 学编程的盆子 发表于 2020-8-4 21:31
while ((ch = getchar()) != '\n')
和while (ch = getchar() != '\n')
。 sunrise085 发表于 2020-8-4 21:32
第一种写法:while((ch=getchar() != '\n'),少了半个括号,while((ch=getchar()) != '\n')
加上之后就对 ...
#include <stdio.h>
#include <string.h>
#define NUM 128
int main()
{
int ch, i, j = 0, max = 0;
int input_num = 0;
int ascii = {0};
char count = "";
printf("请输入英文文本:");
while ((ch = getchar()) != '\n')
{
ascii++; // 字符对应的ASCII码加1
input_num++;
}
这里的ascii++ 是啥意思啊 ch不是存储的字符吗,怎么又变成ascii码了 这里看不懂 大佬解释一下 学编程的盆子 发表于 2020-8-4 21:47
这里的ascii++ 是啥意思啊 ch不是存储的字符吗,怎么又变成ascii码了 这里看不懂 大佬解释一下
C语言中char类型实际上也是整型的一部分,每个字符都有对应的ASCII码值。
例如你输入的是'a' ,那么ch='a','a'的ASCII码值是97,这里就是 ascii++
每输入一个字符,在数组ascii[]中与该字符ASCII码值对应下标的值就会自加一,这就达到了统计的目的。
例如输入一串字符之后,ascii自加了五次,ascii=5,说明你输入的字符串中有5个ASCII码值为35的字符,ASCII码值为35的字符是#,也就是你输入了五个#。其他字符也一样 sunrise085 发表于 2020-8-4 21:55
C语言中char类型实际上也是整型的一部分,每个字符都有对应的ASCII码值。
例如你输入的是'a' ,那么ch=' ...
懂了 char好像小甲鱼也说到了是特殊的整型 然后这样理解嗯嗯 sunrise085 发表于 2020-8-4 21:55
C语言中char类型实际上也是整型的一部分,每个字符都有对应的ASCII码值。
例如你输入的是'a' ,那么ch=' ...
#include <stdio.h>
#include <string.h>
#define NUM 128
int main()
{
int ch, i, j = 0, max = 0;
int input_num = 0;
int ascii = {0};
char count = "";
printf("请输入英文文本:");
while ((ch = getchar()) != '\n')
{
ascii++; // 字符对应的ASCII码加1
input_num++;
}
for (i = 0; i < NUM; i++)
{
if (ascii)
{
count = i;
if (ascii > ascii)
{
max = i;
}
}
}
printf("你总共输入了%d个字符,其中不同的字符个数有%d个。\n", input_num, strlen(count));
printf("它们是:%s\n", count);
printf("出现次数最多的字符是\'%c\',它总共出现了%d次。\n", max, ascii);
return 0;
}
这个for开始又给我整懵了 我理解他不是从i=0开始,然后如果ascii 有值,那这里的i比如说等于97,也就是你刚说的a。下面他又 count=i;就这里给我整懵了 。你看下我前面说的对不对头 学编程的盆子 发表于 2020-8-4 22:21
#include
#include
看看这个帖子吧。我写的比较详细。你应该能看懂
页:
[1]