2010-11-22 105 views
0

print_repeat應該打印出字符串s,但重複第i個字符i次(從1開始計數)。
所以print_repeat(「本」)應該打印thhiiissss這個print_repeat函數有什麼問題?

int print_repeat(char s[]){ 
    int i,j; 

    i = 0; 
    while (s[i] != '\0');{ 
     for (j = 1; j <= i+1; j+1){ 
      putchar(s[i]); 
     } 
    } 
    return 0; 
} 

void main() 
{ 
    print_repeat("this"); 
} 
+4

這是'star_vowels'。 'print_repeat'在哪裏? – kennytm 2010-11-22 07:51:45

+1

我第二次KennyTM的點頭,但我主要想指出 - 請不要使用'void main()'。這不符合標準。 – birryree 2010-11-22 07:54:56

+0

對不起,抓錯了代碼 – 2010-11-22 07:54:59

回答

3

在下面找到正確的代碼:

while (s[i] != '\0') 
    { 
     for (j = 1; j <= i+1; j++) 
     { 
     putchar(s[i]); 
     } 
    i++; 
    } 

的主要問題是: 1.不遞增變量i內的while循環 2.變量j不遞增正確右後 3.有分號這是不正確的。

建議:嘗試調試您的代碼。這會幫助你更快地學習。

+0

爲什麼不從1初始化我?並將條件改爲j <= i? – 2010-11-22 09:25:00

+0

@法哈德,我一定是0吧?否則,我們不能打印字符串的第一個字符。你的意思是從0初始化j並將條件改爲j <= i。我想那個應該是無害的。 – Jay 2010-11-22 11:21:05

+0

@jayI正在初始化i = 1。感謝您提供的信息。 – 2010-11-22 15:38:15

2

在你print_repeat代碼,你永遠在你的while循環增量i,這將導致無限循環。

0

add「i ++;」在while循環的末尾。