c语言 指针 排大小问题
答案:4 悬赏:30 手机版
解决时间 2021-08-24 13:49
- 提问者网友:欲劫无渡
- 2021-08-23 13:21
#include<stdio.h>
# define n 5
void main()
{
int sum,i,*p,k,temp;
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
p=a;
for(i=0;i<n;i++,p++)
for(k=i+1;k<n;k++)
{
if(*(p+i)>*(p+k))
temp=*(p+i);
*(p+i)=*(p+k);
*(p+k)=temp;
}
for(i=0;i<n;i++)
printf("%d",*(p+i));
}
帮忙解释一下 哪里写错了??
最佳答案
- 五星知识达人网友:平生事
- 2021-08-23 14:37
// 指针归位问题:
#include<stdio.h>
# define n 5
void main()
{
int sum,i,*p,k,temp;
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
p=a;
for(k=i+1;k<n;k++)
{
if( *(p+i)>*(p+k) )
{
temp=*(p+i);
*(p+i)=*(p+k);
*(p+k)=temp;
}
}
p++;
}
p=a;
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
注意上面加黑的那几个部分。
// 测试结果:
全部回答
for(i=0;i<n;i++,p++) 要注意 此时你进行了p++的操作,那么p已经不再是指向a的首地址了
- 2楼网友:末日狂欢
- 2021-08-23 15:52
#include <stdio.h>
void main()
{
int data[10];
int i,j,temp;
printf("Please input 10 numbers: \n");
for(i=0;i<10;i++)
scanf("%d",&data[i]);
for(i=0;i<10-1;i++)
for(j=0;j<9-i;j++)
if(data[j]>data[j+1])
{
temp=data[j];
data[j]=data[j+1];
data[j+1]=temp;
};
printf("\nthe result of sort: \n");
for(i=0;i<10;i++)
printf("% d",data[i]);
while(1);
}
- 3楼网友:封刀令
- 2021-08-23 15:07
#include<stdio.h>
#define n 5
int main()
{
int sum,i,*p,k,temp;
int a[n];
for(i=0;i<n;i++)
scanf("%d",&a[i]);
p=a;
for(i=0;i<n;i++)
for(k=0;k<n-1-i;k++)
{
if(*(p+k)>*(p+k+1))
temp=*(p+k);
*(p+k)=*(p+k+1);
*(p+k+1)=temp;
}
for(i=0;i<n;i++)
printf("%d",*(p+i));
}
首先是第二个for你错了
你用的是冒泡排序~~~
并且在第一个for中p不应该++;
因为这个操作*(p+k)就相当于a[k];如果你执行p++后,就相当于a[k+1]了;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