楼上的错了,题目是要求按从小到大排序,而你是从大到小排。代码如下,错哪都指出来了
#include
#include
int main ()
{
int f1(int a);
void f2(int c[10]); //不需要又返回值
int i,b[10],c[10]={0},j=0,n; //j=0
for (i=0;i<10;i++)
scanf ("%d",&b[i]);
for (i=0;i<10;i++)
{
n=f1(b[i]);
if (n==1)
{
c[j]=b[i];
j++;
}
}
f2(c);
for (i=0;i<10;i++)
if (c[i]!=0)
printf("%d\t",c[i]);
return 0;
}
int f1(int a)
{
int n,i;
for (i=2;i<=sqrt(a);i++)
{
if (a%i==0)
break;
}
if (i>sqrt(a))
n=1;
else
n=0;
return n;
}
void f2(int c[10])
{
int i,j,l;
for (i=0;i<10;i++)
{
for (j=1;j<10-i;j++) //是j<10-i,而不是j if (c[j]
l=c[j];
c[j]=c[j-1];
c[j-1]=l;
}
}
}
#include
#include
int main ()
{
int f1(int a);
int f2(int c[10]);
int i,b[10],c[10]={0},j,n;
for (i=0;i<10;i++)
scanf ("%d",&b[i]);//这里不需要&。因为它本身就是地址
for (i=0;i<10;i++)
{
n=f1(b[i]);
if (n==1)
{
c[j]=b[i];
j++;
}
}
c[10]=f2(c);
for (i=0;i<10;i++)
if (c[i]!=0)
printf("%d\t",c[i]);
return 0;
}
int f1(int a)//这个函数是求是不是素数的?
{
int n,i;
for (i=2;i<=sqrt(a);i++)//sqrt是求平方根的,你不要用在这。这个函数传进来的只有一个元素,不要用循环。
{
if (a%i==0 break;
}
if (i>sqrt(a))
n=1;
else
n=0;
return (n);
}
int f2(int c[10])
{
int i,j,l;//不对!
for (i=0;i<10;i++)//改成for (i=0;i<9;i++)
{
for (j=1;j if (c[j]
l=c[j];
c[j]=c[j-1];
c[j-1]=l;
}
}
return (c[10]);//不能返回一个数组,只能返回一个元素。你可以用void形的写。数组作参数,形参被改实参也会跟着变。
}
,最好买本纸书,边写边翻书,进步会很快
#include
#include
int f1(int a)
{
int n,i;
for (i=2;i<=sqrt(a);i++)
{
if (a%i==0)
break;
}
if (i>sqrt(a))
n=1;
else
n=0;
return (n);
}
void f2(int c[10])
{
int i,j,l;
for (i=0;i<10;i++)
{
for (j=1;j if (c[j]
l=c[j];
c[j]=c[j-1];
c[j-1]=l;
}
}
}
int main ()
{
int i,b[10],c[10]={0},j=0,n;
for (i=0;i<10;i++)
scanf ("%d",&b[i]);
for (i=0;i<10;i++)
{
n=f1(b[i]);
if (n==1)
{
c[j]=b[i];
j++;
}
}
f2(c);
for (i=0;i<10;i++)
if (c[i]!=0)
printf("%d\n",c[i]);
getch();
}
void f2(int c[10])
{
int i,j,l;
for (i=0;i<9;i++)
{
for (j=i + 1;j<10;j++)
if (c[i]
l=c[j];
c[j]=c[i];
c[i]=l;
}
}
}