帮我看看这个函数哪错了

来源:百度知道 编辑:UC知道 时间:2024/05/29 16:13:08
#include<stdlib.h>
#include<stdio.h>
main()
{
int a[6],n,s,k;
srand( (unsigned int) time(NULL) );
for(n=0;n<=5;n++)
{
a[n]=rand()%33+1;
if(a[n]!=a[n-1])
{
if(a[n]>a[n-1])
{
k=a[n];
a[n]=a[n-1];
a[n-1]=k;
}
printf("%d ",a[n]);
}
}
printf("\n\n\n\n\n\n\n\n");
s=rand()%16+1;
printf("%d",s);
getch();

}

呵呵,明眼人一看就知道我这个函数是干嘛的。

现在的问题是它总是产生相同的数,难道这个if(a[n]!=a[n-1])没用?
请问怎么改正?

谢谢啦!

我还真没看出这个函数的作用。。
不过楼主,你的n从0开始,而if语句里有a[i-1],下标越界了,所以不对
所以你可以先将a[0]的值确定,然后让n从1开始循环
如下
a[0]=rand()%33+1;
printf("%d ",a[0]);
for(n=1;n<=5;n++)
{
a[n]=rand()%33+1;
if(a[n]!=a[n-1])
{
if(a[n]>a[n-1])
{
k=a[n];
a[n]=a[n-1];
a[n-1]=k;
}
printf("%d ",a[n]);
}
}

#include<stdlib.h>
#include<stdio.h>
#include<time.h>。。。。。。。。。。。
void main() 。。。。。。。。。。。。。。。。

{
int a[6],n,s,k;
srand( (unsigned int) time(NULL) );
for(n=0;n<=5;n++)
{
a[n]=rand()%33+1;
if(a[n]!=a[n-1])
{
if(a[n]>a[n-1])
{
k=a[n];
a[n]=a[n-1];
a[n-1]=k;
}
printf("%d ",a[n]);
}
}
printf("\n\n\n\n\n\n\n\n");
s=rand()%16+1;
printf("%d",s);