Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C While语句不起作用_C_While Loop_Do While - Fatal编程技术网

C While语句不起作用

C While语句不起作用,c,while-loop,do-while,C,While Loop,Do While,我正在学习C语言,我正在尝试制作一个基本的计算器,但在使用while语句时遇到了一些问题。我尝试过多种方法,但它从不重复,只是完成了脚本 有什么想法吗 // // main.c // Calculator // // Created by Austen Patterson on 2013-06-27. // Copyright (c) 2013 Austen Patterson. All rights reserved. // #include <stdio.h> #inc

我正在学习C语言,我正在尝试制作一个基本的计算器,但在使用while语句时遇到了一些问题。我尝试过多种方法,但它从不重复,只是完成了脚本

有什么想法吗

//
//  main.c
//  Calculator
//
//  Created by Austen Patterson on 2013-06-27.
//  Copyright (c) 2013 Austen Patterson. All rights reserved.
//

#include <stdio.h>
#include <stdbool.h>

int main()
{
    int number[100];
    int operator = '0';
    int doAgainAnswer = '0';
    bool doAgain;
    do{ 
    printf("Please enter your first number:");
    scanf("%d", &number[1]);
    printf("\nYou entered %d as your first number. Please enter your second: ", number[1]);
    scanf("%d", &number[2]);
    printf("\nYou entered %d as your second number.", number[2]);
    printf("\nYour numbers are now %d and %d", number[1], number[2]);
    printf("\nNow enter your operator.\n1 for addition\n2 for subraction\n3 for multiplication\n4 for division.\n");
    scanf("%d", &operator);

    if(operator == 1){
        int finished = number[1] + number[2];
        printf("\n\n%d \+ %d is: %d", number[1], number[2], finished);

    }
    if(operator == 2){
        int finished = number[1] - number[2];
        printf("\n\n%d \- %d is: %d", number[1], number[2], finished);

    }
    if(operator == 3){
        int finished = number[1] * number[2];
        printf("\n\n%d \* %d is: %d", number[1], number[2], finished);

    }
    if(operator == 4){
        int finished = number[1] / number[2];
        printf("\n\n%d \/ %d is: %d", number[1], number[2], finished);
    }

        printf("\nWant to continue?\n 1 for Yes\n 2 for No\nAnswer: ");
        scanf("%d", &doAgainAnswer);
        if(doAgainAnswer == 1) {
          doAgain = '1';
        } else {
          doAgain = '0';

        }
    }while(doAgain == '1');
}
//
//main.c
//计算器
//
//奥斯汀·帕特森于2013年6月27日创作。
//版权所有(c)2013奥斯汀·帕特森。版权所有。
//
#包括
#包括
int main()
{
整数[100];
整型运算符='0';
int-doagainaswer='0';
布尔增益;
做{
printf(“请输入您的第一个号码:”);
scanf(“%d”和编号[1]);
printf(“\n您输入了%d作为第一个数字。请输入第二个:”,数字[1]);
scanf(“%d”和编号[2]);
printf(“\n您输入了%d作为第二个数字。”,数字[2]);
printf(“\n您的数字现在是%d和%d”,数字[1],数字[2]);
printf(“\n现在输入运算符。\n1表示加法\n2表示减法\n3表示乘法\n4表示除法。\n”);
scanf(“%d”、&运算符);
if(运算符==1){
int finished=编号[1]+编号[2];
printf(“\n\n%d\+%d为:%d”,编号[1],编号[2],已完成);
}
if(运算符==2){
int finished=编号[1]-编号[2];
printf(“\n\n%d\-%d为:%d”,编号[1],编号[2],已完成);
}
if(运算符==3){
int finished=编号[1]*编号[2];
printf(“\n\n%d\*%d为:%d”,编号[1],编号[2],已完成);
}
if(运算符==4){
int finished=编号[1]/编号[2];
printf(“\n\n%d\/%d为:%d”,编号[1],编号[2],已完成);
}
printf(“\n是否继续?\n 1表示“是”\n 2表示“否”\n答案:”);
scanf(“%d”&doagainswer);
如果(doAgainAnswer==1){
doAgain='1';
}否则{
doAgain='0';
}
}而(doAgain='1');
}
编辑的代码

