所以我有一個作業,其中有一個問題,要求你構造一個 5 行 4 列的二維陣列,每個陣列都包含成績。該問題要求您確定有多少成績小于 60,介于 60 和 70 之間等等(直到 100)。問題是當我嘗試搜索它時,總成績應該只有 20 個,但我的解決方案給出了一些牽強的數字,比如 60,000 或其他。我不知道我的代碼有什么問題。我使用了兩個 for 回圈來搜索陣列。附上我試過的。非常感謝您的幫助
#include <stdio.h>
int main(){
double grades[5][4] = {
{69, 58, 95, 78},
{84, 75, 86, 32},
{75, 68, 65, 73},
{99, 54, 24, 88},
{65, 78, 84, 65}
};
int lessthan60, sixtyseventy, seventyeighty, eightyninety, greaterthan90;
for (int r = 0; r < 5; r ){
for (int c=0; c < 4; c ){
if (grades[r][c] < 60){
lessthan60 ;
}
else if (grades[r][c] >=60 && grades[r][c] < 70){
sixtyseventy ;
}
else if (grades[r][c] >=70 && grades[r][c] < 80){
seventyeighty ;
}
else if (grades[r][c] >=80 && grades[r][c] < 90){
eightyninety ;
}
else{
greaterthan90 ;
}
}
}
printf("Grades less than 60: %d\n", lessthan60);
printf("Grades between 60 and 70: %d\n", sixtyseventy);
printf("Grades between 70 and 80: %d\n", seventyeighty);
printf("Grades between 80 and 90: %d\n", eightyninety);
printf("Grades between 90 and 100: %d\n", greaterthan90);
return 0;
}
uj5u.com熱心網友回復:
這些變數具有自動存盤期限
int lessthan60, sixtyseventy, seventyeighty, eightyninety, greaterthan90;
未初始化并且具有不確定的值。您必須明確地將它們初始化為零
int lessthan60 = 0, sixtyseventy = 0, seventyeighty = 0, eightyninety = 0, greaterthan90 = 0;
此外,如果陳述句可以寫得更簡單,比如
if (grades[r][c] < 60){
lessthan60 ;
}
else if ( grades[r][c] < 70){
sixtyseventy ;
}
else if ( grades[r][c] < 80){
seventyeighty ;
}
else if ( grades[r][c] < 90){
eightyninety ;
}
else{
greaterthan90 ;
}
此外,最好使用命名常量而不是幻數 4 和 5,例如
enum { ROWS = 5, COLS = 4 };
double grades[ROWS][COLS] = {
{69, 58, 95, 78},
{84, 75, 86, 32},
{75, 68, 65, 73},
{99, 54, 24, 88},
{65, 78, 84, 65}
};
//...
for (int r = 0; r < ROWS; r ){
for (int c=0; c < COLS; c ){
//...
uj5u.com熱心網友回復:
這樣,您就從垃圾值開始。
您需要將小于 60、六十七、七十八、八十九、大于 90 的計數器初始化為零。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/405246.html
標籤:
上一篇:始終讀取一個If-Else陳述句
