当前位置: 首页 > news >正文

四则运算1.0

题目要求:编写一个能自动生成自定义题目数的小学四则运算。要求能支持真分数

思索过程:我对题目大致分析,将一个简单的四则运算分解成一个:随机数+简单运算符+随机数+=的格式。要首先生成随机数;然后随机生成一个符号,这样第二个数也可随机生成;最后就可以利用简单的循环来输出所需题目。至于真分数,是分子比分母小的数,我将一个真分数拆解,得到两个整数相除的格式。然后比较分子分母的大小,将较大的数始终放在分母的位置。

设计思路:利用rand()生成随机数,难点在于如何生成随机符号,既然能生成随机数,那是否可以利用这个数来生成随机符号呢?显然可以,a=rand()%4,通过对a的判断,输出相应的符号。

源代码:

#include<stdio.h>
#include<stdlib.h>
#include <time.h>
#define N g
main()
{
    int a,b,k,i,n, c,d,e,f,g;
    do{
    printf("\n请输入题目数量: ");
scanf("%d",&g);
    printf("\n请输入数字类型(1.整数 2.真分数) -1为退出程序: ");
scanf("%d",&n);

    switch(n)
    {
    case 1:
    {

    for(i=0;i<N;i++)
    {
    a=rand()%100+1;
    b=rand()%100+1;
    k=rand()%4+1;
    printf("%d",a);
    switch(k)
    {
    case 1:printf("+");break;
    case 2:printf("-");break;
    case 3:printf("*");break;
    case 4:printf("/");break;
    }
    printf("%d=\t\t",b);
    }
    break;
    }
    break;
    case 2:
    {
for(i=0;i<N;i++)
    {
    e=rand()%100+1;
    f=rand()%100+1;
    k=rand()%4+1;
    if ( e>=f)
        printf("%d/%d",f,e);
    else
        printf("%d/%d",e,f);
    switch(k)
    {
    case 1:printf("+");break;
    case 2:printf("-");break;
    case 3:printf("*");break;
    case 4:printf("/");break;
    }
    c=rand()%100+1;
    d=rand()%100+1;
    if ( c>=d)
        printf("%d/%d=\t\t",d,c);
    else
        printf("%d/%d=\t\t",c,d);
    }
    break;
    }
    break;
    }
    }while(n!=-1);
}
复制代码

运行结果:

 

遇到的问题

 

     本程序在刚开始调试时有许多错误,出现过不能运行、不能随机出现四则运算、不会输出正确结果、选择乘法却出现减法等等问题。耗费时间最多是在于运用fprintf函数上,之前没使用过用的时候就抓麻了。在生成随机数的时侯最开始忘记使用srand函数,导致出的题目每次都是一样的也就是伪随机数,最后百度上查到原因和解决方法才改好。

     

       

       

    

 

总结

      第一次写代码还是十分生疏,在程序时必须要细心,编译出错后必须逐个错误去改正,不能输错一个字符标点,在修改时要有耐心,否则修改之后还会有新的错误。

转载于:https://www.cnblogs.com/xilei123/p/10111586.html

相关文章:

  • Visiual Studio2012 CLR20r3问题
  • linux 中对 mysql 数据库的基本命令
  • 前端页面添加表格,实现每一行能上下移动,还可修改数据库排序字段值
  • 数字转换(求树的直径)
  • 初识 vue —— 最简单的前后端交互示例
  • [orleans2.1]这是你没玩过的船新版本
  • 微信小程序picker下拉绑定数据
  • UUID、GUID、SID、SUSID
  • gradle 的jar下载到哪里了
  • [luogu4162 SCOI2009] 最长距离(最短路)
  • 034 Maven中的dependencyManagement和dependencies区别
  • 心,不能装太多;人,不能想太多
  • 深入理解spark-taskScheduler,schedulerBackend源码分析
  • 神经网络之调参
  • 数组Array的API1
  • [case10]使用RSQL实现端到端的动态查询
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • CEF与代理
  • Django 博客开发教程 16 - 统计文章阅读量
  • Docker入门(二) - Dockerfile
  • Laravel Mix运行时关于es2015报错解决方案
  • Laravel 实践之路: 数据库迁移与数据填充
  • Tornado学习笔记(1)
  • 从tcpdump抓包看TCP/IP协议
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 正则表达式-基础知识Review
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #android不同版本废弃api,新api。
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (ZT)一个美国文科博士的YardLife
  • (补)B+树一些思想
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (附源码)计算机毕业设计高校学生选课系统
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转)setTimeout 和 setInterval 的区别
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (转载)hibernate缓存
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • **PHP二维数组遍历时同时赋值
  • ... 是什么 ?... 有什么用处?