C语言 实训 函数+随机数

编写程序:实现一个随堂测试,能进行加减乘除运算。要求如下:
(1)随机产生两个1~10的正整数,在屏幕上输出题目,如:5+3=?
(2)学生输入答案,程序检查学生输入答案是否正确,若正确,则输出“Correct”,否则输出“No Correct”
(3)共10道题目,每题10分,最后给出总成绩。
编程思路:按功能分模块,将随机出题写在show()函数中,将答题测试写在test()函数中,在主函数中调用两者,完成程序功能。
随机数定义方法:
1、所需头文件:
#include<stdio.h> #include<stdlib.h> #include<time.h>
2、srand((unsigned)time(NULL));//利用系统时钟设定种子
a[i]=rand()%10;//每次产生0-9范围内任意的一个随机数并存到数组a中
a[i]=rand()%100;//每次产生0-99范围内任意的一个随机数并存到数组a中
a[i]=rand()%10+1;//每次产生0-10范围内任意的一个随机数并存到数组a中
3、代码:
(1)错误代码:
错误原因:所需数据需要自己从键盘输入

#include<stdio.h>
#include<math.h>
int show(int a,char b,int c)
{
    int d;
    if(b=='+')d=a+c;
    if(b=='-')d=a-c;
    if(b=='*')d=a*c;
    if(b=='/')d=a/c;
    return d;
}
int test(int n,int s)
{
    if(n==s)
    {
        printf("Crrect\n");
        return 1;
    }
    else
    {
        printf("No Correct\n");
        return 0;
    }
}
int main()
{
    int a,c,n,sum=0,m,result;
    char b;
    for(int i=1;i<=10;i++)
    {

        scanf("%d%c%d=",&a,&b,&c);
        result=show(a,b,c);
        scanf("%d",&n);
        m=test(n,result);
        if(m==1)sum+=10;
    }
    printf("%d\n",sum);
    return 0;
}

(2)正确代码:
数据随机产生

#include <stdio.h>
	#include<stdlib.h>
	#include<time.h>
	int show()
	{
	int a,b,t,op,answer0;
	srand(time(0));//随机种子
	a = rand()%10 + 1;
	b = rand()%10 + 1;//产生1-10之间的随机数
	op = rand()%4 + 1;// 随机加减法
	switch(op)
	{
		case 1: printf("%d+%d=", a, b); //显示题目
            answer0=a+b; //计算标准答案
            break;
		case 2:
            if (a<b)
            {
                t=a;a=b;b=t;
            }//限制出现负数
            printf("%d-%d=", a, b);
            answer0=a-b;
            break;
		case 3:printf("%d*%d=", a, b); //显示题目
            answer0=a*b; //计算标准答案
            break;
		case 4:printf("%d/%d=", a, b); //显示题目
            answer0=a/b; //计算标准答案
            break;
    }
	return (answer0);
 }
int Test(int t_answer1, int t_answer0)
{
	if(t_answer1==t_answer0)
	{
		printf("Correct!\n");//答案正确,输出Correct
		return 1;//返回值为1
	}
  else
	{
		printf(" Not correct! \n");//答案错误,输出Not correct
		return 0;//返回值为0
	}
}
int main()
{
	int i,an_flag;
	int answer1,answer2,score = 0;//定义变量
	for (i=0; i<10; i++)
	{
		answer1=show() ; //调用显示函数,获标准答案
		scanf("%d",&answer2);//输入运算答案
		an_flag = Test(answer1, answer2);
		if (an_flag == 1)//答题标记为1则加10分
			score+=10;
 }
	printf("\nCorrect score:%d\n",score);//输出所得分数
	return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值