| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6727 人关注过本帖, 2 人收藏
标题:如何用c++基础语言编写一个小学生测试系统
只看楼主 加入收藏
home♂boy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-6-28
结帖率:0
收藏(2)
已结贴  问题点数:20 回复次数:5 
如何用c++基础语言编写一个小学生测试系统
用c++语言编写面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY  AGAIN”。
,,,,我刚入门,编写的总是有错误,,,望各位高手指教
搜索更多相关主题的帖子: 正确答案 小学生 加减法 如何 
2016-06-28 23:17
home♂boy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-6-28
收藏
得分:0 
这是我的代码,可以编译,无法运行,,,
#include<iostream>
#include<stdio.h>
char problems[10];
int result[10];
using namespace std;
int main()
{
    int n;
    FILE *fp=fopen("c:\\题库.txt","r");
    fscanf(fp,"%d",&n);
        for(int i=0;i<n;i++)
            fscanf(fp,"%s%d",problems[i],&result[i]);
        fclose(fp);
    int score;
    for(i=1;i<=10;i++){
        int j;int answer;
        cout<<"第"<<i<<"题"<<endl;
        for(int k=1;k<=3;k++)
            cout<<problems[j];
        cin>>answer;
        if(answer==result[j])
            if(k==1)
                score+=10;
            else if(k==2)
                score+=7;
            else if(k==3)
                score+=5;
            else cout<<result[j];
    }

        
    switch((int)score/10){
    case 10:
    case 9:cout<<"smart";break;
    case 8:cout<<"good";break;
    case 7:cout<<"ok";break;
    case 6:cout<<"pass";break;
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
    case 0:cout<<"try again";break;}
    return 0;
2016-06-28 23:21
仰望星空的
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:50
专家分:248
注 册:2015-9-28
收藏
得分:20 
没有调试,只是稍微看了一下~,感觉k是答题次数,但是执行完for循环后,值都是一样的吧,可能没有体现出你上面题目要求的逻辑~
2016-06-29 08:38
星域
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-7-20
收藏
得分:0 
#include <iostream>
#include <time.h>
#include <stdio.h>
using namespace std;

/*用c++语言编写面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY  AGAIN”。
*/
int main(void)
{
    int a=1;
    int sum = 0;//sum代表分数
    srand((unsigned)time(NULL));//这里洒随机种子
    while (a<=10)//这是代表这出题数量
    {
        int b = 0, c = 0, d = 0, e = 0;
        do
        {
            c = rand() % 51;
            b = rand() % 51;
            if(b+c<=50&&(b-c>0||c-b>0))//这里判断两个数加起来不超过50,减起来不小于0。。
                break;
        } while (1);
        if (rand() % 2)//这里是判断要出加法不是减法。。
        {
            int q = 0;
            do
            {
                cout << c << "+" << b << "=";
                cin >> d;
                if (d == c + b)
                {
                    switch (q)
                    {
                    case 0:sum += 10; break;
                    case 1:sum += 7; break;
                    case 2:sum += 5; break;
                    default:
                        break;
                    }
                    break;
                }
                else
                {
                    cout << "错误" << endl;
                    q++;
                }
            } while (1);
        }
        else
        {
            if (c>b)
            {
                int q = 0;
                do
                {
                    cout << c << "-" << b << "=";
                    cin >> d;
                    if (d == c - b)
                    {
                        switch (q)
                        {
                        case 0:sum += 10; break;
                        case 1:sum += 7; break;
                        case 2:sum += 5; break;
                        default:
                            break;
                        }
                        break;
                    }
                    else
                    {
                        cout << "错误" << endl;
                        q++;
                    }
                } while (1);
            }
            else
            {
                int q = 0;
                do
                {
                    cout << b << "-" << c << "=";
                    cin >> d;
                    if (d == b - c)
                    {
                        switch (q)
                        {
                        case 0:sum += 10; break;
                        case 1:sum += 7; break;
                        case 2:sum += 5; break;
                        default:
                            break;
                        }
                        break;
                    }
                    else
                    {
                        cout << "错误" << endl;
                        q++;
                    }
                } while (1);
            }
        }
        a++;
    }
    switch (sum/10)
    {
    case 9:cout << "SMART" << endl; break;
    case 8:cout << "GOOD" << endl; break;
    case 7:cout << "OK" << endl; break;
    case 6:cout << "PASS" << endl; break;
    default:cout << "TRY AGAIN" << endl;    break;
    }
    system("pause");
    return 0;
}


这是我对这道的看法,运行的话基本符合题目要求。。。
2016-07-20 19:50
home♂boy
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-6-28
收藏
得分:0 
回复 4楼 星域
,真的谢谢,学到了不少东西呢
2016-07-31 20:37
玫尔
Rank: 1
等 级:新手上路
威 望:1
帖 子:2
专家分:0
注 册:2016-8-30
收藏
得分:0 
楼上有些小瑕疵,三次错误后,不会结束进入下一题,我写了一个,可以运行了。
#include<iostream>
#include<time.h>
#include<stdio.h>
using namespace std;

/*用c++语言编写面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:
(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;
(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;
(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;
(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;
(5)总成绩90以上显示“SMART”,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY  AGAIN”。
*/

int main()
{
    int sum=0,a,b,c;
    int an,num;
    srand((unsigned)time(NULL));
    for(int i=0;i<10;i++)  // 产生两个数
    {
        do
        {
            a= rand() % 51;
            b= rand() % 51;
            if(a+b<=50&&(a-b>0||b-a>0))
                break;
        }while(1);
        c=rand()%2;   
        if(c)   //加法
        {
            num=0;
            cout<<a<<"+"<<b<<"=   ";
            cin>>an;
            for(int j=1;j<=3;j++)
            {
                if(an==a+b)
                    break;
                num++;
                cout<<"再次输入: ";
                cin>>an;
            }
            if(an!=a+b)
                cout<<"答案是:"<<a+b<<endl;
            switch(num)
            {
            case 0:sum=sum+10;break;
            case 1:sum=sum+7;break;
            case 2:sum=sum+5;break;
            case 3:sum=sum;break;
            default:break;
            }
        }
        else  //减法
        {
            if(a>b) //确定减数与被减数  
            {
                num=0;
                cout<<a<<"-"<<b<<"=   ";
                cin>>an;
                for(int j=1;j<=3;j++)
                {
                    if(an==a-b)
                        break;
                    num++;
                    cout<<"再次输入: ";
                    cin>>an;
                }
                if(an!=a-b)
                    cout<<"答案是:"<<a-b<<endl;
                switch(num)
                {
            case 0:sum=sum+10;break;
            case 1:sum=sum+7;break;
            case 2:sum=sum+5;break;
            case 3:sum=sum;break;
            default:break;
                }
            }
            else
            {
                num=0;
                cout<<b<<"-"<<a<<"=   ";
                cin>>an;
                for(int j=0;j<3;j++)
                {
                    if(an==b-a)
                        break;
                    num++;
                    cout<<"再次输入: ";
                    cin>>an;
                }
                if(an!=b-a)
                    cout<<"答案是:"<<b-a<<endl;
                switch(num)
                {
                case 0:sum=sum+10;break;
                case 1:sum=sum+7;break;
                case 2:sum=sum+5;break;
                case 3:sum=sum;break;
                default:break;
                }
            }
        }
    }
    if(sum>=90)   //显示成绩
        cout<<"SMART"<<endl;
    else if(sum>=80)
        cout<<"GOOD"<<endl;
    else if(sum>=70)
        cout<<"OK"<<endl;
    else if(sum>=60)
        cout<<"PASS"<<endl;
    else
        cout<<"TRY AGAIN"<<endl;
    return 0;
}


2016-09-19 21:28
快速回复:如何用c++基础语言编写一个小学生测试系统
数据加载中...
 
   



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

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