C语言|第一章 c语言程序设计概述(笔记自用)

c语言程序设计入门三大要素# 1安装软件并开发HELLWOORLD程序 【C语言|第一章 c语言程序设计概述(笔记自用)】
文章目录

  • c语言程序设计入门三大要素# 1安装软件并开发HELLWOORLD程序
    • 环境配置及基本操作
    • 掌握基本的输入输出手段
    • 输入库函数scanf
    • 如何定义一个变量
      • scanf 库函数输入的示例代码如下
      • 输出库函数printf的语法格式如下
      • 【例1-1】 第一个简单的C程序
      • 【例1-2】一个完整的输入输出示例
      • 注意
      • 【例1-3】 计算输入的两个整数的和的程序
      • 【例1-4】 计算两个浮点数的乘积
      • 【例1-5】 改进例1-4中的输出格式,计算两个浮点数的乘积
      • 理解C 语言程序的基本结构
      • 【例1-6】 两个函数构成的C程序示例
      • 如何运行多个文件构成的程序?
      • 例1-7】 利用Dev-C++进行程序的调试。
      • 【例1-8】 动画效果的HelloWorld程序1。
      • 【例1-9】 动画效果的HelloWorld程序2
      • 带声音的Helloworld程序

环境配置及基本操作 (一)下载安装Dev-C++
(二)将安装目录下的bin目录加到环境变量path中(这样可以在命令行窗口的任何目录下都可以执行gcc编译链接命令)
(三)配置简单的外挂程序(在“工具”菜单中添加一个名为“DOS窗口”的外挂工具选项)步骤如下:
(1)启动dev-c++,选择“工具”—“配置工具”命令
(2)在弹出的“工具配置”对话框中单击“添加”按钮
(3)标题:直接输入“DOS窗口”
程序:单击“浏览”选择 c:\WINDOES\system64\目录下的cmd.exe文件,单击“确定”按钮
工作路径:首先将光标定位在“工作路径”文本框中(有内容可以直接清除),然后在左下角“可用的宏”列表中选择选项,单击“插入宏”按钮即可:也可直接输入“”
(4)单击“确定”,即可完成。
提示:工作路径配置为,可以确保DOS命令行窗口在启动时自动进入到源程序所在的目录。
以后如果需要用到dos命令行,直接在Dev-c++窗口中选择“工具”—>“DOS窗口”命令即可。
………………………………………………………………………………………………………………
一般来说,程序编写好后,需要执行以下几步才能得到输出结果。(2,3在集成环境中自动组合成一步完成)
  1. 输入源程序,保存为.c的源文件程序。
  2. 编译
  3. 链接
  4. 运行程序。
掌握基本的输入输出手段 C语言本身并没有提供输入/输出语句,它是通过相应的库函数实现输入/输出的。输入库函数为scanf,输出库函数为printf
输入库函数scanf 语法格式
scanf("格式控制字符串",接受输入的地址列表); /*接受输入的地址列表指定了接受输入的若干个变量的地址,即从键盘输入格式控制符指定的数据,送到地址列表指定的内存位置存储。 格式控制字符串有两类字符:普通字符,在输入时必须输入相应的字符;格式控制符,由“%”开头的若干个字符组成,用于指示输入数据的格式控制 常用的格式控制符有: %d:带符号十进制整数 %lf:双精度浮点数(F前为l,不是1) %c:单个字符 %s:字符串 */

如何定义一个变量 变量定义的语法格式
int n; //变量的类型 变量名; /*变量名的类型有整形int,双精度浮点型double,字符型char "变量名"由程序员自己定义。 语法规则为:变量名必须是以字母或下划线"_"开头的,后面是字母(大小写均可'A'~'Z'或'a'~'z'(一般推荐小写)),数字(0~9),下划线(可以看成一个字母)。 特别提醒,程序易读,在给变量取名时最好见名知意 整形简单变量,一般可命名为i,j,k,m,n; 浮点型简单变量,一般为x,y,z; 字符型简单变量命名为ch。 */

