超级无敌简单
#include <stdio.h>#define MAX 1024
int main()
{
char str;
char *target = str;
char ch;
int length = 0;
printf("请输入一个字符串:");
fgets(str, MAX, stdin);
while (1)
{
ch = *target++;
if (ch == '\0')
{
break;
}
A: if ((int)ch < 0)
{
target += 2;
B: }
length++;
}
printf("您总共输入了 %d 个字符!\n", length - 1);
return 0;
}
//哪个A到B是什么意思?是字符型中文转换成整型,就是个负数吗?一个汉字占几个字节?算几个字符? 本帖最后由 jackz007 于 2020-11-26 10:44 编辑
在 GBK 编码方案中每个中文字符占用 2 个字节,两个字节的编码值都大于 127,如果保存字符的变量定义使用的是 char,那么,每个中文字节的编码值都一定是负值。建议用 unsigned char 来定义用于保存字符的变量类型,这样,就不会出现负值编码了。
A、B 在程序中没有什么作用,反而会报错
一个中文汉字占两个字节
此程序输入中文时,统计的字符数目是不正确的。我将键盘上的每一个键(除 Z 键外,对应的每一个五笔汉字输入进去),一共25个,可此程序统计只有16个汉字 风过无痕1989 发表于 2020-11-26 10:41
A、B 在程序中没有什么作用,反而会报错
一个中文汉字占两个字节
此程序输入中文时,统计的字符数目是不 ...
但是这个是小甲鱼的题啊,他的答案就是这样S1E22里面动动手的一道题 jackz007 发表于 2020-11-26 10:40
在 GBK 编码方案中每个中文字符占用 2 个字节,两个字节的编码值都大于 127,如果保存字符的变量定义 ...
谢谢,懂了,但是哪个A和B表示了什么 严凯 发表于 2020-11-26 13:21
但是这个是小甲鱼的题啊,他的答案就是这样S1E22里面动动手的一道题
我又去 S1E22 看了,没有看到他在哪个程序里,有 A 和 B 严凯 发表于 2020-11-26 13:21
谢谢,懂了,但是哪个A和B表示了什么
A: 和 B: 应该是语句标号,是专门给 goto 语句当目标的,可是,代码中又找不到 goto 语句,那么,这两个标号就没有意义了。估计借用的是其它源代码文件,修改的时候忘记删除了。 jackz007 发表于 2020-11-26 14:06
A: 和 B: 应该是语句标号,是专门给 goto 语句当目标的,可是,代码中又找不到 goto 语句,那么 ...
额,我的A和B就是我私自加的,对代码是没有作用的,就是想告诉大家,我哪里不懂 严凯 发表于 2020-11-26 14:34
额,我的A和B就是我私自加的,对代码是没有作用的,就是想告诉大家,我哪里不懂
有不明白的地方,用双斜杠在语句后面说明,不要在程序中添加任何字符、标记,这样会查找问题带很多麻烦
,我试了一下,分别输入数字、英文字母、键盘非字母字符及中文,只有 ch 接收中文时,ch < 0 ,可以说明:ch < 0 就是统计中文字符的 风过无痕1989 发表于 2020-11-26 23:24
有不明白的地方,用双斜杠在语句后面说明,不要在程序中添加任何字符、标记,这样会查找问题带很多麻烦
...
好的,大佬,他那个target+2,是不是因为一个汉族占两个字节 严凯 发表于 2020-11-27 19:19
好的,大佬,他那个target+2,是不是因为一个汉族占两个字节
应该是吧。
老实说,为了你的 A 和 B,我不得不去购买上题,费上了 10 个鱼币(虽然我不缺鱼币,但也没必要去消费这种非必要的消费) 风过无痕1989 发表于 2020-11-27 20:18
应该是吧。
老实说,为了你的 A 和 B,我不得不去购买上题,费上了 10 个鱼币(虽然我不缺鱼币,但也没 ...
我的错我的错,{:10_254:},哈哈哈哈哈
页:
[1]