为什么我用C编写的计算器不工作?

vd8tlhqk  于 2023-04-11  发布在  其他
关注(0)|答案(3)|浏览(154)

我是C语言的新手,正在做一个很大的项目。我想做一个计算器,到目前为止我只有加法。他们的工作方式是,它要求在加法语句中需要多少个数字,然后我使用while()循环来获取所有信息。只是一些附带信息-我在Windows 10操作系统上使用Cygwin终端。

#include <stdio.h>

int main(){
        char Etype;
        printf("Hello! Welcome to your virtual calculator!\n");

        printf("Press 'a' for addition!\n");
        scanf("%c", &Etype);

        if(Etype == 'a' || Etype == 'A') {
                int Anum;
                int x = 1;
                int y;

                printf("How many numbers do you want in this addition statement?\n");
                scanf("%f", &Anum);

                while(x < Anum) {
                        printf("Emter number %d\n", x);
                        scanf("%d", &y);
                        x = x + 1;
                }
        }

}

每当我回答我想在我的陈述上写多少个数字时,什么也没有发生。我希望你能帮助我,如果是的话谢谢你!

j13ufse2

j13ufse21#

至少,你应该看看编译器警告,或者得到一个更好的编译器,看看编译器警告。

clang-7 -pthread -lm -o main main.c
main.c:16:29: warning: format specifies type 'float *' but the argument has type
      'int *' [-Wformat]
                scanf("%f", &Anum);
                       ~~   ^~~~~
                       %d
1 warning generated.
rslzwgfq

rslzwgfq2#

也许你只是忘了总结答案。
要输入整数,您应该使用%d而不是%f
此外,x应该用0初始化。
您可以将代码编辑为:

#include <stdio.h>

int main(){
        char Etype;
        printf("Hello! Welcome to your virtual calculator!\n");

        printf("Press 'a' for addition!\n");
        scanf("%c", &Etype);

        if(Etype == 'a' || Etype == 'A') {
                int Anum;
                int x = 0; // count from 0
                int y;
                int sum = 0; // to summary the answer

                printf("How many numbers do you want in this addition statement?\n");
                scanf("%d", &Anum); // use %d to input integer

                while(x < Anum) {
                        printf("Emter number %d\n", x);
                        scanf("%d", &y);
                        sum += y; // summary
                        x = x + 1; 
                }
                printf("Answer: %d\n", sum); // print the answer after calculation
        }

}

更清晰的版本:

#include <stdio.h>

int main(){
        char eType[2];

        printf("Hello! Welcome to your virtual calculator!\n");
        printf("Press 'a' for addition!\n");

        scanf("%s", eType);

        if(eType[0] == 'a' || eType[0] == 'A') 
        {
                int n, sum = 0;

                printf("How many numbers do you want in this addition statement?\n");
                scanf("%d", &n);

                for (int i = 0; i < n; i++)
                {
                        int x;

                        printf("Enter number %d\n", i);
                        scanf("%d", &x);
                        sum += x;
                }

                printf("Answer: %d\n", sum);
        }
}
eyh26e7m

eyh26e7m3#

我注意到你的代码不是那么容易阅读,尝试使用更容易命名的变量,比如Etype = operation,它使它对用户友好。
2.尝试添加更多操作符,如- / *
3.当你声明变量并且用户输入“add”时,你可以使用switch语句来只扫描a,比如:

switch(var){
case'a':

它将只扫描a,即使输入是“aquaman”“aeroplane”,它仍然会读取a
3.而不是在用于
声明一个i变量make this for语句

for(i=0; i>(number of numbers to entered+1);i++ )
printf("number: ");
scanf(...)

相关问题