设为首页收藏本站

SKY外语、计算机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4876|回复: 0
打印 上一主题 下一主题

[C] c语言之不外如是

[复制链接]

1

主题

0

好友

7

积分

新手上路

Rank: 1

性别
保密
跳转到指定楼层
楼主
发表于 2012-5-27 12:42:39 |只看该作者 |倒序浏览
本帖最后由 sky_yx 于 2015-12-30 14:18 编辑

c语言之不外如是
有人说这句话是不过如此,不过尔尔的意思,含有贬义。我的本意并非如此。
易语言因为是中文的,好学,易懂。
vb很快就能写出一个漂亮的程序出来。
但很遗憾的是,这两门语言我都学不会。
我喜欢简洁的,用特定的符号来代替特定的功能的语言。当然,在这里就是c语言。(因为我没有学过其他的语言)
有人问我,为什么你要学c语言?
我开玩笑的回答:因为c语言以前叫nb语言.....
其实是非b语言的意思。这牵扯到c语言的演化。
关于c语言的演化,这里就不多说了,相信很多人都听得要打瞌睡....
向很多学习其他语言的朋友推介c语言。答曰:俺不会英语....俺不会数学...俺不会...俺不会....
我想说,数学知识是每种计算机语言都需要的吧...这个不光c语言需要。
至于英语么。只要你认得26个字母就行了(是26个还是28个?)
c中的英语单词用到的不多。真的。
可以说和英语几乎没有关系。
只有那么32个关键字是英语。不过你只要记得怎么拼写,怎么使用,就足够了。你甚至不需要知道他的正确读音。不需要练习如何发出这个音。
你只要在键盘上勤加练习,就一定会记住这个词是怎么拼的。
你只要多编程,你就会知道是如何使用,在何处使用,在此处使用和在彼处使用的区别。
任何一篇文章,一首歌曲,一种人生,甚至一句话,都有一个开始和一个结束。有开始就有结束。当然很多现实里的,生活中的,社会上的,有些有开始不一定有结局...比如感情....
一门计算机语言也是一样。
一个程序也是如此。
一个程序是有开始和结束的。而且你必须知道在哪里开始,在哪里结束。也该明确的告诉计算机,你想在哪里结束。
c语言呢?在哪里开始,在哪里结束呢?
main()
{
}
在mai()下面的   {   这个符号表示开始。} 这个符号表示结束。你所需要做的,就是在{和}中间写东西。
假如说你忘记了{ 这个开始符号,你写成了这样;
main()
}
因为你没有指定开始,当然无论你在{}中写了多少东西,都不会实现了。因为根本就没有开始,当然也谈不上结束。
假如你忘记了}这个结束符号,你又写成了这样:
main()
{
你可能有些洋洋得意,还自觉有点小聪明...我指定了开始,却没指定结束。嘻嘻,看你计算机咋办.....
计算机说:爱咋咋地....你必须指定开始和结束,假如漏掉一个,我就不执行。我看你咋办...
于是你为了运行,只好亲自去添上{和}
有了开始和结束,这下好了,终于可以运行一下下了吧?
兴奋的点下运行。。出来一个黑窗口。。除了一片空白还是一片空白...
这是很正常的,因为{和}中间根本就没有东西。想要他有东西,就得自己去填写。
如何填写?
这是一个问题...
一个大大的问题...
首先,你要知道啥是变量,啥是标识符,啥是关键字,啥是运算符,啥是啥,是啥啥....
变量是啥?书上说变量是一段存放数值的值的空间。简单说就是装数字的。
装数字的也得有个名,变量名,这个名就叫标识符,得区别啊,不然装23这个数字的变量和装25的变量有啥不同?
就靠这标识符来区别呢,要不然鬼知道你哪个变量放的是23,哪个变量放的是25?
或许有人说那么麻烦做啥....还非要把23和25分别用两个变量装着啊?我直接使用不完了..麻烦...
麻烦不?确实麻烦。
比如我现在给你编一个1+1的程序吧。
我用a变量装数字1,
a=1;
用b变量装另外一个1,
b=1;
再拿一个c变量装1+1的结果。
c=a+b;
这样,将变量a中的值,加上变量b中的值,结果等于变量c中的值。
怕麻烦的人说,我只用一个变量,c变量装结果就是了:
c=1+1;
看我这个多简洁,看你说一堆废话....
我得举起大拇指称赞你。的确是简洁,代码也少了两行。
可是....人家不计算1+1,计算2+2了...
c=2+2;
计算3+3了...
c=3+3;
计算4+4了...
c=4+4;
计算5+5了...
c=5+5;
......
还要再举例子吗?
看出来麻烦了吧..
要简洁嘛...可以..
只用两个变量:
a=1;
b=1;
b=a+b;
只用了两个变量,不过代码还是3行。
为什么这里b=1;还可以b=a+b呢?
因为变量只是拿来存放数字的空间而已。你先放一个数字,接着在放入一个数字,比如这样:
a=1;
a=5;
那到底a的值是多少呢?
把1放进去了,a就是1,再把5放进去,5就会把原来的数字踢出去..自己独霸江山了..
所以哦,最终是5。
假如你不停的把新数字放进去,那原来的数字就会一个个被踢掉....最后进去的笑到最后..
= 这个符号是赋值的意思,a=1;是把1赋值给a这个变量,a=5; 5就把1踢掉了。
abc,这三个变量名都是我随便起的,当然你可以取得长一点,自己喜欢就行。只要不和关键字相冲就行。
啥是关键字?
相信你已经不记得我说过喜欢特定的符号表示特定的功能这句话了...在最上面..
关键字就是这样一种用特定的符号表示特定的功能的一种东西。额。。说是英文单词更好些。
一共有32个关键字。都是表示特殊意思的,不可以拿来做变量名。也不写出来了。事实上我有一大半认不全...
先看几个:
int,
float,
double,
char,
这四个是啥捏?是变量的类型,变量的类型有整型,就是int。
      有浮点型(小数,就是带小数点的数),就是float,单精度型。
     还有一个带小数点的浮点数,叫  double,双精度型。
其中:
int a;是代表这个变量是装整数的,也就是不带小数点的数。(千万不要告诉我100是整数,101不是整数)
当然,你非要把100写成100.00的话,也是不能够装到int型的变量里面去的。因为这样就成了小数啦。
好吧,你会说:100.0不能赋值给int型。那么,float和 double可都是浮点型啊,那为嘛要整两个?有啥不同?
有啥不同?我也在想捏,趁我在思考的时间请你看两个数:100.000和100.000000
你可能会说,一看就知道了,大小都是一样,都是100;不就是后面一个100比前面一个100在小数点后多出了几个0吗?
对了!就是这几个0,小数点后面的0越多,就要用双精度double来表示;越少,就要用单精度float来表示;没有小数点,用int来表示。
char呢?char是什么?
char是字符。
编程除了要用到整数和带小数的数之外,还要用上字符,就是abc之类的。
很不幸的是,假如你要想把abc这三个字母都装进一个字符变量是不可能,不被允许的。
char bb;
这个名字为bb的字符型变量只能装一个字母,要不然就是a,要不然就是b,要不然就是c.不可能abc都装进去。
全部装进去,假如只使用变量的话,必须要定义3个字符型变量才能装下abc这三个字母。
现在重新来写一下我们的1+1程序:
int a;
a=1;
int b;
b=1;
int c;
c=a+b;
忘了说了,分号;是代表一行代码结束的意思。没有分号,就没有结束。
也许这样太麻烦了些,改一下:
int a,b,c;
a=1,b=1,c=a+b;
这样好多了吧?
没有最好,只有更好:
int a=1,b=1,c=a+b;
再加上开始和结束:
main()
{
    int a=1,b=1,c=a+b;
}
这样一个简单的1+1程序就写出来了,迫不及待的验证一下?
额....结果是很让人沮丧的....没有任何结果,还是一破黑窗口,外加空白又一片空白....
为什么会如此?a变量和b变量到底有没有相加?c变量中的值是不是ab变量相加之后的结果?是2吗?
事实上,a变量和b变量确实相加了,结果也存在c变量中。只是我们没看见而已。
当然,没看见就不能说一定相加了,并且一定把结果放在c变量中了,总得要想办法看上一看才好...
这时候就要用上printf()这个函数了。printf()是一个标准的输出函数,把要输出的东西输出到显示器上,是可选的,
可以输出随意什么东西。但是在这里,我们需要输出的是c变量的值,看看到底是不是2.
如何做?
printf("%d",c);
看括号里面的:"%d",c
%d意思就是以十进制整型输出。这是要输出一个整数,这不难理解吧?但到底输出哪一个数?随便什么数吗?100吗?1000吗?还是1?
接下来看后面:
"%d",c
看后面那个c,就是说,把c变量的值输出来看看。整句话的意思就是,把c变量中的值以十进制整数输出。
把这一句话加到开始结束里面去:
main()
{
     int a=1,b=1,c=a+b;
     printf("%d",c);
}
这次我们终于在屏幕上看见一个2啦...
但是要注意一点啊,假如你不小心写成了这样:
int a=1,c=a+b,b=1;
如果打成了这个可就不好玩了,为什么捏?因为你根本就没有告诉电脑有b这个变量,也没有给他赋值,所以电脑认为
是错误的,罢工了....
上面这个1+1的程序可以更简洁,甚至连变量都不需要:
main()
{
   printf("%d",1+1);
}
瞧瞧!printf()多强大!
再来说一个关键字。
在说这个关键字之前,要先说一下流程。
流程是什么?
真不好说....
任何编程语言都有三个流程:
1:顺序
2:选择
3:循环
顺序就是按照代码的先后,一行一行的往下执行。
选择就是按照特定的条件,选择某些代码来执行,或者不执行某些代码。
顺序比较简单,不用说了。反正要先执行的代码就放在前面,要后执行的就放在后面。
重点来说说选择。
有选择是一件很值得庆幸的事。就怕没得选择,是最痛苦的。
根据条件,选择这样做,或那样做。
达到我的条件,我就和你结婚,达不到,我就选择不和你结婚。
假如明天不下雨,我就去跑步,假如下雨,就在家上网(事实上我从来也没跑过步...)
扯远了...相信你在生活中能找到很多例子,要是一直数下去,可以数到地老天荒,几与爱情同寿了...
说说c语言中的选择:
既然是选择,就得有个条件,所有做出的决定,都是依据这个条件来变化的。
这个表示条件的关键字是if。
if (XXXXX) 括号里的xxxx就是条件,这个条件需要我们自己定。
还是以上面那个1+1的小程序来说说:
int a=1,b=1;
if(2==a+b)
printf("%d",a+b);
==是等于的意思,和数学上的等于是一样的意思。
这句话是说,如果a变量加上b变量的值等于2,也就是说,和2相等,
那么就输出a+b的值,也就是2.
if是条件,也可以看成是如果的意思。如果a+b的值和2相等,那么就输出这个值。
如果不相等呢?
int a=2,b=2;
if(2==a+b)
printf("%d",a+b);
这个条件是一样的,可是a+b的值是4,和2并不相等。这个printf()语句还会输出吗?
结果是当然不会输出。
相等的情况下才输出,不相等的情况下,什么也不做。
if需要在条件成立时才执行,不成立,就啥都没有。因为你没有告诉电脑,条件不成立的时候该怎么做。
这时候需要另外一个关键字:
else
否则的意思。一般和if在一起连用。不单独用。
假如说if是如果的意思,那么else就是否则的意思。
if....else;
就是如果条件成立就怎样怎样,不成立,又怎样怎样。
来编一个稍微大一点的程序:
if (2>3)
printf("2大于3");
else
printf("2小于3");
第一行代码的意思是先给出一个条件,2大于3,2大于3吗?幼儿园都知道2不会大于3.
如果2大于3,就执行紧接着if后面的printf()语句。
现在的情况是2大于3。
那么,紧接着if语句的printf("2大于3");
还会执行吗?
条件不成立,就不会执行。
条件不成立怎么办?
看下一句,有个否则喔....
就是说,上面的条件成立的话,就执行上面的,否则执行这里的:
printf("2小于3");
再看一次:
if (2>3)
printf("2大于3");
else
printf("2小于3");
1.先判断一下条件,2大于3吗?
2.发现条件不成立。
3.立马就转去执行else后面的printf("2小于3");
二选一嘛,要不就执行if语句下面的,要不就执行else下面的。
选择,就是这样简单,绝对不会让人为难的。
当然,这种选择只适合于几选一,最多3选1,或者5选1.最适合的还是二选一。
要想几十选一,有另外一种选择语句。要不然光是在这里写if....else都能写死人.....
有没有注意到if和else后面都没有加分号?这两个后面不加分号。
为什么?
假如程序写成了这样:
if (2>3);
printf("2大于3");
如果写成了这样,那么不管if语句是否成立,2大于3都会输出。这就失去了选择的意义了。
事实上:
if (2>3);
printf("2大于3");

printf("2大于3");
没有什么不同。
整个程序成了这样:
if (2>3);
printf("2大于3");
else;
printf("2小于3");
程序就会报错,计算机会嘀咕了:你根本就没有if,哪里来的else?没有条件,又怎么会条件不成立?
所以if..else后面不能加分号;
就说到这里了。
假如你一个字一个字,很耐心的看到这里了的话,我很欣慰。
看看,学到这里了,和英语有关系吗?
不过,既然看到这里了,我不得不告诉你......
c语言学一年半载也许都写不出一个很漂亮的程序来.....
所以,要有长远的打算。不要想着21天速成。就算是速成,你也只是学会了语法,没有学会如何独立编写一个很漂亮,很实用的程序。
但是...假如你很努力很努力了,就会很厉害了。(原谅我这句废话)
奉上一个完整的程序:假如你现在已经有编译器的话,可以运行一下了:
# include <stdio.h>
int main(void)
{
    printf("hello,world!\n");
     
    return 0;
}

分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享淘帖0 收藏收藏0 评分评分
您需要登录后才可以回帖 登录 | 立即注册


手机版|SKY外语计算机学习 ( 粤ICP备12031577 )    

GMT+8, 2024-12-22 11:20 , Processed in 0.108238 second(s), 31 queries .

回顶部