| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1187 人关注过本帖
标题:关于结构体的问题,童鞋们帮我分析一下下,奖励分分的噢
只看楼主 加入收藏
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
变量k没有初始化

总有那身价贱的人给作业贴回复完整的代码
2012-01-14 23:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
寫程序,先把框架(骨幹輪廊)搭起來,運行看看是不是符合意圖了,再逐漸往裏面添加細節(血肉),添一個測試一個,逐步來,在哪出問題自然容易定位。其實類似這種問題,本來不應該問的,屬於應該自己能夠解決的問題。講過,不照著做,下次就不講了。

授人以渔,不授人以鱼。
2012-01-14 23:30
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用TonyDeng在2012-1-14 23:30:45的发言:

寫程序,先把框架(骨幹輪廊)搭起來,運行看看是不是符合意圖了,再逐漸往裏面添加細節(血肉),添一個測試一個,逐步來,在哪出問題自然容易定位。其實類似這種問題,本來不應該問的,屬於應該自己能夠解決的問題。講過,不照著做,下次就不講了。
老大,我会认真改的。。正在look数据结构,以后会慢慢好的。

认为事物非黑即白是缺智慧的表现……
2012-01-14 23:36
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用embed_xuel在2012-1-14 23:21:53的发言:

变量k没有初始化
我刚试了,貌似还是没有解决问题

认为事物非黑即白是缺智慧的表现……
2012-01-14 23:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不關數據結構的事。數據結構沒有某些人所說那麼大的作用,起作用的是“構造數據”的能力,不是數據結構。

授人以渔,不授人以鱼。
2012-01-14 23:38
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用TonyDeng在2012-1-14 23:38:12的发言:

不關數據結構的事。數據結構沒有某些人所說那麼大的作用,起作用的是“構造數據”的能力,不是數據結構。
噢。我以后会改的

认为事物非黑即白是缺智慧的表现……
2012-01-14 23:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
scanf("%d,%s,%d %d %d",&stu[i].xh,&stu[i].name,&stu[i].stu_cj.yw,&stu[i].stu_cj.sx,&stu[i].stu_cj.yy);

不要看書,你答我,&stu[i].xh中的&取地址符,是stu[i]的地址還是stu[i].xh的地址?你心目中想寫哪個地址?既然心目中清楚,幹嘛不寫直接一點,而要弄一個自己沒把握的寫法?老實說,我看著也不知道,但不需要問,自然有手段測試出來,更重要的是,絕不會寫出這樣自己看著也迷糊的代碼。多寫一個括號,不會死人的,但出錯了累死自己,絕對是真的。這樣的觀點,我反復說過多少次,從來沒有一個初學者認真實行,那麼有空去背語法、記優先級,不如花時間學習更多的不至於犯錯的方法。這樣的代碼,寫出來既考別人也考自己,閑的蛋疼了?

有經驗的,寫到這樣的代碼,馬上就會意識到需要測試確定,要徹底弄明白這樣寫是否真的達到預期目的,沒弄清楚之前,就不要繼續往下寫。

[ 本帖最后由 TonyDeng 于 2012-1-14 23:50 编辑 ]

授人以渔,不授人以鱼。
2012-01-14 23:46
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用TonyDeng在2012-1-14 23:46:05的发言:

scanf("%d,%s,%d %d %d",&stu.xh,&stu.name,&stu.stu_cj.yw,&stu.stu_cj.sx,&stu.stu_cj.yy);

不要看書,你答我,&stu.xh中的&取地址符,是stu的地址還是stu.xh的地址?你心目中想寫哪個地址?既然心目中清楚,幹嘛不寫直接一點,而要弄一個自己沒把握的寫法?老實說,我看著也不知道,但不需要問,自然有手段測試出來,更重要的是,絕不會寫出這樣自己看著也迷糊的代碼。多寫一個括號,不會死人的,但出錯了累死自己,絕對是真的。這樣的觀點,我反復說過多少次,從來沒有一個初學者認真實行,那麼有空去背語法、記優先級,不如花時間學習更多的不至於犯錯的方法。這樣的代碼,寫出來既考別人也考自己,閑的蛋疼了?

