|
发表于 2021-10-7 09:59:46
|
显示全部楼层
回帖奖励 +5 鱼币
本帖最后由 桃花飞舞 于 2021-10-7 10:03 编辑
题目要求的是一个字符串,而getchar()是输入单个字符的函数。getchar()函数在我看来它是scanf的一个子集,getchar()只能输入单个的字符,根据你的代码共用了三次getchar()每个getchar都会读入一个字符包括比如:字母和回车,while中第一个getchar()读取一个字符,第二个getchar()读取一个字符,这两个字符是不同的所以这样写没意义,循环体中printf()里的getchar()是可以打印出一个字符。你可以输入两个字符后回车是给前两个getchar(),这时进入循环体此时再输入一次回车给到循环体中的getchar()。
针对题目我自己写了一个- #include <stdio.h>
- #include <malloc.h>
- int main()
- {
- int nums = 0,num = 0;
- char *p;
- p = (char *)malloc(10*sizeof(char));
- printf("请输入一行英文句子:");
- scanf("%s",p);
- //gets(p);
- while(p[nums]!='\0')
- {
- if(p[nums]>='A'&& p[nums]<='Z')
- {
- num++;
- printf("%c\n",p[nums]);
- }
- nums++;
- }
- printf("进入循环的次数:%d\n",nums);
- printf("大写字母的数目为:%d\n",num);
- return 0;
- }
复制代码 |
|