C语言题目

功能:实现小学生100以内四则运算的学习和测试
基本要求:
主界面设计,选择练习或测试,按ESC结束程序。
题型选择界面设计,选择加、减、乘、除或混合运算,按ESC返回主界面。
系统随机出题,运算数及结果均在100以内,乘、除法应能整除,显示算式。
练习时,系统随机出题,键入结果,正确和错误均有提示,出错时允许再输入,最多三次机会,若还不正确,给出答案。继续出题,按ESC,显示总题数,正确数和正确率。
测试时,系统自动出10道题,每题只给一次机会,每题10分,统计得分。结束后,给出总分,显示各题的对错信息,错误的给出答案。中间按ESC键结束。显示已作题的对错信息,错误的给出答案,不显示得分,按任意键返回题型选择界面。
相关知识:按键操作、数组、指针、结构体等

加到200分吧,我来写.

http://hi.baidu.com/ryw12403/blog/item/a7902aceed97b30492457eba.html

看下结果图。
没有给出混合运算的代码,原理一样,只是逻辑繁些。你可自己试着添加看。
我己写出那几个函数了,你可使用下看.

只能用TC编译,因其中有几个函数VC 不支持。没TC 的话可去我们论坛下个WINTC ,适合初学者,可以直接在WINDOWS 界面运行编译。
http://sprogram.cn/bbs/?a=898114195 Study Program -- 学习编程专题站 C语言版块

刚刚得了270分了,如不是同一个楼主我想我这也是好的。
http://zhidao.baidu.com/question/77939158.html

#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
#define MAX 100
#define N 10
struct math {
int a;
char o;
int b;
int mr;
int rr;
};

typedef struct math MATH;
int menu1(){
char c;
printf("\n\n 1.Practice\n");
printf("\n 2.Test\n");
printf("\n ESC exit\n");
printf("\nEnter choice: ");
c=getch();
if(c!=27)
printf("%c",c);
else
printf("ESC");
printf("\n\n");
return c;
}

int menu2(){
char c;
printf("\n\n 1.A+B\n");
printf("\n 2.A-B\n");
printf("\n 3.A*B\n");
printf("\n 4.A/B\n");
printf("\n 5.A*B+C-D/E\n");
printf("\n ESC return\n");
printf("\nEnter choice: ");
c=getch();

if(c!=27)
printf("%c",c);
else
printf("ESC");
printf("\n\n");
return c;
}

void get_ti(MATH *ti,int flag){
int tem;
switch(flag){
case '1':
ti->o='+';
while(1){
ti->a=rand()%51;

ti->b=rand()%51;
if(ti->a!=ti->b)
break;
}

break;
case '2':

ti->o='-';
while(1){
ti->a=rand()%101;
ti->b=rand()%101;
if(ti->a!=ti->b)
break;
}
if(ti->a<ti->b){
tem=ti->a;
ti->a=ti->b;
ti->b=tem;
}

break;
case '3':
ti->o='*';

ti->a=rand()%51+1;
if(ti->a==51)
ti->a=100;
ti->b=100/(ti->a);
break;

case '4':
ti->o='/';

while(1){
ti->a=rand()%100+1;
ti->b=rand()%100+1;
if(ti->a!=ti->b){
if(ti->a<ti->b){
tem=ti->a;
ti->a=ti->b;
ti->b=tem;
}

if(ti->a%ti->b==0)

break;
}
}

break;
}

}

int getans(char *ans){
int i=0;
char c;
while(1){
c=getch();
if(c>=48&&c<=57){
ans[i]=c;

printf("%c",ans[i]);
i++;
continue;
}

if(c==27)
return 1;

if(c=='\b'){
if(i>0)
printf("%c%c%c",'\b',' ','\b');

i--;
}

if(c=='\r')
break;

}

ans[i]='\0';
return 0;
}