scanf 库函数输入的示例代码如下
//scanf库函数要求从键盘输入数据到特定的内存单元(变量是内存单元的抽象)中,“&”为取值的地址 //输入一个整数 int n; //第一步:定义一个整型变量n scanf("%d", &n); //第二步:从键盘输入一个整数,送到变量n中 //输入一个浮点数 double x; //firstly:定义一个双精度浮点数变量x scanf("%lf", &x); //secondly:从键盘读入一个浮点数,送到变量x中 // char ch; //firstly:定义一个字符型变量ch scanf ("%c", &ch); //secondly:从键盘读入一个单独的字符,送到变量ch中

输出库函数printf的语法格式如下
printf("格式控制字符串", 输出项列表); /*格式控制字符串有两类字符:普通字符,在输入时必须输入相应的字符;格式控制符,由“%”开头的若干个字符组成,用于指示输入数据的格式控制 常用的格式控制符有: %d:带符号十进制整数 %lf:双精度浮点数(F前为l,不是1) %c:单个字符 %s:字符串 “输出项列表”:包含要输出的零个或多个表达式 (注意:一个格式控制符对应一个输出表达式,格式控制符的数量=输出表达式的数量)

【例1-1】 第一个简单的C程序
//【例1-1】 第一个简单的C程序。 /* * 我们的第一个C语言程序,为了纪念C语言的发明人Dennis M.Ritchie。 */ #include int main(void) { printf("Hello,world!\n"); //调用printf库函数输出一个字符串并换行,\n为换行符 return 0; }

【例1-2】一个完整的输入输出示例
//【例1-2】 一个完整的输入输出示例。 #include int main(void) { int n; //定义了一个整型变量n printf("请输入一个整数:"); //任何输入之前请给出输入提示信息 scanf("%d", &n); //利用scanf格式输入库函数接收一个整数到变量n中 printf("你输入的整数为%d\n", n); //输出上面输入的整数n printf("该整数后面的整数为%d\n", n + 1); // 输出表达式n+1的值 return 0; } 一个完整的输入输出示例。 #include int main(void) { int n; //定义了一个整型变量n printf("请输入一个整数:"); //任何输入之前请给出输入提示信息 scanf("%d", &n); //利用scanf格式输入库函数接收一个整数到变量n中 printf("你输入的整数为%d\n", n); //输出上面输入的整数n printf("该整数后面的整数为%d\n", n + 1); // 输出表达式n+1的值 return 0; }

注意
“/ /”是单行注释;“/* */”是多行注释;注释只是给人看的,帮助容易理解程序设计思路,使程序更易读,更易于修改和维护。
【例1-3】 计算输入的两个整数的和的程序
//【例1-3】 计算输入的两个整数的和的程序。 #include int main(void) { int n1; //定义第一个整型变量n1 int n2; //定义第一个整型变量n2 printf("请输入第一个整数:"); //务必养成好习惯:任何输入前先给出输入提示! scanf("%d", &n1); //接收第一个整数n1 printf("请输入第二个整数:"); //务必养成好习惯:任何输入前先给出输入提示! scanf("%d", &n2); //接收第二个整数n2 printf("%d + %d = %d\n", n1, n2, n1 + n2); /* 每一个格式控制符%d控制后面的一项,第一个%d控制n1,第二个%d控制n2 第三个%d控制n1+n2,%d用于控制输出项以十进制有符号整数的形式输出, 其他的格式控制字符串中的字符,如+、=等原样输出,\n为换行符 */ return 0; }

