笔者简介:
本人是现在是在校的一枚研二的学生,最近同实验室的师兄找工作,感觉真心不容易,也让我感到很焦虑,想想现在的我,对编程语言掌握的并不好,糊里糊涂的,想想明年的我,感觉压力很大。所以,每天抽出点时间专门去学习一下编程语言,并记录一下学习笔记,给自己一个鞭策。
那么,选择哪一个编程语言呢? - -C语言,公司招聘基本上都要求掌握的语言当中必有C,系统的学习一下C还是非常有必要的。本科阶段学过C语言,不过学的很糊涂,现在重新系统的学习一遍,希望自己有一个不小的收获。
正文:
好了,开始我们今天的第一个笔记啦:
本笔记参考的书籍为: Stephen Prate著 C Primer Plus
C语言是一个编译性的语言。我们写的代码并保存为.c格式,这个称其为源码,然后经过编译器生成可执行文件,也就是.exe文件,如下面的代码:我们保存为Happy.c ,然后在在命令行下输入:
gcc Happy.c -o Happy
即可完成编译任务,生成可执行文件Happy.exe,注意:键入上述命令时,首先你电脑上要有C编译器,并且在源码的文件路径下。
来向祖国道一声“生日快乐吧!”:
/* 这是一个祝福祖国生日快乐的简单C程序 */ #include<stdio.h> int main(void) //这是主函数,无论这个函数在文件的哪个位置,程序从这里开始 { int age = 69; printf("Happy birthday to my motherland at the age of %d.\n", age); return 0; }
#include<stdio.h> :该语句的作用相当于你在文件中该行所在的位置键入了文件stdio.h的完整内容。实际上,它是一种剪切和粘贴的操作,这样可以方便地在多个程序间共享公用的信息。那么,这个stdio.h文件里包含了什么东东呢?由于上述程序中使用了printf()函数,可是我们并没用去定义这个函数,那这个函数怎么就可以把"Happy Birthty Day To Chian"输出到控制台的呢?那是因为,你没有定义函数,但是你复制粘贴了stdio.h这个文件了呀,这个文件里有定义了printf()这个函数,在这个文件中它说明了函数名以及该函数如何使用,但是函数的实际代码并不在这个文件了,而是在一个预编译代码的库文件中。那什么是预编译呢?#include语句是C预处理指令的一个例子,通常,C编译器在编译前要对源代码做一些准备工作,这就称为预处理。在C世界中,人们称出现在文件顶部的信息集合为头(header),C实现通常都带有许多头文件。
int main(void): main(),这是一个函数名为main的函数,也是C程序执行的起始函数,int 指这个函数处理后要返给操作系统一个int值。void: 表明这个主函数并不接受任何参数。
{}: 表示所有的C函数都使用花括号来表示函数体的开始和结束,花括号还可以用来把函数中的语句聚集到一个单元或代码块中来。
int age = 69 : 生明并初始化变量age为69
;分号 -- 表明一个语句的结束
%d : int 类型变量的占位符
\n : 转义字符,表示光变换到下一行
return 0 表示,这个主函数结束,返回一个int类型的值 0
/* */ 注释,可以在/*和*/之间写多行注释
// 这是单行注释,在//之后的字符会被编译器忽略
age: 是int类型的变量名,给变量起名字尽量一眼就能看出其含义,方便阅读源代码。变量名的起名规则: 可供使用的字符有小写字母、大写字母、数字和下划线。第一个字符必须是字母或者下划线。
除了使用标准的printf()函数外,怎么把自己的函数加入到程序中呢?
#include<stdio.h> void question(void); // C 函数原型 void answer(void); void question(void) { printf("What‘s the date today?\n"); } int main(void) { int age = 69; printf("Happy birthday to my motherland at the age of %d.\n", age); question(); answer(); return 0; } void answer(void) { printf("Today is October 1st National Day.\n"); }
answer()函数在上述程序中出现了3次。第一次是出现在原型中,通知编译器要用到的函数。第二次是在main()函数中以函数调用的形式出现的。最后,程序给出了函数的定义,既函数本身的源码。而在上述关于printf()函数的谈论,现在也可以进一步的解释,在文件stdio.h中,类似void answer(void);这样声明了函数的名字及参数,但函数本身的代码并不在stdio.h文件中,而在预编译代码库中。简单的理解,也就是stdio.h文件提供了printf()函数的接口。而,question()函数本身的代码却在main()函数的上面,这实际没有影响的,程序是从main()函数开始执行的,只要在main()函数之前有通知了编译器有question()这个函数了就行。
第二章编程练习习题及答案(已经编译通过)
/*
1. 编写一个程序,调用printf()函数在一行上输出您的名和姓,再调用一次printf()函数在两个单独的行上输出您的名和姓,然后调用一对printf()函数在一行上输出您的名和姓。
输出应如下所示:
Anton Bruckner 第一个输出语句
Anton 第二个输出语句
Bruckner 第三个输出语句
Anton Bruckner 第四个输出语句
*/
#include<stdio.h> int main(void) { printf("Anton Bruckner\n"); printf("Anton\nBruckner\n"); printf("Anton "); printf("Bruckner"); return 0; }
/*
2. 编写一个程序输出您的姓名及地址
*/
#include<stdio.h> int main(void) { printf("My name is Double Lin.\n"); printf("Localtion: Heifei, Anhui.\n"); return 0; }
/*
3. 编写一个程序,把您的年龄转换成天数并显示二值的值。不用考虑平年或者闰年的问题,一年=356
*/
#include<stdio.h> int main(void) { int age = 23; //声明年龄为23 printf("age: %d days: %d ",age,age*356); return 0; }
/*
4. 编写一个能够产生下面输出的程序:
For he‘s a jolly good fellow!
For he‘s a jolly good fellow!
For he‘s a jolly good fellow!
Which nobody can deny!
程序中除了main()函数之外,要使用两个用户定义的函数:一个用于把上面的夸奖消息输出一次; 另一个用于把最后一行输出一次
*/
#include<stdio.h> void function_1(void); // 原型函数 void function_2(void); void function_1(void) { printf("For he‘s a jolly good fellow!\n"); } int main(void) { function_1(); function_1(); function_1(); function_2(); return 0; } void function_2(void) { printf("Which nobody can deny!"); }
/*
5. 编写一个程序,创建一个名为toes的整数变量。让程序把toes设置为10,。再让程序计算两个toes的和以及toes的平方。程序应该输出所有的3个值,并分别标识它们
*/
#include<stdio.h> int main(void) { int toes = 10; printf("toes: %d\nsum of toes: %d\n squared of toes: %d\n",toes,2*toes,toes*toes); return 0; }
/*
6. 编写一个能够产生下列输出的程序:
Smile!Smile!Smile!
Smile!Smile!
Smile!
在程序中定义一个能显示字符串Smile!一次的函数,并在需要的时使用该函数
*/
#include<stdio.h> void function(void); void function(void) { printf("Smile!"); } int main(void) { function(); function(); function(); printf("\n"); function(); function(); printf("\n"); function(); return 0; }
/*
7. 编写一个程序,程序中要调用名为one_three()的函数。该函数要在一行中显示单词"one",再调用two()函数,然后再在另一行中显示单词"three". 函数two()应该能在一行中显示单词"two"
main()函数应该在调用one_three()函数之前显示短语"starting now";函数调用之后要显示"done!".这样,最后的输出结果应如下所示:
starting now:
one
two
three
done!
*/
#include<stdio.h> void one_three(void); void two(void); int main(void) { printf("starting now:\n"); one_three(); printf("done!\n"); } void one_three(void) { printf("one\n"); two(); printf("three\n"); } void two(void) { printf("two\n"); }
原文:https://www.cnblogs.com/double-lin/p/9735852.html