四则运算实现用户输入答案并统计正确数量

一,设计思路:

本次的实现目标是在上次代码的基础之上实现用户输入答案,并判断答案是否正确并进行统计,最后输出正确答案的个数。

判断答案是否正确的思路是在上次的基础之上先定义wrong(用来统计错误个数)right(用来统计正确的个数)k1,参数。

在void Display函数中定义答案的判断和正确错误的统计,最后在主函数中通过指针的调用来实现答案正确和错误个数的统计。

二,源代码:

#include<stdlib.h>
#include<iostream.h>
#include<stdio.h>
//void Display(int p); //输出题目
int wrong=0,right=0;
int a[100],b[100],c[100];
//int i;
void Display(int p,int *ri,int *wr,int i) //输出题目
{
int k1=0;

if(p==0)
{
if(c[i]==0)
{
printf("%d+%d=\n",a[i],b[i]);
printf("请输入结果!");
scanf("%d",&k1);
if(k1!=a[i]+b[i])
wrong++;
else
right++;
}
else if(c[i]==1)
{
printf("%d-%d=\n",a[i],b[i]);
printf("请输入结果!");
scanf("%d",&k1);
if(k1!=a[i]-b[i])
wrong++;
else
right++;
}
else if(c[i]==2)
{
printf("%d*%d=\n",a[i],b[i]);
printf("请输入结果!");
scanf("%d",&k1);
if(k1!=a[i]*b[i])
wrong++;
else
right++;
}
else
{
printf("%d/%d=\n",a[i],b[i]);
printf("请输入结果!");
scanf("%d",&k1);
if(k1!=a[i]/b[i])
wrong++;
else
right++;
}

}
else
{
if(c[i]==0)
{
printf("%d+%d=\n",a[i],b[i]);
printf("请输入结果!");
scanf("%d",&k1);
if(k1!=a[i]+b[i])
wrong++;
else
right++;
}
else if(c[i]==1)
{
printf("%d-%d=\n",a[i],b[i]);
printf("请输入结果!");
scanf("%d",&k1);
if(k1!=a[i]-b[i])
wrong++;
else
right++;
}
else if(c[i]==2)
{
printf("%d*%d=\n",a[i],b[i]);
printf("请输入结果!");
scanf("%d",&k1);
if(k1!=a[i]*b[i])
wrong++;
else
right++;
}
else
{
printf("%d/%d=\n",a[i],b[i]);
printf("请输入结果!");
scanf("%d",&k1);
if(k1!=a[i]/b[i])
wrong++;
else
right++;
}

if((i+1)%p==0)
printf("\n");
}
*ri=right;
*wr=wrong;
}
void Carry(int *q,int *ri,int *wr) //执行全部过程,添加出错处理
{
int j;
int t;
int m;
int n;
//int q;
int d;
int p=3;
int r;
//int wrong=0;
//int right=0;
printf("1.请选择是否有乘除法(0:是 1:否)\n");
scanf("%d",&m);
if(m!=0&&m!=1)
{
printf("输入错误,请重新输入!\n");
Carry(q,ri,wr);
}
printf("2.请输入取值范围:(0-?)\n");
scanf("%d",&r);
printf("3.请选择加减有无负数:(0:有 1:无)\n");
scanf("%d",&n);
if(n!=0&&n!=1)
{
printf("输入错误请重新输入!\n");
Carry(q,ri,wr);
}
if(m==0)
{
printf("4.请选择出发有无余数:(0:有 1:无)\n");
scanf("%d",&d);
if(d!=0&&d!=1)
{
printf("输入错误请重新输入!\n");
Carry(q,ri,wr);
}
}
printf("5.请输入题目个数:\n");
scanf("%d",q);
if(*q<=0)
{
printf("输入错误请重新输入!\n");
Carry(q,ri,wr);
}
printf("6.请选择打印方式:0为逐行打印,输入其他数字则为一行几列\n");
scanf("%d",&p);
if(p<0)
{
printf("输入错误请重新输入!\n");
Carry(q,ri,wr);
}
for(int i=0;i<*q;i++)
{
a[i]=rand()%r;
b[i]=rand()%r;
c[i]=rand()%4;
if(c[i]==3&&b[i]==0)
{
b[i]++;
}
for(j=0;j<i;j++) //判断题目是否重复,若重复则a[i]++
if(a[j]==a[i]&&b[j]==b[i]&&c[j]==c[i])
a[i]++;
if(m==0&&n==0&&d==0)
{
Display(p,ri,wr,i);
}
else if(m==1) //没有乘除法
{
if(c[i]>=2)
c[i]=c[i]-2;
Display(p,ri,wr,i);
}
else if(m==0&&n==1&&d==0) //无负数,且被除数大于除数
{
if(a[i]<b[i])
{
t=a[i];
a[i]=b[i];
b[i]=t;
}
Display(p,ri,wr,i);
}
else
{
if(c[i]==3)
{
if(a[i]<b[i])
{
t=a[i];
a[i]=b[i];
b[i]=t;
}
while(a[i]%b[i]!=0) //无余数
b[i]++;
}
Display(p,ri,wr,i);
}
}
}

void main()
{
int tishu=0;
int wrong1=0,right1=0;
Carry(&tishu,&right1,&wrong1);
//printf("您总共做了"道题目,正确个数‘right‘,错误的个数‘wrong‘\n");
cout<<"您总做了"<<tishu<<"个题,正确"<<right1<<"的道,错误"<<wrong1<<"道"<<endl;
}

