C语言,自动生成题目程序

C语言,自动生成题目程序,第1张

程序已加详细注释,并调试通过。
#include<stdioh>
#include<stdlibh>
#include<timeh>
void main()
{int simple();/ 简单'+','-','','/'四则运算函数 /
int mix(); / 混合四则运算函数 /
void exchange(int p1,int p2,int p3);
struct team / 定义一个名称为team的结构体 /
{char name; / 结构体包括2个成员,一个是字符,代表名字 /
int score; / 一个是整数,代表分数 /
}tea[3]={{'A',100},{'B',100},{'C',100}};/ 定义包含三个变量的结构体数组tea[3] /
int i,p,j,t,k,n,m;
int a,b,c;
int result1,answer1,result2,answer2;
int q1,q2,q3;
char ch1,ch2;
printf(" \n"); / 图形界面 /
printf(" $ $\n");
printf(" $ $\n");
printf(" $ welcome jion in this competition!$\n");
printf(" $ $\n");
printf(" $ $\n");
printf(" \n");
for(i=0;i<10;i++)
printf("\n");
printf("input simple count number n:");/ 输入进行简单四则运算的总次数 /
scanf("%d",&n);
printf("\ninput mix count number m:");/ 输入进行混合四则计算的总次数 /
scanf("%d",&m);
printf("\n");
printf(" press any key to begain ! \n");
getch(); / 暂停程序,按任一键继续 /
printf("Begain!\n");/ 游戏开始 /
printf("The first turn\n");/ 第一轮 /
printf("This is simple count\n");/ 这一轮是简单四则运算 /
printf("Please look at the question:\n");
for(p=0;p<n;p++) / 执行n次简单四则计算 /
{result1=simple(); / 调用简单四则运算函数simple()并把返回的结果给整数变量result1 /
printf("Please input one team name:"); / 输入一个结构型team变量中的人名('A','B','C') /
getchar(); / 清除键盘缓冲区字符 /
scanf("%c",&ch1);
printf("\ninput your answer:"); / 输入答案 /
scanf("%d",&answer1);
for(k=0;k<3;k++)
{t=k;
if(ch1==tea[k]name) / 判断输入的名字和tea[3]中3个名字('A','B','C')哪个相同 /
if(result1==answer1)/ 如果输入的答案和计算机算出的答案相同,给该人加5分 /
tea[t]score+=5;
else
{ printf("This answer is wrong\n"); / 否则显示:答案错误 /
printf("The right answer is %d\n",result1);/ 并显示正确答案 /
tea[t]score-=5; / 同时该人分数减5 /
}
}
for(i=0;i<3;i++) / 打印3个人的名字和答案 /
printf("%c%d\n",tea[i]name,tea[i]score);
}
printf("This turn is end\n");/ 这一轮结束 /
printf("\n\n\n\n\n");
printf("The second turn begain!\n");/ 第二轮开始 /
printf("This is mix count!\n"); / 这一轮是混合计算 /
printf("Please look at the question:\n");
for(j=0;j<m;j++) / 执行m次混合计算 /
{result2=mix();/ 调用简单四则运算函数simple()并把返回的结果给整数变量result2 /
printf("please input one team:"); / 输入一个结构型team变量中的人名('A','B','C') /
getchar(); / 清除键盘缓冲区字符 /
scanf("%c",&ch2);
printf("\ninput your answer:");/ 输入答案 /
scanf("%d",&answer2);
for(i=0;i<3;i++)
{t=i;
if(ch2==tea[i]name) / 判断输入的名字和tea[3]中3个名字('A','B','C')哪个相同 /
if(result2==answer2)/ 如果输入的答案和计算机算出的答案相同,给该人加10分 /
tea[t]score+=10;
else
{ printf("\nyour answer is wrong\n"); / 否则显示:答案错误 /
printf("The right answer is %d\n",result2);/ 并显示正确答案 /
tea[t]score-=10; / 同时该人分数减10 /
}
}
for(i=0;i<3;i++)
printf("%c%d\n",tea[i]name,tea[i]score); / 打印3个人的名字和答案 /
}
a=tea[0]score;b=tea[1]score;c=tea[2]score;/ 比较3个人的分数高低 /
if(a>b&&b>c) / 按分数从高到低输出显示人名 /
printf("%c %c %c\n",'A','B','C');
if(a>b&&c>a)
printf("%c %c %c",'C','A','B');
if(a>b&&a>c&&c>b)
printf("%c %c %c\n",'A','C','B');
if(c>a&&c>b&&b>a)
printf("%c %c %c\n",'C','B','A');
if(b>a&&c>a&&b>c)
printf("%c %c %c\n",'B','C','A');
if(b>a&&a>c)
printf("%c %c %c\n",'B','A','C');
q1=&tea[0]score; / 将存放3人分数的3个内存地址赋给三个指向整数的指针变量q1,q2,q3 /
q2=&tea[1]score;
q3=&tea[2]score;
exchange(q1,q2,q3); / 调用交换函数把三人的分数从高到低排序,以便同上面的人名对应,这里实参为指针变量 /
printf("%d %d %d\n",tea[0]score,tea[1]score,tea[2]score);/ 从高到低打印分数 /
}
simple()
{int s,num1,num2,stpy;
srand((unsigned)time(NULL)); / 使用系统时间产生随机数,srand()函数对下面的随机函数rand()进行初始化/
num1=rand()%100+1;/ 求模得到随机数,随机数num1的范围是(0+1)-(99+1),即1-100 /
num2=rand()%100+1;/ 随机数num1的范围也是1-100 /
stpy=rand()%4+1; / 随机数stpy的范围是1-4 /
switch(stpy)
{case 1:s=num1+num2; / 当随机数stpy==1执行加法运算,求产生的两个随机数的和,num1+num2 /
printf("%d+%d=\n",num1,num2);break; / 输出显示计算式 /
case 2:if(num1>=num2)/ 当随机数stpy==2执行减法运算,并且是用大数减小数 /
{ s=num1-num2; / num1>num2时,num1-num2 /
printf("%d-%d=\n",num1,num2);break;
}
else
{ s=num2-num1; / num2>num1时,num2-num1 /
printf("%d-%d=\n",num2,num1);break; / 输出显示计算式 /
}
case 3:s=num1num2;/ 当随机数stpy==3执行乘法运算/
printf("%d%d=\n",num1,num2);break; / 输出显示计算式 /
case 4:s=num1/num2; / 当随机数stpy==4执行除法运算/
printf("%d/%d=\n",num1,num2);break; / 输出显示计算式 /
}
return(s); / 整数s保存运算的结果,并返回给主函数main()中变量result1 /
}
mix()
{int t,num1,num2,num3,stpy;
srand((unsigned)time(NULL));/ 使用系统时间产生随机数,srand()函数对下面的随机函数rand()进行初始化 /
num1=rand()%9+1;/ 求模得到随机数,随机数num1的范围是(0+1)-(8+1),即1-9 /
num2=rand()%9+1;
num3=rand()%9+1;
stpy=rand()%4+1; / 随机数stpy的范围是1-4 /
switch(stpy)
{case 1:t=(num1+num2)(num2-num3); / stpy==1执行带括号加,减,乘混合运算 /
printf("(%d+%d)(%d-%d)=\n",num1,num2,num2,num3); / 输出显示计算式 /
break;
case 2:t=num1num2/num3; / stpy==2执行带括号乘除混合运算 /
printf("%d%d/%d=\n",num1,num2,num3); / 输出显示计算式 /
break;
case 3:t=num1num2-num1/num3;/ stpy==3执行带乘,除,减混合运算 /
printf("%d%d-%d/%d=\n",num1,num2,num1,num3); / 输出显示计算式 /
break;
case 4:t=(num1+num2-num3)num3/num1; / stpy==4执行带括号加,减,乘,除混合运算 /
printf("(%d+%d-%d)%d/%d=\n",num1,num2,num3,num3,num1);
break;
}
return(t); / 整数t保存运算的结果,并返回给主函数main()中变量result2 /
}
void exchange(int p1,int p2,int p3)/ 交换函数,形参为指针变量 /
{void swap(int x,int y);/ 交换函数的目的是让分数从高到低排序,以便和前面的人名对应 /
if(p1<p2) swap(p1,p2); / 比较地址里的分数数值,然后再调用交换函数swap()交换地址里的数值 /
if(p1<p3) swap(p1,p3);
if(p2<p3) swap(p2,p3);
}
void swap(int x,int y)/ 交换指针里面的数值,即分数 /
{int t;
t=x; / 交换指针x和y里面的内容,即分数 /
x=y;
y=t;
}

以上就是关于C语言,自动生成题目程序全部的内容,包括:C语言,自动生成题目程序、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10164242.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存