【发布时间】:2022-01-12 13:27:20
【问题描述】:
我正在尝试使用 C 来做一个简单的计算器。我已经创建了 4 个函数,分别是加法、乘法、减法和除法。但是,当我调用主函数中的函数时,它们无法正常工作。即使我输入“+”、“-”、“/”,结果也总是相乘。这里可能有什么问题?
一些词的翻译要清楚:arti = plus,eksi = minus,carpi = cross,bolum = 除,carpim = 乘,toplama = 加,cikartma = 减,bolme = 除
谢谢:)
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
int carpim(int numOne, int numTwo, int result){
result = numOne * numTwo;
printf("Sonuc: %d", result);
return 0;
}
int toplama(int numOne, int numTwo, int result){
result = numOne + numTwo;
printf("Sonuc: %d", result);
return 0;
}
int cikartma(int numOne, int numTwo, int result){
result = numOne - numTwo;
printf("Sonuc: %d", result);
return 0;
}
int bolme(int numOne, int numTwo, int result){
result = numOne / numTwo;
printf("Sonuc: %d", result);
return 0;
}
int main(){
char islem[0];
char arti[] = "+";
char eksi[] = "-";
char carpi[] = "x";
char bolum[] = "/";
int sayiBir;
int sayiIki;
int sonuc = 0;
printf("(+)\n(-)\n(x)\n(/)\nIstediginiz islemin sembolunu girin:");
scanf("%c", islem);
printf("Ilk sayiyi girin: ");
scanf("%d", &sayiBir);
printf("Ikinci sayiyi girin: ");
scanf("%d", &sayiIki);
if (strcmp(islem, arti)) {
toplama(sayiBir, sayiIki, sonuc);
}
else if (strcmp(islem, carpi)){
carpim(sayiBir, sayiIki, sonuc);
}
else if (strcmp(islem, eksi)){
cikartma(sayiBir, sayiIki, sonuc);
}
else if (strcmp(islem, bolum)){
bolme(sayiBir, sayiIki, sonuc);
}
}
【问题讨论】:
-
您正在创建 char 数组 (char art[]) - 您确定要这样做吗?
-
char islem[0];创建一个零数组char。这不是 C 标准定义的,你的编译器应该警告你。注意你的编译器警告。islem至少需要两个char,一个用于从用户读取的字符,一个用于终止空字符,在与strcmp一起使用之前,您必须将其存储到islem[1]。或者您可以修改代码以比较单个char对象,而不是使用char的数组作为运算符。
标签: c function runtime-error calculator