| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 445 人关注过本帖, 1 人收藏
标题:测试评分 高手指教
只看楼主 加入收藏
刘暮哲
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:75
专家分:83
注 册:2009-9-25
结帖率:69.23%
收藏(1)
已结贴  问题点数:20 回复次数:6 
测试评分 高手指教
#include<stdio.h>
#define items 25
void main()
{
    char ans[items];
    char student[3][items];
    int i,j,n;
    int count[items];
    printf("please input the correct answer:\n");
    for(i=0;i<items;i++)
        scanf("%c",&ans[i]);
    printf("\n");
    printf("please input the students' answer\n");
    for(i=0;i<3;i++)
    {
        n=0;
        printf("input the answer of student-%d\n",i);
        for(j=0;j<items;j++)
            scanf("%c",&student[i][j]);
        
        printf("\n");
        for(j=0;j<items;j++)
        {
            count[j]=0;
        }
        for(j=0;j<items;j++)
        {
        
            if(student[i][j]==ans[j])
            {
                count[j]=1;
                n++;
            }
        }
        printf("there aer %d correct answer of student-%d\n",n,i);
        printf("\n");
        for(j=0;j<items;j++)
        {
            if(count[j]==1)
                printf("%3d",j+1);
        }
        printf("\n");
   
    }
}
        
题目意思是要测试3个学生,测试由25道选择题组成,给出得分,并说出哪几道题对了
我输入第一个学生  答案正确
但是第二个第三个就有问题了
希望高手看看  谢谢!


搜索更多相关主题的帖子: 指教 评分 
2009-10-12 09:47
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:10 
试试这个:
#include<stdio.h>
#define items 25
void main()
{
    char ans[items];
    char student[3][items];
    int i,j,n;
    printf("please input the correct answer:\n");
    for(i=0;i<items;i++)
        scanf("%c",&ans[i]);
    printf("\n");
    printf("please input the students' answer\n");
    for(i=0;i<3;i++)
    {
        n=0;
        printf("input the answer of student-%d\n",i);
        getchar();
        for(j=0;j<items;j++)
            scanf("%c",&student[i][j]);
         
          printf("\n");
         
        for(j=0;j<items;j++)
           {  
         
            if(student[i][j]==ans[j])
              {
                printf("%3d",j+1);
                n++;
              }
           }
        printf("\nthere are %d correct answers of student-%d\n",n,i);
        printf("\n");
      
    }
}
2009-10-12 11:11
sen_lin
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:114
专家分:436
注 册:2009-3-24
收藏
得分:10 
#include<stdio.h>
#include "string.h"
#define items 3
void main()
{
    char ans[items];
    char student[3][items];
    char c;
    int i,j,n;
    int count[items];
    printf("please input the correct answer:\n");
 
    for(i=0;i<items;i++) {
 
        scanf("%c",&ans[i]);
        fflush(stdin);/*清除键盘缓冲区中的数据*/
         
    }
    printf("\n");
    printf("please input the students' answer\n");
    for(i=0;i<3;i++)
    {
        n=0;
        printf("input the answer of student-%d\n",i);
 
        for(j=0;j<items;j++) {
 
 
        scanf("%c",&c);         
        student[i][j]=c;
        fflush(stdin); /*清除键盘缓冲区中的数据*/
 
        }            
        printf("\n");
        for(j=0;j<items;j++)
        {
            count[j]=0;
        }
        for(j=0;j<items;j++)
        {  
         
            if((student[i][j]==ans[j]))
            {
                count[j]=1;
                n++;
            }
        }
        printf("there are %d correct answer of student-%d\n",n,i);
        printf("\n");
        for(j=0;j<items;j++)
        {
            if(count[j]==1)
                printf("%3d",j+1);
        }
        printf("\n");
     
    }
}
只要加上清楚键盘缓冲区的数据的语句就可以了,要切记字符的录入和数字的录入不一样,回车也会被作为字符而存入数组中的,尤其在数据较多时键盘的缓冲区是一定要清空的。
2009-10-12 12:10
sen_lin
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:114
专家分:436
注 册:2009-3-24
收藏
得分:0 
上面的程序运行时输入一个字符按一个回车,比你原来的要好看些!
2009-10-12 12:14
刘暮哲
Rank: 2
来 自:江苏
等 级:论坛游民
帖 子:75
专家分:83
注 册:2009-9-25
收藏
得分:0 
首先谢谢各位  不过m456m654改的把我一些功能划去了 因为要有哪些功能  才出问题的
sen_lin的程序我怎么还是运行有问题?你运行结果符合逻辑?

做最好的自己
2009-10-12 19:44
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
回复 5楼 刘暮哲
呵呵,是有点改动。
你定义了一个数组,想记录学生答案和标准答案相同的题号。但是你也不用用一个for循环来赋值0啊,直接初始化就ok。后来我直接将相同的题号输出了,就把你的这个数组删了。
其实错误不在这里面,我发现真正的原因就在于我在输入标准答案的语句前面加了个getchar()语句。虽然我还不是很懂为什么,调了好长时间,只是发现必须有它,呵呵。
2009-10-12 20:28
sen_lin
Rank: 6Rank: 6
等 级:侠之大者
威 望:3
帖 子:114
专家分:436
注 册:2009-3-24
收藏
得分:0 
再回:我那个可以运行啊,我在下面不是补充了嘛,你把那个全局变量items改成25就可以了,我调试的时候为了简单,改成了3,
输入的时候这样
a
b
d
输一次回车一次就可以了吧。怎么叫个结果符合逻辑呢
2009-10-12 21:55
快速回复:测试评分 高手指教
数据加载中...
 
   



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

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