版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言基础软件、程序与指令之间的关系软件程序2程序1命令命令命令C
语言的起源C–DennisRitchie(1972-1973年)
B–KenThompson
(1970年)BCPL–MartinRichards(1967年)
中级语言结构化编程语言C
语言允许分割代码和数据可以使用函数或代码块来实现这种特性代码块是逻辑上连接在一起的一组程序语句,可以当作一个单元来使用强类型语言C语言是什么-What高级语言C语言汇编语言算法——解决问题方法算法是在有限步骤内求解某一问题所使用的一组定义明确的规则范例
足量的水,3ml、5ml的容器各一,量出4ml的水。?算法:3ml的容器装满水倒入5ml容器中再用3ml的容器装满水将5ml的容器倒满将5ml容器的水倒出将3ml容器中剩余的1ml水倒入5ml容器中再用3ml容器装满水倒入5ml的容器里。5ml的容器中,就是4ml的水算法——解决问题方法算法的重要特征有穷性确切性输入输出可行性课堂练习写出下面问题的算法:1、计算两个数之和2、判断一个数的奇偶性课堂练习算法
1、输入两个数x,y2、计算x+y 3、输出(x+y)的结果伪代码BeginInputx,yDisplayx+yend开始输入x,y显示x+y结束自然语言伪代码流程图语句1语句2语句1语句2一般流程图N-S流程图流程图符号符号说明程序的开始或结束计算步骤输入/输出指令判断和分支连接符流程线绘制流程图的注意事项 抓住解决问题的主线只有一个入口与一个出口流程图中每一个步骤都有机会被执行根据不同结构考虑不同流程结构结构内部不能出现“死循环”结构化程序设计顺序结构分支结构循环结构顺序结构范例:求两数之和1、输入一个数a2、输入一个数b3、计算a+b4、输出(a+b)的结果两数相加的流程图StartINPUTC=A+BDISPLAYCStop起止框:这里是程序的开始输入输出框:这里用来输入两个数处理框:这里用来两个数相加输入输出框:这里用来显示和起止框:这里是程序的结束顺序结构(课堂练习)求三个数的平均值有两个瓶子A和B,分别盛放醋和酱油,要求将它们互换分支结构例题:输出两个数中最大的一个数?分支结构算法1、输入两个数X,Y。2、当X>Y时,输出X3、否则输出Y开始结束X>Y?输出x否是输入X,Y结束输出Y分支结构输入一个数,判断其是否大于1000,若是大于1000输出1,否则输出0,判断一个数的奇偶性输出三个数中最大的一个数循环结构5!开始结束定义两个变量sum=1,i=1i<=5?输出sumSum=sum*i是否i+1课堂练习1+2+3……+99+100的和。C语言的基本结构#include<stdio.h>//命令行部分voidmain() { inta; intb; intsum; printf("请输入a的值:"); scanf("%d",&a); //给a赋值
printf("请输入b的值:"); scanf("%d",&b); //给b赋值
sum=a+b; printf("sum=%d\n",sum);/*输出sum的值*/}主函数函数体定义部分执行部分课堂练习#include<stdio.h>voidmain()//计算圆的面积{ doubles=3.1415926; floatr; doublearea; printf("请输入圆的半径:"); scanf("%f",&r); area=s*r*r; printf("area=%lf\n",area);}开始编程打开编程环境添加源文件编写源程序编译源程序连接目标文件执行可执行文件(.exe)编译和运行程序#include文件库文件源文件#编译器目标文件链接器可执行文件其他用户生成的目标文件程序文本用户可以阅读将扩展的源代码转换成机器语言将目标代码与函数链接成可执行代码怎样学好C语言-How端正学习态度——态度决定一切课前预习——有目的课后复习——温故知新认真完成作业——检验学习成果多做练习——熟能生巧参考课外书籍——它山之石互相交流——兼听则明数据类型数据类型基本类型构造类型指针类型空类型整型实型字符型数组型结构体类型程序中对所有的数据都要指定数据类型常量与变量常量:程序中,其值不能被改变的量。变量程序中,其值可以改变的量。常量范例#include<stdio.h>voidmain(){ doubler,area; printf("请输入圆半径:"); scanf("%lf",&r); area=3.1415926*r*r; printf("%lf\n",area);}常量类型常量整型常量实型常量字符型常量2,85,-562.175,8.563,-56.1254‘a’、’9’变量15内存中的数据数据15内存应用程序要为每一项数据分配内存
需要多少内存数据被存储在哪个通过变量,可以为内存中的位置提供一个有意义的名称变量变量的组成要素变量名变量值例如:max=1010变量值max内存单元变量范例#include<stdio.h>voidmain(){Intx,y,z;X=5;Y=6;Z=x+y;Printf(“%d”,z);}标识符什么是标识符? 用户对语言中的变量名、函数名进行自定义的对象名称。标识符的命名规则有效字符:字母、数字和下划线三部分,标识符必须以字母与下划线开始。例如:area、s_name、_name、sum4、4letter有效字符长度:一般不超过8位(turboC)。例如:student_name与student_code是一样的标识符。区分大小写例如:name与NAME是不一样的标识符标识符的命名规则不能使用C语言中的关键字例如:include、if、int、float等32个关键字尽量不要使用l与o例如:num1良好的习惯:见名知意。变量使用前必须先声明例如:intarea关键字:程序中一种具有特殊含义的单词。课堂练习找出下列合法的标识符:Void a3_b3 for 2a define_123 -abc do word ifcase sigeof _sum 3Dmax 变量声明数据类型变量名[=初始值]变量类型整型 #include<stdio.h>voidmain(){ inta; intb; intc;/*定义三个变量a,b,c也可以写成inta,bc;-*/ a=10; b=20;/*给a,b赋值*/ c=a*b; printf("c=%d\n",c);}整型存储数字数据声明方式:intnum;不能存储类似于“Alan”
或“abc”等任何其他类型的数据分配16
位(2
个字节)的内存空间,整数的范围是从-32768
到32767
示例:12322、0、-232实型变量浮点型存储整数或包含小数位的值声明方式:floatnum;最高精度是6-7
位分配32
位(4个字节)的内存空间
示例:23.05、56.5、32双精度型存储超出float类型大小的限制的值声明方式:doublenum;最高精度是13-14位分配64位(8
个字节)的内存空间示例:23.34232324整型、实型之间的区别数据类型描述尺寸(字节)整形-32768≤x≤327672长整形-2147483648≤x21474836474单精度-3.402823E38≤x-1.401298E-45,1.401298E-45≤x3.402823E384精度是6位。
注:根据计算机系统的不同,精度和尺寸有所不同。char类型存储一个字符信息声明方式:
chargender; gender=‘m';分配8位(1
个字节)的内存空间示例:'a'、'm'、'$'、'%'、'1'、'5'字符型变量举例#include<stdio.h>voidmain(){ charch1,ch2; ch1='a'; ch2='b'; printf("%c\n",ch1-32); printf("%c\n",ch2+1);}数据类型及其范围2-1类型近似大小(位)最小范围char8-128
到127unsigned80到255signedchar8-128到127int16-32,768到32,767unsignedint160到65,535signedint16与int相同shortint16与int相同unsignedshortint80到65,535变量声明举例Voidmain(){ charabc; /*声明abc*/ intxyz; /*声明xyz*/ floatlength; /*声明length*/ doublearea; /*声明area*/ longliteyrs; /*声明liteyrs*/ shortarm; /*声明arm*/}课堂练习声明一个整型变量sum_1声明一个浮点型变量sum_2声明一个双精度型变量sum_3声明一个整型变量sum_4声明一个长整型变量5_sum变量初始化声明时初始化Intsum_1=5;Floatsum_2=3.0;Charsum_3=‘a’;过程初始化Intsum_1;Charsum_3;Sum_1=10;Sum_3=‘b’;算术运算符什么是运算符能作用于数据上的符号代表作用于数据上的一种特定操作运算符类型:执行如下的操作算术运算比较(关系)运算逻辑运算算术运算符一元运算符操作二元运算符操作-一元减+加++递增-减--递减*乘%模/整除或除法“/”的用法#include<stdio.h>voidmain(){ inti=5; printf("%d\n",i/3); printf("%f\n",5/3.0);}算术运算符的优先级算术运算符中,(-)求负运算级别最高,(*、/、%)次之,(+、-)最后。在相同优先级中,-(取负)这一级按从右到左的顺序结合;其余的算术运算符按从左到右的顺序结合.算术运算符的优先级(续)考虑下面的例子:-4+3*-6/2-5+5-4+3*[-6]/2-5+5-4+[-18/2]-5+5-[4+-9]-5+5-[-5]-5+5--5课堂练习1.已有定义语句:inta=1,b=2,c=3;floatd=4;以下能正确表示数学式的C语言表达式.A)a/(b+c)*d;B)a/(b+c)*1/d;C)a/(c+b)/d;D)a/d/(b+c)2.求表达式3.6/6+1/2+55%10的计算结果;++和—用法概念:++和—是一种在本身的前提下+1和-1的操作。例如:a++、++a代表a=a+1;A--、--a代表a=a-1使用方法:前置用法
++a、--a后置用法
a++、a—++a与—a优先级别最高,a++和a—优先级别最低。++与—的运算方向是“从右到左”++的用法举例++用法的例子设A=1A++,++A执行后A=2;B=A++执行后B=1,A=2;B=++A执行后B=2,A=2;++和—举例例题设a=3,c=2;1.求b=(a++)-c的值
b=3-2b=1;a=3+1=4;2.求b=(++a)-c的值
a=3+1=4;b=4-2b=2;课堂练习设a=3,c=2;1.求b=(a--)-c的值b=?;a=?;2.求b=(--a)-c的值b=?;a=?;3求b=(++a)-(--a)的值b=?;a=?;4求b=(++a)-(--a)+a--的值b=?;a=?;运算符和表达式什么是运算符?对数据进行特定操作的符号。例如:c=a+b什么是表达式?运算符与操作数的有效结合。例如:a+b,5*6,a/8等运算符类型算术
关系逻辑位一元、二元运算符都是算术运算符用于对包含关系运算符的表达式进行合并或取非测试两个变量或一个变量和一个常量之间的关系将数字按位进行计算赋值运算符一般格式:变量名=表达式例如:a=5,a=b;a=2*6,a=a+b多重赋值:例如:a=b=c=10复合赋值格式:说明:a+=5,a=a+5a-=5 a=a-5a*=5 a=a*5a/=5a=a/5A%=5a=a%5变量名双目运算符=表达式赋值运算的顺序:从右到左课堂练习a=8时;下列表达式的值a+=a-=a*=a-5关系运算符和逻辑运算符2-1用于测试两个变量或一个变量和一个常量之间的关系运算符关系运算>大于>=大于等于<小于<=小于等于==等于!=不等于高低关系运算举例当a=3,b=4,c=5时a<b的值为1a>b的值为0a>=c的值为0(a>b)!=c的值为1(a<b)==c的值为0课堂练习当a=3,b=4,c=5时(a<b)+c的值是多少?关系运算符和逻辑运算符2-2
逻辑运算符用于对包含关系运算符的表达式进行合并或取非使用逻辑运算符的表达式,返回0表示假,返回1表示真
示例:if((a>10)&&(a<20))运算符逻辑运算&&与||或!非逻辑与运算符--&&课堂练习求下列表达式的答案1.(2>2)&&(4>2)2.(2>=2)&&(5>2)逻辑或运算符--||用于只要一个条件为‘真’就返回‘真’的情况.课堂练习求下列表达式的答案1.(2>2)||(4>2)2.(3>1)||(1>2)逻辑非运算符--!把判断的结果取反只有一个操作数运算符之间的优先级别!>算术运算>关系运算>&&>||>赋值运算运算符之间的优先级范例2*3+4/2>3AND3<5OR10<9计算如下:[2*3+4/2]>3AND3<5OR10<9[[2*3]+[4/2]]>3AND3<5OR10<9[6+2]>3AND3<5OR10<9[8>3]AND3<5OR10<9TrueANDTrueORFalse[TrueANDTrue]ORFalseTrueORFalseTrue首先计算算术运算符比较运算符,计算总左到右进行最后计算逻辑运算符课堂练习10*3%6*6+5-2&&(2*2+6/3>1||2>8)12%3/2+3*6>10&&!真||!真位运算符2-1
将数字转换成等价的二进制形式后再处理数据(按位表示法)运算符描述按位与(x&y)如果两个操作数的相应位均为1,则该位的结果值为1按位或(x|y)如果两个操作数的相应位有一个为1,则该位的结果值为1按位取反
(~x)将操作数按位取反
(0到1和1到0)按位异或(x^y)如果参加运算的两个操作数的相应位同号,则结果为0,异号则为1位运算符2-2操作数位操作位表达式数字10&151010&1111
10101010|151010|11111111
1510^151010^111101015~10~10100101-11位运算符将数字视为二进制值,并按位进行相应运算,运算完成后再重新转换为数字混合运算与数据转换
运算符的操作数属于不同的数据类型,运算时通常会将这些操作数转换为同一类型charch;inti;floatf;doubled;result=(ch/i)+(f*d)-(f+i);
intdoublefloat
doubledouble数据强制转换转换格式(数据类型)表达式范例#include<stdio.h>voidmain(){ doublea=3.784; printf("%d\n",(int)a);}顺序结构printf()输出函数scanf()输入函数putchar()函数getchar()函数printf()函数作用:在标准输出设备(显示器)控制台上显示数据语法格式:
printf(“格式控制符”,参数列表);
都需要一个格式命令-与参数列表需要在数量、类型和顺序上匹配
需要由“”括起来。由文本字符和空格、格式命令和非打印字符组成Printf()函数的例题#include<stdio.h>voidmain(){ printf("静以修身,\n俭以养德。\n非淡泊无以明志;\n%s\n","非宁静无以致远!!!");}printf()函数
格式控制符由三类项目中的一项或多项组成:文本字符:由可打印字符组成格式命令:以%符号开始,随后紧跟与数据项相应的格式代码非打印字符:包括制表符、空格和新行文本与空格范例:#include<stdio.h> voidmain() { printf("谋事在人,成事在天"); }常用的格式控制符%d
—十进制整数。%f或%e
—浮点型数字%c
—单字符型%s
—字符串型格式控制符范例#include<stdio.h>voidmain(){ intnumber_1=65; charnumber_2='b'; printf("number_1=%d\n",number_1); printf("number_1=%c\n",number_1); printf("number_2=%c\n",number_2); printf("number_2=%d\n",number_2); }常用的格式控制符(续)“-”
修饰符数据项在范围内向左对齐,从范围最左侧的位置开始输出数据项字符宽度修饰符
可以用于浮点型、双精度型和字符数组型(字符串)。范围宽度修饰符是一个整数,定义了数据项的最大范围宽度。精度修饰符可以用在浮点型、双精度型或字符数组型(字符串)中。如果用在浮点型或双精度型数据中,数字字符串表示小数右侧最多可输出的数字位数printf()中的修饰符的使用的示例#include<stdio.h>voidmain(){ printf("Thenumber555invariousforms:\n"); printf("Withoutanymodifier:\n"); printf("[%d]\n",555); printf("With–modifier:\n"); printf("[%-d]\n”,555); printf("Withdigitstring10asmodifier:\n"); printf("[%10d]\n”,555); printf("With0asmodifier:\n"); printf("[%0d]\n”,555); printf("With0anddigitstring10asmodifiers:\n"); printf("[%010d]\n”,555); printf("With-,0anddigitstring10asmodifiers:\n"); printf("[%-010d]\n",555);}Printf()函数注意事项(一)输出的数据可以是常量、变量和表达式,但必须与格式控制符一一对应。#include<stdio.h>voidmain(){ inti=5; floatj=3.5; printf("%c,%d,%f,%lf\n",'a',i,j,i*j);}printf()函数注意事项(二)%d,%f,%e,%c,%s,一般为小写。而其它的d,f,s,c等字符作为普通字符处理。#include<stdio.h>voidmain(){ intf=5; floatd=3.5; printf("%c,f=%d,d=%f,%lf\n",'a',f,d,f*d);}非打印字符(转义字符)\n——换行\t——制表符键(右移四个字节的位置)课堂练习定义一个字符型变量a=‘b’;请在屏幕上输出b:方法1:Printf(“b”);方法2:Printf(“%c”,a);scanf()函数作用:从外部输入设备(键盘)接受数据语法格式scanf("controlstring",argumentlist);控制字符串地址列表printf()语句中的使用的格式极其语法同样适用与scanf()语句scanf()函数作用:从外部输入设备(键盘)接受数据语法格式scanf("controlstring",argumentlist);控制字符串参数列表printf()语句中的使用的格式极其语法同样适用与scanf()语句scanf()函数使用说明使用scanf()时,对于参数列表应遵循以下规则:
如果希望读取基本数据类型变量的值,应在变量名的前面加上符号&
当读取指针变量指向的值时,在变量名前不能使用&单字符输出函数putchar()作用:向屏幕的光标处输出一个字符。格式putchar(参数);单个字符转义序列字符变量putchar()
函数的参数putchar()示例#include<stdio.h>voidmain(){ charch_1='9'; putchar('B'); putchar('o'); putchar('y'); putchar('\t'); putchar(ch_1); putchar('\n');}字符输入函数getchar()作用:从系统输入一个字符。语法格式:getchar();()没有任何参数getchar()示例#include<stdio.h>voidmain(){ charch; ch=getchar(); putchar(ch); putchar('\n');}分支结构分支条件表达式条件运算符>、<、>=、<=、!=、==逻辑运算符!、&&、||运算符之间的关系算术运算符>关系运算符>逻辑运算符>赋值关系符分支表达式If语句If…else语句多重If…else语句If语句嵌套Swithc…case语句if语句格式:If(条件表达式){语句}if示例输入两个整数,从大到小输出。(只能使用一个printf语句)#include<stdio.h>voidmain(){ inta,b; inttemp; printf("请输入两个整数:"); scanf("%d,%d",&a,&b); if(a<b) { temp=a; a=b; b=temp; } printf("%d,%d\n",a,b);}课堂练习输入一个数,判断是否能被3整除,若能被3整除,输出这个数。If…else语句格式If(条件表达式1){语句1;}Else{语句2;}If…else语句示例输入两个整数,从大到小输出。#include<stdio.h>voidmain(){ inta,b; printf("请输入两个整数:"); scanf("%d,%d",&a,&b); if(a>b) { printf("a=%d,b=%d\n",a,b); } else { printf("b=%d,a=%d\n",b,a); }}
课堂练习输入两个数,输出其中最大的一个数。输入一个数,判断这个数的奇偶性。多重if…else语句格式:If(条件表达式1){语句1}elseif(条件表达式2){语句2}elseif……if…else示例#include<stdio.h>voidmain(){ intx,y; printf("请输入X的值:"); scanf("%d",&x); if(x>0) { y=1; printf("y=%d\n",y); } elseif(x==0) { y=0; printf("y=%d\n",y); } elseif(x<0) { y=-1; printf("y=%d\n",y); }}y=10-1X>0X=0X<0课堂练习输入学生成绩,来评定学生等级。要求:成绩>=90分,显示是“A”成绩>=80分,显示是“B”成绩>=70分,显示是“C”成绩>=60分,显示是“D”成绩<60分,显示是“E”If语句的嵌套格式:If(表达式1){If(表达式2){语句1}If(表达式3){语句2}……}If语句嵌套示例#include<stdio.h>voidmain(){ intx,y; printf("请输入X的值:\n"); scanf("%d",&x); if(x>=0) { if(x>0) { y=1; printf("y=%d\n",y); } else { y=0; printf("y=%d\n",y); } } else { y=-1; printf("y=%d\n",y); }}课堂练习输入三个数,输出其中最大的一个数.Switch语句格式switch(表达式)case常量1:语句1;break;case常量2:语句2;break;……default:语句n;Break;Switch语句示例#include<stdio.h>voidmain(){ intscore; printf("请输入你的成绩:"); scanf("%d",&score); switch(score/10){ case10: case9: putchar('A'); break; case8: putchar('B'); break; case7: putchar('C'); break; case6: putchar('D'); break; default: putchar('E'); break; }}课堂练习一周食谱:星期一:青菜星期二:鸡星期三:鱼星期四:肉星期五:鸡蛋星期六:海鲜星期七:豆制品要求:输入一个1-7数字,显示食谱内容.循环结构什么是循环结构?—在程序中反复执行某系列语句,直到不满足指定条件才终止代码。循环结构的主要用到逻辑运算符和关系运算符。循环语句for
循环while循环do...while
循环循环基本结构?计算是否while语句基本格式while(条件表达式){语句;}while范例在屏幕上打印5次accp#include<stdio.h>voidmain(){ inti=1; while(i<=5) { printf("ACCP\n"); i++; }}while结构1)求解“循环继续条件”表达式。如果其值为非0,转2);否则转3)。2)执行循环体语句组,然后转1)。3)执行while语句的下一条。条件表达式?执行语句是否While范例计算1+2+3…+99+100的和范例代码include<stdio.h>voidmain(){ inti=1; intsum=0; while(i<=100) { sum+=i; i++; } printf("sum=%d\n",sum);}while语句注意事项计数器变量的初始化。计数器变量在执行语句中要发生变化。条件最终必须为假,来结束语句,从而避免“死循环”。见上述范例课堂练习输出1~10十个整数。计算1~100之间所有奇数的和。do…while循环基本格式do{
语句;}while(条件);计算?do…while范例在屏幕上打印5次accp#include<stdio.h>voidmain(){ inti=1; do { printf("ACCP\n"); i++; }while(i<=5);}do…while注意事项do...while
循环中先执行一次语句,然后再交给while进行判断,当条件为假时退出循环。do...while
循环中的控制权是在语句后方的while。while语句后方的;与while语句的主要区别课堂练习输出1~10十个整数。计算1+2+3…+99+100的和for循环基本格式for(循环变量初始化;条件表达式;循环变量增值){语句;}for范例在屏幕上打印5次accp#include<stdio.h>voidmain(){ inti; for(i=1;i<=5;i++) { printf("ACCP\n"); }}for循环的执行过程1、循环变量赋初值2、求解“循环继续条件”表达式。如果其值非0,执行(3);否则,转至(4)。3、执行循环体语句组,并求解“循环变量增值”表达式,然后转向(2)。4、执行for语句的下一条语句。赋初值条件表达式执行语句变量增值for范例计算1+2+3…+99+100的和for范例(续)#include<stdio.h>voidmain(){ inti; intsum=0; for(i=1;i<=100;i++) { sum+=i; } printf("sum=%d\n",sum);}for循环注意事项1、for循环条件语句中有三部分组成,三部分必须用“;”隔开。2、for循环中“循环变量初始值”可以为空,此时必须在for循环之前对其定义初始值。例如:for(;i<101;i++)3、for循环中“条件表达式”可以省略,此时程序会成为“死循环”。4、for循环中“循环变量增值”可以省略,介必须在for循环语句中添加,保证程序正常运行。例:for(I=1;i<101;) {
…… I++; }for范例#include<stdio.h>voidmain(){ inti=1; intsum=0; for(;i<=100;i++) { sum+=i; } printf("sum=%d\n",sum);}for范例#include<stdio.h>voidmain(){ inti=1; intsum=0; for(;i<=100;) { sum+=i; i++; } printf("sum=%d\n",sum);}课堂练习输出1~10十个整数。计算1~100之间所有奇数的和。循环语句的嵌套#include<stdio.h>voidmain(){ inti,j; for(i=1;i<=5;i++) { for(j=1;j<=i;j++) { printf("*"); } putchar('\n'); }}循环嵌套(续)for(var1=初值;var1<=范围;var1+=每次循环的增值) {
for(var2=初值;var2<=范围;var2+=每次循环的增值)
{…}}………...break语句
功能:Switch语句中终止case语句。强制性结束循环。格式For(表达式1){If(表达式2)Break;……}break范例#include<stdio.h>voidmain(){ inti; intsum=0; for(i=1;i<=100;i++) { sum+=i; if(sum>2500)/*当和大于2500时,停止循环*/ { break; } } printf("sum=%d,i=%d",sum,i);}课堂练习计算当半径为1~10时圆的面积,直到面积大于100时,停止计算,将此时的半径和面积的值显示出来。Continue语句功能结束本次循环,停止本次循环中其它的语句,直接进入下一次的循环。格式For(表达式1){If(表达式2)continue;……}continue范例#include<stdio.h>voidmain(){ inti; for(i=1;i<=100;i++) { if(i%3==0) { continue; } else printf("%d\n",i); }}跳转语句——goto
goto语句将控制权传递给C程序中同一函数内的其他语句它实际上违背了严格的结构化程序设计语言的原则它们降低了程序的可靠性,并使得程序难以维护goto标签;通用语法:goto语句功能:将控制权交给C语言中的任意一条语句。#include<stdio.h>voidmain(){ inti; intsum=0; for(i=1;i<=100;i++) { sum+=i; if(sum>=2500) { gotoleap; } }leap:printf("sum=%d,i=%d\n",sum,i);}选择一个循环写程序时选择一个循环的形式是人为决定的while循环可以代替
for循环,反之亦然for循环每次更新循环计数变量的值后,检查条件表达式,如果是真,循环体被执行一次,直到条件表达式为假do…while执行循环体至少一次选择一个循环写程序时选择一个循环的形式是人为决定的while循环可以代替
for循环,反之亦然for循环每次更新循环计数变量的值后,检查条件表达式,如果是真,循环体被执行一次,直到条件表达式为假do…while执行循环体至少一次课后作业编写一个程序,在屏幕上显示出100,95,90……10,5。求5!输入一个整数,求这个整数的阶层.输入两个数,求出两数之间所有奇数的和。求5个整数的和。#include<stdio.h>voidmain(){ inta1,a2,a3,a4,a5; intsum=0; printf("请输入a1的值:"); scanf("%d",&a1); printf("请输入a2的值:"); scanf("%d",&a2); printf("请输入a3的值:"); scanf("%d",&a3); printf("请输入a4的值:"); scanf("%d",&a4); printf("请输入a5的值:"); scanf("%d",&a5); sum=a1+a2+a3+a4+a5; printf("sum=%d\n",sum);}#include<stdio.h>voidmain(){ inta,sum=0; inti; for(i=1;i<=5;i++) { printf("请输入a%d的值:",i); scanf("%d",&a); sum+=a; } printf("sum=%d\n",sum);}变量的不足之处程序中变量过多,使程序不够灵活程序中重复代码比较多,造成工作冗余。循环结构与数组的结合使工作简单化范例#include<stdio.h>voidmain(){ inta[5]; inti,sum=0; for(i=0;i<5;i++) { printf("请输入a[%d]的值:",i); scanf("%d",&a[i]); sum+=a[i]; } for(i=0;i<5;i++) { printf("a[%d]=%d\n",i,a[i]); } printf("sum=%d\n",sum);}数组什么是数组?即相同类型的数据元素的集合。变量与数组之间的区别:变量只能存储一个数据。数组可以存储一组数据。数组内的元素具有相同的数据类型数组中的元素存储在一个连续的内存区域中。数组与变量的区别一维数组一维数组的声明格式:数据类型数组名[常量表达式]例如:intsum[10],chara[6]一维数组声明注意事项数据类型:int、float、double、char数组名与变量名相同,声明必须符合标识符的有关规定。常量表达式中可以是常量或常量表达式,绝不能是变量。其决定了数组元素的个数。课堂练习定义一个有8个元素的整型数组定义一个有12个元素的浮点型数组定义一个有3个元素的字符型数组一维数组的初始化在数组声明时初始化Inta[5]={1,2,3,4,5}在使用时进行初始化Inta[5];int[0]=1;int[1]=2部分初始化Inta[5]={1,2,3}直接初始化Inta[]={1,2,3,4}数组元素的引用引用格式数组名[下标]例如:a[0]、a[5]数组元素引用说明每个数组元素就是一个变量,数组元素只能逐个引用。只能引用数组中的元素,不能整体引用数组。不能使用越界的数组元素数组的下标必须以0开始,到N-1结束。例如:a[10]下标:a[0],a[1]……a[8],a[9]数组的引用(续)例:inta[3]={4,8,9};a[0]=4;a[1]=8;a[2]=9;charb[]={‘c’,’h’,’i’,’n’,’a’};b[0]=‘c’b[1]=’h’,b[2]=’i’,b[3]=’n’,b[4]=’a’数组引用范例#include<stdio.h>voidmain(){ inta[5];//定义一个有5个元素的整型数组
inti; for(i=0;i<5;i++) { printf("a[%d]:",i); scanf("%d",&a[i]); }//为数组赋初值
printf("-----------\n"); for(i=4;i>=0;i--) { printf("a[%d]=%d\n",i,a[i]); }//将数组元素转置显示}课堂练习定义一个有5个元素(数组元素:10,20,30,40,50)的整型数组,显其每个元素显示出来。输入5个整数,显示其平均值。(用数组)接受5个整数进行排序二维数组什么是二维数组?—有两个下标的数组。相当于多个一维数组。二维数组声明:数据类型数组名[常量表达式][常量表达式]例如:inta[2][3]二维数组初始化1、分组初始化 例如:a[2][3]={{1,2,3},{4,5,6}}2、一次性初始化 例如:a[2][3]={1,2,3,4,5,6}3、对数组中部分元素初始化 例如:a[2][3]={{5},{6}}二维数组引用引用格式:数组名[行标][列标]课堂练习定义一个4*3的二维表格,数组元素为下图:指出下列的值:(数组声明:inta[4][3])a[0][0];a[1][2];a[3][3];a[4][1]二维数组范例显示一个二维数组(如下图),并将其数组元素进行列互换。123456142536ab范例#include<stdio.h>voidmain(){ inta[2][3]={{1,2,3},{4,5,6}};//初始化数组
inti,j; for(i=0;i<2;++i) { for(j=0;j<3;j++) { printf("%d\t",a[i][j]); }//原样输出二元数组
putchar('\n'); } putchar('\n'); for(j=0;j<3;j++) { for(i=0;i<2;i++) { printf("%d\t",a[i][j]); }//转置输出二元数组
putchar('\n'); }}课堂练习输出下方二维表格。(无边框)618753294字符数组什么是字符数组?用来存放字符数据的数组。声明格式char数组名[常量表达式]例如:charch[10]字符数组的初始化1、charch[9]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’};2、charch[8]=“chinese”;字符串数组范例#include<stdio.h>voidmain(){charary[5];inti;printf("\nEnterstring:");scanf(“%s”,ary);//为字符数组赋值
printf(“\nThestringis%s\n\n”,ary);//输出字符串
for(i=0;i<5;i++)printf("\t%d",ary[i]);}空字符什么是空字符?—以叫结束字符,是对一个字符串输入的结束标志。例如:charch[]=“china”(注内存图)字符数组的使用说明#include<stdio.h>voidmain(){charname[10]; charsex[3]; printf("请输入姓名:"); scanf("%s",name); printf("性别:"); scanf("%s",sex); printf("姓名:%s\t",name); printf("性别:%s\n",sex);}
二维字符型数组定义格式char[5][10]5:
数组中有5个字符串10:
每个字符串有10个字符字符串函数puts输出函数格式puts(字符数组)gets输入函数格式gets(字符数组)#include<stdio.h>#include<string.h>voidmain(){ charch[20]; gets(ch); puts(ch);}字符串函数(续)strcpy函数格式:Strcpy(数组1,数组2)功能:将数组2的字符复制到数组1中范例:include<stdio.h>#include<string.h>voidmain(){ chara[10],[b]={"china"}; strcpy(a,b); puts(a);}字符串函数(续)strcat函数格式:strcat(数组1,数组2)功能:连接两个数组,将数组2的字符连接到数组1中范例#include<stdio.h>#include<string.h>voidmain(){ chara[12]={"leaf"}; charb[6]={"apple"}; strcat(a,b); puts(a);}字符串函数(续)Strcmp函数格式Strcmp(数组1,数组2)功能数组1与数组2之间的大小比较(ASCII码)注意事项:数组1>数组2,返回值>0数组1=数组2,返回值=0数组1<数组2,返回值<0strcmp范例 #include<stdio.h>#include<string.h>voidmain(){ chara[10]="china"; charb[6]="apple"; intc; c=strcmp(a,b); printf("%d\n",c);}字符串函数(续)strlen函数格式:strlen(字符串)功能测试字符串长度(不包括空字符)strupr函数格式strupr(字符串)功能将小写字母转换成大写字母。数据的存储机制内存地址—内存中存储单元的编号。变量地址—系统标识变量在内存中的起始位置。数据的存储机制(续)直接访问#include<stdio.h>voidmain(){ inta,b,sum; printf("请输入a和b的值:"); scanf("%d,%d",&a,&b); sum=a+b; printf("sum=%d\n",sum);}间接访问#include<stdio.h>voidmain(){ inta,b,sum=0; int*p_1,*p_2; printf("请输入a和b的值:"); scanf("%d,%d",&a,&b); p_1=&a; p_2=&b; sum=*p_1+*p_2; printf("sum=%d\n",sum);}指针的功能方便一个函数向另一个函数的过渡。能通过指针的移动来改变指针所指向的数据,不需要去移动变量或数组。可以实现动态内存的更新。指针与指针变量什么是指针?变量的内存地址。指针变量用来存放变量地址的变量。56a变量名1000(内存地址)变量值1000b指针指针变量指针声明格式数据类型*指针变量名;声明注意事项“*”表示声明的指针变量,不是代表指针运算符。“*”前必须指定数据类型(基类型),其主要功能是指指针所指向对象的数据类型。基类型:指针所指向的数据类型。决定了指针每次移动的步长。指针的赋值与引用指针运算符&——求址运算符(……的地址)*——指针运算符(……地址中的值)范例inta=10;int*p;p=&a;ap1010100inta=10,int*pp=&a地址地址100104100104指针赋值2-1通过&运算符为指针赋值
ptr_var=&var;通过另一个指向相同类型数据项的指针变量对指针进行赋值
ptr_var2=ptr_var;指针赋值2-2通过指针为变量赋值
*ptr_var=10;如果ptr_var指向var,则把10赋给var课堂练习写出下列计算结果inta=5;/*a的内存地址为3000*/ int*p; p=&a;(1):p; (2)&p (3)*p(4):a (5)&a课堂练习写出下列计算结果intnum1=2,num2,*pnt;pnt=&num1;num2=*pnt;(1)num1 (2)num2 (3)*pnt
例题输入两个数,按从大到小的顺序排列。#include<stdio.h>voidmain(){ inta,b; int*p_1,*p_2,*max; p_1=&a;p_2=&b; printf("请输入a和b的数:"); scanf("%d,%d",&a,&b); if(a<b) { max=p_1;p_1=p_2;p_2=max; } printf("%d,%d\n",*p_1,*p_2);}数组指针与数组的指针变量什么是数组指针?数组在内存中的地址。数组的指针变量存放数组元素地址的变量。指针与一维数组3-1数组元素的地址可以用两种方式表示在数组元素前面加“&”符号
&ary[2]数组名+下标
ary+2指针与一维数组3-2#include<stdio.h>voidmain(){staticintary[10]={1,2,3,4,5,6,7,8,9,10};inti;for(i=0;i<10;i++){printf(“\ni=%d,ary月[i]=%d,*(ary+i)=%d",i,ary[i],*(ary+i));printf("&ary[i]=%X,ary+i=%X",&ary[i],ary+i);}}值地址指针与一维数组3-3演示:执行程序,观察并分析输出结果使用指针引用数组元素数组的方法#include<stdio.h>voidmain(){ inta[5]={6,7,8,9,10}; inti; for(i=0;i<5;i++) { printf("a[%d]:%d\n",i,a[i]); }}指针的方法#include<stdio.h>voidmain(){ inta[5]={6,7,8,9,10}; int*p; for(p=a;p<a+5;p++) { printf("%d\n",*p); }}使用指针变量的注意事项只能进行加法和减法运算
intvar,*ptr_var; ptr_var=&var;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 细胞信号传导的分子机制-洞察分析
- 线性同态加密优化策略-洞察分析
- 励志校园广播稿范文(8篇)
- 《人体内脏》课件
- 办公自动化系统与工业互联网平台的整合趋势
- 以环境为课堂基于室外活动的实验教学法在小学生中的应用探索
- 乐星湖地产商合同三篇
- 办公室高效团队建设中的分组协作策略研究
- 《KPI指标库的应用》课件
- 《大兴某工程策划书》课件
- JGJ31-2003 体育建筑设计规范
- 专题08:文言文比较阅读(解析版)-2022-2023学年七年级语文下学期期中专题复习(浙江专用)
- 部编版四年级上册道德与法治期末测试卷【全优】
- 产品研发项目立项书模板
- 自然科学基础综合练习及答案
- 生物药物分析练习题考试题及详细答案
- (完整版)自由泳教案
- 期浙江省金华市2023-2024学年十校联考最后历史试题含解析
- 年终总结:小区物业与居民沟通
- 桌面云项目POC测试报告
- 网页视觉设计智慧树知到期末考试答案章节答案2024年湖南应用技术学院
评论
0/150
提交评论