C语言基础 (7) 输入输出
- 复习
// 定义数组时 []内部尽量用常量
// 定义数组时,数组名在同一{}内部是唯一的,不能和变量、其他数组名同名
// 使用数组时 []可以是常量,变量,表达式
// 定义一个数组,数组名字叫a 有10个元素 每个元素为int
// 通过下标操作元素,从0开始,0~9
int a[10]
a[0] = 1;
// 数组越界
//1、编译时错误,编译代码就能检查到(语法错误)
//2、运行时错误 运行到这个语句才可能检查到(非法操作内存)
//a[10] = 2
一维数组初始化
// 定义同时赋值叫初始化,只能在定义时才能用{}进行初始化
int a [10] = {1,2,3,4} //剩下的会填零
int a[] = {1,2,3,4} //会自动生成长度为4的数组
//一维数组名
int a[] = {1,2,3,4,
4、冒泡排序
for(I = 0 ;i<n-1;i++
for(j=I ;j<n-1;j++
ifa(j)<a(j+1)
{ // swap
// 1、测二维数组长度 sizeof(a) 4个元素 每一个int[5] = 4*4*5 = 80
printf(“sizeof(a) = %lu\n”,sizeof(a))
// 2、 测第0个元素的大小,它还是一维数组 int[5] = 4*5 = 20
printf(“sizeof(a[0])=%lu\n”,sizeof(a[0]));
// 3、 测第0行第0列元素大小,就是一个int类型,4
printf(“sizeof(a[0][0]) = %lu\n”,sizeof(a[0][0]))
//4、 求行的数目,第一个[]的数目,元素个数
int n = sizeof(a)/sizeof(a[0])
printf(“n1=%d\n”,n)
// 5、 求列的数目,第二个[]数目
n = sizeof(a[0]/sizeof(a[0][0]);
printf(“n2=%d\n”,n)
// 6、 求行*列的总数
n = sizeof(a)/sizeof(a[0][0])
printf(“n3 = %d\n”,n)
三、多维数组
// 三维数组就是有n个二维数组
四、字符数组
1、字符串和字符数组关系
// 1、字符串是以数字0或者字符’\0’结尾
// 2、如果字符数组,以数字0或者’\0’结尾,那么这个字符数组就是字符串
char ch = 0
char ch = ‘\0’
ch = ‘0’ // err 字符0,它是普通字符,不是字符串结束字符,ascii码为48
例如
char a[] = “1230”
char a[] = “123\0”
- 字符数组初始化
char buf1[] = {‘c’,’ ‘, ‘p’,’r’,’e’,’g’}
// %s代表以字符串的方式打印
// 首地址,找字符串的结束符,遇到数字0或者字符’\0\结束打印
!有可能乱码
3、字符数组输入
char str[100];
scanf(“%s”,str) // 遇到空格截断
五、随机数的产生
//随机种子设置,只需设置一次,如果种子一样,随机数就一样
//srand(100)
srand((unsigned int)time(NULL))
int I = 0;
int tmp = 0;
for(i=0;i<10;i++)
{
tmp = rand() //产生随机数
printf(“tmp = %d\n”,tmp)
}
二、作业讲解
三、scanf的使用
键盘输入: hello mike回车(把内容放缓冲区


键盘输入 hello mike\n
缓冲区就是一块内存

结论:scanf以空格分开,输入一次下次也能取出来是因为放到缓冲区了
//scanf()的缺陷,不做越界检查


04 gets fgets的使用

// 这个函数已经被抛弃了 不建议使用




stdio.h里面有一个叫stdin的指针,可以直接调用标准键盘输入


fgets有个问题,会把换行符也读进去

05 字符串的输出




06 strlen的使用
strlen()


07 课堂答疑
08 字符串的拷贝



09 数组越界测试

// 可能会报段错误
10 字符串比较

11 字符串追加

12 上午知识点复习
gets 可以获得空格
fgets stdin
puts 会自动打印\n
fputs stdout
strlen 遇到\0结束(sizeof不会
strcpy 有一个src 有一个dst 遇到\0结束 最后自己也加一个\0
strcat 和上面一样
strncat 加一个n以后就可以指定长度了
strcmp 逐个字符比较ascii大小
strncmp
13 sprintf的使用

s开头输出到数组
f开头输出到文件
什么都不写输出到屏幕
结果:

14sscanf的使用


15 sscanf的补充
16 字符串查询
strchr() // 查询char
strstr() // 查询str

// strchr // strstr
17 课堂答疑
18 字符串切割



19 atoi的使用
atoi() 函数功能是把一个字符串 把字符串转换成整型 直到遇到\0
char str1[] = “-10”
int num1 = atoi(str1)
atof(转换到浮点型 atoll(转换长整型
char buf[100]
sprintf(buf,”%d”,2345) // 把格式化的数据写入某个字符串中

20 函数的作用和分类
·系统函数,即库函数:这是由编译系统提供的,用户不必自己定义这函数,可以直接使用它们,如我们常用的打印函数printf()
·用户定义函数:用以解决用户的专门需要。
程序比作公司,函数比作部门,
21 无参无返回值函数的使用
程序比作公司,函数比作部门
1、函数的定义,就是把之前写在main 函数内部的代码换个地方
2、函数的定义,类似于厨房做好的菜,如果没有人点菜,做好的菜没有意义
函数的定义,只有在用户调用了,才起作用,函数调用类似于点菜
1、 无参无返回值函数的使用
2、 有参无返回值的使用
3、 无参有返回值函数的使用
4、 有参有返回值函数的使用

22 无参无返回值函数的补充
23 有参无返回值的函数
24 无参有返回值的函数的使用
C语言基础 (7) 输入输出的更多相关文章
- 语言基础:C#输入输出与数据类型及其转换
今天学习了C#的定义及特点,Visual Studio.Net的集成开发环境和C#语言基础. C#语言基础资料——输入输出与数据类型及其转换 函数的四要素:名称,输入,输出,加工 输出 Console ...
- Python语言基础-语法特点、保留字与标识符、变量、基本数据类型、运算符、基本输入输出、Python2.X与Python3.X区别
Python语言基础 1.Python语法特点 注释: 单行注释:# #注释单行注释分为两种情况,例:第一种#用于计算bim数值bim=weight/(height*height)第二种:bim=we ...
- C#语言基础2016/3/6
一. 基础知识 输入输出 Console.Write();//输出语句,自动换行 Console.WriteLine();//输出语句 Console.WriteLine();输入语句 Consol ...
- C语言基础(转载自大海笔记)
# C语言基础2015年03月26日10:04:411. 语言排行榜C——java——objective-C2. 进制:进制:进位机制.用普通的话讲,应该为人为的定义一种度量来标识一样东西 ...
- 01_C语言基础
内容提要: 1. C语言概述2. 数据类型.运算符与表达式3. C语言程序结构 4. VC6.0使用练习 知识详解01:C语言的历史 1. C语言与其它语言比较 汇编语言: (1).可直接对硬件进行操 ...
- 学习基础和C语言基础调查
学习基础和C语言基础调查 一.一种比大多数人(超过90%以上)更好的技能 说句实话,我还没有那种特别特别自信的.说我能拿得出手的.所谓能超过百分之九十以上的人的技能.毕竟人外有人,天外有天. 姑且算上 ...
- C语言基础语法
#include <stdio.h> int main() { int age; printf("input your age"); scanf("%d&qu ...
- c语言基础知识要点
C语言程序的构成 与C++.Java相比,C语言其实很简单,但却非常重要.因为它是C++.Java的基础.不把C语言基础打扎实,很难成为程序员高手. 一.C语言的结构 先通过一个简单的例子,把C语言的 ...
- 20155327 学习基础和C语言基础调查
20155327 学习基础和C语言基础调查 通过阅读老师推荐的五篇文章之后,其中有几个点引发了我的思考,便是"量变引起质变""循序渐进"以及"坚持&q ...
随机推荐
- 框架统一出参数DTO格式
这个可以没必要定义. 每个接口返回自己的数据格式就好
- Android Studio Mac 快捷键整理分享
代码高亮 OSX:Shift + Cmd + F7 Win/Linux:Alt + J 代码高亮向上查找 OSX:Shift + Cmd + G Win/Linux:Shift + F3 代码高亮向下 ...
- Hook的两个小插曲
看完了前面三篇文章后,这里我们来一个小插曲~~~~ 第一个小插曲.是前面文章一个CM精灵的分析.我们这里使用hook代码来搞定. 第二个小插曲,是如今一些游戏,都有了支付上限,比如每天仅仅能花20块钱 ...
- HDU 2255 奔小康赚大钱 KM算法题解
KM算法求的是完备匹配下的最大权匹配,是Hungary算法的进一步,由于Hungary算法是最大匹配的算法,不带权. 经典算法,想不出来的了,要參考别人的.然后消化吸收吧. 由于真的非常复杂的算法. ...
- 具体解释Hibernate中的事务
1.前言 上一篇博客解说了Hibernate中的一级缓存,属于Session级别的.这篇博客解说一下Hibernate中的事务机制. 有关事务的概念.请參照通俗易懂数据库中的事务. 2.怎样处理Hi ...
- 安卓欢迎界面和activity之间的跳转问题
使用安卓的UI界面,就不得不了解activity,由于actvity就像是一个form表单一样,全部的UI都呈如今这里,他能够承载全部的UI控件. INtent就是一个中继站一样.他负责组件之间的沟通 ...
- JavaScript 和Ajax跨域问题
json格式: { "message":"获取成功", "state":"1", "result": ...
- HDU3496 Watch the Movie 背包
题目大意:给你n张电影门票,但一次只可以买m张,并且你最多可以看L分钟,接下来是n场电影,每一场电影a分钟,b价值,要求恰好看m场电影所得到的最大价值,要是看不到m场电影,输出0. 三个限制: 选电影 ...
- Android系统之Recovery移植教程 【转】
本文转载自:http://luckytcl.blog.163.com/blog/static/14258648320130165626644/ recovery的移植,这方面的资料真实少之又少啊,谷歌 ...
- NAS与SAN有什么区别?
NAS和SAN字面上相似,并且都是新型数据存储模式,但这二者是完全不同的,针对不同方向的技术,为了能够更好的区分它们,天伟数据恢复整理了以下内容供读者参考(天伟数据恢复建议重要数据多备份,备份很重要以 ...