2010-11-22 102 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循环的末尾。