2010-11-22 27 views
0

print_repeat dizgiyi s yazdırmalı, ancak ith karakterini i tekrarlayın (1'de saymaya başlayarak).
Yani print_repeat ("Bu") sizin print_repeat kodundaBu print_repeat işleviyle ilgili sorun nedir?

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

Bu, star_vowels'dir. Print_repeat' nerede? – kennytm

+1

Ben KennyTM nin nod, ama ben çoğunlukla işaret etmek istiyorum lütfen - void main() 'kullanmayın. Standart uygun değil. – birryree

+0

Üzgünüz, yanlış kod yakalanmış –

cevap

3

bul aşağıda doğru kod:

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

ana sorunlar vardı: 1. i döngünün içinde 2. Değişken j doğru artırılır iken 3. hemen sonra Orada noktalı virgülle edilir değişkeni artırma Değil yanlış olan süre.

Öneri: kodunuzu hata ayıklamayı deneyin. Bu daha hızlı öğrenmenize yardımcı olacaktır.

+0

neden 1’ten başlamıyor? ve koşulu j <= i olarak değiştirin. –

+0

@Fahad, 0 olmalı? Aksi halde dizenin ilk karakterini basamayız. J'yi 0'dan başlatmak ve koşulu j <= i olarak değiştirmek istiyorsunuz. Sanırım bu zararsız olmalı. – Jay

+0

@jayI, i = 1. için bilgi vermeye başladı. –

2

thhiiissss yazdırmalısınız, asla sonsuz döngüler yol açacak olan, sizin while döngü içinde i artırır.

0

"i ++;" ifadesini ekleyin. while döngüsünün sonunda.

İlgili konular