技术标签: C语言入门
赋值
我们都知道出生下来自己的名字都是别人取地,爸爸妈妈,爷爷奶奶,外公外婆等等他们给我们取名字,我们就有了名字了,类似这个过程变量也可以通过赋值来获得值
请看代码:
char character; //声明变量
int number;
float float_number;
long long_number;
string s_togther; //字符串类型string (C++加入)
//赋值
character = 'H';
number = 18 ;
float_number = 175.6 ;
long_number = 3161880795 ;
s_togther = "大家好我是HK意境" ; //字符串赋值
通常情况下,赋值运算的右侧可以是一个含有常量,变量,运算符的公式 (在C语言中我们都成为表达式)
我们可以将变量的声明和赋值结合在一起这样就可以二合一了;
显示变量的值
变量有了值过后我们肯定是想让它输出啊,想想看如果一个人的名字一直被人遗忘,一个人的名字长期不被叫喊,那么这个人会疯的 ,大家可以看看讽刺文学小说《一个人的名字》。
在C语言中为我们提供了输出函数printf();我们可以使用它输出我们的变量
我们可以看到前面的都是对的,但是 long_number ,和 s_togther 的输出是错误的,大佬都知道了,long_number 超出了,长整型的范围了,所以出错了,
但是很多小伙伴不明了, 为什么 s_togther 会输出乱码,(哈哈,因为string是C++的类型,C语言是没有这种类型的,所以呢,就无法使用这种方式输出呢啊
),具体的各种输出方法我会在未来寄给大家。看分析
**
1. C语言没有限制printf()一次可以输出显示的变量个数,所以上面的变量还可以在一个printf()里面输出哦
2.上面见到的 %d ,%f ,%s ,%ld ,%c 等我们称之为:格式控制符。数据以那种方式输出,这个在我们才开始阶段还是就认为它是一一对应的,
1.格式控制符的形式
%[-][0][m / m.n][l / h] 格式控制符
其中[]里面的内容是可选的
- :表示左对齐,缺省情况下为右对齐(若没规定输出数据的宽度则为左对齐)。
0:当规定输出数据的宽度时,所输出数据实际的宽度小于规定的宽度,则在左边用“0”补齐。
m / m.n:m规定了输出数据的宽度(位数),若数据实际的宽度大于m,则突破m的限制全部输出,反之, 将数据全部输出之后用空格进行左补齐;对于实数n是指小数点后的位数,若n小于小数点后实际的位数,则按四舍五入原则进行截取;对于字符串,n表示从左至右截取的字符个数。
l / h:l表示长整型数据(可用于 % ld。%lo,%lx,%lu),以及double型数据(%lf或%le);h表示短整型数据(可用于%hd。%ho,%hx)。
2.格式控制符及其功能(以输出为例)
%d:用来输出有符号的十进制整数(包括char类型)
%u:用来输出无符号的十进制整数(包括char类型)
%o:用来输出无符号的八进制整数
%x:用来输出无符号的十六进制整数
%c:用来输出单个字符
%s:用来输出一个字符串
%f:用来输出小数形式的十进制浮点数(输入时小数形式和指数形式都可以识别)
%e:用来输出指数形式的十进制浮点数(输入时小数形式和指数形式都可以识别)
%g:用来输出指数形式和小数形式两者中较短的十进制浮点数(输入时小数形式和指数形式都可以识别)
**
详细的使用方法大家还可以参考一下这位大佬的:有关printf()的详细用法和格式控制符
http://c.biancheng.net/view/159.html
5.输入输出·
输出大家已经知道了,现在我们来讲解一下输入,在C语言中库函数为我们提供了一个非常有效的输入函数:
scanf(“格式控制符1,格式控制符2,格式控制符3…” ,&变量1,&变量2,&变量3 …) ;
来看例子:
char character; //声明变量
int number;
float float_number;
long long_number;
//string s_togther; //字符串类型string (C++加入)
//赋值
character = 'H';
number = 18;
float_number = 175.6;
long_number = 3161880795;
//s_togther = "大家好我是HK意境"; //字符串赋值
//进行输入
printf("请输入一个字符: ");
scanf("%c",&character);
printf("\n"); //换行
printf("请输入一个整数: ");
scanf("%d", &number);
printf("\n");
printf("请输入一个浮点数: ");
scanf("%f", &float_number);
printf("\n");
printf("请输入一个长整型数: ");
scanf("%ld", &long_number);
执行结果如上图:
这里说一下,scanf()函数读入数字,字符,字符串时遇到空格,tab键 ,和回车就会停止该字符的读取即完成该字符,数字,字符串的读取结束函数或者进行下一个字符,数字,字符串的读取。简单说就是scanf()不吃空格还值得一提的是,在使用scanf()函数读取数据时在变量前面必须要加上取址符 ‘ & ’(有个例),不加的话会无法正确执行
,这里,过多讲述scanf()了,详细的输入用法可以参考这位大佬的:
https://blog.csdn.net/qq_38880380/article/details/78920709
6.定义常量的名字
在C语言中数值不会改变的量叫做常量,一般需要我们定义为常量的都是大家公认的不会改变的量或者在程序里面需要它的数值不会改变的量我们一般就会把他声明为常量,例如 : 圆周率PI(3.1415926),
对于需要定义为常量的数值我们一般采用
1.使用 #define 常量名称(按照C语言祖传下来的一般使用大写) 数值/表达式;
2.使用前缀存储方式 : const 常量类型 常量名称 =常量值 ;即为在一般声明方式的前面加上 const(constant)关键字,并且使用全局变量:声明在主函数前面,头文件后面。
关于上面2种方法,第一张宏定义,一般使用较多,但是效率低下,对于初学者比较实用(在学习初期程序代码结构单一不需要优化),但是聪明的程序员总是喜欢把常量使用const 定义为全局变量,这样可以大大提高程序速度。
define PI 3.14 //常量名称遵循变量命名规则,\
但是“写为大写是宏定义自产生以来大家一起所遵守的一个规则,希望大家不要打破”------K.N.King
const float PI_ = 3.14; //定义为全局变量,高效
7.C程序的书写规范
对于编程初学者来说必不可少的是需要有一个良好的编程习惯和良好的编程风格,编程书写规范。
对于初学者来说可能不能体会这是一种审美情感。眼见为实 ,请欣赏代码的艺术:
int find_x_arry(int [],int number ,int len);int test2(){
int arry[1000] = {
0 }, n, number, i, k;scanf("%d", &n);
for (i = 0;i < n;i++){
for (k = 0; ;k++){
scanf("%d", &arry[i]);if (arry[i] == 0)break;
}scanf("%d",&number);
printf("%d\n",find_x_arry( arry , number ,k));
}return 0;
}int find_x_arry(int arry[], int number, int len){
int k = 0;for (int i = 0; i < len;i++,k++){
if (arry[i] == number)break;}
return k;
}
大家觉得这个代码好看吗,好进行辨识与读取吗?当然不好看,这不是代码的美,让我们看看下面这个
int student_socre_sort(int []); //普通版冒泡排序
int pro_student_socre_sort(int []); //改进版冒泡排序
int exe_student()
{
int student_socre[N] = {
0}; //初始化为0
printf("please input ten students 's cosre :\n");
for(int i=0 ;i<N ;i++) //输入学生成绩
scanf("%d",&student_socre[i]);
student_socre_sort(student_socre); //普通版冒泡排序:
pro_student_socre_sort(student_socre); //改进版马冒泡排序,接下来将会用到计算两种排序的时间复杂度和空间复杂度
return 0;
}
int student_score_sort(int student_socre[N]) //普通版本的冒泡排序
{
int i, j;
for (i = 0; i < N;i++) //循环N-1次,每一次都进行一次比较找到该轮中的最大,并且将最大的放到前面一次排序下来,并且比较\
比较几点向后移动一位
{
for (j = i;j < N - i;j++) //每次比较从基点开始,向后移动,依次进行比较 ,并且将符合排序规则的数与当前数进行交换后再比较
{
if (student_socre[i] < student_socre[j]) //比较交换数
{
int tmp = student_socre[i];
student_socre[i] = student_socre[j];
student_socre[j] = tmp;
}
}
}
printf("排序后的学生成绩为:\n");
for (i = 0;i < N;i++)
{
printf("%d ",student_socre[i]);
}
return 0;
}
//一般的冒泡排序方法有可能会在已经排好序的情况下继续比较,改进的冒泡排序
//设置了一个哨兵flag,如果一次for循环没有进行交换,则元素已经排好序,由哨兵控制退出循环。
int pro_student_socre_sort(int student_socre[]) //改进版冒泡排序
{
int i,j, flag = 1; //设置一个哨兵flag,如果一次for循环没有进行交换,则元素已经排好序,由哨兵控制退出循环。
for (i = 0; i < N;i++)
{
flag = 1; //哨兵设置
for (j = i;j < N - i;j++) {
if (student_socre[i] < student_socre[j]) //比较交换数
{
int tmp = student_socre[i];
student_socre[i] = student_socre[j];
student_socre[j] = tmp;
flag = 0;
}
if (flag == 1) // 设置的哨兵判断是否有做过排序。如果一次都没有作就退出了
break;
}
}
printf("排序后的学生成绩为:\n");
for (i = 0;i < N;i++)
{
printf("%d ", student_socre[i]);
}
return 0;
}
这个是不是好看多了,总结一下良好的编程风格应该注意:
8.ASCII码
32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
常见ASCII码的大小规则:09<AZ<a~z。
1)数字比字母要小。如 “7”<“F”;
2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
4)同个字母的大写字母比小写字母要小32。如“A”<“a” 。
几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48 。
上面便是我们C语言简单入门教程了,还是老话,欢迎各位大佬来喷小妹,有什么好的建议 , 要是有关于更好的学习方法或者在编程上有更好的想法的欢迎与我交流哦
文章浏览阅读1.3k次。基于距离传感器的I2C通信(二)一、cubmx的配置二、代码讲解传感器驱动文件main.c文件三、实操一、cubmx的配置配置如图:PA11、12是任选的两个作为i2c通信的管脚。stm32上的绿灯是我们可以编程控制的,如果想要控制它就要查找板子的原理图,把对应灯连接的管脚使能设置为输出,查询可知为PC13。同时应注意,STM32单片机使用SWD(Serial wire debug)模式下载程序时要配置sys中的Serial wire。之后生成代码即可。二、代码讲解传感器驱动文件myii_vl6180.c
文章浏览阅读774次。模型驱动开发(Model-driven development,MDD)是软件开发的一种样式,其中主要的软件工件都是由代码和其他工件所生成的模型。其目标是提高企业应用程序开发的生产力和质量。模式在 MDD 的模型转换和代码生成中扮演重要角色。本系列文章详细地讨论了利用 IBM Rational Software Architect(支持 MDD 的集成开发环境)进行模型驱动及基于模式的开发范_rational software architect mdd
文章浏览阅读1.3k次。原文地址:http://blog.csdn.net/iyanglian/archive/2004/08/11/71858.aspxhttp://www.linuxaid.com.cn/tips/4/2/42197743.shtmlhttp://www.hacker.com.cn/article/list.asp?id=2512可以用以下Windows软件学习Linux/UNIX:(1)_uwin什么意思
文章浏览阅读358次。Django框架下MySQLdb模块在python3中无法使用的问题的解决方案 由于python3环境下目前还没有官方的mysqldb模块,Django框架中又强制要求使用mysqldb,为了解决这个问题,可以按照以下方法: 原文链接:http://www.cnblogs.com/xwang/p/3727741.html 在应用下的__init__中加入以下两行即可..._django.db.utils.operationalerror: (1130, "adapter_midware' is not allowed to
文章浏览阅读2.5k次。|举报|字号 订阅这里只录制了最原始的声音,格式PCM,未作任何处理,未压缩,(要压缩可能需要用到其它库)本文用的是回调函数方式waveInOpen(&m_hWaveIn,0,&m_soundFormat,(DWORD)(waveInProc),0,CALLBACK_FUNCTION);最后一个参数就是回调类型如果是CALLBAC_vc waveinstart 声音采集 保存wav
文章浏览阅读1k次。机器学习 | MATLAB实现BP神经网络模型答疑(适应度函数)_神经网络中的适应函数是什么
文章浏览阅读939次,点赞18次,收藏15次。这篇文章是关于strlen,strcpy,strcat,strcmp,strncpy,strncat,strncmp,strstr的知识点总结,花了不少精力与时间,文章整体超过一万字,可以用来快速查找字符串函数的功能和实现_strcpy和strcat区别
文章浏览阅读318次,点赞19次,收藏10次。博主介绍:全网粉丝15W+,CSDN特邀作者、211毕业、高级全栈开发程序员、大厂多年工作经验、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导精彩专栏 推荐订阅2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐Java精品实战案例《500套》
文章浏览阅读113次。php内核分析(四)-do_cli 2016-11-25 11:47 by 轩脉刃, ... 阅读, ... 评论, 收藏, 编辑 这里阅读的php版本为PHP-7.1.0 RC3,阅读代码的平台为linux# main把剩下的代码增加了下注释全部贴出来了(这个是简化后的main函数,去掉了一些无关紧要的代码段):int ma..._do_cli do_cli_server
文章浏览阅读2.4k次。HTTP Status 500 - Requestprocessing failed; nested exception isorg.mybatis.spring.MyBatisSystemException: nested exception isorg.apache.ibatis.builder.BuilderException: Error evaluating expression'con_request processing failed; nested exception is org.mybatis.spring.mybatissys
文章浏览阅读3.6w次,点赞13次,收藏126次。mathpix安装和使用详细教程这里写自定义目录标题mathpix安装和使用详细教程一、下载二、安装三、启动四、 注意事项一、下载软件网址:https://mathpix.com下载页面如图1,根据系统类型点击不同下载按钮. 下载完成后直接安装软件!安装过程中为了随时调用软件在图3的选择界面中勾选两个选项,即在桌面上生成一个启动快捷键图标和开机自动启动软件(自动启动后可以随时调用Mathpix识别转换公式)。二、安装安装简便,一路Next完成安装后,在最后的窗口建议也保持安装完成后启动软件,需要_mathpix
文章浏览阅读182次。关注ITValue,看企业级最新鲜、最价值报道!“十四五”规划纲要草案将“加快数字发展 建设数字中国”作为独立篇章,从打造数字经济新优势到加快数字社会建设步伐,从提高数字政府建设水平再到..._数字中国建设架构规划