【例1-4】 计算两个浮点数的乘积
//【例1-4】 计算两个浮点数的乘积。 #include int main(void) { double x1; //定义了一个double型的浮点数x1 double x2; //定义了一个double型的浮点数x2 printf("请输入第一个数:"); //务必养成好习惯:任何输入前先给出输入提示! scanf("%lf", &x1); //接收第一个浮点数x1,%lf用于接收double型 printf("请输入第二个数:"); //务必养成好习惯:任何输入前先给出输入提示! scanf("%lf", &x2); //接收第一个浮点数x2,%lf用于接收double型 printf("%f * %f = %f\n", x1, x2, x1 * x2); /* 每一个格式控制符%f控制后面的一项,第一个%f控制x1,第二个%f控制x2 第三个%f控制x1*x2,%f用于控制输出项以十进制有符号实数的形式输出, 其他的格式控制字符串中的字符,如*、=等原样输出,\n为换行符 */ return 0; }

【例1-5】 改进例1-4中的输出格式,计算两个浮点数的乘积
//【例1-5】 改进例1-4中的输出格式,计算两个浮点数的乘积。 #include int main(void) { double x1; //定义了一个double型的浮点数x1 double x2; //定义了一个double型的浮点数x2 printf("请输入第一个数:"); //务必养成好习惯:任何输入前先给出输入提示! scanf("%lf", &x1); //接收第一个浮点数x1,%lf用于接收double型 printf("请输入第二个数:"); //务必养成好习惯:任何输入前先给出输入提示! scanf("%lf", &x2); //接收第一个浮点数x2,%lf用于接收double型 printf("%.2f * %.2f = %.2f\n", x1, x2, x1 * x2); /* 每一个格式控制符%f控制后面的一项,第一个%f控制x1,第二个%f控 制x2,第三个%f控制x1*x2,%f用于控制输出项以十进制有符号实数的 形式输出,其他的格式控制字符串中的字符,如*、=等原样输出,\n为换 行符 */ return 0; #include int main(void) { double x1; //定义了一个double型的浮点数x1 double x2; //定义了一个double型的浮点数x2 printf("请输入第一个数:"); //务必养成好习惯:任何输入前先给出输入提示! scanf("%lf", &x1); //接收第一个浮点数x1,%lf用于接收double型 printf("请输入第二个数:"); //务必养成好习惯:任何输入前先给出输入提示! scanf("%lf", &x2); //接收第一个浮点数x2,%lf用于接收double型 printf("%.2f * %.2f = %.2f\n", x1, x2, x1 * x2); /* 每一个格式控制符%f控制后面的一项,第一个%f控制x1,第二个%f控 制x2,第三个%f控制x1*x2,%f用于控制输出项以十进制有符号实数的 形式输出,其他的格式控制字符串中的字符,如*、=等原样输出,\n为换 行符 */ return 0;

一旦修改了原程序的代码,哪怕是一个符号,都必须重新编译,然后运行。
理解C 语言程序的基本结构
计算机和程序的本质都是要模拟客观世界。客观的世界的是由众多的对象相互联系和相互作用而形成的一个非常复杂的系统。
C语言的基本结构如。
  1. 有一个或多个函数构成。
  2. 这些函数分布在一个或多个文件中。
  3. 每个文件夹称为一个可编译单元。
  4. 每个C程序都有且仅有一个main函数。
  5. main函数是程序的入口,它直接或间接地调用其他函数来完成整个程序的功能。
  6. 函数基本结构如下:
返回值类型 函数名(形式参数列表) { 数据定义; 数据加工处理; return 返回值; }

  1. C程序的其他组成部分:注释,头文件,编译预处理
    补充说明:组成C语言程序的若干个函数的代码在整个程序中的位置十分灵活,谁在前,谁在后均可以。
  2. 函数的分类:
    (1)库函数:
    ·由系统提供,经过精心编写和反复测试及使用,安全可靠,推荐多用。
    ·使用时必须包含所需的头文件。
    (2)用户自定义函数:用户自己编写的函数。
    (3)main函数: 每个C程序都有且仅有一个main函数。该函数是程序的组织者,它直接或间接地调用其他函数来完成整个程序的功能,其他函数一般不直接调用main函数,他由操作系统自动调用。
    C99标准中,main函数只有两种规范写法:
