一.语言程序的基本语句
表达式语句、函数调用语句、控制语句、复合语句、空语句。
复合语句:一般的认为是将多条语句复合成一条语句去逐语句执行
- 增强可读性
- 控制语句想控制多行语句时 就得加{}
- 在以后 我们认为{} 代表作用域({}中的内容作用于哪一个区域)
二.数据的输入输出
C语言中数据的输入、输出是由函数来实现的。
格式输入输出函数 printf( )和 scanf( )
字符输入输出函数 putchar( )和getchar( )
1.缓冲区
缓冲区:用于临时存储数据的区域 由系统控制(键盘缓冲区)
当我们执行一个复杂的程序时, 可能会有多个输入 且不是同时输入的,程序在编译时,就会了解一共需要输入多少个数据 当程序段执行到输入时 就会从键盘缓冲区拿数据 且是一一对应的去拿 而不是边输入边执行 所有的输入内容都会记录在缓冲区中 运行前分配 程序运行结果或者全部读取后释放(只要缓冲区内有数据,缓冲区就不会被释放) 程序会先从缓冲区去读取内容 如果缓冲区数据不够用 就会使控制台停下来 等待用户继续输入 如果够用 就会一直执行下去 控制台不会阻塞 回车代表给缓冲区送入数据程序开始读取缓冲区内记录的内容。
所有从控制台读取到的数据 都是字符串。
2.格式输出函数: printf( )函数
头文件:stdio.h
功能:将字符串中的内容打印到控制台中
格式: printf(“格式控制字符串”[ , 输出表列] );
格式控制: 由双引号括起来的字符串, 用于指定输出格式。
普通字符: 按原样输出的字符
格式说明: 用来指定需输出数据的输出格式 形式: %[ 修饰符 ]格式字符
输出表列: 需要输出的数据列表,彼此间用逗号分隔, 可以是任意合法的表达式。
2.1.用于输出的修饰符
2.2.用于输出的格式字符
注意:输出表列可以是任何可以计算出结果数据
但是格式符与类型必须一致 除%d %c(0-127)
当格式说明个数<输出项时,多余的输出项不予输出。
当格式说明个数>输出项时,输出不定值
d格式符
作用: 输出一个带符号的十进制整数(正数不输出符号)
格式: ① %d ② %md ③ %ld 其中:
%d—按整型数据的实际长度输出;
m—字段宽度;(大于字符长度时:正数有对齐补空格,负数左对齐补空格。小于字符长度时,按字符本身输出)
%ld—输出长整型数据
%hd—输出短整型数据
c 格式符
作用: 用来输出一个字符
一个整数,如果在0~127之间,也可用字符形式输出,系统会将该整数转换成对应的ASCII码字符
s 格式符
作用: 用来输出一个字符串
格式: ① %s ② %ms ③ %m.ns 其中:
m—输出的字符串占m列;
n—输出字符串中左端n个字符
f 格式符
作用: 以小数形式输出单、双精度实数。
格式: ① %f ② %m.nf 其中:
%f—整数部分全部输出, 隐含输出6位小数。
m—字段宽度(整数、小数位数、数符、小数点)
n —小数位数的个数, 如: %12.4f
s 格式符
作用: 以标准化的指数形式输出实数(小数点前必须有而且只能有一位为非0数字)。
格式: ① %e ② %m.ne
%e —默认输出6位小数
m—字段宽度(指数部分占5列)
n —小数部分的位数
我们往变量中赋值的方式:
- 程序内直接赋值 a=7;
- 从控制台读取 scanf
- 从文件读取 fscanf
- 从已有的变量中读取 sscanf
八进制 十六进制数字没有负数 %o %x 来输出整型数 默认输出的是无符号数
除 X, E, G 格式符外, 其他格式符必须用小写字母。
3.格式输出函数: printf( )函数
功能:按格式控制所规定的格式, 从指定的输入设备(一般为键盘)上把数据输入到指定的变量中。
格式: scanf(“格式控制”,地址表列 );
格式控制: 普通字符: 需原样输入的字符, 通常不使用。
格式说明: 用于指定需输入数据的输入格式
形式: %[ 修饰符 ] 格式字符
地址表列: 给出各变量的地址 “
地址是由“&”运算得到的
“&”是取地址运算符, 得到变量在内存中的地址。单目运算符,右结合性。
当格式符的个数少于参数列表个数时,多余的将忽略。
当格式符的个数多于参数列表的个数时候,将输出不确定的值。
3.1修饰符
3.2格式符
3.3格式输出使用与注意
(1)输入数据时采用的分隔符应与格式控制中的分隔符一致。格式控制中无普通字符时, 输入数值型数据可用空格、Tab键、回车键作分隔符。
(2) 输入数据时不可规定精度, 但可指定宽度。
(3)输入格式符带有*,表示该数据不赋值。
(4)用C格式符输入字符时,任意字符均为有效字符
(5)无符号数可用 %d、%o、%x 格式输入
(6)在下列情况下可认为数据输入结束: (1)遇空格、回车、 Tab键;
(2)遇宽度结束;
(3)非法输入。
遇到空格、回车键、TAB键读取结束 |
遇到异常字符结束 |
指定宽度结束 |
|
%s |
yes |
no |
yes |
%d%o%x%u%f |
yes |
yes |
yes |
%c |
no |
no |
yes |
4 字符输入、输出函数
字符输入函数
格式: putchar( c );
功能: 向终端输出一个字符
说明: C为参数, 可以是字符型变量、整型变量、字符型常量、表达式或转义字符, 但只能是单个字符而不能是字符串。
例如:
#include <stdio .h>
void main( )
{
char a =’O’ ;
int b=75;
putchar( a );
putchar( b );
}
字符输入函数
格式: getchar( );
功能: 从键盘读入一个字符 char ch = getchar( );
说明: 只能读取一个字符 该字符可赋给字符变量、整型变量或作为表达式的一部分。
例如:
#include <stdio .h>
void main( )
{
char c ;
c=getchar( );
putchar(c);
}
三.数组
1.基本概念
是一组 数目固定 类型相同 连续存放的 有序集合!
数目固定: 定义时 决定分配多少个元素
类型相同: 数组中的元素类型相同
连续存放: 在内存中 连续存储
格式: 类型说明符 数组名 [常量表达式];
数组名 代表数组的整个空间 如 sizeof(数组名)==整个数组分配的字节数
数组名即数组的首地址,是一个常量 数组中的每一个元素都是变量
使用下标运算符 [ ] 来获取数组的元素 优先级:1级
数组n个元素 a[0]表示第一个元素 a[n-1]代表最后一个元素 否则超范围 逻辑错误
初始化 int a[10] = {0};
赋初值 1.全赋值为0 {0}
2.部分初值 {1,2,3,4} 其余默认为0
3 .赋全部初值 {1,2,3,4,5,6,7,8,9,10}
初始化时 [ ]内 必须是一个常量 代表开辟了这么多个元素的数组
初始化后 [ i]内的常量、变量、表达式 代表是的下标获取第i个元素
因为定义数组时 数目是固定的 一般的我们会多开一些空间
整型数组没有办法计算其中有多少个有效的元素 0也是有效数据
字符数组可用 strlen(数组名)来计算