main(){
int m1,m2,r,mr,i,j,k,rnum,wnum,tinum,flag,flag1;
MATH ti,test_ti[N];
float rate;
char ans[5];
randomize();

while(1){ /*1*/

m1=menu1();

switch (m1){ /*1*/
/*****************************/
case '1':
tinum=0;
rnum=0;
wnum=0;
flag=0;

/*-------------------------*/
while(1){
flag1=0;
m2=menu2();

/*aaaaaaaaaaaaaaaaaaaaaaaaaaaa*/
switch (m2){

case '1':
for(j=0;j<5;j++){

get_ti(&ti,'1');
tinum++;
r=ti.a+ti.b;

for(i=1;i<4;i++){
if(i==1)
printf("\n(%d)%d. %2d%c%2d=",j+1,i,ti.a,'+',ti.b);
else
printf("\n%4d. %2d%c%2d=",i,ti.a,'+',ti.b);
if(getans(ans)){

flag1=1;
break;
}

mr=atoi(ans);
if(r==mr)
break ;
else
printf(" %c\n",'X');

}
if(flag1){
printf("\n\nRight Ans: %2d%c%2d=%3d",ti.a,'+',ti.b,r);
tinum--;
break ;
}
if(i<4&&r==mr){
rnum++;
printf(" %c\n",251);
}
else {
wnum++;
printf("\n\nRight Ans: %2d%c%2d=%3d",ti.a,'+',ti.b,r);
}

}

break;

case '2':
for(j=0;j<5;j++){

get_ti(&ti,'2');
tinum++;
r=ti.a-ti.b;

for(i=1;i<4;i++){
if(i==1)
printf("\n(%d)%d. %2d%c%2d=",j+1,i,ti.a,'-',ti.b);
else
printf("\n%4d. %2d%c%2d=",i,ti.a,'-',ti.b);
if(getans(ans)){

flag1=1;
break;
}

mr=atoi(ans);
if(r==mr)
break ;
else
printf(" %c\n",'X');

}
if(flag1){
printf("\n\nRight Ans: %2d%c%2d=%3d",ti.a,'+',ti.b,r);
tinum--;
break ;
}
if(i<4&&r==mr){
rnum++;
printf(" %c\n",251);
}
else {
wnum++;
printf("\n\nRight Ans: %2d%c%2d=%3d",ti.a,'-',ti.b,r);
}

}

break;
case '3':
for(j=0;j<5;j++){

get_ti(&ti,'3');
tinum++;
r=ti.a*ti.b;

for(i=1;i<4;i++){
if(i==1)
printf("\n(%d)%d. %2d%c%2d=",j+1,i,ti.a,'*',ti.b);
else
printf("\n%4d. %2d%c%2d=",i,ti.a,'*',ti.b);
if(getans(ans)){

flag1=1;
break;
}

mr=atoi(ans);
if(r==mr)
break ;
else
printf(" %c\n",'X');

}
if(flag1){
printf("\n\nRight Ans: %2d%c%2d=%3d",ti.a,'+',ti.b,r);
tinum--;
break ;
}
if(i<4&&r==mr){
rnum++;
printf(" %c\n",251);
}
else {
wnum++;
printf("\n\nRight Ans: %2d%c%2d=%3d",ti.a,'*',ti.b,r);
}

}

break;

case '4':
for(j=0;j<5;j++){

get_ti(&ti,'4');
tinum++;
r=ti.a/ti.b;

for(i=1;i<4;i++){
if(i==1)
printf("\n(%d)%d. %2d%c%2d=",j+1,i,ti.a,'/',ti.b);
else
printf("\n%4d. %2d%c%2d=",i,ti.a,'/',ti.b);
if(getans(ans)){

flag1=1;
break;
}

mr=atoi(ans);
if(r==mr)
break ;
else
printf(" %c\n",'X');

}
if(flag1){
printf("\n\nRight Ans: %2d%c%2d=%3d",ti.a,'+',ti.b,r);
tinum--;
break ;
}
if(i<4&&r==mr){
rnum++;
printf(" %c\n",251);
}
else {
wnum++;
printf("\n\nRight Ans: %2d%c%2d=%3d",ti.a,'/',ti.b,r);
}

}
break;

case '5':

break;
case 27:
printf("\n\nTotal %2d TiMu.",tinum);
if(tinum){
printf("\nRight %2d ti.",rnum);
rate=(float)rnum/tinum;
printf("\nRight rate %.2f%",rate*100);
}
flag=1;

}

/*aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa*/
if(flag) {
flag=0;
break;
}

}
/*------------------------------*/
break;
/*****************************/

case '2':
tinum=0;
rnum=0;
wnum=0;
flag=0;

for(i=0;i<N;i++){

m2=rand()%4+49;

switch (m2){
/*111111111111111111111111*/
case '1':
get_ti(&test_ti[i],'1');
r=test_ti[i].a+test_ti[i].b;
test_ti[i].rr=r;
printf("\n%2d%c%2d=",test_ti[i].a,'+',test_ti[i].b);
if(getans(ans)){

flag=1;
break;
}

mr=atoi(ans);
test_ti[i].mr=mr;
if(r==mr){
rnum++;
tinum+=10;
}
else
wnum++;

break;
/*222222222222222222222222*/
case '2':
get_ti(&test_ti[i],'2');
r=test_ti[i].a-test_ti[i].b;
test_ti[i].rr=r;
printf("\n%2d%c%2d=",test_ti[i].a,'-',test_ti[i].b);
if(getans(ans)){

flag=1;
break;
}

mr=atoi(ans);
test_ti[i].mr=mr;
if(r==mr){
rnum++;
tinum+=10;
}
else
wnum++;
break;
/*333333333333333333333333333*/
case '3':
get_ti(&test_ti[i],'3');
r=test_ti[i].a*test_ti[i].b;
test_ti[i].rr=r;
printf("\n%2d%c%2d=",test_ti[i].a,'*',test_ti[i].b);
if(getans(ans)){

flag=1;
break;
}

mr=atoi(ans);
test_ti[i].mr=mr;
if(r==mr){
rnum++;
tinum+=10;
}
else
wnum++;
break;
/*4444444444444444444444444444*/
case '4':
get_ti(&test_ti[i],'4');
r=test_ti[i].a/test_ti[i].b;
test_ti[i].rr=r;
printf("\n%2d%c%2d=",test_ti[i].a,'/',test_ti[i].b);
if(getans(ans)){

flag=1;
break;
}

mr=atoi(ans);
test_ti[i].mr=mr;
if(r==mr){

rnum++;
tinum+=10;
}
else
wnum++;
break;
/*555555555555555555555555*/

case '5':
break;

}

if(flag){
flag=0;
break;
}

} /*end for(i=0;i<N;i++)*/

printf("\n\n\nTest result: Do %2d TiMu score %2d",i,tinum);

if(i){

printf("\n\n Right TiMu %2d\n",rnum);

for(j=0;j<i;j++){
if(test_ti[j].rr==test_ti[j].mr){
printf("\n%2d%c%2d=%3d %c",test_ti[j].a,test_ti[j].o,test_ti[j].b,test_ti[j].rr,251);
printf(" +10\n");
}

}

printf("\nPress any key...");
getch();

if(rnum!=i){
printf("\n\n Wrong TiMu %2d\n",wnum);
for(j=0;j<i;j++){
if(test_ti[j].rr!=test_ti[j].mr){
printf("\nYour answer %2d%c%2d=%3d %c",test_ti[j].a,test_ti[j].o,test_ti[j].b,test_ti[j].mr,'X');

printf("\nRight answer %2d%c%2d=%3d\n",test_ti[j].a,test_ti[j].o,test_ti[j].b,test_ti[j].rr);
}
}

printf("\nPress any key...");
getch();
}/*end if(rnum!=i)*/

}/*end if(i)*/

break;
/*****************************/
case 27:

exit(0);

}/*end switch (m1){ 1 */

} /*end while(1){ 1 */

}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-07
大体上函数接口就是这样了,功能我没有实现,现在没有时间!
如果满意我晚上回来给你完整的代码!
不满意,也没有关系,写这些也还不算麻烦!呵呵!
#include <stdio.h>
void test();
void exam();
void choosetype();
int plus();
int sub();
int mul();
int div();
int score()

