C While语句不起作用
我正在学习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
//
// 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语句。