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: 出现了错误 原因:是在赋值那写反了 解决方法:应该是 ...
随机推荐
- [HEOI2016] 字符串 - 后缀数组,主席树,ST表,二分
[HEOI2016] 字符串 Description 给定一个字符串 \(S\), 有 \(m\) 个询问,每个询问给定参数 \((a,b,c,d)\) ,求 \(s[a..b]\) 的子串与 \(s ...
- Mybatis- 基础知识
mybatis是一个java持久层框架,java中操作关系型 数据库用的是jdbc,mybatis是对jdbc的一个封装. 简介 iBATIS一词来源于"internet" ...
- python itertool 浅谈迭代工具
1.概述 Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个“无限”迭代器: import itertools natuals ...
- 一则关于控制文件全部丢失后如何重新编目RMAN元数据的简单实验
主题:一则简单的RMAN元数据编目实验,来自于博客园AskScuti. 场景:RMAN备份完整情况下,未使用Catalog目录库.删除了所有的控制文件,在手工重建后,导致记录在控制文件中的RMAN备份 ...
- python3练习100题——018
原题链接:http://www.runoob.com/python/python-exercise-example18.html 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个 ...
- 操作系統3-內存管理(Linux內存管理)
操作系統3-內存管理(Linux系統的內存管理方法) 9.Linux系統的內存管理方法 Linux採用"按需調頁"算法,支持三層管理策略.由於Intel CPU在硬件級提供了段式存 ...
- CentOS 7防火墙快速开放端口配置方法
CentOS升级到7之后,发现无法使用iptables控制Linuxs的端口,baidu之后发现Centos 7使用firewalld代替了原来的iptables.下面记录如何使用firewalld开 ...
- JS高级---函数的几个成员
函数的几个成员 函数中有一个name属性----->函数的名字, name属性是只读的, 不能修改 函数中有一个arguments属性--->实参的个数 函数中有一个length属性--- ...
- MySQL关于GTID的一些功能限制
参考文献:https://www.cnblogs.com/luckcs/articles/6295992.html 更新非事务引擎: Case重现: master:对一个innodb表做一个多sql更 ...
- python 更换数据源
1.Win+R打开cmd输入%HOMEPATH%打开自己的HOMEPATH路径文件夹 2.在此路径下建立一个文件夹pip, 里边放一个文件pip.ini内容如下: [global] timeout = ...