main()
{
char *input[3];
while(1)
{
printf("choose mode 1:test,2: exam:");
scanf("%s",input);
if(input[0]=='1')
test();
else if(input[0]=='2')
exam();
else if(input[0]=='e')
exit(0);
else
printf("wrong code,input again\n");
}
}
void test()
{
choosetype();
}
void exam()
{
choosetype();
}
void choosetype()
{
char cho[3];
printf("choose the type of ques 1:plus 2:sub 3:mul 4:div");
scanf("%s",cho);
switch(cho[0])
case '1':
plus();
case '2':
sub();
case '3':
mul();
case '4':
div();
default:
printf("poor input code\n");
}
int puse()
{}
int sub()
{}
int mul()
{}
int div()
{}
int score()
{}
第2个回答  2008-12-03
不难的

c语言程序设计简答题汇总?
C语言题目简答题1、(c=65c=90)?(c=c+32):(c=c)\/*符合你的要求,不是C语句,而是C表达式*\/ 2、a%10==5\/*符合你的要求,不是C语句,而是C表达式*\/ 3、【题目不全啊】4、【题目不全啊】5、这个题算是所有6个题中最难的了。首先,fun函数中定义了一个static类型的变量,含义如下:有...

帮忙完成一下这个C语言课设题目
1. 首先,定义篮球价格变量为300,最高价格变量为1000,猜测值变量为150。2. 使用循环进行猜测。如果猜测值与实际价格不同,根据实际情况调整猜测值。如果猜测值大于实际价格,猜测值更改为猜测值的一半;如果猜测值小于实际价格,猜测值更改为猜测值的三分之二再除以二。直到猜测值等于实际价格。具体代码...

速阅C语言经典考题
C语言经典题目 1、有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?2、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?3、用*号输出字母C的图案。4、输出9*9口诀。5、利用条件运算符的嵌套来完成此题:学习成绩>=90分...

c语言 循环题目
题意大概意思是这样:循环进入后首先执行循环,首先判断i是否小于7,再判断如果I被2整除,i就自增1,s就是当前s和当前i相加的和,另个循环例如for 1.for 有两种形式:一种是数字形式,另一种是通用形式。数字形式的 for 循环,通过一个数学运算不断地运行内部的代码块。 下面是它的语法:block 将...

c语言小题目。急急急
main(){int a[10],i,j,k,t;for(i=0;i<10;i++) scanf("%d",&a[i]);for(i=0;i<9;i++){k=i;for(j=i+1;j<10;j++)if(a[j]<a[k]) k=j;if(k!=i){t=a[k];a[k]=a[i]; a[i]=t;} } for(i=0;i<10; i++)printf("%5d",a[i]);} 2. 计算正负...

很简单的C语言题
解析C语言题目的关键在于理解运算符的优先级和运算规则。给定问题:找出正确的表达式计算结果为2。首先,需要明确题目中的操作符“%”表示取余运算,“\/”表示除法运算。选项D为:a % 7除以5余2。我们可以将这个表达式拆分为两部分:a % 7 和 除以5余2。1. a % 7:此表达式的结果为a除以7的...

c语言经典100
您好,c语言经典100题:【程序1】题目:有1,2,3,4个数字,能组成多少个互不相同且无重复数字的三位数 都是多少 1.程序分析:可填在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去 掉不满足条件的排列.2.程序源代码:main(){ int i,j,k;printf("\\n");for(i1;i<5;i++)\/*...

C语言编程题目
下面是一些C编程题目:1. 编写程序,从键盘输入两个整数,输出它们的和、差、积、商、余数。2. 编写程序,从键盘输入三角形的三条边长,判断它们是否可以构成三角形,并输出三角形的类型(等边、等腰、一般)。3. 编写程序,从键盘输入字符串,统计其中的大写字母、小写字母、数字和其他字符的个数,并...

C语言编程问题求解答
9题:include <stdio.h>int main(){int N=1;scanf("%d",&N);if(N<=0){N=1;}int numSpaceFirst=N-1;for(int row=0; row<N; row++,numSpaceFirst--){for(int i=0; i<numSpaceFirst; i++){printf(" ");}for(int i=0; i<2*row-1; i++){printf("*");}printf("\\n...

c语言问题 若int x=6;则x+=x-=x*x表达式最后x的值是( )。 要详细的解 ...
C语言~ 其他类似问题2012-02-24 若x为int类型变量,则执行以下程序后的x值是? x=6; ... 5 2015-09-24 c语言中,x=6,表达式(x+=x\/=x%=4)的值是多少?... 3 2014-11-03 请问若定义"int x=5;",则表达式x+=x- =x*=... 2010-04-16 C语言题目:若有int x,则执行下面语句x=8; x+=...

相似回答
大家正在搜