自己做写了注释比较详细的代码,应该能给更菜鸟的人做参考,如果
c4droid吧
全部回复
仅看楼主
level 5
薇沫雅 楼主
自己做写了注释比较详细的代码,应该能给更菜鸟的人做参考,如果大佬有空解决一下只能输入数字的问题就更好了
#include"conio.h"
//要有↑↑↑sleep()和clrscr()才能用
#include"stdlib.h"
//要有↑↑↑rand()才能用
//#include<stdio.h>
//这个↑↑↑不知道有什么用,删掉好像也能运行
int main() {
int
a,b,d,e,f,g,h,i,j,k,l,y,z;//int定义整数
float c;//用float定义的可以输出为小数
d = 0;
// 提示输入题号(这个是写给我自己看的,老鸟不用看,菜鸟看浪费时间)
printf("本软件由薇沫雅制作\n");//输出引号里的内容。我也不知道为什么,后面用printf("输出内容")可以正常显示,但这里只能用printf("输出内容\n")
sleep(3);//暂停3秒
clrscr();//清屏
printf("使用前请看:①输入整数后按回车进入下一步。②因为作者技术不到家,不能按返回键,否则直接退出。③还是技术问题,只能输入整数,否则程序会崩溃。万分抱歉。如果崩溃,只要退出重启就好。 输入任意数字后开始练习(建议乱输五位数)");
scanf("%d", &d);//输入十进制整数“d”
if (d<0)
{
d=-d;
}
clrscr();
e = 0;
while (1)//后面这个大括号里的代码循环运行,结束循环的代码是break;(我没用)
{
// 产生运算方式(加减乘除)(这个是写给我自己看的,老鸟不用看,菜鸟看浪费时间)
j=c/4;//让等号前的变量等于等号后的运算结果,“/”是“除以”,“*”是“乘”
k=j*4;
h=c-k;
// 判断题号(这个是写给我自己看的,老鸟不用看,菜鸟看浪费时间)
if (e < d) //“if”是“如果”,“else”是“否则”,“else if”是否“否则如果”。每次循环在并列的“if”“else if”“else”中有且只有一个生效
{
f = rand() %100;//产生0到100的随机数并让f等于它
g = rand() %100;//产生0到100的随机数并让g等于它
e = e + 1;
}
else
{
// 加法(这个是写给我自己看的,老鸟不用看,菜鸟看浪费时间)
if (h == 1) //不能写“if (h=1)”,否则效果相当于“h=1;”
{
a = rand() % 10000;
b = rand() % 10000;
printf("加法");
printf("\n%d+", a);//引号里的“\n%d”对应引号后面的字母,在“\n%d”前、后都能加其它内容,不影响输出。“\n%d”输出整数。
printf("\n%d=? 看答案", b);
scanf("%d", &z);
c=(float)a+b;//因为a、b都是整数,c可以带小数点,所以要把“a+b”的结果化为用“float”定义的数,格式就是这样
printf("\n%.f 下一题", c);//“\n%.f”和“\n%.0f”表示输出整数,“\n%.?f”表示输出?位小数
scanf("%d", &z);
clrscr();
}
// 减法(这个是写给我自己看的,老鸟不用看,菜鸟看浪费时间)
else if (h == 2)
{
a = rand() % 10000;
b = rand() % 10000;
printf("减法");
printf("\n%d-", a);
printf("\n%d=? 看答案", b);
scanf("%d", &z);
c=(float)a-b;
printf("\n%.f 下一题", c);
scanf("%d", &z);
clrscr();
}
// 乘法(这个是写给我自己看的,老鸟不用看,菜鸟看浪费时间)
else if (h == 3) {
a = rand() % 10000;
b = rand() % 10000;
printf("乘法");
printf("\n%d×", a);
printf("\n%d=? 看答案", b);
scanf("%d", &z);
c=(float)a*b;
printf("\n%.f 下一题", c);
scanf("%d", &z);
clrscr();
}
// 除法(这个是写给我自己看的,老鸟不用看,菜鸟看浪费时间)
else //“else”后面不能加诸如“(a==1)”之类的条件
{
a = rand() % 10000;
b = rand() % 1000;
b=b+1;
printf
("除法,保留三位小数");
printf("\n%d÷", a);
printf("\n%d=? 看答案", b);
scanf("%d", &z);
c=(float)a/b;
printf("\n%.3f 下一题", c);
scanf("%d", &z);
clrscr();
}
}
}
}
/*四则运算练习
薇沫雅编写
转载请说明出处
使用了c4droid代码手册的*一元二次方程*产生随机数*暂停和清屏(都是TTHHR编写)代码
*/
2018年04月27日 10点04分 1
level 8
给你顶贴了
____爱签到的小萌新
2018年04月27日 14点04分 2
level 1
// 原谅我重构了你的代码。我实在不明白你为什么要把那么多似乎是“写着玩”的内容编进来/*四则运算练习Author: 薇沫雅Refactored by LemmingCode page: GBK
薇沫雅. 转载请说明出处2018 Lemming. All rights reserved. (if possible)
使用了c4droid代码手册的*一元二次方程*产生随机数*暂停和清屏(都是TTHHR编写)代码*/
/*库函数说明
stdio.h is C Standard Library. 本程序调用了其中声明的printf()scanf()
stdlib.h is C Standard Library. 本程序调用了其中声明的rand()srand()system()
math.h is C Standard Library. 本程序调用了其中声明的fabs()
time.h is C Standard Library. 本程序调用了其中声明的time()
unistd.h is POSIX.1 Standard Library. 本程序调用了其中声明的sleep()
conio.h declares the direct console I/O functions. 它是 DOS / 早期 Windows 时代由 TurboC 引进的一套库。如无特殊需要,不建议使用这类非标准库。*/

