我的第一个c语言小程序
标题:判断题答题小程序
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语言小程序相关推荐
- C/C++拾遗录--关于一个C语言小程序的分析
虽然编了几年程序,但是对于程序到底是什么规则变成汇编代码的,在这里搞了一个小程序.用VC查看了一下汇编代码.在此之前先介绍一下关于函数运行是堆栈变化的细节. 在高级语言编写程序时,函数的调用是很常见的 ...
- 一个C语言小程序,有10几个命令和MSDOS一样哦:)
/*调用函数中的scanf前没有提示,其实在主函数中输入时,空格后还可以输入被调用函数中的参数*/ /*这样就避免了很多输出的麻烦,而且看着也比较的舒服:-)例如新建立一个文件,就可以直接输入mf a ...
- C语言第一行是1第二行是1和2,【C语言】第一个C语言小程序 —— 日期算法和万年历 2...
1. 上一篇我们只完成了 a. 算出某年某月某日是星期几 b. 打印出某年某月的日历 这一次我写了一个打印某一年的日历.一开始我是不打算写的,因为可以调用之前的方法,分别打印出这一年12个月的日历.但 ...
- C语言小程序实现输出国际象棋棋盘
分享一个C语言小程序,输出国际象棋的棋盘,摘自C语言网dotcpp.com. 题目: 要求输出国际象棋棋盘. 1.程序分析: 用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格. ...
- 常用c语言小程序,c语言经典小程序汇总大全
网上有很多的人说编程有多么多么无聊,其实:不要管别人怎么说,别人说什么,做你自己喜欢做的事就好.坚持下来,你会发现编程的乐趣的.当然,如果你觉得学习编程语言很痛苦,坚持了一段时间后无果,南无果断放弃未 ...
- c语言为什么要建项目,一个C语言小项目为什么都说牛逼
原标题:一个C语言小项目为什么都说牛逼 意在鼓励C语言学者.更有兴趣,学习更富有创业和乐趣! 推荐加学习交流群:658807522 可以在一起学习交流,既是参赛选手,又是学者,也可以先学习再参赛,反正 ...
- c语言min函数_C语言探索之旅 | 第一部分第十课:第一个C语言小游戏
内容简介 前言 准备工作和建议 我的代码 改进方案 第一部分第十一课预告 1. 前言 上一课是 C语言探索之旅 | 第一部分第九课:循环语句 . 经过前面这么多课的努力,我们终于迎来了第一个比较正式的 ...
- Go语言小程序开发快速入门——一、用Gin框架实现简单的信息获取
下面主要介绍如何用Go语言的Gin框架把信息通过接口传到小程序前端 1.准备 (1)注册一个微信小程序 (2)下载微信开发者工具 (3)下载Go语言编辑器,配置Go语言环境 2.新建一个小程序项目 在 ...
- c语言小程序作业,c语言小程序(c语言简单小程序代码)
所以特此求经典C语言小程序.谢谢大家的关注!!! #include #include void function(int n){ int i,j,k,x=0; for(i=1;i<=n;i++) ...
最新文章
- On Perseverance
- Java线程的生命周期及线程的几种状态
- JenKins使用pm2部署.net core网站
- 安卓键盘加上数字_Android自定义键盘的实现(数字键盘和字母键盘)
- javascript指南_JavaScript的完整指南
- SpringBoot精通系列-使用Mybatis Generator生成Dao层代码
- RN-android 打包后,部分图片不显示
- linux启动有两个选择,RHEL5 用CentOS源升级,GRUB出现CentOS,RHEL两个启动项,选择哪一个?...
- LintCode-7-二叉树的序列化和反序列化
- 从 Google 代码库找到的好东西 [转]
- bzoj2002:[Hnoi2010]Bounce 弹飞绵羊
- 专业生物信息linux系统,Evvail | Bio-Linux:生物信息专用Linux系统 | Omics - Hunter
- 网络监控与安全 | 主要网络流量处理技术
- 怎么办,linux的常用命令就是记不住?于是每天推一些linux指令实践总结 -1
- 「HTML+CSS」--自定义按钮样式【004】
- 关于android有道词典的修改
- 金额数字转换(英文、中文)
- 鸿蒙系统小白,站在小白用户的立场上看待华为的鸿蒙系统
- 物联网-云平台可靠性设计
- 尽人事,听天命,十二轮面试最终圆梦字节,记一次最难面试记录
热门文章
- 4pin oled字模,oled图片编码生成方法
- 红外线探测报警器的简单设计
- JS实现字符串模糊匹配
- WPS插件 - 保存Unicode编码的CSV文件
- Elasticsearch:理解 Master,Elections,Quorum 及 脑裂
- const* 和 *const
- C++计算机二级操作题(二)
- ffmpeg通过OpenGL给视频添加下雪特效源码
- 脉脉发布AI人才数据图鉴;『李沐·深度学习论文精读』视频合辑;CVPR 2022自动驾驶资源合集;线性代数图绘笔记;前沿论文 | ShowMeAI资讯日报
- Linux统计文件夹下个数指令