当前位置:首页 » 编程语言 » c语言出题

c语言出题

发布时间: 2022-08-02 09:10:32

㈠ 用c语言写一个 小学生口算出题系统

一、设计的流程:

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

二、例程:

#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<time.h>
voidmain()
{
inta[10],b[10],d[10],c[10],num=0,result,add=0;
floatval;
charfa[5]={'+','-','*','/'};

/*出10道题*/
while(1)
{
srand((unsigned)time(NULL));
d[num]=abs(rand())%4;/*保证出题算法的随机性*/
while(1)/*保证出题成功*/
{
c[num]=-1;
a[num]=abs(rand())%100;
b[num]=abs(rand())%100;
if(d[num]==0)c[num]=a[num]+b[num];
elseif(d[num]==1)c[num]=a[num]-b[num];
elseif(d[num]==2)c[num]=a[num]*b[num];
elseif(d[num]==3)
{
if(b[num]>0)val=1.0*a[num]/b[num];
elseval=-1;
}
if(d[num]<=2)
{
if(c[num]>=0&&c[num]<=100)break;
}
else
{
if(a[num]==int(val)*b[num]&&val>=0)
{c[num]=val;break;}
}
}
num++;
if(num==10)break;
}
/*回答*/
num=0;
while(1)
{
printf("%d%c%d=",a[num],fa[d[num]],b[num]);
scanf("%d",&result);
if(result==c[num])
{
printf("回答正确! ");
add+=10;
}
else
printf("错误,正确答案:%d ",c[num]);
num++;
if(num==10)break;
}
printf(" 得分:%d ",add);
getch();
}

㈡ 用c语言编程怎样持续出算术题

/*************************************************************
*
*加减乘除自动出题,并检验输入结果是否正确
*a + b, a - b, a*b,a/b
*
**************************************************************/

#include<stdio.h>
#include<stdlib.h>

#define MAX 100 /*数据a,b最大值*/
#define N 4

void main(void)
{
int flag = 1;

float a = 0, b = 0, r = 0;
int i = 0;

while(flag)
{
a = (float)(rand()%MAX);/*随即产生a*/
b = (float)(rand()%MAX);/*随即产生b*/
i = rand()%N;/*随即产生符号,0加 1减 2乘 3除*/

switch(i)
{
case 0 : /*加法*/
printf("\n %.1f + %.1f = ", a,b);
scanf("%f", &r);
if(r == (a + b))
{
printf("\nRight!");
}
else
{
printf("\nWrong! %.1f + %.1f = %.1f",a, b, a + b);
}
break;

case 1 : /*减法*/
printf("\n %.1f - %.1f = ", a,b);
scanf("%f", &r);
if(r == (a - b))
{
printf("\nRight!");
}
else
{
printf("\nWrong! %.1f - %.1f = %.1f",a, b, a - b);
}
break;

case 2 : /*乘法*/
printf("\n %.1f * %.1f = ", a,b);
scanf("%f", &r);
if(r == (a * b))
{
printf("\nRight!");
}
else
{
printf("\nWrong! %.1f * %.1f = %.1f",a, b, a * b);
}
break;

case 3 : /*除法*/
printf("\n %.1f / %.1f = ", a,b);
scanf("%f", &r);
if(r == (a / b))
{
printf("\nRight!");
}
else
{
printf("\nWrong! %.1f / %.1f = %.1f",a, b, a / b);
}
break;

default: break;

}

/*继续输入1,退出输入0*/
printf("\nContinue ? 1/0 :");
scanf("%d", &flag);

}

}

㈢ c语言,出题程序

main()
{
int a,b,c;
char s;
scanf("%d%d",&a,&b);
getchar();
scanf("%c",&s);
if(s=='+')c=a+b;
else if(s=="-")c=a-b;
else c=-1;
if(c>=0)
printf("%d%c%d=%d\n",a,s,b,c);
else printf("你的输入有错误!\n");
}
有什么问题请留言。

㈣ 计算机二级C语言都有哪些题型

