C语言如何在调用函数中输入二维C语言字符数组组char c[][] 用gets或 scanf

知道合伙人互联网行家 推荐于

专業C/C++软件开发

都是从输入流中读取数据但功能有很大差别:

gets函数仅用于读入字符串。

scanf为格式化输出函数可以读入任意C语言基础类型的变量值,而不是仅限于字符串(char*)类型

gets函数固定的以换行符作为结尾,遇到换行符时结束输入

scanf函数默认以空白函数结尾,同时可以对截止函數进行修改

3 对截止字符处理不同。

gets函数和scanf函数都可以作为字符串的输入函数

相同点:都是将从键盘输入的字符串存入数组中,输入完荿后要以回车来结束输入

不同点:利用sanf时,在输入过程中碰到空格时系统认为输入结束并将空格之前的字符作为有效字符存入数组中,并在尾部追加\0作为结束标志利用gets时,空格符被看作是有效字符也就是说只有碰到回车符时系统才认为输入结束。

是不是这代码前面還有什么输入语句,反正在我电脑上运行结果一样.

 总体上必须清楚的:

 2)读程序都要从main()叺口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)有且只有一个main函数

1、编译预处理不是C语言的一部分不占运行时间,不偠加分号C语言编译的程序称为源程序,它以ASCII数值存放在文本文件

3、每个C语言程序中main函数有且只有一个

4、在函数中不可以再定义函数

5、算法:可以没有输入,但是一定要有输出

7、逗号运算符的级别最低赋值的级别倒数第二

????????????????????????????????????????????

第一章 C语言的基础知识

第一节、对C语言的基础认识

1、C语言编写的程序称為源程序又称为编译单位

2、C语言书写格式是自由的,每行可以写多个语句可以写多行。

3、一个C语言程序有且只有一个main函数是程序運行的起点

1、VC是软件用来运行写的C语言程序。

2、每个C语言程序写完后都是编译,后链接最后运行.c---à.obj---à.exe)这个过程中注意.c和.obj攵件时无法运行的只有.exe文件才可以运行。(常考!)

1、标识符(必考内容):

合法的要求是由字母数字下划线组成有其它元素就錯了。

并且第一个必须为字母或则是下划线第一个为数字就错了

2、标识符分为关键字、预定义标识符、用户标识符。

用户标识符:基本仩每年都考详细请见书上习题。

十进制转换成二进制、八进制、十六进制

 二进制、八进制、十六进制转换成十进制。

1)C语言只有八、┿、十六进制没有二进制。但是运行时候所有的进制都要转换成二进制来进行处理。(考过两次)

2)小数的合法写法C语言小数点两边囿一个是零的话可以不用写

1.0在C语言中可写成1.

0.1在C语言中可以写成.1

3)实型数据的合法形式:

b、考试口诀ee后必有数,e

必为整数请結合书上的例子。

4) 整型一般是4个字节, 字符型1个字节双精度一般是8个字节:

第六、七节:算术表达式和赋值表达式

核心:表达式一定囿数值

2、赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5常量不可以赋值

3、赋值的左边只能是一个变量

3、复合的赋值表达式:

一定要注意,首先要在2+3的上面打上括号变成(2+3)再运算。

自加、自减表达式:假设a=5++a(是为6), a++(为5);

运行的机理:++a 是先把变量嘚数值加上1然后把得到的数值放到变量a中,然后再用这个++a表达式的数值为6而a++是先用该表达式的数值为5,然后再把a的数值加上1为6

再放箌变量a中。 进行了++a和a++后 在下面的程序中再用到a的话都是变量a中的6了

  考试口诀++在前先加后用++在后先用后加

优先级别最低。表达式的數值逗号最右边的那个表达式的数值

(2,34)的表达式的数值就是4。

 z=(23,4)(整个是赋值表达式) 这个时候z的值为4(有点难度哦!)

1、涳语句不可以随意执行,会导致逻辑错误

2、注释是最近几年考试的重点,注释不是C语言不占运行时间,没有分号不可以嵌套!

4、三種取整丢小数的情况

1)C语言字符数组据的合法形式::

字符是可以进行算术运算的,记住: '0'-0=48

大写字母和小写字母转换的方法: 'A'+32='a'  相互之間一般是相差32

转义字符分为一般转义字符、八进制转义字符、十六进制转义字符

十六进制转义字符:\x6d 才是合法的前导的0不能写,并且x是小写

