C语言程序设计(一)
目录: 1. 向屏幕输出一行文字
2. 输出两个函数的和
3. 函数一
4. 函数二
5. 求两个数的最大值
6. printf和scanf函数的返回值
7. 输入一个成绩,输出所对应的成绩段
8. if语句的细节问题
9. scanf函数的注意事项
10. 运算符
11. 全局变量及宏定义
12. 标识符命名规范及变量作用域总结
.
向屏幕输出一行文字.c(若是c++后缀则是.cpp)

输出两个函数的和.c

注:若直接输出a,b,sum的值,因为这三个值没有初始化,输出结果是不稳定的,所以是垃圾值
函数一.c

输出9,7
函数二.c
出现错误,因为编译器并不知道g函数的作用
在此代码块里才可使用g函数,在它之外的代码块里使用g函数编译器不知道其功能是什么,所以程序会出错
解决办法一:

需注意的是
不能放在
否则会发生错误
因为各个函数之间是平行的。

方法二:
扩展g函数的作用域:


程序报错,因为在g函数的作用域外使用了该函数,解决办法:

或

注:需要注意的是h函数的定义必须在g函数的作用域之内,因为h函数中有g函数的作用
求两个数的最大值.c
方法一:

如果a>=b成立,则输出第一个printf里的内容,否则输出第二个printf里的内容
方法二:

若a<b成立,则把b的值赋给a,此时a的值为最大值,输出a的值
若a<b不成立,则直接输出a的值
Printf和scanf函数的返回值.c

若只输出一个正确数:

输入一个成绩,输出对应成绩段.c
方法一:

注:若想在输出结果时加一行文字“输出的成绩为:”,则printf函数应为:

否则会发生错误:

方法二:

方法三:

方法二与方法三等价
If语句:
1. if (表达式) 语句1
2. if (表达式)
语句1
else
语句2
3. if (表达式1)
语句1
else if (表达式2)
语句2
Else if(表达式n)
语句n
Else
语句n+1
4. if (表达式1)
语句1
Else if (表达式2)
语句2
Else if(表达式n)
语句n
注:一个if 语句中有且只有一个if,else if可以有多个,else最多只有一个。
If函数注意事项.c:

当表达式的值为0,表达式为假,否则表达式为真
在if语句中,控制语句如果为多句,就需要给它们加上一个花括号
Else后的控制语句如果为多句,就需要给它们加上一个花括号
当多个if语句使用时,else语句属于紧挨着它上面那个if语句的内容
图中if语句后面的表达式3>2也可改为大于0的数,3<2可改为0:

Scanf函数注意事项.c:
1. 使用scanf函数输入数据,为什么需要按回车——回车可以刷新键盘缓冲区的内容,键盘缓冲区会有一个换行字符
内存里有程序区(里面有定义的变量)和键盘缓冲区,当通过键盘输入数据时会首先把数据放在键盘缓冲区里,当键盘缓冲区里的数据被填满或回车,此时键盘缓冲区里的内容才会被送到程序区里的变量中,所以在我们使用scanf函数时需要按回车时键盘缓冲区里的内容送入程序区的变量中。
当我们使用scanf函数正确输入数据后按下回车键盘缓冲区里会留下一个换行字符等待程序区里的某个变量接收。

2. scanf函数遇到错误输入会停止

3. scanf函数的格式字符串中的字符分类:
(1) 格式声明(格式说明符,如:%c,%d,%lf指定输入的数据按哪种方式赋给某个变量)
(2) 空白字符(3种,换行(\n)、空格(‘ ‘)、Tab(\t))——scanf在读操作中忽略掉1个或多个空白符

执行框中输入空白字符均被忽略
(3) 非空白字符——scanf在进行读操作的时候剔除掉与这个非空白字符一样的字符

Scanf函数会因为错误输入而终止,输出一个垃圾值,因为a变量并没有通过scanf函数得到一个新值

4. 在输入时使用空白字符起到的数据间隔作用

5. 对于连续的字符型输入,它们是有能力自己间隔数据的,所以在输入完一个字符后不必加空白字符,否则会得到错误的结果

当输入w空格q时得到的错误结果,正确输入如下:

运算符.c
1. 优先级——初等运算符优先级为1,单目运算符优先级为2
2. 3.结合方向:只有单目运算符和赋值运算符的结合方向是自右往左的

3. 操作数(运算对象):如1+2(对于+这个运算符有两个操作数,叫二目运算符),&a(操作数只有一个,叫单目运算符)

4. 乘号、除号、取余运算符的优先级等级为3;加号、减号的优先级等级为4;赋值运算符的优先等级为14。
算数运算符:





