首页 > 其他分享 >C语言开发1——C语言基础1——第一章

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

时间:2024-08-06 17:53:48浏览次数:13  
标签:函数 代码 程序 system 第一章 开发 printf C语言

本章目录

一、什么是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;
}

标签:函数,代码,程序,system,第一章,开发,printf,C语言
From: https://blog.csdn.net/Lbs_gemini0603/article/details/140961521

相关文章

  • Springboot计算机毕业设计第二学位学生管理系统(数据库、调试部署、开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学生,教师,班级信息,课程类别,课程信息,课程选择,在线咨询,成绩分类,课程成绩,学生学籍,课程退出,院系,专业,年级开题报告内容一、研究背景与意义研究背景随着......
  • Mac开发基础20-NSCollectionView
    NSCollectionView是macOS开发中的一种强大控件,类似于iOS上的UICollectionView,用于展示和管理网格、列表等多种布局的数据展示视图。1.基本使用创建和初始化Objective-C#import<Cocoa/Cocoa.h>//创建并初始化一个NSCollectionView实例NSCollectionView*collecti......
  • Mac开发基础19-NSTableView(二)
    进阶使用和技巧1.单击和双击行事件处理Objective-C//单击行时的处理-(void)tableView:(NSTableView*)tableViewdidClickTableColumn:(NSTableColumn*)tableColumn{NSIntegerclickedRow=[tableViewclickedRow];if(clickedRow>=0){NSLog(@"Si......
  • SSM高校学生学业预警系统5253u 本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:课程,班级,教师,学生,课程信息,选课信息,考勤信息,成绩信息,学籍信息,预警信息开题报告内容一、选题背景随着高等教育规模的不断扩大和教育质量的提升......
  • 排序算法 冒泡排序 BubbleSort -- C语言实现
    冒泡排序描述冒泡排序(BubbleSort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢......
  • Mac开发基础18-NSTableView(一)
    NSTableView是macOS应用程序中用于显示和管理数据表格的控件。它提供了丰富的API和高度自定义的能力,使得开发者可以精细地控制表格的显示和行为。本文将详细介绍NSTableView的常见API和一些基础技巧,并深入探讨其相关知识。1.基本使用创建和初始化Objective-C#import......
  • Mac开发基础16-NSButton(一)
    NSButton是macOS应用中常用的控件之一,用于处理各种按钮操作。它不仅提供了丰富的API来定制按钮的外观和行为,还可以通过不同的配置实现多种类型的按钮,如push按钮、toggle按钮、radio按钮等。1.基本用法创建和初始化Objective-C//创建和初始化一个NSButton实例NSB......
  • Mac开发基础17-NSButton(二)
    NSButton是一个功能强大且灵活多样的控件,除了基本使用和常见API外,还有一些进阶用法和技巧可以提高按钮的可用性和实现细节。在以下内容中,我会详细介绍一些进阶使用技巧,并封装一个常用的工具类来实现自定义的多种按钮类型。进阶使用和技巧1.自定义按钮的外观和行为Objective-C......
  • Java-开发者的-NetBeans-IDE-入门手册-全-
    Java开发者的NetBeansIDE入门手册(全)原文:BeginningNetBeansIDEforJavadevelopers协议:CCBY-NC-SA4.0一、安装和设置由于其开箱即用的体验,NetBeans是学习Java的最佳入门IDE。一个简单的点击式安装过程提供了您需要的所有工具,以及一个友好而直观的用户界面来开......
  • 【新品75折】 正点原子Kintex-7开发板,K7系列 、支持4KHDMI、PCIe2.0和两路SFP!性能强悍
    正点原子FPGA新品Kintex-7开发板上市!K7系列、支持4KHDMI、PCIe2.0和两路SFP!性能强悍!资料丰富!Kintex7开发板采用Xilinx的K7系列芯片,板载DDR3x4、千兆以太网x2、HDMI接口x2(支持4K30帧,输入输出各一个)、PCIe2.0x8、SFPx2和摄像头等高速接口,非常适合工业控制、图像处理、高速通信、AI......