C语言知识点.docx
- 文档编号:27210881
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:20
- 大小:465.11KB
C语言知识点.docx
《C语言知识点.docx》由会员分享,可在线阅读,更多相关《C语言知识点.docx(20页珍藏版)》请在冰豆网上搜索。
C语言知识点
科协新生基础班:
C语言
小知识点:
%d:
十进制%o:
八进制%x:
六进制
%c:
输入,输出一个字符%s:
格式符,对字符串的输入,输出
所有的程序元素必须是先定义,后使用
ASCII码:
信息在计算机上是用二进制表示的,这种表示法让人理解就很困难,为保证人类和设备,设备和计算机之间能进行正确的信息交换,人们编制的统一的信息交换代码,这就是ASCII码.标准ASCII码由7位二进制数组成,用来表示26个英文大小写字母以及一些特殊符号
第一章C语言基础:
变量的命名规则:
变量名可以由字母、数字和_(下划线)组合而成变量名不能包含除_以外的任何特殊字符,如:
%、#、逗号、空格等变量名必须以字母或_(下划线)开头变量名不能包含空白字符(换行符、空格和制表符称为空白字符)C语言中的某些词(例如int和float等)称为保留字,具有特殊意义,不能用作变量名C语言区分大小写,因此变量price与变量PRICE是两个不同的变量
第二章,数据类型,运算符与表达式
数据类型:
1.数值:
1整形:
int,shortint,longint
2非整形:
float,double
2.非数值:
char
scanf函数从标准输入(键盘)读取信息,按照格式描述把读入的信息转换为指定数据类型的数据,并把这些数据赋给指定的程序变量。
scanf("%d",&num);
解析:
%d:
转换字符串
&符号(附在读取的每个变量上)用于指明变量在内存中的位置num:
变量名称
#include
voidmain()
{
intnum;
//此时在内存中已经分配出一块空间,存储空间名称使用”num”标识
printf("请输入一个数:
");
scanf("%d",&num);
printf("\n%d的平方为%d\n",num,num*num);
}
注:
\n:
转义序列
%d:
转换字符串
总结:
常量是在程序中不能被更改的值;而变量在程序中可以被更改的,通过变量可以引用存储在内存中的数据C语言中的基本数据类型包括整型、单精度浮点型、双精度浮点型和字符型整型分为短整型、整型、长整型,每种整型又可分为有符号型和无符号型单精度浮点型和双精度浮点型变量可以存储实数,但双精度型取值范围要比单精度型大的多字符型变量可以存储单个字符,其值是该字符的ASCII码算术运算符提供运算功能,包括+、-、*、/、%、++和--printf()和scanf()函数属于格式输入输出函数赋值语句:
赋值语句是由赋值表达式加上一个分号构成,赋值表达式具有计算和赋值双重功能
C语言函数库中有一批”标准输入输出函数”其中有:
putchar(输出字符),getchar(输入字符),printf(格式输出),scanf(格式输入),puts(输出字符串),gets(输入字符串)
第三章.运算符
表达式由操作数和运算符的组合而成表达式中的操作数可以是变量、常量或者子表达式运算符的主要类型有:
算术运算符:
+-*/%赋值运算符:
=关系运算符:
><=>=!
=逻辑运算符:
!
&&||
复合赋值运算符
逻辑运算符
运算符优先级
综合示例:
判断输入的年份是否为闰年
#include
");scanf("%d",&year);if((year%4==0&&year%100!
=0)||(year%400==0))printf("\n%d年是闰年\n",year);elseprintf("\n%d年不是闰年\n",year);}
总结:
表达式是操作数和运算符的集合赋值运算符的语法如下:
variable=expression关系运算符运用测试两个操作数之间的关系关系表达式计算出的值始终为逻辑真(非0)或逻辑假(0)条件结构解决了程序种需要根据不同情况进行判断的情况条件语句中需要提供判断条件,该条件要求返回逻辑值(真或假)逻辑运算符用于组合多个条件(&&和||)或者为某一条件取反(!
)
第四章:
条件结构
例子1:
多重if结构
#include
");scanf("%f",&grade);if(grade>=90)printf("\n优");elseif((grade>=80)&&(grade<90))printf("\n良");elseif((grade>=60)&&(grade<80))printf("\n中");elseprintf("\n差");printf("\n");}
例子2:
嵌套if结构
if(x>0)if(y>1)z=1;else/*这个else部分属于哪个if?
*/z=2;
注意:
C语言规定,每个else部分总属于前面最近的那个缺少对应的else部分的if语句。
嵌套if示例:
#include
");scanf("%d%d",&a,&b);if(a!
=b)if(a>b)printf("\nA>B\n");elseprintf("\nA
Switch结构:
在使用switch结构时应注意以下几点:
在case后的各常量表达式的值不能相同,否则会出现错误;在case后,允许有多个语句,可以不用{}括起来;每个case语句后都必须有一个break语句,否则会出现错误;各case和default子句的先后顺序可以变动,而不会影响程序执行结果;default子句可以省略;
Switch结构示例:
charin_char;printf("\n请输入一个小写字母:
");scanf("%c",&in_char);switch(in_char){case'a':
printf("\n您输入的是元音字母a\n");break;case'e':
printf("\n您输入的是元音字母e\n");break;case'i':
printf("\n您输入的是元音字母i\n");break;case'o':
printf("\n您输入的是元音字母o\n");break;case'u':
printf("\n您输入的是元音字母u\n");break;default:
printf("\n您输入的不是元音字母\n");}
Switch结构示例2
voidmain(){charc;printf("\n请输入一个字符:
");c=getchar();if(c<32)printf("\n该字符是一个控制字符。
\n");elseif(c>='0'&&c<='9')printf("\n该字符是一个数字。
\n");elseif(c>='A'&&c<='Z')printf("\n该字符是一个大写字母。
\n");elseif(c>='a'&&c<='z')printf("\n该字符是一个小写字母。
\n");elseprintf("\n该字符是其他字符。
\n");}
多重if和switch的比较:
多重if结构和switch结构都可以用来实现多路分支多重if结构用来实现两路、三路分支比较方便,而switch结构实现三路以上分支比较方便在使用switch结构时,应注意分支条件要求是整型表达式,而且case语句后面必须是常量表达式有些问题只能使用多重if结构来实现,例如要判断一个值是否处在某个区间的情况
条件运算符
示例:
条件表达式:
value=num>100?
‘y’:
‘n’;
与右边的效果相同
使用if语句:
if(num>100)
{
value=’y’;
}
else
{
value=’n’;
}
总结:
多重if结构就是在主if块的else部分中还包含其他if块嵌套if结构是在主if块中还包含另一个if语句C语言规定,嵌套if结构中每个else部分总是属于前面最近的那个缺少对应的else部分的if语句switch结构也可以用于多分支选择。
用于分支条件是整型表达式,而且判断该整型表达式的值是否等于某些值(可以罗列的),然后根据不同的情况,执行不同的操作条件运算符是if–else语句的另一种表现形式
第五章:
循环结构
C语言的各种循环
1.while
2.do-while
3.for
一:
while循环
语法:
while(表达式){语句;}
工作原理:
计算表达式的值,当值为真(非0)时,执行循环体语句,一旦条件为假,就停止执行循环体。
如果条件在开始时就为假,那么不执行循环体语句直接退出循环。
例子1:
while循环示例
#include
voidmain()
{
intnum=1,result;
while(num<=10)
{
result=num*10;
printf("%d×10=%d\n",num,result);num++;
}
}
二:
do-while循环
语法:
do{语句;}while(表达式);
工作原理它先执行循环体中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。
例子2:
do-while循环示例
intnumber=5,guess;printf("猜一个介于1与10之间的数\n");do{printf("请输入您猜测的数:
");scanf("%d",&guess);if(guess>number)printf("太大\n");elseif(guess =number);printf("您猜中了! 答案为%d\n",number); 输入数字5后,do…while循环中的条件为假,输出结构消息后,程序终止 例子3: 嵌套while循环示 voidmain(){intnstars=1,stars;while(nstars<=10){stars=1;while(stars<=nstars){printf("*");stars++;}printf("\n");nstars++;}} 比较while和do-while循环 1.while循环是先判断后执行,所以,如果条件为假,则循环体一次也不会被执行。 2.do-while循环是先执行后判断,所以,即使开始条件为假,循环体也至少会被执行一次。 总结: 循环结构的特点是,在给定条件成立时,重复执行某程序段,直到条件不成立为止while循环用于在给定条件为真的情况下重复执行一组操作,while循环先判断后执行do-while循环先执行后判断,因此循环将至少执行一次在循环中,需要修改循环变量的值以改变循环条件,否则有可能形成死循环循环嵌套必须将内层循环完整的包含在外层循环中 三: for循环: 语法: for(表达式1;表达式2;表达式3){语句;} 工作原理: 1、计算表达式1的值,通常为循环变量赋初值;2、计算表达式2的值,即判断循环条件是否为真,若值为真则执行循环体一次,否则跳出循环;3、计算表达式3的值,这里通常写更新循环变量的赋值表达式,然后转回第2步重复执行; 例子4: for循环示例 #include ");scanf("%d",&number);for(count=1;count<=number;count++)factorial=factorial*count;printf("\n%d的阶乘=%d\n",number,factorial);} 第一次循环: 连续循环5次 逗号运算符 for语句中的三个表达式都可以是逗号表达式逗号表达式就是通过“,”运算符隔开的多个表达式组成的表达式逗号表达式从左往右计算。 逗号运算符在C语言运算符中的优先级最低 for循环例题: #include ");scanf("%d",&max);for(i=0,j=max;i<=max;i++,j--)printf("\n%d+%d=%d",i,j,i+j);printf("\n");} 循环执行max次 for循环的表达式: for循环中有三个表达式for语句中的各个表达式都可以省略分号分隔符不能省略 例子5: for(<初始化循环变量>;<循环条件>;<修改循环变量的值>){<循环体语句>;} //注! ! ! : <初始化循环变量>和循环条件>和<修改循环变量的值>)都是可以省略的 但是循环体中的两个”;”不能省略 省略表达式1: 相当于省去了为循环变量赋初值,此时应在for语句之前给循环变量赋初值 intnum=0;for(;num<=10;num++) {printf("%d\n",num*2); } 省略表达式2 即不判断循环条件,也就是认为表达式2始终为真,这时应在循环体内设法结束循环,否则将成为死循环 for(num=1;;num++){...} 省略表达式3 即省去修改循环变量的值,但此时应在循环体内设法结束循环 for(i=1;i<=100;) { sum=sum+1;i++; } 省略三个表达式 即不为循环变量赋初值,不设置循环条件(认为表达式2为真值),不修改循环变量的值,无终止地执行循环体。 此时应在循环体内设法结束循环,否则会成为死循环 for(;;){printf("这将一直进行下去");i=getchar();if(i=='X'||i=='x')break;} break语句 break语句可以改变程序的控制流break语句用于do-while、while、for循环中时,可使程序终止循环而执行循环后面的语句break语句通常在循环中与条件语句一起使用。 若条件值为真,将跳出循环,控制流转向循环后面的语句如果已执行break语句,就不会执行循环体中位于break语句后的语句在多层循环中,一个break语句只向外跳一层 如下三种情况 跳出for循环for(;;){printf("这将一直进行下去");i=getchar();if(i=='X'||i=='x')break;} 跳出while循环 while (1){ if(x==10)break; } 跳出do-while循环 do{ if(x==10) break; }while(x<15); continue语句 continue语句只能用在循环里continue语句的作用是跳过循环体中剩余的语句而执行下一次循环对于while和do-while循环,continue语句执行之后的动作是条件判断;对于for循环,随后的动作是变量更新 例子5: 嵌套循环1 voidmain(){inti,j,k;for(i=1;i<=4;i++){for(j=1;j<=4-i;j++)printf("");for(k=1;k<=2*i-1;k++)printf("*");printf("\n");} for(i=1;i<=3;i++){for(j=1;j<=i;j++)printf("");for(k=1;k<=7-2*i;k++)printf("*");printf("\n");}} 嵌套循环2: voidmain(){inti,j,n;n=0;for(i=100;i<=200;i++){j=2;while(i%j! =0)j++;if(i==j){printf("%4d",i);n++;if(n%8==0)printf("\n");}}printf("\n");} 循环嵌套例题3 voidmain(){inti,num;charanswer;do{printf("请输入一个数: ");scanf("%d",&num);printf("\n");for(i=1;i<=10;i++){printf("=");}printf("\n该数是%d",num);printf("\n\n您是否还要输入其他的数(y/n)? ");fflush(stdin);answer=getchar();}while(answer! ='n');} 总结: for循环与while循环类似,属于先判断后执行for语句中有三个表达式: 表达式1通常用来给循环变量赋初值;表达式2通常是循环条件;表达式3用来更新循环变量的值for语句中的各个表达式都可以省略,但要注意分号分隔符不能省略如果省略表达式2和表达式3需要在循环体内设法结束循环,否则会导致死循环break语句用在循环中时,可以直接终止循环,将控制转向循环后面的语句continue语句的作用是跳过循环体中剩余的语句而执行下一次循环嵌套循环时,必须将被嵌套的循环语句完整地包含在外层循环的循环体内 第六章: 数组 Ps: 数组这点怕大家不好理解,所以特意加了好多便于理解的图片,希望大家学习的时候图形结合,便于理解记忆 数组是可以在内存中连续存储多个元素的结构数组中的所有元素必须属于相同的数据类型 一: 一维数组 一维数组的声明: datatypearrayName[size]; datatype: 类型说明符(int,char,float) arrayName数组名 size: 常量表达式: 数组大小 初始化数组的几个情况 intarr[10]={10,9,8,7,6,5,4,3,2,1,0}; //错误! 越界了intarr[10]={9,8,7,5};//正确,后面的6个元素未初始化intarr[]={9,8,7}; //正确: 元素个数为3intarr[]={}; //错误,到底是几个元素? 初始化一维数组 一维数组的动态赋值: floatprice[4];printf(“Enterpricesof4books\n”);for(i=0;i<=3;i++){scanf(“%f”,&price[i]);} 一维数组示例: #include ");for(i=0;i<5;i++){scanf("%f",&item_rate[i]);total=total+item_rate[i];}printf(“\n所有商品的合计费用: %f\n",total);} 循环执行5次 二: 二维数组 二维数组的声明: datatypearrayName[rowsize][colsize]; 如: intnum[4][2];//表示4X2=8 举例: intarr[][3]={{1,2,3},{4,5,6} };//正确 intarr[2][]={{1,2,3},{4,5,6} }; //错误 inti,j,num[4][2];for(i=0;i<=3;i++){for(j=0;j<=1;j++){scanf("%d",&num[i][j]);}} 如下图 总结: 数组是可以在内存中连续存储多个元素的结构数组中的所有元素必须属于相同的数据类型数组必须先声明,然后才能使用。 声明一个数组只是为该数组留出内存空间,并不会为其赋任何值数组的元素通过数组下标访问一维数组可用一个循环动态初始化,而二维数组可用嵌套循环动态初始化二维数组可以看作是由一维数组的嵌套而构成的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 知识点