你好,所以我試圖計算我的 2D 字串中的所有元音。我的程式不斷給我錯誤的輸出,我不知道出了什么問題。這是我的代碼:
int main() {
char strings[3][50] = { "hello WORLD", "hELLO", "Hello" };
printf("%d \n", vowels_count_2D(3, 50, strings));
return 0;
}
int vowels_count_2D(const int rows, const int cols, char string[][cols]) {
for (int i = 0; i < rows; i ) {
int vowels = string[i][0];
for (int j = 0; j < cols; j ) {
if (string[i][j] == 'a' || string[i][j] == 'e' ||
string[i][j] == 'i' || string[i][j] == 'o' ||
string[i][j] == 'u' || string[i][j] == 'A' ||
string[i][j] == 'E' || string[i][j] == 'I' ||
string[i][j] == 'O' || string[i][j] == 'U') {
vowels ;
}
}
return vowels;
}
return 0;
}
輸出應該是7. 我的輸出是107. 為什么?
非常感謝。
uj5u.com熱心網友回復:
回圈邏輯不正確:vowels應該初始化到0外回圈外,return vowels;陳述句移到回圈體外。
這是一個修改后的版本:
#include <stdio.h>
int vowels_count_2D(const int rows, const int cols, const char string[][cols]) {
int vowels = 0;
for (int i = 0; i < rows; i ) {
for (int j = 0; j < cols; j ) {
if (string[i][j] == 'a' || string[i][j] == 'e' ||
string[i][j] == 'i' || string[i][j] == 'o' ||
string[i][j] == 'u' || string[i][j] == 'A' ||
string[i][j] == 'E' || string[i][j] == 'I' ||
string[i][j] == 'O' || string[i][j] == 'U') {
vowels ;
}
}
}
return vowels;
}
int main() {
char strings[3][50] = { "hello WORLD", "hELLO", "Hello" };
printf("%d\n", vowels_count_2D(3, 50, strings));
return 0;
}
與其掃描完整的 2D 陣列,不如在空終止符或每個字串處停下來:
#include <string.h>
int vowels_count_2D(const int rows, const int cols, char string[][cols]) {
int vowels = 0;
for (int i = 0; i < rows; i ) {
for (int j = 0; j < cols && string[i][j] != '\0'; j ) {
if (strchr("aeiouAEIOU", string[i][j])) {
vowels ;
}
}
}
return vowels;
}
uj5u.com熱心網友回復:
我的輸出是 107。為什么?
您只計算一行(由于過早return vowels),但從 的 ASCII 值開始h。您應該將該vowels計數器設定為0。
int vowels_count_2D(int rows, int cols,char string[][cols]) {
int vowels = 0;
for (int i=0; i<rows; i ) {
printf("V: %d\n", vowels);
for(int j=0; j<cols; j ) {
if(string[i][j] =='a'|| string[i][j]=='e'||string[i][j]=='i'||string[i]
[j]=='o'||string[i][j]=='u'||string[i][j]=='A'||string[i][j]=='E'||string[i]
[j]=='I'||string[i][j]=='O' ||string[i][j]=='U' )
{
vowels ;
}
}
}
return vowels;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/368300.html
