标题:判断题答题小程序

Author: plc6666
软工专业 工科男
格言:总有人间一两风,填我十万八千梦。

文章目录

    • 标题:判断题答题小程序
  • 一.程序的由来
  • 二.程序的状况
    • 1.程序实现了颜色转换的功能
    • 2.程序能随机抽20题,不重复
    • 3.程序能根据你的分数,给出相应的评语
    • 4.程序有些人性化^ _ ^
  • 三.我遇到的困难及如何解决的
  • 四.写完程序后的心得与体会
  • 五.未来的期待与展望

一.程序的由来

本学期学完C语言后,刘老师为了锻炼学生的写代码能力和语言组织能力。特出此题来考察学生。

二.程序的状况

1.程序实现了颜色转换的功能

答对题目用绿色,答错用红色,输入用黄色,不同颜色搭配,使得程序看起来更加的清爽。
下面是代码展示:

void color(const unsigned short textColor)
{if(textColor>=0 && textColor<=15)SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), textColor);elseSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}

下面是效果图:

2.程序能随机抽20题,不重复

这点比较难得地方在于出了题目后不应该让其再次被抽中,要避免重复的概率,我想了很久在这点上面,最后再一次偶然的机会下,灵感来了,眼前一亮,我想了出来。
下面是我的代码展示:

