撰寫一個 C 或 C 程式,從用戶那里讀取 10 個字符,然后搜索字符“z”的位置。
怎么做?
#include <stdio.h>
#include <string.h>
#define X 100
int main()
{
char s1[X];
for(int i = 0; i < 10; i )
{
printf("Char %d = ", i 1);
scanf("%s", s1);
}
printf("Char Z index =");
int index;
char y = 'z';
for(int i = 0; i<10; i )
{
if(s1[i] == y)
index=i;
// return;
}
printf("%d",index);
}
它應該告訴我字符 z 的位置
uj5u.com熱心網友回復:
以下 C 程式提示用戶最多輸入N= 10 個字符。它讀取這些字符并將它們存盤在一個char長度N 1為 11 的陣列中(額外的字符以使字串以空值結尾,這是標準庫函式通常假定的那種字串)。
它還使用一個N-elementindices布爾陣列來記錄訊息的位置 0、1、...N是否有 a z。
當程式一次讀取一個字符時,它可以修改indices如果它讀取一個z.
最后,它輸出輸入的訊息以及字符的位置z。
我希望這有幫助。如果有任何問題或您想要別的東西,請告訴我。
#include <stdio.h>
#include <string.h>
#include <stdbool.h> /* C99 or above */
#define N 10
int main(void) {
int ch, i = 0;
char message[N 1];
bool indices[N] = {false};
printf("Please enter up to 10 characters: ");
/* read a line of input (max 10 characters) */
while ((ch = getchar()) != '\n' && ch != EOF)
if (i < N) {
if (ch == 'z')
indices[i] = true;
message[i ] = ch;
}
/* null terminate the string */
message[i] = '\0';
printf("The message entered: %s\n", message);
printf("Positions of character 'z': ");
for (i = 0; i < N; i )
if (indices[i])
printf("%d, ", i);
printf("\n");
return 0;
}
輸出:
Please enter up to 10 characters: zgreeziozz
The message entered: zgreeziozz
Positions of character 'z': 0, 5, 8, 9,
uj5u.com熱心網友回復:
我不明白您的問題是否需要您一次取 10 個字符或全部一起取。如果您必須將它們全部放在一起,您可以更簡單地使用:gets(s1);. 而且您的編譯器可能會給您一個錯誤,正如您int i在 for其中定義的那樣,您只能在 C99 或 C11 模式下使用。另外要檢查 z 是否存在于字串中,我建議您這樣做:if (s1 == 'z').
此外,您不能以這種方式輸入單個字符,因為每次輸入下一個字符時,前一個字符將被自動洗掉,您會將新字符重新定位到第一個位置。
接下來我建議你flag==0在for條件中添加一個,這樣一旦if條件成立,true我們就可以分配flag=1;并退出回圈,而無需繼續搜索我們已經找到的東西。
總之:
flag=0;
for(i = 0; i<10&&flag==0; i ){
if(s1[i]=='z')
index=i;
flag=1;
// return;
}
printf("%d\n",index);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/456852.html
標籤:C
上一篇:為什么靜態鏈接的“helloworld”程式如此之大(超過650KB)?
下一篇:遍歷陣列的一部分
