您当前的位置:首页 > 计算机 > 编程开发 > C语言

优秀C程序员的基本素质--丰富的想象、严谨的思维

时间:12-30来源:作者:点击数:

程序运行结果看起来对了,但并不意味着程序没有隐藏的问题

1) 以下程序是从键盘输入一个数(x,x是一个int型整数),计算y(y=1000x+9)并在屏幕上输出,程序基本上是对的,能输出正确的结果。

#include <stdio.h>
void main(){
    int  x, y;
    printf("Please input x:");
    scanf("%d", &x);
    y = 1000*x + 9;
    printf("y=%d\n", y);
}

但是,当x输入为5000000,屏幕上却输出y=705032713,出现了错误。

2) 以下程序的功能是从键盘上读入一串字符,然后在屏幕上输出。

#include <stdio.h>
void main(){
    char  str[10];
    printf("Please input str:");
    scanf("%s", &str);
    printf("str=%s\n", str);
}

若用户在输入str时不小心多按了(或无意碰触)几下键盘,则程序运行会出错,如图3-3所示——可能稍严重的是程序运行死机(不报错),特别严重的是若有人精心设计输入的字符,完全可能造成系统被入侵或被严重破坏。

图3-3 程序运行过程中因用户的输入而出错

3) 以下程序的功能是从计算班中男生(boy)和女生(girl)的比例。如果女生数为0时,程序会怎样?

#include <stdio.h>
void main(){
    int boy, girl;
    printf("Please input boy,girl:");
    scanf("%d,%d", &boy, &girl);
    printf("boy/girl=%.2f\n", boy*1.0/girl);
}

实际工作中,类似的隐藏的问题往往是破坏力巨大的“地雷”,往往造成极大的损失,例如火箭发射、宇宙飞船飞行、高速列车运行中的事故,我们平常接触最多的恐怕是微软的各种系统需要不断地打补丁。因此,在程序设计中,必须缜密考虑各种情况,哪怕是机率极小的意外。

2) 严谨思维的典范——程序员学习的榜样

丰富的想象力、严谨的思维是一个优秀的程序应当具备的素质。 设计程序时不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,并且考虑全面、思维严谨。

以下2个小故事,应当是一个优秀程序员的标准思维,它形象、幽默、充分地展示了一个优秀程序员的严谨、全面的思维。一个优秀的程序员只有这样思考并设计程序,才能保证程序始终能可靠、稳定地工作,减少和避免发生事故。

1) 方程仅仅对于正实数的简单情形成立

物理教授走过校园,遇到数学教授。 物理教授在进行一项实验,他总结出一个经验方程,似乎与实验数据吻合,他请数学教授看一看这个方程。 一周后他们碰头,数学教授说这个方程不成立。可那时物理教授已经用他的方程预言出进一步的实验结果,而且效果颇佳,所以他请数学教授再审查一下这个方程。 又是一周过去,他们再次碰头。数学教授告诉物理教授说这个方程的确成立, "但仅仅对于正实数的简单情形成立。"

2) 判断开枪后树上还有几只鸟

某日,老师在课堂上想看看一学生智商有没有问题,问他:

“树上有十只鸟,开枪打死一只,还剩几只?”
他反问“是无声手枪或别的无声的枪吗?”(例如激光枪)
“不是。”
“枪声有多大?”
“80-100分贝。”
“那就是说会震的耳朵疼?”
“是。”
“在这个城市里打鸟犯不犯法?”
“不犯。”
“您确定那只鸟真的被打死啦?”
“确定。”偶已经不耐烦了“拜托,你告诉我还剩几只就行了,OK”
“OK,树上的鸟里有没有聋子?”
“没有。”
“有没有关在笼子里的?”
“没有。”
“边上还有没有其他的树,树上还有没有其他鸟?”
“没有。”
“有没有残疾的或饿的飞不动的鸟?”
“没有。”
“算不算怀孕肚子里的小鸟?”
“不算。”
“打鸟的人眼有没有花?保证是十只?”
“没有花,就十只。” 偶已经满脑门是汗,且下课铃响,但他继续问
“有没有傻的不怕死的?”
“都怕死。”
“会不会一枪打死两只?” 
“不会。”
“所有的鸟都可以自由活动吗?”
“完全可以。”
“如果您的回答没有骗人,”学生满怀信心的说,“打死的鸟要是挂在树上没掉下来,那么就剩一只,如果掉下来,就一只不剩。”

老师当即晕倒。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
    无相关信息
栏目更新
栏目热门