关于c语言求助

来源:百度知道 编辑:UC知道 时间:2024/06/04 18:35:02
小弟想给学生们弄个测试,想用c语言编一个程序,里面有40道题目,运行后让它随机产生10道题目,这10道题目不可以重复。而且,没道题目前要有一个题号,也就是从1到10,一题一行。具体题目先以1+1=,2+2等代替
小弟急需要,请各位大虾帮帮忙,谢谢

不算难,同志,相信自己吧。。。
算给你个提示吧

char *timu[]={
"1+1",
"2+2"
};
int daan[]={
2,
4
};

这样题目和答案就能匹配了。
关键是产生不重复的随机数。
最笨方法是把随机数保存在数组中,每产生一个新的随机数,就和数组里的比较,有相同的话就再产生一次,直到所有都不同,虽然这方法效率不怎么样,但是才40个,根本体现不出算法优劣性。

这样就好了,根据随机数数组元素值进行索引就OK了。

假设随机数数组randarr[10];

for(int i=0;i<10;i++)
{
printf("%d. %s =\n",i+1,timu[randarr[i]]);
int an;
scanf("%d",&an);
if(an==daan[randarr[i]])
{
//回答正确
}
else
{
//回答错误
}
}

这个你自己去搞吧,很麻烦

产生1-40的随机数,例子如下。

但是因为你要求题号不能重复,你要改进下面的程序,我的思路是,在下面程序的基础上,再建立数组a[10],用于创建最后选中的10个1-40之间的题号。选择题号的方法是:先将b[40]数组排序,接着赋值a[0]=b[0],int current=0;然后扫描数组b,满足b[i]!=a[current]的时候,才将b[i]赋给a[current+1],然后current++。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int i,j;
int b[40];