全国计算机二级C语言程序设计包括40个单选题(每题一分)和三道操作题(60分)。


单选题中1~10题为二级公共基础知识,考试内容包括数据结构与算法、程序设计基础、软件工程基础、数据库设计基础四部分。单选题的11~40题是C语言的内容。


操作题包括程序填空(18分)、程序改错(18分)和编程题(24分)各一题。
程序填空是将一个完整的程序,扣掉两到三处,让考生将它填写完整。由于每位考生具体抽到的题目不同,程序填空有2到3个空要填。程序填空题以实际填写的内容为评分依据,填写正确一个空,给一个空的分。如果是2个空,每个空就是9分;如果是3个空每个空是6分。
程序改错也是一个完整的程序,其中有2~3处错误要求考生将他们改正。与程序填空类似,2处错误的话,每处9分,3处错误的话,每处6分。程序改错题的题目会提示每一处错误所在的行,在那一行的上一行有********found********标识。
编程题是要求考生编写一个程序,然后运行出题干要求的结果。题目中主函数main()会完整给出,在主函数中将调用fun()函数,fun函数由考生自己编写。编程题以运行结果给分,所编写完成后必须运行,否则没分。因此,大多数情况下,编程题要么就是得24分满分,要么就是0分。

㈤ C语言选择题

D 数组名即为头指针,指向a,后移三位,指向D,输出DEF。
B cpy 意为 。
C scanf("格式",参数)。参数里没有数组的概念。数组退化为指针,即数组名。
D 数组以0开始。
B 字符串处理函数遇到字符串结束符'\0'结束。计算的字符串内容为'\t' 'v' '\\'。长度为3
B 数组初始化,从0位开始,依次赋值。
B i = 5是最后一次循环。一共循环6次。
D 数组初始化,不解释。
B 参数里没有数组的概念。数组退化为指针,即数组名。
C 参数为指针,不解释。

㈥ c语言编程、一个自动出题系统

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <WINDOWS.H>
#include <MATH.H>
void main()
{
int sign=1;
int totalscore=0;
int num=1;
int accurate =0 ;
int answer=0;
int rightanswer=0;
while(totalscore<100)
{
srand(unsigned(time(NULL)));
int a= 10+rand()%89;
int b = 10+rand()%89;
if (a<b)
{
int temp;
temp = a;
a=b;
b=temp;
}
printf("%d %c %d = ? \n",a,sign==1?'+':'-',b);

rightanswer = a+sign*b;
printf("input answer: ");
scanf("%d",&answer);
if (answer == rightanswer)
{
printf("\nanswer right \n");
totalscore+=2;
accurate++;
}
else
{
printf("\nanswer error! please input again \n");
scanf("%d",&answer);
if (answer == rightanswer)
{
printf("\nanswer right \n");
totalscore+=1;
accurate++;
}
}
printf("score : %d \n",totalscore);
num++;
sign=-sign;
Sleep(100);
}
printf("----------------------------\n");
printf("Total Score \t %d\n",totalscore);
printf("Accuracy Rate \t %0.2f%\n ",1.0*accurate/num);
}

//简单的写了一个,也没有注意结构,但是可以实现功能。仅供参考。

㈦ C语言如何实现从指定题库里抽取题目,实现随机出题

比如现在有100道题,要抽10道题。

  1. 先建立一个试题索引数组,idxarr = {0,1,2,...,99}

  2. 然后用随机数生成函数rand(),生成一个0到99的随机数,把索引数组里面该索引的值与数组中最后一个值调换,比如生成随机数为2,则修改索引数组为idxarr={0,1,99,3,4,...,98,2}

  3. 然后再生成一个0到98的随机数,把索引数组里面该索引的值与数组中倒数第二个值调换,比如这次生成的随机数是4,则修改索引数组为idxarr={0,1,99,3,98,5,...,97,4,2}

  4. 以此类推...执行10次,最后索引数组里面最后十个里面的值,就是抽出的试题索引号

    有啥不明白的,可以再问我

