吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1393|回复: 5
收起左侧

[求助] 【C语言】如何加入选择继续考试或中途退出功能,最好可以能够考试结束后选择继续考试

[复制链接]
浩浩君 发表于 2020-12-24 21:06
#include <stdio.h>
#include <stdlib.h>
#include<time.h>

int main()
{
    printf("***************************************************************************\n");
    printf("*******************************小学生测试******************************* \n");
    printf("***************************************************************************\n");
    int magic1,magic2;
    int sum,summ;
    int c;
    char a;
    int counter;
    int t;
    int i,j=0,k=0,l=5;
    for(i=0; i<5; i++)
    {
        srand((unsigned )time(NULL));
        do
        {
            magic1 = rand() % 50+1;
            magic2 = rand() % 50+1;
        }
        while(magic1+magic2>=50);
        c = rand() % 2;
        counter=0;
        do
        {
            if(c==0)
            {
                a ='+';
                sum = magic1 + magic2;
            }
            if(c==1)
            {
                a = '-';
                if(magic1<magic2)
                {
                    t = magic1;
                    magic1 = magic2;
                    magic2 = t;
                }
                sum = magic1 - magic2;
            }
            printf("Question:%d%c%d\n",magic1,a,magic2);
            printf("Please enter your answer:\n");
            scanf("%d",&summ);
            if(summ == sum)
            {
                printf("Right!\n");
                break;
            }
            else
            {
                printf("Wrong!请重新输入。\n");
               if(counter<1)
               {
                   k++;
               }

            }
            counter++;
        }
        while(counter < 3);
        printf("The right answer is:%d\n",sum);
    }
    j=l-k;
    FILE*fp;
    fp = fopen("data.txt","w");
    fprintf(fp,"正确个数:%d\n错误个数:%d\n",j,k);
    printf("正确个数:%d\n错误个数:%d\n",j,k);


    return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Jack2002 发表于 2020-12-25 15:04
1、if(summ == sum) 这儿加其它判断语句,比如输入的是NO就退出。

2、论坛是可以发代码的
[C] 纯文本查看 复制代码
printf(...)


3、你的需求和问题描述不够清晰。
xiaohanzhu 发表于 2020-12-27 16:33
如果你说的是在题目回答完之后加入continue或者break选项的话
那么可以尝试在循环后面加入
我这里用c++重新写一遍。
[C++] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string>
#include <iostream>
using namespace std; 
int main()
{
    printf("***************************************************************************\n");
    printf("*******************************小学生测试******************************* \n");
    printf("***************************************************************************\n");
    int magic1,magic2;
    int sum,summ;
    int c;
    char a;
    int counter;
    int t;
    int i,j=0,k=0,l=5;
    string AN;
    for(i=0; i<5; i++)
    {
        srand((unsigned )time(NULL));
        do
        {
            magic1 = rand() % 50+1;
            magic2 = rand() % 50+1;
        }
        while(magic1+magic2>=50);
        c = rand() % 2;
        counter=0;
        do
        {
            if(c==0)
            {
                a ='+';
                sum = magic1 + magic2;
            }
            if(c==1)
            {
                a = '-';
                if(magic1<magic2)
                {
                    t = magic1;
                    magic1 = magic2;
                    magic2 = t;
                }
                sum = magic1 - magic2;
            }
            printf("Question:%d%c%d\n",magic1,a,magic2);
            printf("Please enter your answer:\n");
            scanf("%d",&summ);
            if(summ == sum)
            {
                printf("Right!\n");
                break;
            }
            else
            {
                printf("Wrong!请重新输入。\n");
               if(counter<1)
               {
                   k++;
               }

            }
            counter++;
        }
        while(counter < 3);
        printf("The right answer is:%d\n",sum);
        printf("Wanna continue?(Yes or NO)");
        cin >> AN;
        if(AN == "yes")
        {
        	continue;
		}
		else
		{
			break;
		}
    }
    j=l-k;
    FILE*fp;
    fp = fopen("data.txt","w");
    fprintf(fp,"正确个数:%d\n错误个数:%d\n",j,k);
    printf("正确个数:%d\n错误个数:%d\n",j,k);


    return 0;
}

不过你这个原来写的就有BUG;建议你重新用C++调用c语言的函数库来写一遍
这个运行的话
可以尝试用COUT或者cin
不需要用scanf&printf 这个格式化输入输出
xiaohanzhu 发表于 2020-12-27 16:42
本帖最后由 xiaohanzhu 于 2020-12-27 16:43 编辑

或者是在全部结束以后的话可以试试这个(文件命名没改)
[C++] 纯文本查看 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string>
#include <iostream>
using namespace std; 
int main()
{
        begin:printf("***************************************************************************\n");
    printf("*******************************小学生测试******************************* \n");
    printf("***************************************************************************\n");
    int magic1,magic2;
    int sum,summ;
    int c;
    char a;
    int counter;
    int t;
    int i,j=0,k=0,l=5;
    string AN;
    for(i=0; i<5; i++)
    {
        srand((unsigned )time(NULL));
        do
        {
            magic1 = rand() % 50+1;
            magic2 = rand() % 50+1;
        }
        while(magic1+magic2>=50);
        c = rand() % 2;
        counter=0;
        do
        {
            if(c==0)
            {
                a ='+';
                sum = magic1 + magic2;
            }
            if(c==1)
            {
                a = '-';
                if(magic1<magic2)
                {
                    t = magic1;
                    magic1 = magic2;
                    magic2 = t;
                }
                sum = magic1 - magic2;
            }
            printf("Question:%d%c%d\n",magic1,a,magic2);
            printf("Please enter your answer:\n");
            scanf("%d",&summ);
            if(summ == sum)
            {
                printf("Right!\n");
                break;
            }
            else
            {
                printf("Wrong!请重新输入。\n");
               if(counter<1)
               {
                   k++;
               }

            }
            counter++;
        }
        while(counter < 3);
        printf("The right answer is:%d\n",sum);
    }
    j=l-k;
    FILE*fp;
    fp = fopen("data.txt","w");
    fprintf(fp,"正确个数:%d\n错误个数:%d\n",j,k);
    printf("正确个数:%d\n错误个数:%d\n",j,k);
        printf("Wanna continue?(Yes or NO)");
        cin >> AN;
        if(AN == "yes")
        {
                goto begin;
                }

    return 0;
\\[color=#00ff]吾爱[/color][url=https://www.52pojie.cn/]破解[/url][color=#00ff]——xiaohanzhu[/color][color=#00ff]原创,禁止贩卖[/color]
}

源码参考
链接如下
https://shandianpan.com/f/CHd
吾爱破解——xiaohanzhu原创,禁止贩卖
 楼主| 浩浩君 发表于 2020-12-28 21:47
xiaohanzhu 发表于 2020-12-27 16:42
或者是在全部结束以后的话可以试试这个(文件命名没改)
[mw_shl_code=cpp,true]#include
#include

谢谢老哥,虽然我最后没写这个系统直接就交了
xiaohanzhu 发表于 2021-1-2 15:03
浩浩君 发表于 2020-12-28 21:47
谢谢老哥,虽然我最后没写这个系统直接就交了

这个程序其实还是在运行商可以优化的
用c++调用c的函数库
用gcc
好好很多
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 10:40

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表