C语言开发1——C语言基础1——第一章

本章目录

一、什么是C语言

(一)、自然语言

(二)、C语言

(三)、自然语言与C语言的区别

二、计算机语言的发展历史

三、C语言特点

(一)、优点

(二)、缺点

四、环境搭建

(一)、下载软件

(二)、安装软件

五、第一个C程序

(一)、创建项目

 (二)、创建文件

(三)、编写代码

(四)、运行程序

六、注释

(一)、作用

(二)、两种格式

 七、程序框架介绍 

(一)、include头文件包含

(二)、int main () 函数

(三)、{} 括号,程序体和代码块

(四)、printf函数

(五)、return语句

八、system函数

(一)、函数功能

(二)、函数功能示例

九、常用快捷键

十、C4996错误警告

十一、转义字符

十二、本章小结


一、什么是C语言

)、自然语言

· 一提到语言这个词语,自然会想到的是像英语、汉语等这样的自然语言。

· 自然语言是人和人交换信息不可缺少的工具。

)、C语言

· 随着社会的进步,计算机逐步普及,那么人们可以用什么样的方式和计算机做最直接的交流呢?

· 人们自然想到的是最古老也最方便的方式——语言。

· 那么,计算计算机语言就诞生了,而C语言就是人和计算机交流的一种语言。

)、自然语言与C语言的区别

· 语言是人和人交流,C语言是人和计算机交流。

· 只是,人可以不听另外一个人,但是,计算机是无条件服从,当然,前提是你的命令的语法是正确的(计算机能够看懂的)。

· C语言有独特的语法规则和定义,双方必须遵循这些规则和定义才能实现真正的交流。


二、计算机语言的发展历史

· 机器语言(使用0和1表达)

· 汇编语言(使用了部分符号)

· 高级语言(C语言、Python语言、JAVA语言)

        下面这张图片展现了这三种语言表示加法的写法,复杂程度一目了然。


三、C语言特点

)、优点

· 功能强大:可以编写操作系统、嵌入式、动态库、服务器、应用程序、外挂、其他语言等。

· 执行效率高:C语言描述问题比汇编语言简练,而代码质量与汇编语言相当,运行速度相当快。

· 可移植性好:一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行

)、缺点

· 面向过程的封装性不好(与C++相比),原因就是C语言是面向过程的语言而C++是面对对象的语言。

· 语法限制不太严格,过于自由,导致初学者处理问题时会因为考虑不周而出现错误。


四、环境搭建

)、下载软件

        在百度搜索 visual studio,选择如下图中的选项。

        进入Visual Studio 官网后,选择下载Windows版,并选择Community 2022 社区版本进行下载。

         保存软件到电脑中。

)、安装软件

        双击运行下载的安装文件,弹出安装界面。

        选择使用C++的桌面开发 这一选项,如需其他,自行勾选。当然现在不选择等以后需要使用的时候再进行扩展就可以了。

        点击安装按钮。开始安装

        安装成功后提示重启,点击重启跟随提示完成剩余配置。

        重启后,在开始菜单中就可以找到Visual Studio 2022进行开发了。


五、第一个C程序

        编写一个C程序总共分为4个步骤:创建项目、创建文件、编写代码、运行程序。

)、创建项目

​         Visual Studio 2022是我们用来编写C语言程序的主要工具,我们先将它打开,接下来按照下图的步骤执行就可以成功创建一个新项目了。

        提示大家一点,创建项目的名称和路径,最好都使用英文。

 )、创建文件

        右键源文件,选择添加->新建项,给C文件起个名称,然后点击添加即可。

         注意,命名文件时的名称一定要以 .c 为后缀,否则你创建的是一个C++文件。

)、编写代码

#include<stdio.h>
#include<stdlib.h>
int main()
{
	printf("Hello world\n");
	system("pause");
	return 0;
}

)、运行程序

        运行程序的方式就是点击最上方的“本地Windows调试器”,就可以运行程序了。


六、注释

)、作用

        在代码中加一些说明和解释,方便自己或其他程序员程序员阅读代码。

)、两种格式

1、单行注释:// 描述信息

        通常放在一行代码的上方,或者一条语句的末尾,对该行代码说明。

2、多行注释: /* 描述信息 */

        通常放在一段代码的上方,对该段代码做整体说明。也有可能放在项目的开头,作为项目开发的说明。

        提示:编译器在编译代码时,会忽略注释的内容,即注释对编译过程没有影响。

        这里给出一个例子,是上面的第一个C语言程序加入注释的结果,养成在编写代码的时候加入适当的注释是一个很好的习惯(注意不要过度注释)。

