/* 编写一个程序, 用指针方法对 10 个整数按由大到小顺序排序,要求使用选择
排序法。 (指针、数组、排序算法)*/
#include<stdio.h>
#define N 10
int main()
{
int a[N];
int* p;
p = a;
int i,j,k,temp;
for (i = 0; i < N; i++,p++)
scanf_s("%d", p);
for (i = 0; i < N-1; i++)
{ k = i;
for (j = i + 1; j < N; j++)
if (*(p+j) > *(p+k))
k = j;
temp = *(p+i); *(p+i) = *(p+k); *(p+k) = temp;
}
for(p=a;p<(a+N);p++)//for(p=a,i=0;i<N;i++,p++)
printf("%d", *p);
return 0;
}
请问各位为什么程序输入后会引发异常呀?是循环有问题吗
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
fuill 2022-01-09 13:58关注#include<stdio.h> #define N 5 void prin(int *p,int n) { int i; for(i=0; i<N; i++) //for(p=a,i=0;i<N;i++,p++) printf("%d ", *(p+i)); printf("\n"); } int main() { int a[N]; int* p; p = a; int i,j,k,temp; for (i = 0; i < N; i++) scanf("%d", &*(p+i)); k = *p; int b=0; for (i = 0; i < N; i++) { b=0; for (j = 0; j < N-i; j++) if (*(p+j) > *(p+b)) { b=j; } //printf("max:%d b:%d \n", *(p+b),b); temp = *(p+(N-i-1)); *(p+(N-i-1)) =*(p+b); *(p+b)=temp; } prin(p,N); return 0; }本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用