struct ti{char timu[1000];char daan[8];
};
struct ti f[25];
for(i=20;i>=1;i--)
{   //求随机数。//srand(time(0));与下面效果相同srand((unsigned int )time (NULL));j=1+rand()%(i);......//中间省略了一些代码......strcpy(f[j].timu,f[i].timu);strcpy(f[j].daan,f[i].daan);}

下面是这部分代码的讲解:
这代码的作用就是将随机抽取的题目用完后,将原本放在最后面的题目和答案,占据此题目的下标,除去代码最后几题可能一直重复抽题,题目显示时间过长的问题,从而使得代码运行更加的快。

3.程序能根据你的分数,给出相应的评语

下面是代码展示

void dengji(double s)
{color(5);if(s>=90){printf("很棒哟,请继续保持^_^。");}else if(s>=70){printf("不错哟,还要继续加油哦^_^。");}else if(s>=60){printf("才刚及格,还要努力呀。");}else{printf("还没及格呢>_<,但不要放弃噢,下次一定能行。");}
}

下面是效果图

4.程序有些人性化^ _ ^

(1)输入小写的字母和大写的字母,效果相同,如t和T,二者等价。
(2)当用户不小心输入的字母不为 t or T or f or F,系统会给出提示,并再次给出机会,让其重新输入。(若还是不知悔改,系统会生气哦)
(3)可以在前面输入空格和回车,也可以输入多个单词,但会以第一个单词为答案。
下面是部分代码展示:

     e = 0;while(strcmp(tijiao,"f")!=0&&strcmp(tijiao,"F")!=0&&strcmp(tijiao,"t")!=0&&strcmp(tijiao,"T")!=0){e ++;color(4);if(e<=1)printf("提示:请输入t or T or f or F !!!\n");else{printf("是不是有毛病!请看提示!!!\n");}color(6);scanf("%s",tijiao);flag=0;while((imp = getchar())!='\n'){if(flag==0){color(14);printf("(按第一个不为空格的单词为你提交的答案)\n");flag=1;}}}

下面是效果图:

三.我遇到的困难及如何解决的

1.在写这个小程序时,我用的是结构体来存储数据,这样的好处是:
(1)方便增加其他题目,如果你想增加题目,只需把题目和答案存到结构体内即可,调用时也可以一起调用,可以更灵活的调用数据。
(2)有利于后续随机抽题的实现,细心的你应该已经发现,在二.2程序能随机抽20题,不重复中我使用的就是结构体。在我没用结构体的时的代码:

 int arr[22];memset(arr,511,sizeof(arr));//让arr数组每一个元素都为-1for(i=0;;i++){//求随机数。//srand(time(0));srand((unsigned int )time (NULL));j=1+rand()%20;if(arr[j]!=-1){continue;}arr[j]=1;}

这会导致有可能在抽取最后一道题的时候,如果运气不好会一直循环下去,导致时间耗费的比较多,从而成为垃圾程序。

2.在存储你提交的答案时,由于我使用的是scanf(“%s”,tijiao),它遇到空格便停止输入了,但如果你输入了很多单词,它只会读取第一个,其他的留在缓存区里面。
下面是效果图:

为了解决这个坑,我绞尽脑汁的想,不断在网上查资料,功夫不负有心人。最终想到了用下面这段代码来解决。

 int imp = 0,flag=0;while((imp = getchar())!='\n'){}

这段代码可以帮助我们清除缓存区的数据。下面是效果图:

以上两点就是我写这个程序遇到的最大的问题,但也是在自己的努力下解决了,所以大家在面临问题的时候也不要放弃呀,相信自己一定能行的,加油(ง •_•)ง!!!

四.写完程序后的心得与体会

刚开始,听到刘老师布置这个任务的时候(特别是说可以输入其他字母的时候),我心想这不是判断题吗,为啥还要输入其他的字母,我当时非常的震惊。后面在深入的去学习如何写这个程序的时候,我才发现刘老师的要求不是很难,后来我便去查资料更深入学习,去让程序变得更加的完美。在学习写这程序的过程中,我明白了自学的重要性,和在网上如何快速的查找自己需要的资料,这种能力培养的重要性。回顾此次的学习,感觉收获满满,使自己在一定的程度上明白了自己的优势和劣势。

五.未来的期待与展望

我希望这次写的程序将只是我迈向高级程序员的第一步,在将来我一定会创作出比这要好的程序。这是我人生新的一个起点,加油!!!!向前冲呀

先赞后看,养成习惯!!!^ _^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我坚持的动力。记得关注我哦!

我的第一个c语言小程序相关推荐

  1. C/C++拾遗录--关于一个C语言小程序的分析

    虽然编了几年程序,但是对于程序到底是什么规则变成汇编代码的,在这里搞了一个小程序.用VC查看了一下汇编代码.在此之前先介绍一下关于函数运行是堆栈变化的细节. 在高级语言编写程序时,函数的调用是很常见的 ...

  2. 一个C语言小程序,有10几个命令和MSDOS一样哦:)

    /*调用函数中的scanf前没有提示,其实在主函数中输入时,空格后还可以输入被调用函数中的参数*/ /*这样就避免了很多输出的麻烦,而且看着也比较的舒服:-)例如新建立一个文件,就可以直接输入mf a ...

  3. C语言第一行是1第二行是1和2,【C语言】第一个C语言小程序 —— 日期算法和万年历 2...

    1. 上一篇我们只完成了 a. 算出某年某月某日是星期几 b. 打印出某年某月的日历 这一次我写了一个打印某一年的日历.一开始我是不打算写的,因为可以调用之前的方法,分别打印出这一年12个月的日历.但 ...

  4. C语言小程序实现输出国际象棋棋盘

    分享一个C语言小程序,输出国际象棋的棋盘,摘自C语言网dotcpp.com. 题目: 要求输出国际象棋棋盘. 1.程序分析: 用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格. ...

  5. 常用c语言小程序,c语言经典小程序汇总大全

    网上有很多的人说编程有多么多么无聊,其实:不要管别人怎么说,别人说什么,做你自己喜欢做的事就好.坚持下来,你会发现编程的乐趣的.当然,如果你觉得学习编程语言很痛苦,坚持了一段时间后无果,南无果断放弃未 ...

  6. c语言为什么要建项目,一个C语言小项目为什么都说牛逼

    原标题:一个C语言小项目为什么都说牛逼 意在鼓励C语言学者.更有兴趣,学习更富有创业和乐趣! 推荐加学习交流群:658807522 可以在一起学习交流,既是参赛选手,又是学者,也可以先学习再参赛,反正 ...

  7. c语言min函数_C语言探索之旅 | 第一部分第十课:第一个C语言小游戏

    内容简介 前言 准备工作和建议 我的代码 改进方案 第一部分第十一课预告 1. 前言 上一课是 C语言探索之旅 | 第一部分第九课:循环语句 . 经过前面这么多课的努力,我们终于迎来了第一个比较正式的 ...

  8. Go语言小程序开发快速入门——一、用Gin框架实现简单的信息获取

    下面主要介绍如何用Go语言的Gin框架把信息通过接口传到小程序前端 1.准备 (1)注册一个微信小程序 (2)下载微信开发者工具 (3)下载Go语言编辑器,配置Go语言环境 2.新建一个小程序项目 在 ...

  9. c语言小程序作业,c语言小程序(c语言简单小程序代码)

    所以特此求经典C语言小程序.谢谢大家的关注!!! #include #include void function(int n){ int i,j,k,x=0; for(i=1;i<=n;i++) ...

最新文章

  1. On Perseverance
  2. Java线程的生命周期及线程的几种状态
  3. JenKins使用pm2部署.net core网站
  4. 安卓键盘加上数字_Android自定义键盘的实现(数字键盘和字母键盘)
  5. javascript指南_JavaScript的完整指南
  6. SpringBoot精通系列-使用Mybatis Generator生成Dao层代码
  7. RN-android 打包后,部分图片不显示
  8. linux启动有两个选择,RHEL5 用CentOS源升级,GRUB出现CentOS,RHEL两个启动项,选择哪一个?...
  9. LintCode-7-二叉树的序列化和反序列化
  10. 从 Google 代码库找到的好东西 [转]
  11. bzoj2002:[Hnoi2010]Bounce 弹飞绵羊
  12. 专业生物信息linux系统,Evvail | Bio-Linux:生物信息专用Linux系统 | Omics - Hunter
  13. 网络监控与安全 | 主要网络流量处理技术
  14. 怎么办,linux的常用命令就是记不住?于是每天推一些linux指令实践总结 -1
  15. 「HTML+CSS」--自定义按钮样式【004】
  16. 关于android有道词典的修改
  17. 金额数字转换(英文、中文)
  18. 鸿蒙系统小白,站在小白用户的立场上看待华为的鸿蒙系统
  19. 物联网-云平台可靠性设计
  20. 尽人事,听天命,十二轮面试最终圆梦字节,记一次最难面试记录

热门文章

  1. 4pin oled字模,oled图片编码生成方法
  2. 红外线探测报警器的简单设计
  3. JS实现字符串模糊匹配
  4. WPS插件 - 保存Unicode编码的CSV文件
  5. Elasticsearch:理解 Master,Elections,Quorum 及 脑裂
  6. const* 和 *const
  7. C++计算机二级操作题(二)
  8. ffmpeg通过OpenGL给视频添加下雪特效源码
  9. 脉脉发布AI人才数据图鉴;『李沐·深度学习论文精读』视频合辑;CVPR 2022自动驾驶资源合集;线性代数图绘笔记;前沿论文 | ShowMeAI资讯日报
  10. Linux统计文件夹下个数指令