#include <stdio.h>
#include <stdbool.h>

int main()
{
    int number[100];
    int operator = '0';
    int doAgainAnswer = 0;//edited
    int doAgain=0;//edited
    do{ 
    printf("Please enter your first number:");
    scanf("%d", &number[1]);
    printf("\nYou entered %d as your first number. Please enter your second: ", number[1]);
    scanf("%d", &number[2]);
    printf("\nYou entered %d as your second number.", number[2]);
    printf("\nYour numbers are now %d and %d", number[1], number[2]);
    printf("\nNow enter your operator.\n1 for addition\n2 for subraction\n3 for multiplication\n4 for division.\n");
    scanf("%d", &operator);

    if(operator == 1){
        int finished = number[1] + number[2];
        printf("\n\n%d \+ %d is: %d", number[1], number[2], finished);

    }
    if(operator == 2){
        int finished = number[1] - number[2];
        printf("\n\n%d \- %d is: %d", number[1], number[2], finished);

    }
    if(operator == 3){
        int finished = number[1] * number[2];
        printf("\n\n%d \* %d is: %d", number[1], number[2], finished);

    }
    if(operator == 4){
        int finished = number[1] / number[2];
        printf("\n\n%d \/ %d is: %d", number[1], number[2], finished);
    }

        printf("\nWant to continue?\n 1 for Yes\n 2 for No\nAnswer: ");
        scanf("%d", &doAgainAnswer);
        if(doAgainAnswer == 1) {
          doAgain = 1;//edited
        } else {
          doAgain = 0;//edited

        }
    }while(doAgain == 1);//edited
return 0;//edited
}
#包括
#包括
int main()
{
整数[100];
整型运算符='0';
int-doagainswer=0;//已编辑
int-doAgain=0;//已编辑
做{
printf(“请输入您的第一个号码:”);
scanf(“%d”和编号[1]);
printf(“\n您输入了%d作为第一个数字。请输入第二个:”,数字[1]);
scanf(“%d”和编号[2]);
printf(“\n您输入了%d作为第二个数字。”,数字[2]);
printf(“\n您的数字现在是%d和%d”,数字[1],数字[2]);
printf(“\n现在输入运算符。\n1表示加法\n2表示减法\n3表示乘法\n4表示除法。\n”);
scanf(“%d”、&运算符);
if(运算符==1){
int finished=编号[1]+编号[2];
printf(“\n\n%d\+%d为:%d”,编号[1],编号[2],已完成);
}
if(运算符==2){
int finished=编号[1]-编号[2];
printf(“\n\n%d\-%d为:%d”,编号[1],编号[2],已完成);
}
if(运算符==3){
int finished=编号[1]*编号[2];
printf(“\n\n%d\*%d为:%d”,编号[1],编号[2],已完成);
}
if(运算符==4){
int finished=编号[1]/编号[2];
printf(“\n\n%d\/%d为:%d”,编号[1],编号[2],已完成);
}
printf(“\n是否继续?\n 1表示“是”\n 2表示“否”\n答案:”);
scanf(“%d”&doagainswer);
如果(doAgainAnswer==1){
doAgain=1;//已编辑
}否则{
doAgain=0;//已编辑
}
}while(doAgain==1);//已编辑
返回0;//已编辑
}

将while条件更改为

while(doAgain==1)
在所有DOAGIN分配中,使用0或1


另一种方法是使用While(1)和break,当用户在Doagainswer中提示输入0时使用。

这样做了,但仍然不起作用。它现在继续代码,但没有完成:PAdd语句返回0。我已经尝试过了,并且运行良好。我已将以下代码添加到“继续”问题中,并且每次返回1<代码>printf(“\n是否继续?\n 1表示是\n 2表示否\n答案:”);scanf(“%d”&doagainswer);如果(doAgainAnswer==1){doAgain='1';printf(“doAgain另存为%d,doAgain”);}否则{doAgain='0';printf(“doAgain另存为%d,doAgain”);}代码中存在另一个oversite。行:int运算符='0';设置运算符=0x30十六进制,而不是0x00十六进制。在寻找退出条件时,可以对“1”和“0”的实例给出类似的考虑。您应该强烈地考虑使用开关情况,而不是重复的if语句。