我正在嘗試編寫一個C++程序,用非重複的字母從a-z(ascii代碼97到122)打印一個隨機的10個字母的字符串。我寫過這段代碼,有時可以完美運行,但while循環無限運行的大部分時間。 問題在哪裏?如何打印非重複字母的隨機字符串?
(編輯:在同時開始設置標誌= 0解決了這個問題)
void randomstring()
{int i,j,flag=1;
char x, s[20]=" ";
srand(time(0));
for(i=0;i<10;i++)
{flag=1; //ensure entry into while
while(flag)
{x=rand()%26+97; //get random letter from a-z
for(j=0;j<10;j++)
{if(x==s[j]) //match with existing letters
flag=2; //if matched, try again
}
if(flag!=2)
{s[i]=x; //if doesn't match, add to string
flag=0; //exit while
}
}
}
cout<<s;
}
[可能的重複](http://stackoverflow.com/questions/41015311/picking-about-random-character-without-repetition-c) – izlin
使用循序漸進的調試 –