這是我班的作業之一,這是作業的目標:
撰寫一個程式,其輸入為一個字符和一個字串,其輸出表示該字符在字串中出現的次數。輸出應包括輸入字符并使用復數形式n's,如果字符出現的次數不完全是
1
。您可以假設該字串不包含空格,并且始終包含少于 50 個字符。
這是我到目前為止的代碼,我是 C 編程的新手,所以我還不知道如何正確宣告字串。到目前為止,我了解到 C 中沒有像 Java 中那樣的字串,您必須將它們作為字符陣列來執行:
#include <stdio.h>
#include <string.h>
int main(void) {
char userChar;
char userString[50];
int count = 0;
for (int i = 0; i < userChar; i ) {
if (userString[i] == userChar)
count ;
}
printf("%d", count);
if (count != 1)
printf("'s");
return 0;
}
例如,如果我想輸入n Monday
和輸出1 n
我需要在我的代碼中進行哪些更改才能n Monday
從1 n
這是我得到的唯一輸出,它只正確輸出了一件事:
0's
uj5u.com熱心網友回復:
首先,我希望這不是作弊:-)
其次,您需要將 userChar 和 userString 定義為 main 的引數,并在運行時傳遞它們。他們沒有被分配任何東西,所以這就是你得到的原因
0's
第三,你的for條件是錯誤的。你需要這個,所以它只遍歷字串的長度:
for (int i = 0; i < strlen(userString); i )
最后,您沒有在回傳之前列印 userChar 的值
uj5u.com熱心網友回復:
預期的輸出不是0's
,它應該包括計數的字符:例如,如果字符是n
和字串Monday
,輸出應該是
1 n
如果字串為Many Mondays
,則輸出為
2 n's
這是修改后的版本:
#include <stdio.h>
int main() {
char userChar;
char userString[50];
int i, count;
printf("Enter character: ");
scanf(" %c", &userChar);
printf("Enter string (single word): ");
// read a word with at most 49 characters
scanf(" Is", userString);
count = 0;
for (i = 0; userString[i] != '\0'; i ) {
if (userString[i] == userChar)
count ;
}
printf("%d %c", count, userChar);
if (count != 1)
printf("'s");
printf("\n");
return 0;
}
uj5u.com熱心網友回復:
首先你需要輸入一個字串和一個字符。要計算字串中字符的出現次數,可以使用標準字串函式strchr
。
該程式可能如下所示
#include <stdio.h>
#include <string.h>
int main(void)
{
char userChar = ' ';
char userString[50] = "";
printf( "Enter a string without embedded spaces\nof the length less than %d: ", 50 );
scanf( "Is", userString );
printf( "Enter a character to search in the string: " );
scanf( " %c", &userChar );
size_t n = 0;
for ( const char *p = userString; ( p = strchr( p, userChar ) ) != NULL; p )
{
n;
}
printf( "%zu%s %c\n", n, n < 2 ? "" : "'s", userChar );
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/494157.html
上一篇:如何判斷哈希的鍵是符號還是字串?
下一篇:操作JSON節點以具有[]括號