C语言-笔记一

笔者简介:

本人是现在是在校的一枚研二的学生,最近同实验室的师兄找工作,感觉真心不容易,也让我感到很焦虑,想想现在的我,对编程语言掌握的并不好,糊里糊涂的,想想明年的我,感觉压力很大。所以,每天抽出点时间专门去学习一下编程语言,并记录一下学习笔记,给自己一个鞭策。

那么,选择哪一个编程语言呢? - -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.
", 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 类型变量的占位符

: 转义字符,表示光变换到下一行

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?
");
}
int main(void)
{
int age = 69;
printf("Happy birthday to my motherland at the age of %d.
", age);
question();
answer();

return 0;
}
void answer(void)
{
printf("Today is October 1st National Day.
");
}

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
");
printf("Anton
Bruckner
");
printf("Anton ");
printf("Bruckner");

return 0;
}

/*

2. 编写一个程序输出您的姓名及地址
*/

#include<stdio.h>
int main(void)
{
printf("My name is Double Lin.
");
printf("Localtion: Heifei, Anhui.
");

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!
");
}

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
sum of toes: %d
 squared of toes: %d
",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("
");
function();
function();
printf("
");
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:
");
one_three();
printf("done!
");
}

void one_three(void)
{
printf("one
");
two();
printf("three
");
}

void two(void)
{
printf("two
");
}
原文地址:https://www.cnblogs.com/double-lin/p/9735852.html