int main(void) {……} int main(int argc,char *argv[]) {……}

【例1-6】 两个函数构成的C程序示例
//【例1-6】 两个函数构成的C程序示例。 #include void sayHello(void) { printf("Hello, world!\n"); }int main(void) { sayHello(); return 0; }

如何运行多个文件构成的程序?
只需创建一个项目,然后在这个项目下新建两个.c文件,输入代码,最后编译,运行该项目即可。
也可要用命令行分别编译、链接,然后运行该程序。操作如下:
(1)编译A文件,命令为gcc -c A.c -o A.o
(2)编译B文件,命令为gcc -c B.c -o B.o
(3)链接两个.o文件,命令为gcc A.o B.o -o A.exe
(4) 在命令行下输入A,然后按enter键即可运行。
gcc是编译器,-c只编译不链接;-o选项指定输出的文件名。
例1-7】 利用Dev-C++进行程序的调试。
//【例1-7】 利用Dev-C++进行程序的调试。 #include #int main(void) { int i, sum; i = 1; sum = 0; //将此处的等号去掉,演示程序出现逻辑错误从而进行调试的过程while (i <= 10)//while循环语句:当i小于等于10时,一直执行下面的两条语句 { sum = sum + i; i++; //将变量i的值取出加1,然后存放回i中 }printf("1+2+...+10=%d", sum); return 0; }

【例1-8】 动画效果的HelloWorld程序1。
//【例1-8】 动画效果的HelloWorld程序1。 #include #include int main(void) { printf("H"); Sleep(500); printf("e"); Sleep(500); printf("l"); Sleep(500); printf("l"); Sleep(500); printf("o"); Sleep(500); printf(","); Sleep(500); printf("w"); Sleep(500); printf("o"); Sleep(500); printf("r"); Sleep(500); printf("l"); Sleep(500); printf("d"); Sleep(500); printf("!"); Sleep(500); return 0; }

【例1-9】 动画效果的HelloWorld程序2
//【例1-9】 动画效果的HelloWorld程序2。 #include #include //'\b',叫退格键(Backspace); \n 换行符;\t 制表符 int main(void) { printf("H"); Sleep(500); printf("e"); Sleep(500); printf("l"); Sleep(500); printf("l"); Sleep(500); printf("o"); Sleep(500); printf(","); Sleep(500); printf("w"); Sleep(500); printf("o"); Sleep(500); printf("r"); Sleep(500); printf("l"); Sleep(500); printf("d"); Sleep(500); printf("!"); Sleep(500); printf("\b "); //注意,此处有一个\b和一个空格,缺一不可,想想为什么 Sleep(500); printf("\b\b "); //注意,此处有两个\b和一个空格,缺一不可,想想为什么 Sleep(500); printf("\b\b "); Sleep(500); printf("\b\b "); Sleep(500); printf("\b\b "); Sleep(500); printf("\b\b "); Sleep(500); printf("\b\b "); Sleep(500); printf("\b\b "); Sleep(500); printf("\b\b "); Sleep(500); printf("\b\b "); Sleep(500); printf("\b\b "); Sleep(500); printf("\b\b \b"); //注意,此处有两个\b和一个空格再跟一个\b,想想为什么 Sleep(500); return 0; }

带声音的Helloworld程序
#include #include #include int main(void) { printf("Hello, world\n"); printf("please enjoy the music"); Playsound("Boing.wav", NULL, SND_FILENAME | SND_ASYNC | SND_LOOP); system("pause"); getch(); return 0; } [Linker error] undefined reference to `PlaySoundA@12' 需要连接到windows的多媒体库函数winmm 编译链接为:gcc 声音版Helloeorld.c -o hs.exe -lwinmm 再运行(直接在命令提示符下输入hs后按enter键即可)

    推荐阅读