/*
编写时间:2024年8月6日
编写人员:刘博实
程序功能:实现在屏幕上打印“Hello world”
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
	printf("Hello world\n");	//实现打印“Hello world”
	system("pause");
	return 0;
}

 七、程序框架介绍 

        我们以第一个C语言程序为例,介绍一下我们编写程序时需要用到的程序框架。

)、include头文件包含

· #include的意思是头文件包含,#include <stdio.h>代表包含stdio.h这个头文件。

· 使用C语言库函数需要提前包含库函数对应的头文件,比如这里使用了printf()函数,需要包含stdio.h头文件。

· stdio.h = std (standard) + i (input) + o (output) + .h (header)。

· 同理我们使用到了system函数,所以也需要包含stdlib.h(standard +library)这个头文件。

)、int main () 函数

· 一个完整的C语言程序,有且仅有一个main()函数 (又称主函数)。

· 其他若干个函数结合而成(可选)。

· main函数是C语言程序的入口,程序是从main函数开始执行。

· int 代表函数的返回值类型 —— 整型。下面的return语句代表了函数的返回值类型。

· () 可存放参数列表。

)、{} 括号,程序体和代码块

· {}叫代码块,一个代码块内部可以有一条或者多条语句,是程序员编写代码的地方。

· C语言每句可执行代码都是分号结尾,所有的#开头的行,都代表预编译指令,预编译指令行结尾是没有分号的。

· 所有的可执行语句必须是在代码块里面。

)、printf函数

· printf是C语言库函数,功能是向标准输出设备输出一个字符串。

· \n 的意思是换行。

)、return语句

· return代表函数执行完毕,返回return代表函数的终止。

· 如果main定义的时候前面是int,那么return后面就需要写一个整数。

· 在main函数中return 0代表程序执行成功。有些程序员也会写成return EXIT_SUCCESS。


八、system函数

)、函数功能

        在已经运行的程序中执行另外一个外部程序

(二)、函数功能示例

#include <stdio.h>
#include <stdlib.h>
//自定义函数,不会默认执行,必须在main函数中进行调用
void test01()
{
	printf("Hello world\n");
	system("mspaint");	//打开“画图”
	system("calc"); //打开“计算器”
	system("notepad"); //打开“记事本”
}
int main()
{
	test01();
	system("pause");
	return 0;
}

        这段代码就展现了system函数的功能,比如,打开“画图”“计算器”“记事本”,等外部工具。


九、常用快捷键

        我们了解VS2022中一些快捷键,可以提升我们编程的速度,提高效率。我们常见的快捷键如下:


十、C4996错误警告

        VS2022建议采用带_s的函数,如scanf_s、strcpy_s,sprintf_s 但这些并不是标准C函数,反而当我们使用标准C函数的时候,会出现C4996的错误提示,类似如下:

        解决方案:

· #define _CRT_SECURE_NO_WARNINGS 第一行写 (宏定义)

· #pragma warning(disable:4996)

· 项目配置 ——>属性——> C/C++ ——> 预处理器 ——> 预处理定义


 十一、转义字符

        在程序员编写程序的时候,对输出格式有时会有一定的要求,比如说换行、水平制表符。另外有一些字符用printf无法直接输出。这些功能的实现都需要使用到转义字符,我在这里整理了常见的转义字符,如下:


十二、本章小结

        学习完本章的知识之后,我们已经可以编写简单的纯打印功能的程序了,比如下面这段代码,我就实现了一个非常有意思的绘画功能,其中也并没有运用到复杂的语法逻辑:

#include<stdio.h>
#include<stdlib.h>
void test01()
{
	system("cls"); //实现清屏
	//打印皮卡丘
	printf("     `;-.          ___,\n");
	printf("       `.`\\_...._/`.-\"`\n");
	printf("         \\        /      ,\n");
	printf("         /()   () \\    .' `-._\n");
	printf("        |)  .    ()\\  /   _.'\n");
	printf("        \\  -'-     ,; '. <\n");
	printf("         ;.__     ,;|   > \n");
	printf("        / ,    / ,  |.-'.-'\n");
	printf("       (_/    (_/ ,;|.<`\n");
	printf("         \\    ,     ;-`\n");
	printf("          >   \\    /\n");
	printf("         (_,-'`> .'\n");
	printf("              (_,' \n");
	system("pause");
	system("cls");
}
void test02()
{
	system("cls");
	printf("                       .::::.\n");
	printf("                     .::::::::.	\n");
	printf("                    :::::::::::	\n");
	printf("                 ..:::::::::::'\n");
	printf("              '::::::::::::'\n");
	printf("                .::::::::::\n");
	printf("           '::::::::::::::..\n");
	printf("                ..::::::::::::.\n");
	printf("              ``::::::::::::::::\n");
	printf("               ::::``:::::::::'        .:::.\n");
	printf("              ::::'   ':::::'       .::::::::.\n");
	printf("            .::::'      ::::     .:::::::'::::.\n");
	printf("           .:::'       :::::  .:::::::::' ':::::.\n");
	printf("          .::'        :::::.:::::::::'      ':::::.\n");
	printf("         .::'         ::::::::::::::'         ``::::.\n");
	printf("     ...:::           ::::::::::::'              ``::.\n");
	printf("    ```` ':.          ':::::::::'                  ::::..\n");
	printf("                       '.:::::'                    ':'````..\n");
	system("pause");
	system("cls");
}
void test03()
{
	system("cls");
	printf("                       _ooOoo_ \n");
	printf("                      o8888888o	\n");
	printf("                      88\" . \"88\n");
	printf("                      (| -_- |)	\n");
	printf("                      O\\  =  /O	\n");
	printf("                   ____/`---'\\____\n");
	printf("                 .'  \\\\|     |//  `.\n");
	printf("                /  \\\\|||  :  |||//  \\\n");
	printf("               /  _||||| -:- |||||-  \\\n");
	printf("               |   | \\\\\\  -  /// |   |\n");
	printf("               | \\_|  ''\\---/''  |   |\n");
	printf("               \\  .-\\__  `-`  ___/-. /\n");
	printf("             ___`. .'  /--.--\\  `. . __\n");
	printf("          ."" '<  `.___\\_<|>_/___.'  >'"".\n");
	printf("         | | :  `- \\`.;`\\ _ /`;.`/ - ` : | |\n");
	printf("         \\  \\ `-.   \\_ __\\ /__ _/   .-` /  /\n");
	printf("    ======`-.____`-.___\\_____/___.-`____.-'======\n");
	printf("                       `=---='					\n");
	printf("   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
	printf("                 佛祖保佑       永无BUG			\n");
	system("pause");
	system("cls");
}
void test04()
{
	system("cls");
	printf("      ****        ****\n");//打印第一行 
	printf("   *********    *********\n");//打印第二行 
	printf("*************  *************\n");//打印第三行 
	int i, j;//定义变量 
	for (i = 0; i < 3; i++)//打印4-6行,一共3行,因此i小于3 
	{
		for (j = 0; j < 29; j++)//限制每行输出*的个数 
		{
			printf("*");//这三行只打印*号,无空格输出 
		}
		printf("\n");//打印完一行需要进行换行 
	}
	for (i = 0; i < 7; i++) //打印7-13行,一共7行,因此i小于7 
	{
		for (j = 0; j < 2 * (i + 1) - 1; j++)//这个for循环和下面的for是并列的 
		{
			printf(" ");//打印空格 
		}
		for (j = 0; j < 27 - i * 4; j++)//读者可以带入几个数找出条件 
		{
			printf("*");//打印*
		}
		printf("\n");
	}
	for (i = 0; i < 14; i++)//打印最后一行的*
	{
		printf(" ");//打印空格 
	}
	printf("*\n");//打印* 
	system("pause");
	system("cls");
}
void show_Menu()
{
	printf("********************************************\n");
	printf("********************************************\n");
	printf("*************      C语言画画   *************\n");
	printf("*************      1.皮卡丘    *************\n");
	printf("*************      2.美女      *************\n");
	printf("*************      3.佛祖      *************\n");
	printf("*************      4.爱心      *************\n");
	printf("*************      0.退出      *************\n");
	printf("********************************************\n");
	printf("********************************************\n");
	printf("\n");
}
int main() 
{
	int choice = 1; 
	while (0 != choice)
	{
		show_Menu();
		printf("请输入您的选择:");
		scanf("%d", &choice);
		switch (choice)
		{
		case 1:
			test01();
			break;
		case 2:
			test02();
			break;
		case 3:
			test03();
			break;
		case 4:
			test04();
			break;
		case 0:
			exit(0);
			break;
		default:
			printf("您输入的数字不在目录之中,请重新输入\n\n");
			system("pause");
			system("cls");
			break;
		}
	}
	system("pause");
	return EXIT_SUCCESS;
}
  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值