| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 904 人关注过本帖
标题:怎么改,输入时可以覆盖原数据
只看楼主 加入收藏
Timber
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2010-1-31
结帖率:71.43%
收藏
 问题点数:0 回复次数:9 
怎么改,输入时可以覆盖原数据
/*jinjin 0905209*/
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int grades[20];
    int index;
    int value;
    int i=0;
    double sum=0;
    double average;
    i=0;
    do
    {
        printf("Enter student number: ");
        scanf("%d", &index);
        if (index >= 0 && index < 20)
        {
            printf("Enter grade for student number %d:", index);
            scanf("%d", &value);
            grades[index] = value;
        }
        else if (index==-1)
            break;
        else
        {
            printf("You entered an invalid student number\n");
        }
        i++;
        sum+=grades[index];
    }
    while(i<20);

    average=sum/i;
    printf("the average grade is %4.2f",average);
    return 0;
}
相同的学号,不同的成绩;怎么改可以覆盖啊?
搜索更多相关主题的帖子: 输入 数据 
2010-02-08 18:34
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int grades[20];
    int index;
    int value;
    int i=0;
    double sum=0;
    double average;
    i=0;
     memset(grades,0,20*sizeof(int));//数组初始化为0
    do
    {
        printf("Enter student number: ");
        scanf("%d", &index);

        if (index >= 0 && index < 20)
        {
            printf("Enter grade for student number %d:", index);
            scanf("%d", &value);
            if(grades[index]== 0){
               grades[index] = value;
               i++;//拿到这来,因为未修改人数才加一
               }
            else {
                 sum -=   grades[index];
                  grades[index] = value;      
            }
        sum+=grades[index];//index正常才计算sum
        }

        else if (index==-1)
            break;
        else
        {
            printf("You entered an invalid student number\n");
        }
        
    }
    while(i<20);

    average=sum/i;
    printf("the average grade is %4.2f",average);
    system("pause");
    return 0;
}
2010-02-08 19:16
Timber
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2010-1-31
收藏
得分:0 
回复 2楼 heartnheart
大哥好像,运行了不太对诶。。数字很大啊,如果有相同的就是-1.#j   =.=

But here I am
2010-02-08 19:28
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
啥意思?你要是刚上来就输-1会发生除零错误,结果自然是-1.#J
2010-02-08 19:39
Timber
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2010-1-31
收藏
得分:0 
回复 4楼 heartnheart
没有一上来就输-1啊
我正常地输,结果就是很大的数字
我输入重复的学号,结果就带井号

But here I am
2010-02-08 20:24
kwxx
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:309
专家分:913
注 册:2009-5-11
收藏
得分:0 
/*jinjin 0905209*/
#include <stdio.h>
#include <stdlib.h>
#define N0 3        //调试好程序再改成20!!!
int main()
{
    int grades[N0]={0};            //数组初始化为0
    int index;
    int value;
    int i=0;
    double sum=0;
    double average;
    for(i=0;i<N0;i++)grades[i]=-1;        //-1表示此学生还没有被赋值。
    i=0;
    do
    {
        printf("Enter student number: ");
        scanf("%d", &index);
        if (index >= 0 && index < N0)
        {
            printf("Enter grade for student number %d:", index);
            scanf("%d", &value);
            if(grades[index] ==-1)
            {
                grades[index] = value;
                i++;
                sum+=grades[index];
            }
            else
            {
                sum-=grades[index]+value;
                grades[index] = value; //相同的学号,不同的成绩;这里可以覆盖。
            }
        }
        else if (index==-1)
            break;
        else
        {
            printf("You entered an invalid student number\n");
        }
    }
    while(i<N0);

    if(i>0)
    {
        average=sum/i;
        printf("the average grade is %4.2f\n",average);
    }
    else
        printf("input error.\n");
    return 0;
}

2010-02-08 20:47
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

DEV下一切正常……
2010-02-08 20:48
Timber
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2010-1-31
收藏
得分:0 
回复 7楼 heartnheart
图片附件: 游客没有浏览图片的权限,请 登录注册

=。=
那个memset那一行报错,如果我把那一行删了,就不行了
图片附件: 游客没有浏览图片的权限,请 登录注册

But here I am
2010-02-08 21:00
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:0 
很奇怪你的为什么不可以。那一行是用来初始化数组元素为零的,你在声明时改成int grades[20] = {0};
试试?
2010-02-08 21:08
Timber
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2010-1-31
收藏
得分:0 
回复 9楼 heartnheart
成功啦,万分感谢,不过还不是很明白,还要琢磨琢磨

But here I am
2010-02-08 21:16
快速回复:怎么改,输入时可以覆盖原数据
数据加载中...
 
   



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

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