本帖最后由 桃花飞舞 于 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;
}
|