/* 编写一个程序, 用指针方法对 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无用
悬赏问题
- ¥50 求解vmware的网络模式问题 别拿AI回答
- ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
- ¥15 springboot 3.0 实现Security 6.x版本集成
- ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
- ¥30 请帮我解决一下下面六个代码
- ¥15 关于资源监视工具的e-care有知道的嘛
- ¥35 MIMO天线稀疏阵列排布问题
- ¥60 用visual studio编写程序,利用间接平差求解水准网
- ¥15 Llama如何调用shell或者Python
- ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?