C语言基础
2017-06-04 16:15
169 查看
编辑源程序f.c,经过编译生成目标程序f.obj, 经过连接生成可执行程序f.exe,
运行即得结果。
C语言数据类型:
1.基本类型:
a.整形:基本整数,短整型,无符号型,长整形
b.字符型
c.实数(浮点型):单精度型,双精度型
d.枚举类型
2.构造类型:
a.数组类型
b.结构体类型
c.共用体类型
3.指针类型
4.空类型
基本数据类型描述
算术运算符的优先级与结合级
复合赋值运算:a*=b+3,等效为a=a*(b+3).
逗号运算符:用逗号将多个表达式连接起来的式子为逗号表达式,运算符中最低的一种,按顺序运算。
a=3*5,a*4 最后值为60。
强制类型转换:
(类型名)(表达式)
(float)(a+b) /*将a+b的值强制转换为float*/
赋值运算时的类型转换:
int i;
i=3.24+7%4; /*只保留整数部分,结果为6*/
字母大小写转换:
b=a-32; 小写变大写
数据的输入与输出:
(1)单个字符输出函数:
char c='A';
putchar('A');
putchar(c);
putchar('\n');
putchar(65); 输出ASCII码十进制对应的字母A
putchar('\101'); 输出ASCII码八进制对应的字母A
(2)单个字符输入函数:
char c;
c=getchar(); 输入
putchar(c); 输出
(3)printf 函数
printf("格式控制字符串",表达式列表)
(4)scanf 函数
scanf("格式控制字符串",表达式列表)
例:转换时间格式
#include <stdio.h>
void main()
{
int t,h,m,s;
scanf("%d",&t);
h=t/3600;
m=(t-h*3600)/60;
s=t-h*3600-m*60;
printf("%02d:%02d:%02d\n",h,m,s);
}
运行结果:
5432
01:30:32
printf函数的附加说明符及意义
scanf的附加说明符及意义
优先级:
算术运算符>关系运算符>赋值运算符
关系运算符的优先级:>、<、>=、<=、具有相同的优先级并且高于相同优先级的!=、==。
逻辑运算符:II或,!非,&&与
*C语言中,用括号括起来的语句块与一个单语句等价。
if语句实现分支:
if(表达式)
{
语句1;
语句2;
语句3;
}
二分支结构 if…else
if(表达式)
语句1;
else
语句2;
if …else嵌套
if(表达式1)
语句1;
else if(表达式2)
语句2;
……
else
语句n;
if(…)
if(…) 语句1;
else (语句2,可以不写为空);
else
if(…) 语句3;
else (语句4,可以不写为空);
用switch语句实现多分支的程序结构:
switch(表达式)
{
case 常量表达式1:语句1;
case 常量表达式2:语句2;
…
case 常量表达式n:语句n;
default:语句N+1;
}
*default子结构对于switch结构而言不是必须的。
“case 常量表达式”只相当于一个语句标号,表达式的值与某标号相等则转向该标号执行,但不能执行完该语句后跳出来,所以后面的case语句都将一一执行。每一段语句后加break,则能跳出来。
switch(表达式)
{
case 常量表达式1:
语句1
break;
case 常量表达式2:
语句2
break;
…
case 常量表达式n:
语句n
break;
default:
语句N+1
break;;
}
条件表达式及其分支结构:
表达式1?表达式2:表达式3;
*求值规则:若1的值为真,则表达式2的值作为该条件表达式的值,否则则取3的值。
例:
max=(a>b)?a:b;
条件运算符的优先级低于关系运算符和算术运算符,但高于赋值符。条件运算符的结合方向为自右至左。
例:
a>b?a:c>d?c:d 应理解为 a>b?a:(c>d?c:d)
while循环语句
while(表达式) 语句; /*或者花括号里的一串代码*/
*只要表达式为非0,就能一直循环下去。
do…while循环
初始值:
do
{
循环体;
}while(条件);
*这个循环和while循环的不同在于,它先执行循环中的语句,然后再判断表达式是否正确,如为真则继续循环,否则停止。它至少循环一次,而while循环可能一次也不执行。
for循环语句
for(循环变量赋初值;循环条件;循环变量增量)
{
循环体;
}
变体:
1.无循环终止条件的循环(没有break)
for(;;) printf("I will run forever");
2.与while一样
i=1;
for(;i<100;)
{
s=s+i;
i++;
}
3.for循环里的逗号表达式
for(i=1,j=10;i<j;i++,j--)
printf("i=%d,j=%d\n",i,j);
4.循环体为空
for(表达式1;表达式2;表达式3);
例:for(sum=0,i=1;i<=100;sum+=i,i++);
语句标号及goto语句
goto语句成为无条件转移语句。
一般形式为
goto 标号;
标号:语句
continue语句
意义:结束本次循环,即不再执行循环体中continue后的语句,转入下一次循环条件的判决与执行,只结束本层的本次循环,并不跳出循环。
ASCII码表大概内容:
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10
和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。
32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
注:本文适合初学者或者对C不熟练的学习者回顾使用,后续还会继续补充
reference:C语言程序设计案例教程(高国红等主编)
break
break
注:本文适合初学者或者对C不熟练的学习者回顾使用,后续还会继续补充
reference:C语言程序设计案例教程(高国红等主编)
运行即得结果。
C语言数据类型:
1.基本类型:
a.整形:基本整数,短整型,无符号型,长整形
b.字符型
c.实数(浮点型):单精度型,双精度型
d.枚举类型
2.构造类型:
a.数组类型
b.结构体类型
c.共用体类型
3.指针类型
4.空类型
基本数据类型描述
字 符形式 | 所对应的数据类型 描述 |
---|---|
\n | 换行(输出位置移到下一行开头) |
\t | 横向跳格(输出位置移到下一个输出区) |
\b | 退格(输出位置移到前一列) |
\r | 回车(输出位置移到本行行首) |
\\ | 反斜杠字符‘\’ |
\'或\" | 单,双引号 |
\ddd | 八进制ddd所代表的字符,如'\101'为字符A,'\32'为空格 |
\xhh | 十六进制hh所代表的字符,如'\x41'为字符A,'\x20'为空格 |
运算符号 | 优先级 | 结合性 |
---|---|---|
+,-(正负运算符),++,-- | 高 | 自右至左 |
*,/,% | 中 | 自左至右 |
+,-(加减运算符) | 低 | 自左至右 |
逗号运算符:用逗号将多个表达式连接起来的式子为逗号表达式,运算符中最低的一种,按顺序运算。
a=3*5,a*4 最后值为60。
强制类型转换:
(类型名)(表达式)
(float)(a+b) /*将a+b的值强制转换为float*/
赋值运算时的类型转换:
int i;
i=3.24+7%4; /*只保留整数部分,结果为6*/
字母大小写转换:
b=a-32; 小写变大写
数据的输入与输出:
(1)单个字符输出函数:
char c='A';
putchar('A');
putchar(c);
putchar('\n');
putchar(65); 输出ASCII码十进制对应的字母A
putchar('\101'); 输出ASCII码八进制对应的字母A
(2)单个字符输入函数:
char c;
c=getchar(); 输入
putchar(c); 输出
(3)printf 函数
printf("格式控制字符串",表达式列表)
(4)scanf 函数
scanf("格式控制字符串",表达式列表)
例:转换时间格式
#include <stdio.h>
void main()
{
int t,h,m,s;
scanf("%d",&t);
h=t/3600;
m=(t-h*3600)/60;
s=t-h*3600-m*60;
printf("%02d:%02d:%02d\n",h,m,s);
}
运行结果:
5432
01:30:32
附加 说 明符 | 意义 |
---|---|
字母L或l | 输出长整型数据时,加在d,i,o,x,X,u前 |
字母H或h | 输出短整型数据时,加在d,i,o,x,X,u前 |
m(正整数) | 数据输出的域宽(列数),当数据实际输出列数超出m时,则按实际宽度输出,当少于m时,则在数据前补空格到m列。 |
n(正整数) | 输出实数时,表示输出n位小数,自动在n+1位四舍五入 |
- | 输出的数据域内左对齐,右边补空格 |
+ | 输出的数字前带有正负号 |
0 | 输出的数据域内右对齐,左边补0 |
# | 用在0,x,X前,使输出八进制或十进制数时输出前导0或0x |
附加 说明符 | 意义 |
字母l或L | 加在d,i,o,x,X,u前,表示输入长整型数据,加在f,e前,表示输入double型数据 |
字母h或H | 加在d,i,o,x,X,u前,表示输入短整型数据 |
m(正整数) | 指定输入数据所占域宽 |
* | 表示对应的输入项在读入后不赋给相应的变量,不需要为其指定参数地址 |
算术运算符>关系运算符>赋值运算符
关系运算符的优先级:>、<、>=、<=、具有相同的优先级并且高于相同优先级的!=、==。
逻辑运算符:II或,!非,&&与
*C语言中,用括号括起来的语句块与一个单语句等价。
if语句实现分支:
if(表达式)
{
语句1;
语句2;
语句3;
}
二分支结构 if…else
if(表达式)
语句1;
else
语句2;
if …else嵌套
if(表达式1)
语句1;
else if(表达式2)
语句2;
……
else
语句n;
if(…)
if(…) 语句1;
else (语句2,可以不写为空);
else
if(…) 语句3;
else (语句4,可以不写为空);
用switch语句实现多分支的程序结构:
switch(表达式)
{
case 常量表达式1:语句1;
case 常量表达式2:语句2;
…
case 常量表达式n:语句n;
default:语句N+1;
}
*default子结构对于switch结构而言不是必须的。
“case 常量表达式”只相当于一个语句标号,表达式的值与某标号相等则转向该标号执行,但不能执行完该语句后跳出来,所以后面的case语句都将一一执行。每一段语句后加break,则能跳出来。
switch(表达式)
{
case 常量表达式1:
语句1
break;
case 常量表达式2:
语句2
break;
…
case 常量表达式n:
语句n
break;
default:
语句N+1
break;;
}
条件表达式及其分支结构:
表达式1?表达式2:表达式3;
*求值规则:若1的值为真,则表达式2的值作为该条件表达式的值,否则则取3的值。
例:
max=(a>b)?a:b;
条件运算符的优先级低于关系运算符和算术运算符,但高于赋值符。条件运算符的结合方向为自右至左。
例:
a>b?a:c>d?c:d 应理解为 a>b?a:(c>d?c:d)
while循环语句
while(表达式) 语句; /*或者花括号里的一串代码*/
*只要表达式为非0,就能一直循环下去。
do…while循环
初始值:
do
{
循环体;
}while(条件);
*这个循环和while循环的不同在于,它先执行循环中的语句,然后再判断表达式是否正确,如为真则继续循环,否则停止。它至少循环一次,而while循环可能一次也不执行。
for循环语句
for(循环变量赋初值;循环条件;循环变量增量)
{
循环体;
}
变体:
1.无循环终止条件的循环(没有break)
for(;;) printf("I will run forever");
2.与while一样
i=1;
for(;i<100;)
{
s=s+i;
i++;
}
3.for循环里的逗号表达式
for(i=1,j=10;i<j;i++,j--)
printf("i=%d,j=%d\n",i,j);
4.循环体为空
for(表达式1;表达式2;表达式3);
例:for(sum=0,i=1;i<=100;sum+=i,i++);
语句标号及goto语句
goto语句成为无条件转移语句。
一般形式为
goto 标号;
标号:语句
continue语句
意义:结束本次循环,即不再执行循环体中continue后的语句,转入下一次循环条件的判决与执行,只结束本层的本次循环,并不跳出循环。
ASCII码表大概内容:
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10
和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。
32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
注:本文适合初学者或者对C不熟练的学习者回顾使用,后续还会继续补充
reference:C语言程序设计案例教程(高国红等主编)
break
break
注:本文适合初学者或者对C不熟练的学习者回顾使用,后续还会继续补充
reference:C语言程序设计案例教程(高国红等主编)