| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 910 人关注过本帖
标题:【新手求助】C语言的问题,麻烦大家帮我看看错在哪里了,谢谢!
只看楼主 加入收藏
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
结帖率:87.5%
收藏
已结贴  问题点数:15 回复次数:4 
【新手求助】C语言的问题,麻烦大家帮我看看错在哪里了,谢谢!
这是题目原文:
图片附件: 游客没有浏览图片的权限,请 登录注册

这是错误信息:
图片附件: 游客没有浏览图片的权限,请 登录注册

代码如下:
程序代码:
/*    14.5    */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#define CSIZE 4

struct name
{
    char * first;
    char * last;
};

struct student
{
    struct name name;
    double grade[3];
    double average;
};

int main (void)
{
    struct student student[CSIZE];
    int count;    /*    结构体计数    */
    int count_ch;    /*    字符计数    */
    int count_grd;    /*    分数计数    */
    char ch;
    double sum[CSIZE];

    for (count = 0; count < CSIZE; count++)
    {
        count_ch = 0;
        sum[CSIZE] = 0;
        printf ("Please enter the first name:");
        while (ch = getchar () && isalpha (ch))
        {
            ungetc (ch, stdin);
            count_ch++;
        }
        student[count].name.first = (char *) calloc (count_ch + 1, sizeof (char));
        gets (student[count].name.first);    /*    从输入流中获取字符    */
        fflush (stdin);
        count_ch = 0;
        printf ("Please enter the last name:");
        while (ch = getchar () && isalpha (ch))
        {
            ungetc (ch, stdin);
            count_ch++;
        }
        student[count].name.last = (char *) calloc (count_ch + 1, sizeof (char));
        gets (student[count].name.last);    /*    从输入流中获取字符    */
        fflush (stdin);
        for (count_grd = 0; count_grd < 3; count_grd++)
        {
            printf ("Please enter the %dth grade:", count_grd + 1);
            scanf ("%lf", student[count].grade[count_grd]);
            sum[CSIZE] += student[count].grade[count_grd];
        }
        student[count].average = sum[CSIZE] / 3;
    }
    for (count = 0; count < CSIZE; count++)
    {
        printf ("Name: ");
        puts (student[count].name.first);
        putchar (' ');
        puts (student[count].name.last);
        putchar ('\n');
        printf ("printf Grade: ");
        for (count_grd = 0; count_grd < 3; count_grd++)
            printf ("%g ", student[count].grade[count_grd]);
        putchar ('\n');
        printf ("Avearage: %g\n\n", student[count].average);
    }
    printf ("The average of the whole class is %g\n", (sum[0] + sum[1] + sum[2]) / 3);

    return 0;
}


[ 本帖最后由 DarylL 于 2013-5-1 08:47 编辑 ]
搜索更多相关主题的帖子: 看看 谢谢 C语言 
2013-05-01 08:40
笑傲
Rank: 8Rank: 8
来 自:迪拜
等 级:蝙蝠侠
威 望:5
帖 子:223
专家分:856
注 册:2013-3-9
收藏
得分:8 
第59行的 scanf ("%lf", student[count].grade[count_grd]);
应该写为 scanf ("%lf", &student[count].grade[count_grd]);
还有感觉你sum[0],sum[1],sum[2]都没初始化;

练就一身本领,只为笑傲江湖!
2013-05-01 09:41
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 2楼 笑傲
嗯。。好像是遗漏了。然后上面提示的那个错误是怎么回事呢?
2013-05-01 09:47
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:8 
看看vs2010的提示信息:

1>f:\c_source\c6\c6\c6.cpp(77): warning C4700: 使用了未初始化的局部变量“sum”
1>f:\c_source\c6\c6\c6.cpp(36): warning C4789: 内存复制的目标太小
1>f:\c_source\c6\c6\c6.cpp(60): warning C4789: 内存复制的目标太小

DO IT YOURSELF !
2013-05-01 10:35
DarylL
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-12-6
收藏
得分:0 
回复 4楼 wp231957
1>f:\c_source\c6\c6\c6.cpp(36): warning C4789: 内存复制的目标太小
1>f:\c_source\c6\c6\c6.cpp(60): warning C4789: 内存复制的目标太小
这两个错错误我调试的时候都没有提示,然后貌似复制过去的行数不大对,是不是那两个calloc所在的行?
2013-05-01 10:46
快速回复:【新手求助】C语言的问题,麻烦大家帮我看看错在哪里了,谢谢!
数据加载中...
 
   



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

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