如何编写C语言程序输入n个数输出最小值及其序号(不使用数组)
你只需要新增一个变量存储最小值对应的序号,每次更新最小值的时候同步更新这个变量就可以满足需求,全程不需要用到数组,符合要求。
修改后的完整代码如下:
#include <stdio.h> #include <stdlib.h> int main() { int n, m, min, min_index; printf("请输入要输入的数字个数:"); scanf("%d",&n); for(int i = 1; i <= n; i++) { scanf("%d", &m); if (i == 1) { min = m; min_index = i; } else if (m < min) { min = m; min_index = i; } } printf("最小值是:%d,对应的输入序号为:%d\n", min, min_index); return 0; }
改动说明
- 新增了
min_index变量,用于存储当前最小值对应的输入序号 - 第一次输入数字初始化最小值时,同步将序号初始化为1
- 后续每次判断到更小的数值时,同步将序号更新为当前的循环计数
i - 去掉了原代码中冗余的
min=1初始赋值(原逻辑中该值会被第一个输入的数字覆盖,无实际作用),同时删除了未使用的变量d - 补充了
main函数的标准返回值,符合C语言语法规范
如果存在多个相同的最小值,上述代码会保留第一个出现的最小值的序号,如果你需要取最后一个出现的最小值的序号,把判断条件m < min改成m <= min即可。
内容的提问来源于stack exchange,提问作者PC Safe
相关产品推荐
相关产品推荐