有經驗的,寫到這樣的代碼,馬上就會意識到需要測試確定,要徹底弄明白這樣寫是否真的達到預期目的,沒弄清楚之前,就不要繼續往下寫。
我是想把值赋给stu[i].xh,如果这样写是错误的,那我就是表示结构体变量成员的方法出错了。,但我看视频教程上,关于结构体变量的表示方法就是这样的,

[ 本帖最后由 a271885843 于 2012-1-14 23:59 编辑 ]

认为事物非黑即白是缺智慧的表现……
2012-01-14 23:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
結構體分量的表示方法確實是這樣,但沒說取地址的方法也這樣。stu[i].xh是表示.xh這個分量,要取它的地址,寫&(stu[i].xh)就是對這個變量取地址,絕對沒錯的,但若去了括號,你就得查書看優先級,不要忘了,按(&stu[i]).xh理解也是合語法的。如果沒有把握,又死不肯寫括號,那麼就應該設置調試語句檢查接收的變量值是否正確,由此判斷編譯器是按哪種方式理解的,你記得住就記。

其實那個著名的*p++也一樣是會讓初學者迷糊的,只不過在C程序員內部這個寫法已經是“習慣寫法”,大家都明白它是怎麼運作的,才不會出現問題。我上次跟你說過,最好看看軟件工程學的著作,大量條文告誡讀者要寫清晰、直接的代碼,而不是寫高明的代碼。表面看來拙劣的代碼,只要不錯,就沒什麼可指責的。

[ 本帖最后由 TonyDeng 于 2012-1-15 00:15 编辑 ]

授人以渔,不授人以鱼。
2012-01-15 00:07
程丁岚
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:36
注 册:2011-12-8
收藏
得分:3 
这个我调试通过的,你看看。反正我觉得你格式啥的,不怎么好,以后要注意。
#include"stdio.h"
int main()
{
    struct xj{
        int xh;
        char name[10];
        int zcj;
        struct cj{
            int yw;
            int sx;
            int yy;
        }stu_cj;                                    /*再在结构体里定义一个结构体类型cj,并定义一个结构体变量stu_cj用来存放三门功课成绩*/
    };                                                 /*定义结构体XJ类型*/
    struct xj stu[10];                          /*定义结构体变量stu数组,有10个结构体变量*/
    int i=0,n,max,k;
    printf("请输入你要输入几个同学的成绩\n");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        printf("请按如下格式输入第%d个同学学号,姓名,语文成绩 数学成绩 英语成绩\n",i+1);
        scanf("%d%s%d%d%d",&stu[i].xh,&stu[i].name,&stu[i].stu_cj.yw,&stu[i].stu_cj.sx,&stu[i].stu_cj.yy);
    }
    for(i=0;i<n;i++)
    {
        stu[i].zcj=stu[i].stu_cj.yw+stu[i].stu_cj.sx+stu[i].stu_cj.yy;
        printf("第%d个同学平均成绩:%d\n",i+1,stu[i].zcj/3);
    }                                            /*计算每个同学的总成绩,然后按平均成绩输出*/

/*    if(n==1)
    {
    printf("学号:%d\n姓名:%s\n三门课成绩:%d %d %d\n平均成绩:%d\n",stu[0].xh,stu[0].name,stu[0].stu_cj.yw,stu[0].stu_cj.sx,stu[0].stu_cj.yy,stu[0].zcj/3);
    }
*/
    max=stu[0].zcj;
    for(i=1;i<n;i++)
    {
        if(max<stu[i].zcj)
        {
            max=stu[i].zcj;
            k=i;
        }                                         /*用K记录成绩最高同学的下标,并在下行输出该同学的所有录入信息*/
    }
    printf("最高成绩学生的学号:%d\n姓名:%s\n三门课成绩:%d %d %d\n平均成绩是:%d\n",stu[k].xh,stu[k].name,stu[k].stu_cj.yw,stu[k].stu_cj.sx,stu[k].stu_cj.yy,stu[k].zcj/3);
    return 0;
}
2012-01-15 00:12
快速回复:关于结构体的问题,童鞋们帮我分析一下下,奖励分分的噢
数据加载中...
 
   



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

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