三,运行结果截图:

四,结果总结:

在初步的思路中是想在void Disply函数中定义对答案的判断和统计策略,最开始我把wrong和right变量定义在了Disply函数里面,最后导致运行结果一直输出正确答案1错误答案0,通过仔细见后发现每次对执行函数时都又把wrong和right恢复为0了,所以导致wrong和right统计结果错误。经过第一次改正后发现还是不正确,因为我忘记了Disply函数中各个模块是并立的关系所以要用else if 而不能用原来的if来表示。但是后运行结果还是有错误,输出结果正确和错误的个数总是反着的,后发现在主函数中指针的返回是有错误的,所以导致了结果的错误。以上就是这次遇见的问题,这些问题里面有粗心大意造成的,有逻辑错误造成的。归根结底是基础太差,缺乏练习!

时间: 2024-10-11 03:04:41

四则运算实现用户输入答案并统计正确数量的相关文章

iOS判断用户输入的银行卡号是否正确

为了打造更好的用户体验,同时减轻服务器端的压力,对于一些如,手机号码,银行卡号,身份证号码判断是否正确是很有必要的 下面是一小段判断银行卡号输入是否正确的代码方法供大家参考 - (void)viewDidLoad { [super viewDidLoad]; NSString *str = @"6226820011200783033"; BOOL isRight = [self checkCardNo:str]; if (!isRight) { UIAlertView *alert =

判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验

开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS代码: /** *  银行卡格式校验 * *  @param cardNo 银行卡号 * *  @return */ + (BOOL) checkCardNo:(NSString*) cardNo{ int oddsum = 0;     //奇数求和 int evensum = 0;    //偶

servlet中判断用户输入的验证码是否正确

并且一个更严重的问题是,动画运行完,就停止了.而loading动画应该是循环的,在查阅了文档及Animated源码之后,没有找到类似loop这种控制循环的属性,无奈之下,只能另辟蹊径了. 上文提到过,Animated动画的start方法可以在动画完成之后执行回调函数,如果动画执行完毕之后再执行自己,就实现了循环,因此,将动画封装成函数,然后循环调用本身就可以了,不过目前动画还只把高度变矮了,没有重新变高的部分,因此即使循环也不会有效果,动画部分也需要修正: 现在在player对象的play方法里

Javascript验证用户输入URL地址是否正确

<script type="text/javascript">function checkUrl() { var url = document.getElementById('url').value; if (url==''){ alert('URL 地址不能为空'); return false; } else if (!isURL(url)) { alert('URL 的格式应该是 http://www.111cn.net'); return false; } else

四则运算程序扩展:将程序改为java语言,并允许用户输入,对输入结果进行验证

题目 每个同学选一个方向,把程序扩展一下:1.让程序能接受用户输入答案,并判定对错.最后给出总共对/错 的数量.2.把程序变成一个网页程序,用户通过设定参数,就可以得到各种题目.3.把程序变成一个Windows 图形界面的程序.4.把程序变成一个智能手机程序 (你正在用什么手机, 就写那个手机的程序).(可以延期3周后)5.选一个你从来没有学过的编程语言,试一试实现基本功能. 设计思想 本次程序采用数组记录答案,包含输入数组和正确结果保存数组,进行比较 源代码 package minirisof

完成一个登陆页面。(用户名:F11;密码:123456)。要求用户输入用户 名和密码,验证是否等于正确值。如果等于告知登陆成功,程序结束;否则告 知用户名密码有误。用户三次输入不正确,告知登陆失败,程序结束 。

#include <stdio.h>#include <string.h> /*完成一个登陆页面.(用户名:F11:密码:123456).要求用户输入用户名和密码,验证是否等于正确值.如果等于告知登陆成功,程序结束:否则告知用户名密码有误.用户三次输入不正确,告知登陆失败,程序结束 .*/ void main(){ char username[20]; char password[20]; int i = 0; for(i = 0; i < 3; i++) { printf(

提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是“888888”,则提示正确,否则,如果用户名不是admin还提示用户用户名不存在,如果用户名是admin则提示密码错误.

提示用户输入用户名,然后再提示输入密码,如果用户名是“admin”并且密码是“888888”,则提示正确,否则,如果用户名不是admin还提示用户用户名不存在,如果用户名是admin则提示密码错误. Console.WriteLine("输入用户名"); string a = Console.ReadLine(); Console.WriteLine("请输入密码"); string b = Console.ReadLine(); if (a == "ad

猜数字大小游戏,用户输入一个数字,如果大了就显示大了,如果小了就显示小了, 如果对了就提示正确(补充难度,只有5次机会,限制数字的范围在百位以内)

产生0-100之间的随机数,包括0和100 double d = Math.random() * 100; int a = (int)Math.round(d); ------------------------------------- package 水仙花数; import java.util.Scanner;/* 猜数字大小游戏,用户输入一个数字,如果大了就显示大了,如果小了就显示小了,如果对了就提示正确(补充难度,只有5次机会,限制数字的范围在百位以内)*/public class t

Python(51)_统计用户输入内容,索引为奇数,并且对于的索引的是数字的个数

#-*-coding:utf-8-*- ''' 统计用户输入内容,索引为奇数,并且对于的索引的是数字的个数 ''' count = 0 content = input(">>>") for i in range(len(content)): if i%2 == 1 and content[i].isdigit(): content +=1 print(count) 原文地址:https://www.cnblogs.com/sunnybowen/p/10230964.h