——前言
与其说初识C语言,不如说是我对一些知识点的回顾与复习(每周一次的定点复习)。
——多组输入
1.多组输入
while((scanf("%d", &a))
判断scanf返回值是什么 ——int 整形
读一个整形,返回1;
读几个数据返回多少;
while((scanf("%d", &a)==1)
如果输入两个数据会不会有问题?
%d %d 返回2
这里的1我认为是语法判断条件,就是只要不是-1的数都可以当成1
如果读取失败 返回EOF(-1)
这样可以这么输入
while((scanf("%d", &a)!=EOF)
不过说到这里,我有一个问题
scanf("%d", &a)与scanf("%d %d", &a, &b)
它们之间的区别又是什么呢?
如果要连续输入两个数的话它们二者都可以实现,那我就很疑惑,后者开辟了一个空间给了B,那前者第二个输入的数又去哪里了呢?
——ascll码
如果是字符变量,那么本质是char,需要用%c输入。如果想输出ascll对应的数字,那么用%d输出即可,反之亦然。
输入用%c,输出用%d
——操作符
取模只能两边都是整数
一般加小数点编译器都是默认的double,除非你刻意加上1.0f
后置++;先使用后加1;
int a = 5;
int b = a ++;
先赋值给b 再加1
int b = a;a=a+1;
前置++;先加1后使用;
a=a+1;int b = a ;
逗号表达式
从左往右算
——变量
在大括号内部定义的变量只能在其大括号内使用,一般在main第一个大括号是最大的作用域了
全局变量的话不用大括号,在main外面定义
如果想在不同文件中使用全局变量,需要有一个声明extern
这样可以从其他文件中来调用这个全局变量 本文件:extern int a
外文件 int a = 1ooo;
但这样做的意义是什么,我也不得而知。
const 常变量
const int a = 10;让变量不再改变
数组只能用常量来规定大小,不能用变量也不能用常变量
#define M 100 标识符常量 这样数组大小里面就可以用M了
枚举常量
一一列举
性别:男、女、保密
enum Color(自定义的类型)
{
枚举常量默认第一个是0后面以此类推
red,//0
green,//1
blue//2
}
int main()
{
enum color c =red;(可以给c赋值但只能3选1)
return 0;
}
——字符串
字符串
由双引号引起的一窜字符,结束标准是/0的转义字符
char arr[]="bit" 0-b 1-i 2-t 3-'/0' 对应关系 字符串隐藏放了'/0'
char arr[]={'b','i','t'} 0-b 1-i 2-t 无‘/0’ 这样打印后为 bit 和乱码 需要主动放
char arr[]={'b','i','t','/0'}
include <string.h> 搭配长度使用
求长度strlen(arr)‘/0’不计入其中但是结束标志
——转义字符
转义字符
- 如果想打印/t可以使用反转义/
- 想打印‘ ’/‘’
- /ddd 1-3个8进制数字 /130 0*8的0次方加3*8的1次方加1*8的二次方=88对应x 这样算一个字符
- ‘/180’不能打印,里面8进制不能有8所以构成不了转义字符
- /xdd dd表示2个16进制数字
ADD(int x, int y)接受a与b
s=ADD(a,b)传递需要处理的数据
——结束语
说实话,感觉这篇文章很烂,没有标准代码片段,没有图片,没有划重点;一对比别人的就感觉差距很大,可能是这些琐碎知识点让我提不起劲的原因,但我会好好学习他们的文章亮点,写出赏心悦目,简洁明了的文章。
不过比起这个,果然我还是更喜欢解题,毕竟我很笨,喜欢转牛角尖。所以如果发布跟解题有关的文章,我会很乐意分享我的榆木脑袋的,希望大家可以指正。