用指针实现:由键盘输入10个整数,将他们按由小到大的顺序排列。 错在哪儿了?

#include <stdio.h>
#include <stdlib.h>
void sort(int a[],int n,int *s[])
{
int i,j,t,k;
for (i=0;i<n-1;i++)
for (j=i+1;j<n;j++)
if (a[i]>a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
*s[k]=a[i];
}
void sc(int x[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf("%3d",x[i]);
}
}
int main(void)
{
int x[10],n=10,i,k;
for (i=0;i<10;i++)
{
scanf("%d",&x[i]);
}
sort(x,n,&k);
sc(x,n);
printf("\n");
return 0;
}
用指针实现:由键盘输入10个整数,将他们按由小到大的顺序排列。
错在哪儿了?

#include&lt;stdio.h&gt;

void sort(int*s,int n);//定义排序函数

int main()

{

int a[10],*p;

printf("Please enter 10 nunmbers:");//输入10个整数

for(p=a;p&lt;a+10;scanf("%d",p++));

printf("Original number:");

for(p=a;p&lt;a+10;printf("%d",*p++));//输出原来输入的10个整数

printf("\n");

sort(a,10);//调用排序函数

printf("New number:");

for(p=a;p&lt;a+10;printf("%d",*p++));//输出排序后的10个整数

printf("\n");

return 0;

}

void sort(int*s,int n)

{

int*i,*j,t;

for(i=s;i&lt;s+n;i++)

for(j=i+1;j&lt;s+n;*i&lt;*j?t=*i,*i=*j,*j=t,j++:j++);

}

扩展资料:

return是C++预定义的语句,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值。

return 0代表程序正常退出。return是C++预定义的语句,它提供了终止函数执行的一种方式。当return语句提供了一个值时,这个值就成为函数的返回值。

return语句用来结束循环,或返回一个函数的值。

1、return 0,说明程序正常退出,返回到主程序继续往下执行。

2、return 1,说明程序异常退出,返回主调函数来处理,继续往下执行。return 0或return 1对程序执行的顺序没有影响,只是大家习惯于使用return(0)退出子程序而已。

参考资料:

百度百科——return

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-09
void sort(int a[],int n,int *s[]) 这里面s是个指针数组相当于int **s 是一个二级指针。sort(x,n,&k);中的&k只是一个一级指针。所以传参数的时候会出错
第2个回答  2010-12-16
#include <stdio.h>
#include <stdlib.h>
void sort(int *a[],int n)
{
int i,j,*t;
for (i=0;i<n;i++)
for (j=i+1;j<n;j++)
if (a[i]>a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
void sc(int x[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf("%d ",x[i]);
}
}
int main(void)
{
int *x[10],n=10,i;
for (i=0;i<10;i++)
{
scanf("%d",&x[i]);
}
sort(x,n);
sc(x,n);
printf("\n");
return 0;
}
第3个回答  2010-12-09
#include <stdio.h>
#include <stdlib.h>
void sort(int a[],int n)
{
int i,j,t;
for (i=0;i<n;i++)
for (j=0;j<n-i;j++)
if (a[i]>a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
void sc(int x[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf("%3d",x[i]);
}
}
int main(void)
{
int x[10],n=10,i;
for (i=0;i<10;i++)
{
scanf("%d",&x[i]);
}
sort(x,n);
sc(x,n);
printf("\n");
return 0;
}本回答被提问者和网友采纳
第4个回答  2010-12-10
int main()
{
int a[10];
int *p = a;
int *q;
int start_position;
int num;
int temp;
for( int i = 0; i < 10; i++ )
{
printf( "输入第%d个数:\n", i );
scanf( "%d", p++ );
}
printf( "输入开始位置:\n" );
scanf( "%d", &start_position );
printf( "输入要交换的数字的个数:\n" );
scanf( "%d", &num );
if ( start_position < 1 || num < 0 || start_position + num > 11 )
return 0;

printf( "交换前:\n" );
for ( int i = 0; i < 10; i++ )
printf( "%d ", a[i] );

p = a + start_position - 1;
q = p + num - 1;
for ( p; p != q ; p++, q-- )
{
temp = *p;
*p = *q;
*q = temp;
}

printf( "\n交换后:\n" );
for ( int i = 0; i < 10; i++ )
printf( "%d ", a[i] );
return 0;
}
我试了可以,你自己再试试。
第5个回答  2010-12-09
void sort(int a[],int n,int *s[]) 这里面s是个指针数组相当于int **s 是一个二级指针。sort(x,n,&k);中的&k只是一个一级指针。所以传参数的时候会出错
第6个回答  2010-12-16
#include <stdio.h>
#include <stdlib.h>
void sort(int *a[],int n)
{
int i,j,*t;
for (i=0;i<n;i++)
for (j=i+1;j<n;j++)
if (a[i]>a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
void sc(int x[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf("%d ",x[i]);
}
}
int main(void)
{
int *x[10],n=10,i;
for (i=0;i<10;i++)
{
scanf("%d",&x[i]);
}
sort(x,n);
sc(x,n);
printf("\n");
return 0;
}
第7个回答  2010-12-09
#include <stdio.h>
#include <stdlib.h>
void sort(int a[],int n)
{
int i,j,t;
for (i=0;i<n;i++)
for (j=0;j<n-i;j++)
if (a[i]>a[j])
{
t=a[i];a[i]=a[j];a[j]=t;
}
}
void sc(int x[],int n)
{
int i;
for (i=0;i<n;i++)
{
printf("%3d",x[i]);
}
}
int main(void)
{
int x[10],n=10,i;
for (i=0;i<10;i++)
{
scanf("%d",&x[i]);
}
sort(x,n);
sc(x,n);
printf("\n");
return 0;
}本回答被提问者和网友采纳
第8个回答  2010-12-10
int main()
{
int a[10];
int *p = a;
int *q;
int start_position;
int num;
int temp;
for( int i = 0; i < 10; i++ )
{
printf( "输入第%d个数:\n", i );
scanf( "%d", p++ );
}
printf( "输入开始位置:\n" );
scanf( "%d", &start_position );
printf( "输入要交换的数字的个数:\n" );
scanf( "%d", &num );
if ( start_position < 1 || num < 0 || start_position + num > 11 )
return 0;

printf( "交换前:\n" );
for ( int i = 0; i < 10; i++ )
printf( "%d ", a[i] );

p = a + start_position - 1;
q = p + num - 1;
for ( p; p != q ; p++, q-- )
{
temp = *p;
*p = *q;
*q = temp;
}

printf( "\n交换后:\n" );
for ( int i = 0; i < 10; i++ )
printf( "%d ", a[i] );
return 0;
}
我试了可以,你自己再试试。
相似回答
大家正在搜