过程:-13%3
-13对3进行取余,一个为正数一个为负数,符号相异,其商为负数。将13除3商为4,所以-13除以3商为-4,再将-4乘3为-12,然后-13减去-12为-1,所以-13对3进行取余的结果为1;
13%-3
13对-3进行取余,符号相异,其商为负数。绝对值相处结果为4,所以其商为-4,将-3乘-4结果为12,再将13减去12为1,所以13对-3进行取余的结果为1;
-13%23
-13对23进行取余,符号相异,其商为负数。绝对值相除结果为0,再将0乘23结果为0,让-13减去0为-13,所以-13对23进行取余的结果为-13。
赋值运算符:

注:赋值表达式必须是左边变量,右边表达式或者变量。因为表达式是不可以被赋值的,如a+b=c这个是编译错误的。
5. 优先等级:逗号表达式15(所有运算符中优先级最低的);逻辑与11,逻辑或12;等于、不等于7,关系运算符(除了等于不等于之外);
6. 在C语言中,优先级并不完全决定运算顺序
(1) 只有四种运算符(&&,||,逗号,条件运算符)规定了运算顺序,必须自左往右
(2) 操作数的求值顺序,不同的编译器可能有所不同——不要依赖任何不可移植的操作,应避免出现

7.&&和||都先计算左边表达式的值,如果左边表达式能够确定整个表达式的值那么右边表达式的值就不会被计算
逻辑与:

正解如下:

逻辑与表达式:两边的表达式只要有一个为假,整个表达式都为假。先计算了逻辑与表达式左操作数为假,所以整个表达式为假,所有没有必要再计算右边的表达式,所以将3赋值给a不会被执行,所以a的值为0,所以输出的值为0。
逻辑或:

逻辑或表达式:两边表达式有一个为真,整个表达式都为真。逻辑或也是从左往右计算了,即便加了括号也是,左操作数为1为真,所以右操作数不会被计算,所以a的值还是为0,最终输出的结果为0。

执行方案一:输出为4
a += 1;
a *= 2;
printf(“%d\n”,a);
注:先进行a += 1,a的值就变成了1,再进行a *= 2,a的值就变成了2,所以最后结果为a +a也就是2+2为4
执行方案二:输出为2
a *= 2;
a += 1;
printf(“%d\n”,a);
8.条件运算符:是C语言中唯一的三目运算符,其优先级为13。C语言中条件运算符的运算方向也必须自左往右

输出1,2
注:如果else语句没有加上圆括号,则会认为1?printf("1\n"),printf("2\n"):printf("3\n")是逗号的左操作数,其中逗号的右操作数不论怎样都会被执行。
当if语句判断情况超过两种:

使用条件运算符写的分支结构比较简洁,但没有if语句可读性强。
输出两个整型数据较大那个数的值:

c语言中条件运算符的运算顺序也是必须自左往右的:

程序并不会因为圆括号优先级别高而先去执行(a += 2),而先会执行问号前的表达式,通过其真假来选择是否执行中间的表达式(a += 2)。0为假,所以不会执行中间的表达式,而会执行冒号后面的else的控制语句,所以a += 2是操作不会被执行,所以输出a的值还是为0。

全局变量及宏定义.c:
(1) 宏名、全局变量名建议大写
(2) #号开头的都是预处理指令,预处理是发生在预编译阶段(编译阶段之前),对源程序文件进行一些简单的文本替换——vc++中编译按钮集成了预编译和编译的
当我们点击编译按钮时,其实集合了预编译和编译功能
(3) 全局变量的作用域就是从定义处开始,到整个文件的末尾
注:头文件中有函数声明,全局变量声明,宏定义
库文件中有相应的函数定义,全局变量的定义。

