题目:输入N个数找到前k个小的数,并全部从小到大输出(有重复数字)比如我输入1122244567这些数,求前三小,则输出:1122244
#include<stdio.h>
int main()
{
int i=1,j=1,k,min=1,left,N,t,q;
int a[100];
int c[100];
int n[100];
printf("所需输入数字的个数:\n");
scanf("%d",&N);
printf("请输入各个数:\n");
for(i=1;i<=N;i++)
scanf("%d",&a[i]);
printf("请输入需要找几个最小数:\n");
scanf("%d",&k);
for(i=1;i<=k;i++)
n[i]=0;
for(i=1;i<=N;i++)
{
if(a[i]<a[min])
{
min=i;
n[k]=1;
}
if(a[i]==a[min])
n[k]++;
}
c[k]=a[min];
t=min;
q=k;
k--;
while(k!=0)
{
left=t;
for(i=1;i<=N;i++)
{
if(a[i]>a[left])
break;
}
t=i;
for(i=1;i<=N;i++)
{
if(a[i]<a[t] && a[i]>a[left])
{
t=i;
n[k]=1;
}
if(a[i]==a[t])
n[k]++;
}
c[k]=a[t];
k--;
}
for(i=1;i<=q;i++)
{
for(j=1;j<=n[i];j++)
printf("%d",c[q-i+1]);
}
printf("\n");
return 0;
}
(仅限12.22急)帮我在本来的代码上改一下,不用排序
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 南七灵 2021-12-22 11:18关注
#include <stdio.h> int main() { int i = 1, j = 1, k, min = 1, left, N, t, q; int a[100]; int c[100]; int n[100]; printf("所需输入数字的个数:\n"); scanf("%d", &N); printf("请输入各个数:\n"); for (i = 1; i <= N; i++) scanf("%d", &a[i]); printf("请输入需要找几个最小数:\n"); scanf("%d", &k); for (i = 1; i <= k; i++) n[i] = 0; for (i = 1; i <= N; i++) { if (a[i] < a[min]) { min = i; n[k] = 1; } else if (a[i] == a[min])////这里改成else if n[k]++; } c[k] = a[min]; t = min; q = k; k--; while (k != 0) { left = t; for (i = 1; i <= N; i++) { if (a[i] > a[left]) break; } t = i; for (i = 1; i <= N; i++) { if (a[i] < a[t] && a[i] > a[left]) { t = i; n[k] = 1; } else if (a[i] == a[t])//这里改成else if n[k]++; } c[k] = a[t]; k--; } for (i = 1; i <= q; i++) { for (j = 1; j <= n[q - i + 1]; j++)//这里改成n[q - i + 1] printf("%d", c[q - i + 1]); } printf("\n"); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 如何使用simulink建立一个永磁同步直线电机模型?
- ¥30 天体光谱图的的绘制并得到星表
- ¥15 PointNet++的onnx模型只能使用一次
- ¥20 西南科技大学数字信号处理
- ¥15 有两个非常“自以为是”烦人的问题急期待大家解决!
- ¥30 STM32 INMP441无法读取数据
- ¥15 R语言绘制密度图,一个密度曲线内fill不同颜色如何实现
- ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
- ¥15 用visualstudio2022创建vue项目后无法启动
- ¥15 x趋于0时tanx-sinx极限可以拆开算吗