嗨,我一直在努力解決這個問題,但我的意見一直被忽略,提前致謝
#include <stdio.h>
#include <stdlib.h>
int main(){
float a, b, a0, b0,i;
char ans;
printf("Fibonacci search method\n\nEnter the function:\n");
printf("\nEnter the intervals over which the Fibonacci method must be applied:\n");
for (i = 1; i <= 1; i ) {
printf("a0 = ", i);
scanf("%f", & a);
printf("bo = ", i);
scanf("%f", & b);
}
printf("Narrow down on either a maximiser or a minimiser (max/min): \n", ans);
scanf(" %c", &ans);
while(ans == 'max'){
printf("maximum selected");
}
printf("minimum selected");
return 0;
}
uj5u.com熱心網友回復:
首先,您將單個char與整體進行比較string,因此您需要修改ans變數宣告以使其成為字串,例如:
char ans[4]
請記住,這的最大大小為3. 如果您需要存盤更大的string,則需要修改它。
然后,在這樣做之后,使用 awhile進行比較是不正確的。最好實作一個if-else. 而且,在那里面,你所做的比較是錯誤的。您需要比較strings,而不是chars,因此您需要使用strcmp()函式,例如:
strcmp(ans,"max") == 0
如果此函式回傳 a 0,則表示兩個字串相等。
另一件事要評論的是,您需要修改您scanf的掃描一個string,而不是一個char,新的將是scanf("%3s", &ans);。
讓我再告訴你一件事。在for你使用不懂事。您正在使用for帶引數的i = 1; i <= 1; i 。這意味著i將啟動滿足條件的扣環來打破它,所以它只會被執行一次。換句話說,里面的代碼for只會被執行一次,不管它是在for.
無論如何,總而言之,這是您的新代碼:
int main(){
float a, b, a0, b0,i;
char ans[4];
printf("Fibonacci search method\n\nEnter the function:\n");
printf("\nEnter the intervals over which the Fibonacci method must be applied:\n");
for (i = 1; i <= 1; i ) {
printf("a0 = ", i);
scanf("%f", & a);
printf("bo = ", i);
scanf("%f", & b);
}
printf("Narrow down on either a maximiser or a minimiser (max/min): \n", ans);
scanf("%3s", &ans);
if(strcmp(ans,"max") == 0)
printf("maximum selected");
else
printf("minimum selected");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/348683.html
標籤:C
上一篇:檢查之前是否呼叫過函式