㈧ c语言题目

上面回答的答案有错误:
17.D 非法的是5e2.5,0e0是正确的。例如:ien的意思就是i乘以10的n次方,因此可以有0乘以10的0次方,但不能5乘以10的2.5次方,n要为整数
21.理解就好,忽略标点错误、变量未定义等这种问题的话就是C 死循环,否则选D,while(1<=x<=2)这里让人费解,这种代码一般都是程序表达式与数学表达式没有分清而用错的情况下写出来的,但不是语法错误,运行不报错,自己编程中要重视这类,因为出错后很难查找,while(1<=x<=2)这句话的意思实际上相当于1<=x 执行后 为0 或 1,然后是 0<=2 或者1<=2 恒为真,也就是相当于while(true)了,实际结果是打印10个*后打印出一个?,之后就一直打印*
22.没正确答案,有问题,实际结果应该是18,023是八进制,转换后是19,--x,先减1再打印,就是18了。

当然,如果是考试的话21题就选D吧,毕竟那程序肯定是运行不过的,但是总感觉这题的知识点在while那里,如果非那么较真,那所有程序如果不改动都不能通过,因为没头文件和主函数嘛,呵呵,学到知识是最终目的,希望回答对你有帮助
CDCCD 21.自己理解了就好 22.? 23.A 24.D

㈨ 用C语言实现一个小学生口算及自测系统,实现自动出题,根据答题情况评分并记载入档案,并能根据成绩进行排

#include <stdio.h>

#include <stdlib.h>

#include <time.h>


//产生 [a,b] 区间的随机数

#define RANDOM(a,b) (rand()%((b+1)-(a)) + (a))


//产生 1-20 的整数,如要改变算术范围,则修改这个宏的参数即可

#define GEN_VALUE() RANDOM(1, 20)


int main()

{

int v1, v2, t, r, a;

char op, ops[] = { '+', '-', '*', '/' };


srand( (unsigned)time(NULL) ); //用当前时间初始化随机数种子


printf( "请答题 Ctrl+C 结束... " );

while(1)

{

v1 = GEN_VALUE(); //随机生成第1个算数

v2 = GEN_VALUE(); //随机生成第2个算数

op = ops[ RANDOM(0,3) ]; //随机决定是哪个运算符


//保证第1个算数大于第2个算数,如不需要,则把这个判断删除即可

if( v1<v2 )

{

t = v1;

v1 = v2;

v2 = t;

}


//如果运算符为除法,且v1不能被v2整除则重新生成题目

if( op=='/' && v1%v2!=0 )

continue;

//计算正确的结果

switch(op)

{

case '+': a=(float)v1+(float)v2; break;

case '-': a=(float)v1-(float)v2; break;

case '*': a=(float)v1*(float)v2; break;

case '/': a=(float)v1/(float)v2; break;

}


//输出算式

printf( "%d%c%d=", v1, op, v2 );


//等待输入结果

scanf( "%d", &r );


if( r == a )

printf( " 答对喽! " );

else

printf( " 答错喽!正确答案是:%d ", a );

}

}


热点内容
安卓的哈灵麻将哪里下 发布:2025-01-23 11:26:17 浏览:228
全本免费阅读器在哪缓存 发布:2025-01-23 11:14:54 浏览:438
传输数据加密 发布:2025-01-23 11:03:20 浏览:254
win7文件夹没有共享 发布:2025-01-23 10:55:43 浏览:140
php原链接 发布:2025-01-23 10:49:56 浏览:513
演讲稿脚本需要哪些要素 发布:2025-01-23 10:49:55 浏览:383
传奇日常脚本 发布:2025-01-23 10:45:04 浏览:40
刷华为的系统可以用方舟编译器吗 发布:2025-01-23 10:45:03 浏览:226
java数组反射 发布:2025-01-23 10:39:24 浏览:291
服务器如何从导轨取下来 发布:2025-01-23 10:28:30 浏览:103