关于while函数使用异常
代码1,输入时无法处理第一个字符,如输入:ASDasd,打印结果:AsdASD#include <stdio.h>
int main()
{
char name;
int i=0,count=32;
printf("请输入一行英文句子:\n");
scanf("%s",name);
while(name!='\0')
{
if(name>='A'&&name<='Z')
{
name=name+32;
}
else if(name>='a'&&name<='z')
{
name=name-32;
}
}
printf("%s\n",name);
return 0;
}
代码2:无法处理第一个字符,如输入A,结果为0,但输入aA时,结果为1.
#include <stdio.h>
int main()
{
char name;
int i=0,count=0;
printf("请输入一行英文句子:\n");
scanf("%s",name);
while(name!='\0')//字符串以\0结尾,当name=='\0'字符串结束
{
if(name>='A'&&name<='Z')
{
count++;
}
}
printf("有%d个大写字母!\n",count);
return 0;
}
求助:程序错误的原因是什么?如何解决? 因为在 while 判断那块 i 就加了 1,所以 i 会从 1 开始 本帖最后由 baige 于 2020-8-3 14:20 编辑
#include <stdio.h>
int main()
{
char name;
int i=-1,count=32;
printf("请输入一行英文句子:\n");
scanf("%s",name);
while(name[++i]!='\0')
{
if(name>='A'&&name<='Z')
{
name = name+32;
}
else if(name>='a'&&name<='z')
{
name=name-32;
}
}
printf("%s\n",name);
return 0;
}
#include <stdio.h>
int main()
{
char name;
int i=0,count=0;
printf("请输入一行英文句子:\n");
scanf("%s",name);
while(name!='\0')//字符串以\0结尾,当name=='\0'字符串结束
{
if(name>='A'&&name<='Z')
{
count++;
}
i++;
}
printf("有%d个大写字母!\n",count);
return 0;
}
#include <stdio.h>
int main()
{
char name;
int i=0,count=32;
printf("请输入一行英文句子:\n");
scanf("%s",name);
while(name!='\0')
{
if(name>='A'&&name<='Z')
{
name = name+32;
}
else if(name>='a'&&name<='z')
{
name=name-32;
}
++i;
}
printf("%s\n",name);
return 0;
}
本帖最后由 baige 于 2020-8-3 14:18 编辑
我突然发现自己的错误了,while里面先判断name , 接着i++导致0没有判断是否是大写
第一题,第二题都是这个原因 baige 发表于 2020-8-3 14:13
我突然发现自己的错误了,while里面先判断name , 接着i++导致0没有判断是否是大写
第一题,第二题都是这 ...
ok,完全明白了
页:
[1]