鱼C论坛

 找回密码
 立即注册
查看: 2955|回复: 8

[已解决]c语言作业题求解

[复制链接]
发表于 2021-11-21 21:37:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
从键盘输入8个数用数组保存,找出其中的最大值和最小值,并分别输出相应的位置(下标);
帮孩子看看出了啥问题,没报错,运行不成功


#include<stdio.h>
int main()
{
        int a[8];
        int b,max,min,c,d;
        for(b=0;b<8;b++)
                scanf("input:%d",&a[b]);
        max=a[0];
        min=a[0];
        for(b=0;b<8;b++)
        {        if(a[b]>max)
                {
                        max=a[b];
                        d=b;
                }
                else if(a[b]<min)
                {
                        min=a[b];
                        c=b;
                }
        }
        printf("最大值为a[%d]=%d\n",d,max);
        printf("最小值为a[%d]=%d\n",c,min);
}
最佳答案
2021-11-21 22:00:33
本帖最后由 番杰 于 2021-11-21 22:02 编辑

scanf("input:%d",&a[b]);不能这么写,另外c、d需要赋初值
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int a[8];
  5.         int b,max,min,c = 0,d = 0;  //赋初值
  6.         for(b=0;b<8;b++)
  7.         {
  8.             printf("input:");     //添加
  9.             scanf("%d",&a[b]); //修改
  10.         }
  11.         max=a[0];
  12.         min=a[0];
  13.         for(b=1;b<8;b++)  //从1开始比较大小
  14.         {      
  15.                 if(a[b]>max)
  16.                 {
  17.                         max=a[b];
  18.                         d=b;
  19.                 }
  20.                 else if(a[b]<min)
  21.                 {
  22.                         min=a[b];
  23.                         c=b;
  24.                 }
  25.         }
  26.         printf("最大值为a[%d]=%d\n",d,max);
  27.         printf("最小值为a[%d]=%d\n",c,min);
  28. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-11-21 22:00:33 | 显示全部楼层    本楼为最佳答案   
本帖最后由 番杰 于 2021-11-21 22:02 编辑

scanf("input:%d",&a[b]);不能这么写,另外c、d需要赋初值
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int a[8];
  5.         int b,max,min,c = 0,d = 0;  //赋初值
  6.         for(b=0;b<8;b++)
  7.         {
  8.             printf("input:");     //添加
  9.             scanf("%d",&a[b]); //修改
  10.         }
  11.         max=a[0];
  12.         min=a[0];
  13.         for(b=1;b<8;b++)  //从1开始比较大小
  14.         {      
  15.                 if(a[b]>max)
  16.                 {
  17.                         max=a[b];
  18.                         d=b;
  19.                 }
  20.                 else if(a[b]<min)
  21.                 {
  22.                         min=a[b];
  23.                         c=b;
  24.                 }
  25.         }
  26.         printf("最大值为a[%d]=%d\n",d,max);
  27.         printf("最小值为a[%d]=%d\n",c,min);
  28. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-11-22 07:56:37 | 显示全部楼层
番杰 发表于 2021-11-21 22:00
scanf("input:%d",&a);不能这么写,另外c、d需要赋初值

谢谢你。代码的逻辑我明白了,可是c,d为啥要赋初值呢,我一开始的想法是我后面给它赋值了。我现在的理解是,我写的c=b只是令两个字母相等,相当于没有意义。不知道我的理解对不对。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-22 08:23:06 | 显示全部楼层
番杰 发表于 2021-11-21 22:00
scanf("input:%d",&a);不能这么写,另外c、d需要赋初值

我试着把c d的初值删掉了,并没有影响运行。我重新去看了下scanf的函数,前面是格式控制。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-22 08:37:46 | 显示全部楼层
驭行 发表于 2021-11-22 08:23
我试着把c d的初值删掉了,并没有影响运行。我重新去看了下scanf的函数,前面是格式控制。。

一个比较常见的说法是,任何程序中在创建变量时都需要给他设定一个初值,赋值以前,他里面存储的值是不确定的,可能带来一些意想不到的问题。这是一个习惯问题,尤其是你的代码量比较大时,养成这个习惯能让你避免很多不必要的麻烦。
因为很久不碰C了,所以以上是个人理解,作为参考~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-22 09:04:15 | 显示全部楼层
本帖最后由 番杰 于 2021-11-22 09:07 编辑
驭行 发表于 2021-11-22 08:23
我试着把c d的初值删掉了,并没有影响运行。我重新去看了下scanf的函数,前面是格式控制。。


这个赋初值是对应for循环中,b从1开始的情况,也就是我这么写的情况,你开始的时候写的是b = 0;
如果c、d不赋初值的话,
当a[0]为最大或最小的时候,
按照这个程序的逻辑,
c、d就没有被赋值过,
就相当于打印出来是个随机的下标,而不是0;
像你开始的程序中,for循环中b = 0 开始,就不需要把c、d进行赋值。

另:for循环中,b改为从1开始,
是因为在for之前已经把max,min赋值为a[0];
所以就不需要让它跟自身比较。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-11-22 09:57:08 | 显示全部楼层
lightninng 发表于 2021-11-22 08:37
一个比较常见的说法是,任何程序中在创建变量时都需要给他设定一个初值,赋值以前,他里面存储的值是不确 ...

受教了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-22 10:24:36 | 显示全部楼层
学习了

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-11-22 15:16:23 | 显示全部楼层
学习了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 18:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表