啦啦啦,进了计算机系。不用说学习C语言当然少不了。说到写程序少不了是什么?对就是Bug。

什么你还不知道什么是Bug?

Bug是计算机领域专业术语,bug原意是“臭虫”,现在用来指代计算机上存在的漏洞,原因是系统安全策略上存在的缺陷,有攻击者能够在未授权的情况下访问的危害。

名称由来:

为马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最早的一批程序设计师之一,有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而“卡”住了机器的运行。于是,霍波诙谐的把程序故障统称为BUG(飞虫),把排除程序故障叫DEBUG,而这奇怪的“称呼”,竟成为后来计算机领域的专业行话。

以上引自百度百科:bug (计算机领域漏洞)

经过这些天的学习,我整理了我与我的同学们在上机过程中遇到的Bug。有句话说得好:“那些受过的伤,终究会成为我们身上的勋章”。有错误是件好事,它可以让我们变成“大神"又进一步。好了,废话不多说,Follow me 开始Debug吧!

一.变量初始化不规范导致的错误

#include #include int main()//这是个运动会奖牌数目统计{    int n,z;  //count1表示金牌数目,以此类推count2,count3    int count1,count2,count3;//这里属于局部变量初始化不规范    printf("请输入运动会天数:");    scanf("%d",&n);    for(int i=0;i

这个程序的运行图:

很显然银牌数目是错的,3+5+5怎么可能等于29呢?经过我的debug发现一开始变量count2的值就不为零。但是为什么呢?于是我去查了一下资料,找到了问题所在:

原来啊,这是由于变量存放的位置是不同导致的。全局变量、静态变量处于数据区,默认初始值为0(指定的话就为指定值),而局部变量处于堆栈区,它的值为内存中的值,是随机的。

这里我根据这个理解我给出了两种改法

法1:把int count1,count2,count3;变成全局变量

#include #include int main()//这是一段关于密码输入判断的代码{    char String[5]//这里忘写”;“了    printf("请输入4位数的密码:");    gets(String);//接收用户的输入密码    int Stringlength=strlen(String);    if(Stringlength==4)//判断输入的数是否超位    {                if(strcmp(String,"1234")==0)//设定的密码是:1234        {            printf("密码正确");        }        else        {            printf("密码错误");        }    }    else    {        printf("格式错误!你输入了%d位的密码",Stringlength);    }    return 0;}

法2:对局部变量进行初始化赋值

#include #include int main()//这是个运动会奖牌数目统计{    int n,z;  //count1表示金牌数目,以此类推count2,count3表示银牌,铜牌    int count1=0,count2=0,count3=0;//这里对局部变量进行初始化赋值    printf("请输入运动会天数:");    scanf("%d",&n);    for(int i=0;i

它们都是正确的,运行图:

感悟必要的初始化是重要的,不要指望编译器的默认规则。养成良好的编程习惯。

二.忘写分号

#include #include int main()//这是一段关于密码输入判断的代码{    char String[5]//这里忘写”;“了    printf("请输入4位数的密码:");    gets(String);//接收用户的输入密码    int Stringlength=strlen(String);    if(Stringlength==4)//判断输入的数是否超位    {                if(strcmp(String,"1234")==0)//设定的密码是:1234        {            printf("密码正确");        }        else        {            printf("密码错误");        }    }    else    {        printf("格式错误!你输入了%d位的密码",Stringlength);    }    return 0;}

感悟:这种错误是比较容易犯的,特别是零基础的小白和那些先学Python后学C语言的人(因为Python语句结束不用在它后面加" ; ",会有点不习惯)。

改过后的代码以及它的运行图,如图:

左边为正确的代码,右边为它的运行图

三.半角与全角问题(中英文符号问题)

#include #include int main(){    char String[5];    printf("请输入4位数的密码:");    gets(String);//接收用户的输入密码    int Stringlength=strlen(String);    if(Stringlength==4)//判断输入的数是否超位    {                if(strcmp(String,"1234")==0)//密码是:1234        {            printf("密码正确");//这里写的”;“是中文的符号,要改为英文的”;“(这里有一点看不出来)        }        else        {            printf("密码错误");        }    }    else    {        printf("格式错误!你输入了%d位的密码",Stringlength);    }    return 0;}

感悟:这个问题还好,用个好一点的编程软件就好了(因为你输入的中文标点符号和英文的标点符号在编程软件中的颜色是不一样的)。只不过如果你是用VC6来写代码,就没有这功能,很难看出二者的区别。(我用的是CodeBlocks,还不错!)

它俩区别在编程软件上的效果图:

上面黑色的分号是中文符号,下面红色的是英文符号

四.数学表达式上的惯性思维

#include #include int main(){    int x=5;    int a=2x-1;//这里少写了*,应改为“int a=2*x-1;”    printf("%d",a);//将输出9    return 0;}

感悟:哈哈哈,这个问题我就经常犯[捂脸]。经常漏掉”*“运算符。逻辑上没错,但表达上错了

运行效果图:

五.char类型赋值时单引号写成了双引号

#include #include int main(){   char a="a"; //单引号写成了双引号.要改成“ char a='a'; ”   printf("%c",a);//将输出a   return 0;}

感悟乱迁移printf(" ");这种双引号表达,char类型要用单引号。

当然关于char也可以这么写:

#include #include int main(){   char a=97; //单引号写成了双引号.要改成“ char a='a   printf("%c",a);//将输出a   return 0;}

以上两种表达运行效果是一样的,都是输出a

如图:

