Iha*_*asi -1 c runtime-error function calculator
我正在尝试使用 C 语言做一个简单的计算器。我创建了 4 个函数,分别执行加法、乘法、减法和除法。但是,当我调用主函数中的函数时,它们无法正常工作。即使我输入“+”、“-”、“/”,结果也总是相乘。这里可能有什么问题?
一些单词的翻译要清楚:arti = 加、eksi = 减、carpi = 交叉、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);
}
}
Run Code Online (Sandbox Code Playgroud)
你有两个主要问题:
首先,该数组是一个零islem元素数组,它不能容纳任何内容,更不能容纳以空结尾的字符串
第二个问题是,您读取单个字符,并在将其传递给函数时尝试将其用作以 null 结尾的字符串strcmp(str前缀意味着它处理以 null 结尾的字符串)。
为了解决这些问题,制作islem一个单一的角色:
char islem;
Run Code Online (Sandbox Code Playgroud)
并使用scanf传递指针来读取它:
scanf(" %c", &islem);
Run Code Online (Sandbox Code Playgroud)
然后使用普通比较运算符进行比较:
if (islem == '+') {
toplama(sayiBir, sayiIki, sonuc);
}
Run Code Online (Sandbox Code Playgroud)
另一方面,您不需要该sonuc变量,也不应该将其传递给函数。相反,该函数可以在本地定义result变量:
void carpim(int numOne, int numTwo){
int result = numOne * numTwo;
printf("Sonuc: %d", result);
}
Run Code Online (Sandbox Code Playgroud)
而且您实际上也不需要该result变量:
void carpim(int numOne, int numTwo){
printf("Sonuc: %d", numOne * numTwo);
}
Run Code Online (Sandbox Code Playgroud)