我正在嘗試使用 C 做一個簡單的計算器。我創建了 4 個函式,分別是加法、乘法、減法和除法。但是,當我呼叫 main 函式中的函式時,它們無法正常作業。即使我輸入“ ”、“-”、“/”,結果也總是相乘。這里可能有什么問題?
一些詞的翻譯要清楚: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);
}
}
uj5u.com熱心網友回復:
你有兩個主要問題:
第一個是陣列
islem是一個零元素陣列,它不能容納任何東西,更不用說以空結尾的字串第二個問題是您讀取單個字符,并在將其傳遞給
strcmp函式時嘗試將其用作以空字符結尾的字串(str前綴表示它處理以空字符結尾的字串)。
要解決這些問題,請制作islem一個字符:
char islem;
并使用scanf傳遞指標讀取它:
scanf(" %c", &islem);
然后使用普通比較運算子進行比較:
if (islem == ' ') {
toplama(sayiBir, sayiIki, sonuc);
}
另一方面,您不需要該sonuc變數,也不應將其傳遞給函式。相反,該函式可以在result本地定義變數:
void carpim(int numOne, int numTwo){
int result = numOne * numTwo;
printf("Sonuc: %d", result);
}
而且你也不需要這個result變數:
void carpim(int numOne, int numTwo){
printf("Sonuc: %d", numOne * numTwo);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/409616.html
標籤:
下一篇:滾動日期生成