六.乱迁移printf语句的指定数据宽度和小数位数用法在scanf语句上

#include #include int main(){    float  a=0;    scanf("%.2f",&a);    printf("%.2f",a);    return 0;}

感悟:以为printf("%.2f",a);可以这么表达,那scanf("%.2f",&a);也可以这么表达。这是错误的!

说到scanf函数不得说一下它的定义宽度的问题:

#include #include int main(){    int a=0;//对变量a进行初始化    scanf("%2d",&a);//输入数字(只读入2个字符)    printf("%d",a);//它将输出你刚刚输入的数字的前两位字符    return 0;}

运行效果图

后面的3456以整型的方式存在于缓存中

好了,我的总结到此结束!谢谢大家的耐心阅读[笑]

大家一起进步

c语言运动会分数统计系统_初学C语言Bug大赏相关推荐

  1. c语言编程运动会分数统计系统,东华大学数据结构设计C语言运动会分数统计系统...

    东华大学数据结构设计C语言运动会分数统计系统 东华大学数据结构设计 C 语言运动会分数统计系统东华大学数据结构课程设计 实验报告实验名称: 运动会分数统计系统指导教师:学生姓名:学生学号:实验日期:1 ...

  2. 运动会分数统计系统c语言,运动会分数统计系统

    <运动会分数统计系统>由会员分享,可在线阅读,更多相关<运动会分数统计系统(18页珍藏版)>请在人人文库网上搜索. 1.运动会分数统计系统罗慧明1. 需求分析为了简便地对运动会 ...

  3. c语言编程运动会分数统计系统报告,独家稿件:定稿运动会分数统计系统设计报告_完整版...

    <运动会分数统计系统设计报告_.doc>由会员分享,可免费在线阅读全文,更多与<(定稿)运动会分数统计系统设计报告_(完整版)>相关文档资源请在帮帮文库(www.woc88.c ...

  4. 数据结构课设----运动会分数统计系统

    1.运动会分数统计 [问题描述] 参加运动会的n个学校编号为1 ~ n.比赛分成m个男子项目和w个女子项 目,项目编号分别为1~ m和m+1~ m+w.由于各项目参加人数差别较大,有 些项目取前五名, ...

  5. 运动会分数统计系统(数据结构)C++

    运动会分数统计系统(数据结构)C++ 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m+1--m+w.不同的项目取前五名或前三名积分:取前 ...

  6. C++运动会分数统计系统

    C++运动会分数统计系统 一.运动会分数统计系统 1.功能要求 参加运动会有 n 个学校,学校编号为 1-n.比赛分成m个男子项目,和w个女子项目.项目编号为男子 1····m,女子 m+1····m ...

  7. c语言倒计时不影响进程_初学C语言没有项目练手怎么行,这17个小项目收下不谢...

    image C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多初学者在学习的过程中难免会出现迷茫,比如:不知道C语言可以开发哪些项目,可以应用在哪些实际的开发中--,这些迷茫也导致了我们 ...

  8. c语言运动会成绩统计报告,C语言程序设计运动会成绩统计系统1研究报告.doc

    PAGE 课 程 设 计 报 告 课程名称 <C语言程序设计> 课题名称 运动员分数统计系统 专 业 班 级 学 号 姓 名 指导教师 王颖 2015 年 1月9日 湖南工程学院课 程 设 ...

  9. 运动会分数统计 java语言

    运动会分数统计java语言 运动会分数统计* 设计内容: 参加运动会有n个学校,学校编号为1--n.比赛分成m个男子项目,和w个女子项目.项目编号为男子1--m,女子m叶+1--m+w.不同的项目取前 ...

最新文章

  1. oracle--pl/sql变量定义----
  2. JavaScript实现找出一个数的质因数primeFactors算法(附完整源码)
  3. Spring Aop开发过程中可能出现的异常(通过这些异常可以知道需要什么Jar包)
  4. 笨方法学python之import sys与from sys import argv的区别
  5. CNN-2: AlexNet 卷积神经网络模型
  6. Java step by step(3): Annotation
  7. 机房线路故障,引发多家公司不能上网,和自己de经历有感
  8. JAVA中创建的redis对象_详解Java在redis中进行对象的缓存
  9. 【WePY小程序框架实战四】-使用asyncawait异步请求数据
  10. Codeforces 1042 D Petya and Array
  11. 基于28181协议的视频与平台的对接
  12. windows批量转换网易ncm音乐
  13. openpose环境搭建(详细教程CPU/GPU)windows 10+python 3.7+CUDA 11.6+VS2022
  14. Reg命令查询注册表
  15. linux中静态库和动态库的区别,Linux下静态库和动态库的区别
  16. MCDC — 修正判定条件覆盖
  17. 手机图形计算器matlab,图形计算器Mathlab pro版
  18. 新华三:助力IPv6部署,我们责无旁贷
  19. 大公司还是大城市该怎么选择?
  20. “已成功与服务器建立连接,但是在登录过程中发生错误“的解决方法

热门文章

  1. python 中 sorted() 和 list.sort() 的用法
  2. 中国小品演员都要卷舌?
  3. Javascript 绑定事件和 this理解
  4. ios在异步网络请求上实现同步逻辑
  5. Liunx中进程和计划任务管理
  6. PHP扩展开发入门3------带参数的函数
  7. 吴军 --《硅谷之谜》读书笔记
  8. Theano3.4-练习之多层感知机
  9. jqueryrotate 使用 帮助 笔记 学习
  10. hub-spock-ospf,nbma