王默涵592
2021-11-25 19:20
采纳率: 0%
浏览 62

c语言关于输入非法字符时的情况

#include<stdio.h>

int main()
{
int i,j,n;
char c1,c2;
printf("请输入一个字母:");
while(scanf("%c",&c2)!=((c2>='a'&&c2<='z')||(c2>='A'&&c2<='Z')) )
{
printf("请输入一个字母:");
scanf("%c",&c2);
}
c1=c2;
if (c1>='a'&&c1<='z')
{
for(i=1;i<=c2-'a'+1;i++)
{
for(j=1;j<=i;j++)
{
for(n=1;n<j;n++)
c1-=1;
printf("%c",c1) ;
c1=c2;
}
printf("\n") ;
}
}
else if(c1>='A'&&c1<='Z')
{
for(i=1;i<=c2-'A'+1;i++)
{
for(j=1;j<=i;j++)
{
for(n=1;n<j;n++)
c1-=1;
printf("%c",c1);
c1=c2;
}
printf("\n");
}
}
return 0;
}

img

#include<stdio.h>

int main()
{
int i,j,n;
char c1,c2;
printf("请输入一个字母:");
scanf("%c",&c2);
while(!(c2>='a'&&c2<='z')&&!(c2>='A'&&c2<='Z') )
{
printf("请输入一个字母:");
scanf("%c",&c2);
}
c1=c2;
if (c1>='a'&&c1<='z')
{
for(i=1;i<=c2-'a'+1;i++)
{
for(j=1;j<=i;j++)
{
for(n=1;n<j;n++)
c1-=1;
printf("%c",c1) ;
c1=c2;
}
printf("\n") ;
}
}
else if(c1>='A'&&c1<='Z')
{
for(i=1;i<=c2-'A'+1;i++)
{
for(j=1;j<=i;j++)
{
for(n=1;n<j;n++)
c1-=1;
printf("%c",c1);
c1=c2;
}
printf("\n");
}
}
return 0;
}

img

为什么这两种代码,当输入非法字符时,输出的结果不一样?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • CSDN专家-link 2021-11-25 19:26

    while(scanf("%c",&c2)!=((c2>='a'&&c2<='z')||(c2>='A'&&c2<='Z')) )
    {
    printf("请输入一个字母:");
    scanf("%c",&c2);
    }
    这样当第一次输入一个字符不符合要求时,后续会执行两遍scanf语句的。而第二种就不会

    编辑记录

    评论
    解决 无用
    打赏 举报
  • 蒟蒻 shenben 2021-11-25 19:27

    非运算优先级最高,比与运算优先级高

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题