| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1270 人关注过本帖
标题:这个题调试半天下标就弄不好了,求大神~~
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
注意我這裡求値的過程,它既可以求最大値,也可以求最小値,或同時求最大最小値,都是這樣弄,不需要多複雜的。

授人以渔,不授人以鱼。
2014-04-24 13:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
本來那個自定義函數GetInt(),應該用邏輯型或錯誤碼返回數據的,但爲了照顧所謂的“標準C”代碼,就没使用bool類型,我也不鼓勵用int代替bool的原始C習慣,所以那個函數不檢測無效輸入或用戶終止的狀態,因此輸入10個元素數組的過程是死板的,必須輸満10個才能結束循環,爲此,需要提示用戶當前輸入的是第幾個。

授人以渔,不授人以鱼。
2014-04-24 13:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你看看你1樓的代碼:
    printf("maxmum=%d\n",maxmum);
     {
         if(maxmum=array_a[N])
       {
           maxmum=array_a[N];
          j=N;
        }     
     }

看清楚我描紅的位置!!!

這種錯誤是不應該犯的。學C系列的語言,就得培養用==作爲邏輯運算符的習慣,以後即使學其他語言,如果語言允許,能用==的地方,就要用這個符號,哪怕這門語言同時允許用=和==作邏輯運算符,也要儘量用==,養成一致的習慣。寫出了if(),哪有用=之理,C那種允許用賦値替代邏輯表達式的習慣並不値得提倡,用if(p != NULL)都比用if(p)好。再說一次:別學那些古老的陋習!沒有什麽大神、大牛比編譯器更有耐心和仔細地檢查你的代碼,所以你應該儘量寫出能讓編譯器幫到你的代碼,避免一切誤解,模糊代碼和嚴重依賴副作用的編碼風格,都不値得提倡,不要以爲寫那種代碼的是大神、大牛,靠那種本事混飯喫,會死得很慘。

[ 本帖最后由 TonyDeng 于 2014-4-24 18:13 编辑 ]

授人以渔,不授人以鱼。
2014-04-24 13:56
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
回复 8 楼 lovecao954
呵呵.貌似有点晕.

输入0,1,2,3,4,55,6,7,8,9这是个数字.  

输出的结果是
maxnum=55
最大值的下标是6


我忽然相通了. 你所谓的下标是指在数组中的存储的位置的下标. 我理解的下标是你输入的顺序的序号. 呵呵.

所以你说不需要+1, 我说需要加1.  因为数组从0开始计数, 而我理解的是需要从1开始计数的.

代码测试环境:  WinXP+C-Free5.0.
2014-04-24 14:50
lovecao954
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-23
收藏
得分:0 
回复 13 楼 TonyDeng
哦哦,知道了,我是大一的学生,这学期刚开这门课,老师留得拓展训练。你说的那些我记住了,谢谢老师指导~~~
2014-04-24 18:02
lovecao954
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-23
收藏
得分:0 
回复 14 楼 vvvcuu
嗯那,是的,嘿嘿。这下好了,少了一个等于号就调试不出来了
2014-04-24 18:03
lovecao954
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-23
收藏
得分:0 
回复 10 楼 TonyDeng
你写的这个我们还没学到呢
2014-04-24 18:15
弟大勿勃
Rank: 2
等 级:论坛游民
帖 子:186
专家分:59
注 册:2014-4-17
收藏
得分:0 
和我们以前学的一模一样的程序。。感情你学的是清华大学出版的c语言编程。注意好“=”是赋值“==”是表示判断。努力少年
2014-04-24 18:56
longxingxiu
Rank: 2
等 级:论坛游民
帖 子:73
专家分:64
注 册:2014-4-23
收藏
得分:0 
回复 楼主 lovecao954
一是你的if语句判断等号出来问题,而是函数调用还不熟悉,附上同时求最大最小的代码
程序代码:
#include <stdio.h>
#define N 10
void input (int array_b[N])
{
    int i;
    printf("请输入%d个整数:",N);
    for(i=0;i<N;i++)
    {
        scanf("%d",&array_b[i]);
    }
}
void maxmin(int array_b[N])
{
    int i,maxmum,minmum,j,m,n;
    maxmum=array_b[0];
        minmum=array_b[0];
    for(i=1;i<N;i++)
    {
        if(array_b[i]>maxmum)
            maxmum=array_b[i];
        if(array_b[i]<minmum)
            minmum=array_b[i];
    }
        printf("maxmum=%d\n",maxmum);
        printf("minmum=%d\n",minmum);
        for(i=0;i<N;i++)
        {
         if(maxmum==array_b[i])                    
             m=i+1;
         if(minmum==array_b[i])
            n=i+1;       
          }               
      printf("最大值的下标:%4d\n",m);
      printf("最小值的下标:%4d\n",n);    
  }
int main()
{
    int array_a[N],maxmum,minmum,i,m,n;
    input(array_a);
    maxmin(array_a);     
     return 0;    
}
2014-04-24 20:39
lovecao954
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2014-4-23
收藏
得分:0 
回复 18 楼 弟大勿勃
2014-04-25 14:28
快速回复:这个题调试半天下标就弄不好了,求大神~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017149 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved