【C语言】使用getchar接受字符为Y N来判断程序是否继续运行 但是不管输入什么 程序都会结束

C语言的作业题

使用getchar接受字符为Y N来判断程序是否继续运行 但是不管输入什么 程序都会结束

#include<stdio.h>

#include<math.h>
int main(){
int a,i;double b;
char c;
for(i=1;i<100;i++){
printf("请输入一个小于1000的正数:\n");
scanf("%d",&a);
if(a>0&&a<1000){
b=sqrt(a);
printf("您输入的数的平方根是%.0lf\n",b);
}
else
printf("您输入的数不在有效范围内,请重新输入\n");
printf("是否继续?(Y/N): ");
c=getchar();
getchar();
if(c='N')break;
}
}

程序没有语法错误,但是起不到判断的作用
加上if(c='Y')continue
输入Y 程序继续循环运行 输入N 程序退出循环并结束 输入其他值,程序无响应

scanf("%d",&a);之后加个getchar();
是if(c=='N')break; 判断是否相等是两个等号 == 一个=是赋值
你题目的解答代码如下:

#include <stdio.h>
#include <math.h>
int main()
{
    int a, i;
    double b;
    char c;
    for (i = 1; i < 100; i++)
    {
        printf("请输入一个小于1000的正数:\n");
        scanf("%d", &a);
        getchar(); //这里加getchar();
        if (a > 0 && a < 1000)
        {
            b = sqrt(a);
            printf("您输入的数的平方根是%.0lf\n", b);
        }
        else
            printf("您输入的数不在有效范围内,请重新输入\n");
        printf("是否继续?(Y/N): ");
        c = getchar();
        if (c == 'N') //判断是否相等是两个等号 == 一个=是赋值
            break;
    }
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

if(c='N')break;
改为
if(c=='N')break;
============
=是赋值,==才是判断是否相等

#include<stdio.h>
#include<math.h>
int main(){
    int a,i;double b;
    char c;
    for(i=1;i<100;i++)
    {
        printf("请输入一个小于1000的正数:\n");
        scanf("%d",&a);
        if(a>0&&a<1000){
            b=sqrt(a);
            printf("您输入的数的平方根是%.0lf\n",b);
        }
        else
            printf("您输入的数不在有效范围内,请重新输入\n");
        printf("是否继续?(Y/N): ");
        getchar();
        c=getchar();
        if(c=='N')
            break;
    }
}

第一个错误:改成if (c == 'N')

第二个不规范:for(i=1;i<100;i++) 改成 for(;1 ;),或者用 while 或 do...while

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

已解决 谢谢