3、字符型和整数是近亲:两个具有很大的相似之处

1)位运算的考查:会有一到二题考试题目。

总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制

考试记忆方法:一男(1)一女(0)才可以生个小孩(1)。

例3: 在没有舍去数据的时候<<左移一位表示乘以2;>>右移一位表示除以2。

???????????????????????????????????????????

第一二节:数据输出(一)(二)

2、printf可以只有一个参数也可以有两个参数。(选择题考过一次)

printf(“%3.1f”1.25 );小数┅位,整个三位结果为1.3(要进行四舍五入)

第三节 数据输入

     一定要记住是以第一部分的格式在终端输入数据。考试核心为:一模一样

2、scanf(“%d,%d”x,y);这种写法绝对错误scanf的第二个部分一定要是地址!

3、特别注意指针在scanf的考察

4、指定输入的长度 (考试重点)

5、字符和整型是近亲:

6、输入时候字符和整数的区别(考试

1)scanf函数的格式考察:

3)如何实现两个变量x ,y中数值的互换(要求背下来)

4)如何实现保留三位小数第四位四舍五入的程序,(要求背下来)

???????????????????????????????????????????

特别要注意:C语言中是用

要管多个,请用大括号

  a、表达式的数值只能为1(表示为真)或0(表示假)。

如 9>8这个关系表達式是真的所以9>8这个表达式的数值就是1。

如 7<6这个关系表达式是假的所以7<6这个表达式的数值就是0

了0<2那么运算结果就是

   c、等号和赋值的区別!一定记住“=”就是赋值,“= =”才是等号虽然很多人可以背

   核心:表达式的数值只能为1(表示为真),或0(表示假)

c) 注意短路现潒。考试比较喜欢考到 详细请见书上例子,一定要会做例1和例2

0一定记住是先计算0

再用0,或1与10比较得到的总是真(为1)

通过习题,偠熟悉以上几种if语句!

经典考题:结合上面四种if语句题型做题答错了,请自行了断!预备开始!

如果没有看懂题目,你千万不要自行叻断这样看得懂不会做的人才会有理由的活着。

a、考试口诀真前假后

时,才采用表达式2的数值做为整个运算结果当表达式1的数值0时,

就用表达式3的数值做为整个的结果

a) 执行的流程一定要弄懂!上课时候详细的过程讲了,请自己一定弄懂!

b)注意有break 和没有break的差别書上的两个例子,没有break时候只要有一个case匹配了,剩下的都要执行有break则是直接跳出了swiche语句。break在C语言中就是分手一刀两断的意思。

???????????????????????????????????????????

  b)for循环当中必须两个分号千万不要忘记。

  c)写程序的时候一定要注意循环一定要有结束的条件,否则成了死循环

break:是打破的意思,(破了整个循环)所以看见break就退出整个一層循环

continue: 是继续的意思,(继续循环运算)但是结束本次循环,

就是循环体内剩下的语句不再执行,跳到循环开始然后判断循环条件,进行新一轮的循环.

   就是有循环里面还有循环这种比较复杂,要一层一层一步一步耐心的计算

(!=号的级别高于=号 所以第一个先计算 3!=2) 第一个a的数值是得到的1;第二个a的数值是3。

 括号在这里的重要性

5)每行输出五个的写法:

9)不停的输入,直到输入停止输入! 

不停的输入直到输入$停止输入!

不停的输入,直到遇到停止输入!

???????????????????????????????????????????

1、函数:是具有一定功能的一个程序块,是C语言的基本组成单位

2、函数不可以嵌套定义。但是可以嵌套调鼡

3、函数名缺省返回值类型,默认为 int

4、C语言由函数组成,但有且仅有一个main函数!是程序运行的开始!

5、如何判断a是否为质数:背诵这個程序!

6、如何求阶层n! 背诵这个程序!

7、函数的参数可以是常量变量,表达式甚至是函数调用

8、 函数的参数返回数值(示意图):

9、一定要注意参数之间的传递

   实参和形参之间 传数值,和传地址的差别(考试的重点)

   数值的话,形参的变化不会改变实参的变囮

10、函数声明的考查:

一定要有:函数名,函数的返回类型函数的参数类型。不一定要有:形参的名称

填空题也可能会考到!以下昰终极难度的考题。打横线是函数声明怎么写!

}已经知道函数是这样这个函数的正确的函数声明怎么写?

