我的代码:
ClassB
它随机给了我一些字母,但我无法弄清楚如何随机完成总结。
替换必须在5-10之间。
例如:
答案 0 :(得分:1)
您每次都会获得相同的输出,因为您没有播种随机数生成器。您需要致电srand
来执行此操作。否则,它总是使用1的种子。
此外,您获得的y
的值将介于7 - 10而不是5 - 10.为此,请使用y=5+rand() % 6;
。
最后,word
不足以容纳10个字符的字符串。您需要使大小11为NULL终止符腾出空间。此外,生成单词后,您需要手动添加NULL终止符。
完成上述操作后,您的代码应如下所示:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
int main()
{
int z,x,y=0;
char word[11];
srand(time(NULL) ^ getpid());
for(z=0; z <1; z++)
{
y=5+rand() % 6;
for(x=0; x<y ; x++){
word[x]= rand()%26+'a';
}
word[y] = '\0';
printf("%s\n\n",word);
}
}
答案 1 :(得分:0)
在调用rand()
函数之前,您应该使用
srand(time(NULL));
在循环之前。
然后做:
y=5+rand() % 6;
对于你的第二个循环,它应该在5-10之间ramdomize y
。
问候。
答案 2 :(得分:0)
对您的计划进行一些更正:
#include <stdio.h>
#include <stdlib.h>
#include <time.h> // required for srand() seed
int main(void) // correct function signature
{
int z, x, y=0;
char word[11]; // increase array size to allow for \0
srand((unsigned)time(NULL)); // call once at the start of the program
for(z=0; z<3; z++)
{
y = 5 + rand() % 6; // gives result between 5 and 10
for(x=0; x<y; x++){
word[x]= rand() % 26 + 'a';
}
word[x] = '\0'; // terminate the string
printf("%s\n",word);
}
return 0; // return value from main()
}
节目输出:
rpaelg
pglhhbgvvz
eakcs