#include <stdio.h>#
include
#include <math.h>#
include #include
/* 假装是库函数 */void clrStdin(){ /* Flushing the Standard Input */ #if defined(_MSC_VER) && _MSC_VER <= 1800 fflush(stdin); // outdated implementation on Windows #else scanf("%*[^\n]%*c"); // recommended for C #endif}
// 挂掉了 conio.h,于是需要自己写清屏函数void clrscr(){ /* Clear Screen */ #if defined(_MSC_VER) || defined(_WIN32) || defined(WIN32) || defined(_WINDOWS) || defined(WINVER) system("cls"); // Windows #else system("clear"); // Unix, Linux, Android, Apple platform device, etc. #endif}
/* 自定义函数 */int pgRandom(int maxd){ /* 产生 [0,maxd-1] 之间的伪随机数 */ return (rand() % maxd);}
// 此处前缀 static 关键字只是因为不想让这个函数被工作区下的其他程序发现static void prbset(int prbn){ // 判断题号,并配置显示和试题。此处我不想用 if 也不想用 goto,因为他们不易读 char *prompt, *vop; // 为了美观,用字串存储显示算符。小心:此处字符串的赋值方式(创建指针,再赋值给“指针”)比较特别,暂不深究。 int a, b; double crt, ans; a = pgRandom(10000); // 出题范围大致 [0,10000] b = pgRandom(10000)+1;// 安全起见 switch(prbn) { case 1: prompt="加法\n"; vop="+"; crt = (double)a+b; break; case 2: prompt="减法\n"; vop="-"; crt = (double)a-b; break; case 3: prompt="乘法\n"; vop="×"; crt = (double)a*b; break; default:prompt="除法\n"; vop="÷"; crt = (double)a/b; } // 呈现 printf("%s\n\n输入你的结果并按回车以查看答案,保留 3 位小数\n\n", prompt); printf("%5d %s %5d =", a, vop, b); scanf("%lf", &ans); // Judge if((ans==crt) || (fabs(ans-crt)<1e-3)) // 出于精度考虑 printf("Correct\n"); else printf("\a你可能做错了\n"); printf("答案: %.3lf\n\n下一题", crt);}
int main(){ // int 是整数,double 是双精度浮点数(实数),unsigned 是无符号整数。小心:unsigned 的运算很“特别”! unsigned int h; // Splash Screen printf("本软件由薇沫雅制作\n"); // 输出引号里的内容。务必保留 \n,因为某些平台不支持自动 flush stdin sleep(1); //暂停1秒 clrscr(); // Entrance srand((unsigned int) time(0)); // 配置第一个 seed 为当前时间,以生成真·伪随机数 printf("\t四则运算练习\n\n使用前请看:\n①输入整数后按回车进入下一步。\n②不能碰手机的返回键,否则直接退出。因为 Terminal Emulator 中默认返回键等价于强制结束程序。\n③只允许输入整数,否则会跳转到意想不到的题目。\n\n\n"); // body while (printf("\n输入任意整数后开始练习"), scanf("%u",&h)!=EOF) { rewind(stdin); // 重定向 stdin,效果相当于清空 stdin,以此防止错误输入卡死输入流。如果平台不支持就换用上面定义的 clrStdin() clrscr(); prbset(h%4); }}
2018年04月30日 13点04分 3
1