我没有上过大学,所以不会C,掌握了C#,决定看算法导论,于是要学C
我是学C#的,所以学的时候会联想C#的,然后做个比较,我学过JAVA,所以也会联想JAVA做个比较
基本概念
1. 程序:用某种计算机能理解并执行的计算机语言描述解决问题的方法步骤
2.程序设计:分析解决问题的方法步骤,并将其记录下来的过程
3.二进制语言→汇编语言(符号代替二进制代码,所以称符号语言,面向机器的语言)
4.高级语言:C(面向过程的语言)等,将二进制语言和汇编语言统称为“低级语言”
5.高级语言编写的程序称为“源程序”,源程序不能直接在计算机上运行,先翻译成二进制语言然后执行。方式:①翻译一句执行一句-解释执行,完成翻译工作的程序叫”解释程序”。②一次性翻译完再执行,完成翻译工作的程序叫”编译程序”,编译后的二进制程序称为”目标程序“
6.C语言前身-ALGOL语言(世界上第一个高级语言,第二个是 FORTRAN语言),以后还有BASIC,COBOL,PASCAL等
7.相比C#特点:更接近硬件,比低级语言更容易描述算法,性能更好
基础知识
1.字符集和C#一样.转义用\
2.保留字(关键字),例如if,int,float,typedef,C#会了,这很容易掌握
3.标识符:取名字的规范和C#一样,方法名,函数名等
4.词汇分类:常量,变量,运算符,函数调用,表达式,保留字,跟C#一样
5.语句分类:数据定义语句,赋值语句,函数调用月,表达式语句,流程控制语句,符合语句,空语句,其他语句。跟C#基本一样
6.C程序是C语句组成的语句序列,通常一个C程序包括一个或多个函数,其中有且仅有一个成为主函数,其函数名规定为 main
7.注释:/* */
8.C程序,总是从主函数开始,主函数结束。基本和C#中控制台程序一样
C程序的开发环境
(一)WIN-TC(书中使用Turbo C,我电脑时Win7 64位,运行不了,了解一下就可以了)
1.下载 :
2.安装:一直下一步就行了,很简单。
3.界面
4. 本来Turbo C的调试C程序的主要操作步骤分为:
- 输入新程序或调用已有的程序
- 编辑修改源程序
- 源程序清单存盘
- 编译连接生成目标程序
- 执行目标程序
- 显示运行结果
但是在WIN7 64位,运行程序时候,就不行了,如果你是XP用户,或许可以用
于是我决定用C-Free这个工具去学习了
(二)C-Free 5.0 (下载: )
安装一直下一步,也是比较简单的
界面
然后点 帮助-注册
用户名:tianfang 电子邮件:quart@163.com 注册码:2NnUqd3shO2agta0xNjcusfK1LXO
重启C-Free
Hello World,第一个C项目
新建工程
我们不选第三个
因为我电脑有vs2010,选择第一个,然后完成
双击main.c文件
输入代码如下,printf相当于C#中的Console.Write
和VS2010一样,按下F5编译运行程序,效果图:
但是这个生成后的exe程序,在这里,显示结束后,会定个下来,可以看到效果
但是如果你单独运行,我们以前在C#中都是Console.ReadLine()等待用户输入,然后可以看到,输入以前的所有效果
我们添加一行scanf代码
java中也是用类似 scan的一个单词,等待用户输入的,好像是Scanner s = new Scanner(System.in);
然后用
String str = s.next();
Integer i = s.nextInt();等待用户的输入
我们继续添加一行代码
按F5编译程序就可以了
接下来,你就可以直接
单击它,就可像C#的控制台那样,运行项目了,程序的启动速度很快,这是C#不能比的,WPF项目生成exe,我发现启动最慢的
其他小例子
作为一个初学者,你还想试试,发现真的跟C#差不多
求输入的3个数字的 平均数,这也是书上的小例子
预备工作:
如上面一样建立一个空壳子,准备写代码
知识:还记得%f,我们学过C#,知道 float,那么f就是float的简写了,表示,这里输入一个float或者double类型的值。输入后,直接输出保存正确的数据类型了,关于%号,还有其他的一些格式
%d整型输出,%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,
%u以十进制数输出unsigned型数据(无符号数)。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
然后准备好空壳子
我们写一个ave方法,返回的方式和C#有点不一样,变量用括号括起来了,其他一样
回到main函数,继续编写代码
#includefloat ave(float f1,float f2,float f3){float a1;a1=(f1+f2+f3)/3;return (a1);}int main(int argc, char *argv[]){float x1,x2,x3,x4;scanf("%f,%f,%f",&x1,&x2,&x3);x4=ave(x1,x2,x3);printf("%f\n",x4);scanf("%f");return 0;}
输入 5,6,7按下回车
效果:
这点 ave 函数必须在main方法上面,否则当先运行main的时候,ave根本不存在,所以编译会出错
这点和C#不一样
如果你想要在其他位置放ave方法,需要在main方法中,调用ave方法之前先声明这个ave函数
代码如下
然后就可以了
scanf后面的%f的逗号随便什么连接字符的,例如我改成这样
效果图:
学习总结
- 对C有基本的认识了
- 对C和C#有基本的比较了
- 发现学起C不太难
- 用C-Free开发
- 很容易写出个比C#性能好点的小程序
- 下一步,具体慢慢学C会很容易了