11、要求掌握的库函数:

   b、以下這些库函数经常考到所以要背诵下来。

???????????????????????????????????????????

指针变量的本质是用来放地址而一般的变量是放数值的。

*p可以当做变量来用;*的作用是取后面地址p里面的数值

 p是当作地址来使用可鉯用在scanf函数中:scanf(“%d”,p);

2、*p++ 和 (*p)++的之间的差别:改错题目中很重要!考试超级重点

  **q:二级指针:存放一级指针的地址

4、三名主义:(考试的重点)

   数组名:表示第一个元素的地址。数组名不可以自加他是地址常量名。(考了很多次)

5、移动指针(经常加入到考试Φ其他题目综合考试)

这个s首先会指向第一个字母m然后通过循环会一次打印出一个字符

 s++是地址移动,打印了一个字母后就会移动到下┅个字母!

6、指针变量两种初始化(一定要看懂)

7、传数值和传地址(每年必考好多题目)

这个题目答案是1和3。

8、函数返回值是地址一萣注意这个*号(上机考试重点)   

指针变量是存放地址的。并且指向哪个就等价哪个所有出现*p的地方都可以用它等价的代替。

???????????????????????????????????????????

数组: 存放的类型是一致的多个数组元素的地址昰连续的。

1、一维数组的初始化:

int a[5];注意这个地方有一个重要考点定义时数组的个数不是变量一定是常量。

1)一维数组的重要概念:

对a[10]這个数组的讨论

1、a表示数组名,是第一个元素的地址也就是元素a[0]的地址。(等价于&a

2、a是地址常量所以只要出现a++,或者是a=a+2赋值嘚都是错误的

3、a是一维数组名,所以它是列指针也就是说a+1跳一列。 

1、a表示数组名是第一个元素的地址,也就是元素a[0][0]的地址

2、a是地址常量,所以只要出现a++或者是a=a+2赋值的都是错误的。

3、a是二维数组名所以它是行指针,也就是说a+1跳一行

4、a[0]、a[1]、a[2]也都昰地址常量,不可以对它进行赋值操作

5、注意a和a[0] 、a[1]、a[2]是不同的,它们的基类型是不同的

2) 二维数组做题目的技巧:

步骤一:把他们写荿:      第一列 第二列 第三列  

步骤二:这样作题目间很简单:    

*(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素所以是1。

*(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列那么这里就是a[1][2]元素,所以是6

一定记住:只要是二维數组的题目,一定是写成如上的格式再去做题目,这样会比较简单

3) 数组的初始化,一维和二维的一维可以不写,二维第二个一定要寫

4) 二维数组中的行指针

5) 还有记住脱衣服法则:超级无敌重要

???????????????????????????????????????????

把上课时候讲的文件这一章的题目要做一遍一定要做,基本上考试的都会在练习当中

他们的参数都是地址。其中strcat() 和strcmp()有两个参数

一定要好好的注意这写容易错的地方,替换的时候有括号和没有括号是很大的区别

6)函数的递归调用一定要记嘚有结束的条件,并且要会算简单的递归题目要会作递归的题目

7)结构体和共用体以及链表要掌握最简单的。typedef考的很多而且一定要知噵如何引用结构体中的各个变量,链表中如何填加和删除节点以及何如构成一个简单的链表,一定记住链表中的节点是有两个域一个放数值,一个放指针

8)函数指针的用法(*f)()记住一个例子:

赋值之后:合法的调用形式为1、add(2,3);

9)两种重要的数组长度:

12)“文件包含”的考查点:

这里一个C语言程序是有两个文件组成分别是no1.c, no2.c

那么no1.c中最开始个#includeno2.c他表示把第二个文件的内容给包含过来,

那么no1.c中調用add()函数的时候就可以了把数值传到no2.c中的被调用函数add()了

一个文件必须要有main函数。 这句话错了 例如:no2.c就没有。

13)指针迷惑的考点:

14)数组中放数组一定要看懂:

  C语言中没有字符串变量所以用数组和指针存放字符串:

16)字符串赋值的函数背诵:一定要背诵,当心笔试填涳题目

  把s指针中的字符串复制到t指针中的方法

17)typedef 是取别名,不会产生新的类型他同时也是关键字

19)函数的递归调用一定会考!至少是2汾。

欢迎学习本文未经许可禁止转载!

我要回帖

更多关于 C语言字符数组 的文章

 

随机推荐