C语言——简易判断题答题系统。-创新互联

前言:

闽侯网站建设公司创新互联,闽侯网站设计制作,有大型网站制作公司丰富经验。已为闽侯超过千家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的闽侯做网站的公司定做!

本次程序主要是对随机出题程序的一次简单尝试设计,其中主要涉及到了随机取数、简单数组循环、简单输入输出及简单语法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元起,快前往官网查看详情吧


网页题目:C语言——简易判断题答题系统。-创新互联
文章转载:http://pwwzsj.com/article/dsshoi.html