标识符命名规范及变量作用域总结.c
标识符命名规范:
在程序使用的变量名、函数名、宏名等统称为标识符。
除库函数的函数名由系统定义外,其余都由用户自定义。C规定,标识符只能是字母(A—Z,a—z),数字(0—9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。
需要注意:
1.标识符不能和C语言的关键字相同,也不能和用户自定义的函数或C语言库函数重名。
2.不同的C语言编译器对标识符的长度规定不同,例如在某版本C中规定标识符前八位有效,当这两个标识符前八位相同时,则被认为是同一个标识符。(VC++6.0中规定标识符最长不允许超过32个字符)
1.变量的作用域,就看变量直接隶属于那个“花括号”,那么其作用域就是从定义处开始,到这个“花括号”的末尾结束。
注意:全局变量所直接隶属的“花括号”就是这个文件,函数原型形参所直接隶属的“花括号”就是该函数的函数体
2.同个“花括号”中不可以“直接”定义重名变量。
3.在文件的某一处引用重名变量时,所引用的变量就是作用域较小的那一个变量。

C语言程序设计(一)的更多相关文章
- C语言程序设计入门学习五步曲(转发)
笔者在从事教学的过程中,听到同学抱怨最多的一句话是:老师,上课我也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手.发生这种现象的原因有三个: 一.所谓的看懂听明白,只是很肤浅的 ...
- 160809208沈昊辰c语言程序设计实验选择结构设计
<C语言程序设计>实验报告 学 号 160809208 姓 名 沈昊辰 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C区二层机房 ...
- C语言程序设计第4堂作业
大家注意:本次作业稍有增加,由于放假期间大家空闲时间比较充足,将之前学习过程中遗留的问题必须在假期解决. 本次课学习主要内容: 分支结构中的二分支结构.多分支结构和else-if语句 掌握字符型数 ...
- 《VB语言程序设计(第3版)》总结
我之前因学习昆仑通态的组态软件MCGS,用并学习过VB,还买了一本书<VB语言程序设计(第3版)>.现在在某公司实习,最近接触老的项目,又要用到VB.我就又把那本书大体看了一遍,并对其进行 ...
- 160809209_李梦鑫_C语言程序设计实验3 循环结构程序设计
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吉吉老师 实验地点 C05 ...
- 160809209_李梦鑫_C语言程序设计实验2+选择结构程序设计_进阶
<C语言程序设计>实验报告 学 号 160809209 姓 名 李梦鑫 专业.班 计科16-2班 学 期 2016-2017 第1学期 指导教师 黄俊莲 吴喆 实验地点 C05 机 ...
- 中国大学MOOC-翁恺-C语言程序设计习题集
今年网易出了“中国大学MOOC”,于是选了浙大翁恺老师的“C语言程序设计”学习,近期打算把自己在该课程中的PAT习题解答做一个记录,等自己编程能力提高后再来看现在写的代码哪里还有写的不好,可以改进的地 ...
- 中国大学MOOC-翁恺-C语言程序设计习题集-解答汇总
中国大学MOOC-翁恺-C语言程序设计习题集 PAT 习题集 02-0. 整数四则运算(10) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standar ...
- C语言程序设计课程设计自查表格
课程设计自查表格 序号 项目 完成与否(完成打勾) 1 格式是否符合标准(缩进是否规范) 2 是否模块化设计(使用函数分解系统功能) 3 函数名否易懂(不得使用f1(int a1,int a2)这样的 ...
- C语言程序设计第一作业
C语言程序设计第一作业 实验总结 (一) 1.题目:输入圆的半径,求圆周长和面积 2.流程图: 3.测试数据及运行结果: 4.实验分析: 问题1: 出现了错误 原因:是在赋值那写反了 解决方法:应该是 ...
随机推荐
- 2019牛客多校第七场 F Energy stones 树状数组+算贡献转化模拟
Energy stones 题意 有n块石头,每块有初始能量E[i],每秒石头会增长能量L[i],石头的能量上限是C[i],现有m次时刻,每次会把[s[i],t[i]]的石头的能量吸干,问最后得到了多 ...
- [Codechef SSTORY] A Story with Strings - 后缀数组,二分
[Codechef SSTORY] A Story with Strings Description 给定两个字符串,求它们的最长公共子串.如果解不唯一,输出最先在第二个字符串中出现的那个. Solu ...
- IDA pro 6.8显示中文字符串的方法
IDA pro 6.8设置显示中文字符串的方法 M4x原创,转载请表明出处http://www.cnblogs.com/WangAoBo/p/7636335.html IDA是一款强大无比的反编译软件 ...
- java List 排序,升序,降序
import java.util.*; public class EntrySets { public static void main(String[] args) { Map<Object, ...
- Iris_cookie和session
3. Session的使用和控制 在实际的项目开发中,我们会经常有业务场景使用到Session功能.在iris框架中,也为我们提供了方便使用,功能齐全的Session模块.Session模块的源码目录 ...
- docker-api的使用(java)
通过docker-api来执行docker相关的操作. 配置 可以在docker启动文件docker.service中加入如下 vi /lib/systemd/system/docker.serv ...
- C++雾中风景番外篇4:GCC升级二三事
最近将手头上负责的项目代码从GCC 4.8.2升级到了GCC 8.2.(终于可以使用C++17了,想想后续的开发也是很美好啊~~)不过这个过程之中也遇到了一些稀奇古怪的问题,在这里做一个简单的记录,希 ...
- IntelliJ IDEA 2017.3尚硅谷-----忽略大小写提示
- MySQL执行外部sql脚本文件的命令
sql脚本是包含一到多个sql命令的sql语句,我们可以将这些sql脚本放在一个文本文件中(我们称之为“sql脚本文件”),然后通过相关的命令执行这个sql脚本文件.基本步骤如下:1.创建包含sql命 ...
- 出现xxxtbox问题又有集群网络等问题时的解决
出现xxxtbox问题又有集群网络等问题时的解决 集群环境本身问题引发 重新rancher上删除集群,正常构建集群成功,环境就没问题,否则由于环境问题怎么找解决方案都有问题