① 求一个C语言程序:小学数学测试,要求如下:
/*******************************************************************************
(1)可选择题型:+ , - , * , / ;
(2)可选择每次答题的个数;
(3)随机生成两个数进行运算;
(4)每次在输入答案后应判断对错,若答案错误,应给出正确答案;
(5)最后给出做对题目的总个数
File :cai.c
*******************************************************************************/
#include <stdio.h>
#include <time.h>
void main()
{
char op;/*运算法则*/
int total;/*总题数*/
int count=0;/*答对题数*/
long a,b,c,d;
int i=0;
do
{
system("cls");
printf("请选择:\n");
printf(" (+)加法练习\n");
printf(" (-)减法练习\n");
printf(" (*)乘法练习\n");
printf(" (/)除法练习\n");
op = getch();
}while(op!='+'&&op!='-'&&op!='*'&&op!='/');
printf("请选择(默认20题):\n");
printf(" 1. 10题\n");
printf(" 2. 20题\n");
printf(" 3. 40题\n");
printf(" 4.100题\n");
total = getch();
printf("\n沉着冷静,认真仔细,加油!\n");
printf("................................................\n");
switch(total)
{
case '1':total= 10;break;
case '2':total= 20;break;
case '3':total= 50;break;
case '4':total=100;break;
default :total= 20;break;
}
srand(time(NULL));
for(i=0;i<total;i++)
{
a = rand()%1000;
b = rand()%1000;
printf("\n%2d. ", i+1);/*题号*/
switch(op)
{
case '+':
printf("%ld+%ld=",a,b);
scanf("%ld",&c);
if(c==a+b)
{
printf("回答正确!\n");
count++;
}
else
{
printf("回答错误!%ld + %ld=%ld\n",a,b,a+b);
}
break;
case '-':
if(a<b)
{
a=a+b;
b=a-b;
a=a-b;
}
printf("%ld-%ld=",a,b);
scanf("%ld",&c);
if(c==a-b)
{
printf("回答正确!\n");
count++;
}
else
{
printf("回答错误!%ld - %ld=%ld\n",a,b,a-b);
}
break;
case '*':
printf("%ld*%ld=",a,b);
scanf("%ld",&c);
if(c==a*b)
{
printf("回答正确!\n");
count++;
}
else
{
printf("回答错误!%ld * %ld=%ld\n",a,b,a*b);
}
break;
case '/':/*都能除尽*/
c=a*b;
printf("%ld/%ld=",c,a);
scanf("%ld",&d);
if(d==b)
{
printf("回答正确!\n");
count++;
}
else
{
printf("回答错误!%ld / %ld = %ld\n",c,a,b);
}
break;
}
}
printf("................................................\n");
printf("下面公布成绩:\n\n");
printf("总题数:%d\t答对数:%d\n", total, count);
if(count/(float)total>=0.9) printf("<> 优 <>\n");
else if(count/(float)total>=0.8) printf("<> 良 <>\n");
else if(count/(float)total>=0.6) printf(" 及格\n");
else if(count/(float)total>=0.1) printf(" 不及格\n");
else printf("跟你没话说\n");
getch();
}
② c语言课程设计小学数学测试系统
您好,我看到您的问题很久没有人来回答,但是问题过期无人回答会被扣分回的并且你的悬赏答分也会被没收!所以我给你提几条建议:
一,你可以选择在正确的分类下去提问,这样知道你问题答案的人才会多一些,回答的人也会多些。
二,您可以到与您问题相关专业网站论坛里去看看,那里聚集了许多专业人才,一定可以为你解决问题的。
三,你可以向你的网上好友问友打听,他们会更加真诚热心为你寻找答案的,甚至可以到相关网站直接搜索.
四,网上很多专业论坛以及知识平台,上面也有很多资料,我遇到专业性的问题总是上论坛求解决办法的
③ C语言程序设计课程小学数学测试系统
怎么回答
④ 求一个C语言编写的小学数学测试系统,要求有加法,减法,乘法,除法,四则混合运算,试卷共六个部分。
#include<stdio.h>
#include<string.h>
typedef struct MyComplex
{
double real;
double img;
}mc;
mc Plus(mc a,mc b)
{
mc result;
result.real = a.real + b.real;
result.img = a.img + b.img;
return result;
}
mc Sub(mc a,mc b)
{
mc result;
result.real = a.real - b.real;
result.img = a.img - b.img;
return result;
}
mc Multi(mc a,mc b)
{
mc result;
result.real = a.real * b.real - a.img * b.img;
result.img = a.img * b.real + b.img * a.real;
return result;
}
void Show(mc a)
{
if(a.real == 0 && a.img == 0)
printf("0.000\n");
else if(a.real == 0)
printf("%.4fi\n",a.img);
else if(a.img == 0)
printf("%.4f\n",a.real);
else
{
if(a.img < 0)
printf("%.4f%.4fi\n",a.real,a.img);
else
printf("%.4f+%.4fi\n",a.real,a.img);
}
}
int main()
{
mc a,b;
printf("输入第一个复数 a:\n");
scanf("%lf%lf",&a.real,&a.img);
printf("输入第二个复数 b:\n");
getchar();
scanf("%lf%lf",&b.real,&b.img);
printf("a b的和: ");
Show(Plus(a,b));
printf("a b的差: ");
Show(Sub(a,b));
printf("a b的积: ");
Show(Multi(a,b));
return 0;
}
按照a+bi这样的格式输入就可以了
⑤ C语言小学数学测验程序设计
没有无缘无故的给予,至少给些财富啊!
程序核心很简单,基本上编程人没有不会的
给孩子用至少界面要漂亮点的,就是时间问题啊。
⑥ 用c语言编写 小学数学考试题
#include "stdafx.h"
#include <stdlib.h>
#include <memory.h>
#include <assert.h>
#include <time.h>
typedef struct Equ // 一个表达式结构体.
{
int x;
int y;
char sig;
}EQU;
const unsigned int NUM = 5; // 生成试题量
EQU equ[NUM]; // 表达式数组
float UserAnswer[NUM]; // 用户给的答案
float RightAnswer[NUM]; // 正确答案
bool UserScore[NUM]; // 用户每次正误
char SIG[4] = {'+', '-', '*', '/'};
void GenerateQuestion(unsigned int num = NUM); // 生成试题
void CalculateRightAnswer(unsigned int num= NUM); // 计算正确答案
void Ask(unsigned int num = NUM); // 测试
void AskAnswer(unsigned int i); // 测试第i道题
void DisplayResult(unsigned int num = NUM); // 显示测试结果
void DisplayResultAnswer(unsigned int i); // 显示第i道题
int main(int argc, char* argv[])
{
GenerateQuestion();
CalculateRightAnswer();
Ask();
DisplayResult();
return 0;
}
void DisplayResult(unsigned int num /* = NUM */)
{
assert(num<=NUM);
printf("\n\nThis Test Result:\n");
unsigned int i=0;
for (i=0; i<num; ++i)
{
DisplayResultAnswer(i);
}
int score = 0;
for(i=0; i<num; ++i)
{
if (UserScore[i])
{
++score;
}
}
printf("本次测试总分: %d\n\n", score*10);
}
void DisplayResultAnswer(unsigned int i)
{
assert(i<NUM);
printf("第%d题: %d %c %d = ?", i, equ[i].x, equ[i].sig, equ[i].y);
printf(" Your Ans: %f, Right Ans: %f", UserAnswer[i], RightAnswer[i]);
UserScore[i] ? printf(" Get 10 score.\n") : printf(" Miss 10 score.\n");
}
void Ask(unsigned int num)
{
assert(num<=NUM);
unsigned int i=0;
for (i=0; i<num; ++i)
{
AskAnswer(i);
printf("\n");
}
}
void AskAnswer(unsigned int i)
{
assert(i<NUM);
printf("第%d题: %d %c %d = ? ", i, equ[i].x, equ[i].sig, equ[i].y);
scanf("%f",&UserAnswer[i]);
if (UserAnswer[i] == RightAnswer[i])
{
UserScore[i] = true;
printf("good, you get ten score, come on!\n");
}
else
{
UserScore[i] = false;
printf("sorry, you make a mistake, be careful!\n");
}
}
void GenerateQuestion(unsigned int num)
{
assert(num <= NUM);
srand( (unsigned)time( NULL ) );
unsigned short i=0;
for (i=0; i<num; ++i)
{
equ[i].x = 1+rand()%100; // 1 ~ 100
equ[i].y = 1+rand()%100; // 1 ~ 100
equ[i].sig = SIG[rand()%4]; // 0 ~ 4
}
}
void CalculateRightAnswer(unsigned int num)
{
assert(num <= NUM);
unsigned short i=0;
for (i=0; i<num; ++i)
{
switch (equ[i].sig)
{
case '+':
RightAnswer[i] = float(equ[i].x + equ[i].y);
break;
case '-':
RightAnswer[i] = float(equ[i].x - equ[i].y);
break;
case '*':
RightAnswer[i] = float(equ[i].x * equ[i].y);
break;
case '/': // 因为全部是1~100,所以y!=0
RightAnswer[i] = float(equ[i].x / equ[i].y);
break;
}
}
}
⑦ 用C语言编写“小学数学考试”
保留历史记录这个,还是挺复杂的。。。。。
你要这个干啥
⑧ c 语言程序设计!! 小学生数学测试软件系统设计
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void menu();
void add();
void sub();
void mul();
void div1();
void main()
{
int a;
while(1)
{
menu();
printf("请选择相应的选项:");
scanf("%d",&a);
switch(a)
{
case 1:
add();
break;
case 2:
sub();
break;
case 3:
mul();
break;
case 4:
div1();
break;
case 5:
exit(0);
break;
default:
break;
}
}
}
void menu()
{
printf("***********************************************\n");
printf("*☆☆☆☆☆☆☆小学数学测试软件☆☆☆☆☆☆☆☆☆☆ *\n");
printf("***********************************************\n");
printf("*---------请选择您要进行的操作----------------*\n");
printf("*---- ●1. 加法测试 ----*\n");
printf("*---- ●2. 减法测试 ----*\n");
printf("*---- ●3. 乘法测试 ----*\n");
printf("*---- ●4. 除法测试 ----*\n");
printf("*---- ●5. 退出系统 ----*\n");
printf("***********************************************\n");
}
void add()
{
int a,b,c,d,re=0,sum=0;
system("cls");
while(1)
{
a=rand()%100;
b=rand()%100;
printf("%d+%d=",a,b);
scanf("%d",&c);
if(c==(a+b))
{
re++;
sum++;
printf("回答对了!还要继续答题吗?\n 选择的题目数:%d,答对的题目数字:%d\n1.继续 2.退出",re,sum);
}
else
{
re++;
printf("回答错了.正确答案为%d.还要继续答题吗?\n选择的题目数:%d,答对的题目数字:%d\n1.继续 2.退出",a/b,re,sum);
}
scanf("%d",&d);
if(d==2)
break;
else
system("cls");
}
system("cls");
}
void sub()
{
int a,b,c,d,re=0,sum=0;
system("cls");
while(1)
{
a=rand()%100;
b=rand()%100;
while((a-b)<0)
{
a=rand()%100;
b=rand()%100;
}
printf("%d-%d=",a,b);
scanf("%d",&c);
if(c==(a-b))
{
re++;
sum++;
printf("回答对了!还要继续答题吗?\n 选择的题目数:%d,答对的题目数字:%d\n1.继续 2.退出",re,sum);
}
else
{
re++;
printf("回答错了.正确答案为%d.还要继续答题吗?\n选择的题目数:%d,答对的题目数字:%d\n1.继续 2.退出",a/b,re,sum);
}
scanf("%d",&d);
if(d==2)
break;
else
system("cls");
}
system("cls");
}
void mul()
{ int a,b,c,d,re=0,sum=0;
system("cls");
while(1)
{
a=rand()%20;
b=rand()%20;
printf("%d*%d=",a,b);
scanf("%d",&c);
if(c==(a*b))
{
re++;
sum++;
printf("回答对了!还要继续答题吗?\n 选择的题目数:%d,答对的题目数字:%d\n1.继续 2.退出",re,sum);
}
else
{
re++;
printf("回答错了.正确答案为%d.还要继续答题吗?\n选择的题目数:%d,答对的题目数字:%d\n1.继续 2.退出",a/b,re,sum);
}
scanf("%d",&d);
if(d==2)
break;
else
system("cls");
}
system("cls");
}
void div1()
{
int a,b,c,d,sum=0,re=0;
system("cls");
while(1)
{
a=rand()%100;
b=rand()%100;
if(b==0)
b=rand()%100;
while((a%b)!=0)
{
a=rand()%100;
b=rand()%100;
if(b==0)
b=rand()%100;
}
printf("%d / %d=",a,b);
scanf("%d",&c);
if(c==(a/b))
{
sum++;
re++;
printf("回答对了!还要继续答题吗?\n 选择的题目数:%d,答对的题目数字:%d\n1.继续 2.退出",re,sum);
}
else
{
re++;
printf("回答错了.正确答案为%d.还要继续答题吗?\n选择的题目数:%d,答对的题目数字:%d\n1.继续 2.退出",a/b,re,sum);
}
scanf("%d",&d);
if(d==2)
break;
else
system("cls");
}
system("cls");
}
⑨ 用C语言编写一个简单的"小学数学测试系统"
include <stdio.h> /* 调用库函数 */
#include <stdlib.h> /* 调用库函数 */
int Tha; /* 变量 表示第一个运算数 */
int Thb; /* 第二个运算数 */
int Tresult; /* 正确答案 */
int Qcount; /* 题目的个数 */
int Upnum; /* 升级的分数 */
int Tscore; /* 当前得分 */
char op; /* 运算符号 */
TestTen() /* 出第一个级别题的函数 */
{
int Userda; /* 用户给出的答案 */
int temp; /* 临时变量,用于交换两个变量得值 */
op=random(4)+1; /* 产生一个1-4之间的随机数,用于表示+ ,- , * , / */
switch(op) /* 判断运算符是什么 */
{
case 1: /* 加 的情况 */
{ Tha=random(10); /* 产生一个0-9之间的随机数 放在第一个运算数 Tha中 */
Thb=random(10); /* 产生一个0-9之间的随机数 放在第二个运算数 Thb中 */
Tresult=Tha+Thb;break; /* 计算出正确答案 放在 Tresult中 */
}
case 2: /* 减 的情况 */
{ Tha=random(10);
Thb=random(10);
if(Tha<Thb) /* 减不能的负 所以第一个运算数要比第二个大,如果小,则交换两变量的值 */
{temp=Tha;Tha=Thb;Thb=temp;} /* 交换 */
Tresult=Tha-Thb;break; /* 计算出正确答案 放在 Tresult中 */
}
case 3: /* 乘 的情况 */
{ Tha=random(10);
Thb=random(10);
Tresult=Tha*Thb;break;
}
case 4: /* 除 的情况 */
{do /* 循环 保证可以除尽 */
{ do /* 循环保证 除数不为 0 */
{Tha=random(10);
Thb=random(10);
if(Tha<Thb)
{temp=Tha;Tha=Thb;Thb=temp;}
}while(Thb==0) ; /* 当除数0 的时候继续产生新的随机数 */
}while((Tha%Thb)!=0); /* 当不能整除的时候继续产生新的随机数 */
Tresult=Tha/Thb;
break;
}
}
switch(op) /* 根据 op的值决定输出 问题 */
{
case 1: {printf("\n%d + %d = ",Tha,Thb);break;}
case 2: {printf("\n%d - %d = ",Tha,Thb);break;}
case 3: {printf("\n%d X %d = ",Tha,Thb);break;}
case 4: {printf("\n%d / %d = ",Tha,Thb);}
}
scanf("%d",&Userda); /* 用户输入答案 */
while(Userda!=Tresult) /* 判断答案是否正确 */
{ if(Tscore>=10) /* 不正确减分 */
Tscore=Tscore-10;
printf("\nWrong! Now Your Score: %d",Tscore); /* 输出错误信息和 当前分数 */
/*if(Tscore<Upnum)
return; */
printf("\n Input The Answer Again: "); /* 提示重新输入 */
scanf("%d",&Userda); /* 用户输入答案 */
}
Tscore=Tscore+10; /* 答对了 加分 */
printf("\n Right! Now Your Score: %d",Tscore); /* */
}
TestHun() /*出第二个级别题的函数*/
{
int Userda;
int temp;
op=random(4)+1;
switch (op)
{
case 1:
{ Tha=random(90)+10; /* 产生 10-99 之间的随机数,即两位数 */
Thb=random(90)+10;
Tresult=Tha+Thb;break;
}
case 2:
{ Tha=random(90)+10;
Thb=random(90)+10;
if(Tha<Thb)
{temp=Tha;Tha=Thb;Thb=temp;}
Tresult=Tha-Thb;break;
}
case 3:
{ Tha=random(90)+10;
Thb=random(90)+10;
Tresult=Tha*Thb;break;
}
case 4:
{do
{ do
{Tha=random(90)+10;
Thb=random(90)+10;
if(Tha<Thb)
{temp=Tha;Tha=Thb;Thb=temp;}
}while (Thb==0) ;
}while ((Tha%Thb)!=0);
Tresult=Tha/Thb;
break;
}
}
switch(op)
{
case 1: {printf("\n%d + %d = ",Tha,Thb);break;}
case 2: {printf("\n%d - %d = ",Tha,Thb);break;}
case 3: {printf("\n%d X %d = ",Tha,Thb);break;}
case 4: {printf("\n%d / %d = ",Tha,Thb);}
}
scanf("%d",&Userda);
while(Userda!=Tresult)
{ if(Tscore>=10)
Tscore=Tscore-10;
printf("\nWrong! Now Your Score: %d",Tscore);
if(Tscore<Upnum) /* 如果分数小于设定的分数则直接推出函数 */
return;
printf("\n Input The Answer Again: ");
scanf("%d",&Userda);
}
Tscore=Tscore+10;
printf("\n Right! Now Your Score: %d",Tscore);
}
main()
{
int Leiji=0; /* 变量 , 存储 累计答题数目 */
randomize(); /* 保证每次运行程序 产生的随机数序列不相同的语句 */
clrscr(); /* 清屏 : 清除屏幕上上次运行的内容,重新开始运行程序 */
clrscr();
printf("\nTEST START:-------------------------------------");
printf("\n Please Input Question Count: "); /* 提示信息 :输入问题个数 */
scanf("%d",&Qcount); /* 用户输入问题个数 */
do
{printf("\n Please Input UpLevel Score(Times of 10 (Sheng ji de fen shu;)) : ");
/* 提示信息 :输入升级分数(10的倍数 ) */
scanf("%d",&Upnum); /* 用户输入升级分数 */
if(Upnum<10) /* 如果用户输入的升级分数<10 */
printf("\n Must > = 10 ! ");
else if(Upnum%10!=0) /* 如果用户输入的升级分数不是10的倍数 :即 整除10 不等于0 */
printf("\n Must Some Times of 10!(10 de bei shu!)"); /* */
else break;
}while(1); /* 不满足条件永远循环 */
printf("\n--------------------------------------------------------");
printf("\n--------------------------------------------------------"); printf("\nTest Start:");
printf("\n--------------------------------------------------------");
printf("\n----------------------------------");
printf("\n Lever 1 Start :");
Begin1:
printf("\n----------------------");
printf("\n Question: %d",Leiji+1); /* 输出 题号 */
TestTen();
Leiji++;
if(Leiji==Qcount) /* 如果做题个数 和 事先设定好的问题个数相同 则结束答题! */
{ printf("\n--------------------------------------------------------");
printf("\n--------------------------------------------------------\n");
printf("\n Test Over!!!\n");
printf("\n--------------------------------------------------------");
printf("\n Your Final Score: %d",Tscore);
if(Tscore>=Upnum)
printf("\n Your Final Level: LEVEL 2");
else
printf("\n Your Final Level: LEVEL 1");
goto LastLine;
}
if(Tscore<Upnum) /* 分数 小于 升级分数 */
goto Begin1; /* 转向到 Begin1 继续作题 */
printf("\n Up To Advance Level!\n Lever2 Start :---------"); /* 达到升级分数 升级到 Level2 */
Begin2:
printf("\n----------------------");
printf("\n Question: %d",Leiji+1);
TestHun();
Leiji++;
if(Leiji==Qcount)
{ printf("\n--------------------------------------------------------");
printf("\n--------------------------------------------------------\n");
printf("\n Test Over!!!\n");
printf("\n--------------------------------------------------------");
printf("\n Your Final Score: %d",Tscore);
if(Tscore>=Upnum)
printf("\n Your Final Level: LEVEL 2");
else
printf("\n Your Final Level: LEVEL 1");
goto LastLine;
}
if(Tscore<Upnum)
{printf("\nDown To Normal Level! Lever1 : -------"); /* 从Level2答题过程中分数小于升级分数 降级到Level 1 继续答题 */
goto Begin1;}
else
goto Begin2;
LastLine:
printf("\n------------------------------------------------") ;
getchar();getchar(); /* 等待用户输入回车结束程序运行 */
}