重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
前言:
闽侯网站建设公司创新互联,闽侯网站设计制作,有大型网站制作公司丰富经验。已为闽侯超过千家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的闽侯做网站的公司定做!本次程序主要是对随机出题程序的一次简单尝试设计,其中主要涉及到了随机取数、简单数组循环、简单输入输出及简单语法if - else的使用,适合初学者的学习。下面列出此次设计程序思路以及所遇到的问题及解决方法等。
整体思路:
一:首先我定义了两个字符数组char timu[100][1000]与char daan[100]将我的题目与答案分别保存起来。(题目与答案可自行定义)
char timu[100][1000]={"1+1=2\n 你的答案: T/F","2+1=1\n 你的答案: T/F","2+5=7\n 你的答案: T/F","3+9=12\n你的答案: T/F","6+9=14\n你的答案: T/F","8+1=9\n你的答案: T/F","6+3=8\n你的答案: T/F","3+1=7\n你的答案: T/F","9+9=0\n 你的答案: T/F","1+1=2\n你的答案: T/F","8+1=9\n你的答案: T/F","1+0=1\n 你的答案T/F","7+2=9\n 你的答案: T/F","16+1=17\n你的答案: T/F","5+5=10\n你的答案: T/F","9+6=8\n你的答案 :T/F","9+2=0\n 你的答案:T/F","17+1=10\n你的答案: T/F","9+8=7\n 你的答案:T/F","50+8=3\n你的答案: T/F"};
char daan[100]={'T','F','T','T','F','T','F','F','F','T','T','T','T','T','T','F','F','F','F','F'};
二:同样,再次定义两个数组int n[10]与char name[10]并结合printf与scanf进行学号与名字的输入及保存。
int sum=0,n[10];
char x,name[10];
printf("姓名:");
scanf("%s",name);
printf("学号:");
三:利用printf进行有关事项的输出。
printf("**答题开始**\n");
printf("判断题(满分为100分,(每题5分)\n");
printf("请输入你的答案:T(正确)/F(错误)(按Enter开始下一题)\n");
printf("答--题--开--始------------------------------------------------------------------------------------------------------\n");
四:主体函数。
for(i=0;i<20;i++)
{
srand((unsigned int)time(NULL));
a=rand()%20;
printf("第%d题\n",i+1);
printf("%s\n",timu[a]);
scanf("%s",&x);
利用循环与得到随机数a,并将随机数a作为数组timu[]的地址,从而实现随机出题。
难点:
1.rand()函数的调用。(用于取随机数)
注意事项与知识链接:1.rand()函数所产生的随机数的范围:0-32767。
2.在c 语言中rand()函数对应的头文件是:stdlib.h。
结果:我们会发现调用了rand()函数后可以取得随机数a,但是仍然存在一个问题,即运行程序,每次产生的随机数相等。
2.srand函数的调用。
为了解决出现的随机数相等这一问题,我们调用函数srand。
注意事项与知识链接:1.使用sand()函数时我们需要用srand()函数设置随机数的种子。同样srand()函数需要一个变化的整型作为随机种子。通常我们使用时间作为随机数生成的种子,因为每次程序运行的时间不相同,所以产生的随机数也不相同。
3.time函数。
注意事项与知识链接:我们只需要给time函数传空指针NULL,他会给我们返回当前的时间,这样可以实现时间种子生成随机数。
注意:调用time函数需要给定头文件time.h。
于是,随机取数:srand(unsigned int time(NULL)),a=rand()%20表示生成0-19的随机数a。
4.scanf(“%s”,&x);
出于人性化考虑,用此形式输入字符串可无视错回车键造成答题结束的情况,并且多次输入TTT/FFF与T/F同效。
易错点:1.for循环中的(i=0;i<20)要与a=rand()%20(生成随机数0-19相对应,否则会出现一项输出不出来的情况)。
2.%s用于输入字符串,容易忽略取地址符,由于x之前并未定义,从键盘手动输入,因此需要加取地址符&。
五:判断正误并计数。
if(x==daan[a]||x-32==daan[a]) { b++; sum=sum+5; printf("恭喜你,回答正确,当前回答正确数%d,得分为%d分;\n",b-1,sum); } else{ printf("很遗憾,回答错误,当前回答正确数%d,得分为%d分;\n",b-1,sum); }
小难点:运用运算符“||”和ASCII码将t/f转换为T/F,即支持小写输入。
六:读取回车及换行。
易错:注意函数最后的读取回车与换行操作(位于循环末)。
getchar(); printf("\n");
getchar();//用于读取回车。
printf(“\n”);//换行。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