C语言题目

2024-04-29 04:24:09
推荐回答(3个)
回答1:

加到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
#include
#include
#include
#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->ab){
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->ab){
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
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
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;jif(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;jif(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 */

}

回答2:

大体上函数接口就是这样了,功能我没有实现,现在没有时间!
如果满意我晚上回来给你完整的代码!
不满意,也没有关系,写这些也还不算麻烦!呵呵!
#include
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()
{}

回答3:

不难的