下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言概述【教学目的】使学生对计算机语言有f的认识,激发学生学习程序设计的兴趣。【教学重点】程序设计中的若干术语。【教学难点】理解程序设计中的若干术语。【教学方法】讲授式、讨论式、案例分析式。【新课内容】1、计算机语百2、计算机程序设计什么是程序?为了解决某一特定问题用某一种计算机谛言编写的指令序列称为程序。什么是程序设计?程序是程序设计的结果,在执行程序前必须先排定程序,排定以时间为进程必须完成的各种操作叫程序设计。用高级谛言进行程序设计时要注意以下三个概念:语法,每种计算机语言都有自己的语法规则。语义,即某一语法成分的含义。语用,即正确使用语百。3、C语言的由来规模较大,难以实现无数据类型接近硬件,但过于简单,功能有限用其编写了UNIX操作系统功能更强大,面向对象功能更强大,面向对象4、C语言的特点语言简洁、紧凑,使用灵活运算符*富丰富的数据类型结构化的控制语句语法限制/、严格能进行位操作语言生成的代码质量高可移植性好具有预处理功能5、简单C程序介绍main(){inta,b,sum;a=123;
b=456;sum=a+b;printf("Sumis%d\n",sum);)intmax(intx,inty){intz;if(x>=y)z=x;elsez=y;return(z);)main(){inta,b,c;scanf("%d%d",&a,&b);c=max(a,b);printf("max=%\n",c);)6、作业说明C语百的由来。算法【教学目的】使学生对计算机算法有f的认识,激发学生学习程序设计的兴趣。【教学重点】NS图的基本知识【教学难点】算法的特性与设计【教学方法】讲授式、讨论式、案例分析式。【新课内容】1、算法的概念广义地说,为解决一个问题采取的方法和步骤。计算机算法分类数值算法求方程的根求函数的定积分非数值算法图书检索人事管理2、简单算法举例求闰年的算法求素数的算法3、算法的特性有穷性算法要包含有限的步骤确定性每一步必须明确有零个或多个输入需要从外界获取必要的信息有一个或多个输出需要把求得得解进行输出有效性每一步都能有效地执行4、算法的表小方法设计算法自然语言传统流程图改进的流程图N-S图(盒图)伪代码实现算法计算机语言传统流程图优点:描绘直观,容易掌握缺点:对流程线没有严格控制三种基本结构N-S图(盒图)I.Nassi和B.Shneiderman提出取消流程线,不能任意转移控制使用N-S符号设计出来的程序必然是结构化程序容易表示嵌套关系容易确定局部和全局数据的作用域N-S的基本符号3.6PDL(过程设计语言一伪码)用结构化程序设计语言的语法控制框架,在内部却可灵活使用自然语言来表示各种操作比流程图更灵活,可以使用普通的正文编辑程序进行修改可以作为注释直接插在源程序中,提高文档质量有自动处理程序存在,可以自动生成程序代码缺点:不如图形工具直观BEGINinputm,nifm<nexchangemandnm%nrwhilerw0{nmrnm%nr}printnEND计算机语言BEGINinputm,nifm<nexchangemandnm%nrwhilerw0{nmrnm%nr}printnENDmain(){intm,n,r,t;scanf("%d,%d,&m,&n);if(m<n){t=m;m=n;n=t;}r=m%n;while(r!=0){m=n;n=r;r=m%n;}printf("n=%d,n);}4、结构化程序设计方法原理:用三种基本控制结构,通过组合和嵌套可实现任何单入口、单出口的程序。方法:自顶向下逐步细化模块化5、作业画简单程序的NS图和PDL代码。数据类型【教学目的】使学生对程序设计数据类型的较全面而深入的掌握。【教学重点】数据类型的存储空间、长度【教学难点】常量与变量的概念【教学方法】讲授式、讨论式、读书指导案例分析式。【新课内容】1、基本类型整型实型(浮点型)单精度、双精度构造类型数组类型结构体类型共用体类型指针类型空类型2、常量与变量符号常量用一个标识符代表一个常量#definePI3.14159main(){floatr,s,area;scanf("%f',&r);s=2*PI*r;area=PI*r*r;printf("s=%7.2f,area=%7.2f',s,area);}变量的概念程序运行过程中其值可以改变的量,系统为程序中的每一个变量开辟一个存储单元,如:main(){inta,b;a=2;printf("a=%d\n",a);b=4;printf("b=%dn",b);}变量名标识符:用来标识变量名、符号常量名、数组名、函数名、文件名的有效字符序列。关键字预定义标识符用户定义标识符字母或下划线开头,后跟字母、数字和下划线组成。变量要先定义后使用3、整型常量三种形式表小:十进制:如123-600八进制:以0开始,如0123十六进制:以0x开始,如0x123main(){inta=0123;printf("a=%dn”,a);}整型变量分类int整型shortint(或short)短整型longint(或long)长整型unsignedint无符号整型unsignedshort无符号短整型unsignedlong无符号长整型各类型数据长度、取值范围所占位数取值范围int16-32768〜32767short16-32768〜32767long32-21亿〜21亿unsignedint160〜65535unsignedshort160〜65535unsignedlong320〜42亿4、整型变量的定义所有的变量需先定义类型inta,b,c;/*指定a,b,c为整型变量*/unsignedcount;/*指定lower为无符号整型变量*/longs;有些变量可以预先设置初值:inta=0,b,c;/*指定a,b,c为整型变量,a的初值为0*/inta=0,b=0,c=0;/*指定a,b,c为整型变量,a、b、c的初值为0*/5、整型数据的溢出main(){inta,b;a=32767;b=a+1;printf("%d,%dn”,a,b);}main(){inta=70000;printf("a=%dn”,a);}整型常量的类型main(){unsigneda;a=-1u;printf("a=%un”,a);}6、作业计算正方形面积浮点等数据类型
【教学目的】使学生对程序设计数据类型的较全面而深入的掌握。【教学重点】数据类型的存储空间、长度【教学难点】常量与变量的概念【教学方法】讲授式、讨论式、读书指导案例分析式。【新课内容】1、实型常量小数形式:如123.0.123指数形式:如123e2123E2main(){floata;a=123e3;printf("a=%en”,a);}实型变量1、实型常量小数形式:如123.0.123指数形式:如123e2123E2main(){floata;a=123e3;printf("a=%en”,a);}实型变量1、分类float-3.4*10-38~3.4*10380.012.5所占位数单精度取值范围32double~1.7*10308双精度64-1.7*10-308longdouble长双精度~1.2*104932128-1.2*10-49322、变量的定义2、变量的定义floatx,y;doublez;3、字符型常量/*/*指定x,y为单精度实型变量*/
指定z为双精度实型变量*/单引号括起来的一个字符。如:'a'字符常量可以象整数一样参与运算。字符常量还有另外一种形式转义字符形式。转义字符功能转义字符功能\a响铃\\反斜杠字符\b退一格\'单引号字符\f走纸换页\"双引号字符\n换行\?问号\r代表的字符回车\ooo1〜3位8进制数\t横向跳格\xhh1〜2位16进制数代表的字符4、字符变量变量的定义charc1,c2;/*指定c1,c2为字符型变量*/2、字符型数据的存储以ASCII码存储,存储形式与整型一样,可以和整数进行运算main(){charc1,c2;c1='a';c2='b';c1=c1-32;c2=c2-32;printf("%cn”,c1,c2);printf("%d,%dn",c1,c2);}字符数据在内存中的存储形式及使用方法main(){charc1,c2;c1=97;c2=98;printf("%c,%cn",c1,c2);printf("%d,%dn",c1,c2);c2=c2+1;printf("%c,%dn",c2,c2);5、字符串常量双引号括起来的字符序列。如"Howareyou","0"等字符串在存储时末尾被自动加上字符'\0'字符常量与只包含一个字符的字符串常量的区别例:不属于字符常量的是'A'旧'n''x72,例:合法的字符常量是“abc”'x43''ab'“0”例:字符串“””的长度是34612变量赋初值例:inta=3;floatb=2.5;charc='a';例:inta,b,c=5;7、作业计算圆的面积,PI=3.14159各类数据间的混合运算【教学目的】掌握各种数据间混合计算类型转换的方法。【教学重点】强制类型转换【教学难点】转换优先级次序【教学方法】讲授式、讨论式、读书指导、案例分析式。【新课内容】1、C语言允许数据值从一种类型转换成另一种类型。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换的规则按图所示。高doublefloatlongunsigned低intchar,short说明:横向向左的箭头表示当运算对象为不同类横向向左的箭头表示必定的转换,如字符型(char)数据和短整型(short)数据必定先转换成整型(int),以提高运算精度。纵向的箭头表示当运算对象为不同类型时转换的方向型时转换的方向。数据总是由低级别向高级别转换。算术运算符和算术表达式基本算术运算符运算符的优先级和结合性自增、自减运算符算术运算符十(加法运算或正号运算符)-(减法运算或负号运算符)*(乘法运算符)/(除法运算符)%(求余运算符,或称模运算符)例:5%3结果:22、运算符的优先级和结合性算术表达式用算术运算符和括号将运算量连接起来的式子称为算术表达式。运算符有优先级和结合性在求表达式的值时,要按照优先级的高低依次计算
如果运算符两侧优先级相同,则按规定的结合方向进行。结合性例:main(){intm=7,n=5;floata=49,b=10,x;x=m/2+n*a/b+1/2;printf("x=%fn”,x);3、C语言提供一种“强制类型转换”运算符,将一个类型的变量强制转换为另一种类型。一般形式为:(类型标识符)(表达式)例如:k=(int)((int)x+(float)i)(float)(x=85)/*
k=(int)((int)x+(float)i)(float)(x=85)/*
/*得到整型数*/得实型单精度数*/例:main(){floatx=3.6;inta;a=(int)x;printf("x=%f,a=%dn”,x,a);}例:main(){floatx=2.6,y=3.5,z;inta;z=(int)x+y;a=(int)(x+y);printf("z=%f,a=%dn”,a,z);}4、作业P663.93.10各运算符【教学目的】掌握各种运算符的使用方法。【教学重点】++与一一运算符的使用复合赋值运算符【教学方法】讲授式、讨论式、读书指导、案例分析式【新课内容】1、自增、自减运算符++运算符的作用是使变量的值增1。--运算符的作用是使变量的值减1。常见的用法有:++i,--i在使用i前,使i的值加(减)1i++,i--在使用i后,使i的值加(减)1已知i=5(1)j=i++;例i=3;j=-i++;注意:1)、自增和自减运算符只能用于变量,表达式(x+y)++是不合法的。2)、自增和自减运算符的结合方向是“自右向左”。如表达式-i++等价于-(i++)。3)、(i++)+(i++)+(i++)结果?4)、(++i)+(++i)+(++i)结果?5)、i+++j是(i++)+j还是i+(++j)?6)、printf("%d,i,i++)结果例:i=3;j=4;k=5;m=(++i)+(--j)+(k--);2、赋值运算符和赋值表达式赋值运算符复合的赋值运算符赋值表达式赋值运算符简单的赋值就是把一个表达式的值赋给一个变量。例如:i=5j=i+1类型转换舍去小数部分,也不进行四舍五入。例:inti=3.56;则i的值为3。数值不变,但以浮点数形式存储。例:floatf=23;f的值为23.0000截取其前面7位有效数字,但应该注意数值范围不能溢出。floatdouble数值不变,在内存中以64位存储。有两种情况:A:如果系统将字符处理为无符号数,或对unsignedchar型变量赋值,则将字符的8位放在int型的底8位,高8位为00例:main(){unsignedcharc;c='376';printf("%c,%d,%un“,c,c,c);}B.如果系统将字符处理为带符号的量,若字符的最高位为0,则整型变量高8位补0;若字符最高位为1,则整型变量高8位补1。(即ASCII码在0〜127之间,值不变;128〜254之间,值为负值。)例:main(){charc;c='376';printf("%c,%d,%un“,c,c,c);}只须将低8位原封不动送到char型变量。main(){inti=289;charc='a';c=i;printf("%c,%dn”,c,c);}int为正数时,longint的高16位补0;int为负数时,longint的高16位补1;Iongintint则int只取长整型的低16位。main(){inta;longintb=65536;a=b;printf("a=%dn”,a);}⑺只需将高位补0,数值不变。unsignedintintunsignedlong1ongunsignedshortshort因为字节数相同,所以内容原封不动不变;但应注意,当unsignedxx型的最高位为1时,赋给xx型时,由于xx型的最高位为符号位,所以数据将变为负值。main(){unsignedinta=32768;intb;b=a;printf("b=%dn",b);}(8)intunsignedintIongunsignedlongshortunsignedshort因为字节数相同,所以内容原封不动不变;但非unsigned型的符号位将做为unsigned型的数值计算。main(){unsignedinta;intb=-1;a=b;printf("b=%dn”,a);}3、复合的赋值运算符在赋值符“二”之前加上其它运算符,可以构成复合的运算符。例如:i+=2等价于i=i+2a*=b+5等价于a=a*(b+5)x%=3等价于x=x%34、赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为赋值表达式。形式:〈变量〉〈赋值运算符〉〈表达式〉例如:x=3y=x+3对赋值表达式求解的过程是:将赋值运算符右侧的表达式的值赋给左侧的变量。赋值表达式的值就是被赋值的变量的值。结合性注意:一般形式的赋值表达式中的“表达式”又可以是一个赋值表达式。如:a=b=8按照从右到左的结合性等价于a=(b=8)赋值表达式也可以包含复合的赋值运算符。设a的值为6,计算a+=a-=a*a先进行a*a的计算,结果为36再进行a-=36的计算,相当于a=a-36=-30最后进行a+=-30的计算,相当于a=a-30=-60例:main(){inta,b,c,d,e;a=b=c=d=e=5;b+=a+3*a;c%=a-3;e=d*=a+3;a-=a*=a;printf("a=%d,b=%d,c=%d,d=%d,e=%n”,a,b,c,d,e);5、逗号运算符和逗号表达式在逗号表达式中,逗号是一种运算符。形式如下表达式1,表达式2由逗号隔开的一对表达式从左向右进行计算,其求解过程为:先求解表达式1,再求表达式2,整个逗号表达式的值是表达式2的值。逗号运算符是所有运算符中级别最低的。例如a=4*6,a+5整个逗号表达式的值为29。注思一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,例如:(a=4*6,a+5),a+6整个表达式的值为30。例:intn=3,m=3;执行语句m=n++,m++,++n;后n的值,m的值o34566、作业P673.113.12顺序程序设计【教学目的】掌握顺序程序设计的方法【教学重点】格式化输入与输出【教学难点】格式化输入的使用方法【教学方法】讲授式、讨论式、读书指导、案例分析式。【新课内容】1、赋值语句由赋值表达式加上一个分号构成,作用是将一个确定的值赋给一个变量。格式:变量名=表达式;说明先计算,后赋值。赋值语句中的“二”是赋值号而不是数学意义上的等号。赋值号两侧的内容不能任意调换。2、字符数据的输入输出字符输出函数格式:putchar(c)功能:将c值所对应的字符输出到标准输出设备上(一般为显示器)c可以是整型或字符型。一次只能输出一个字符,也可以输出控制符,如putchar('\n')输出一个换行符,即光标移到下一行。例:putchar('a\n');错改为putchar('a');putchar('\n');putchar(a,b);错改为putchar(a);putchar(b);例:#include"stdio.h"main(){charch1,ch2;ch1='A';ch2='B';putchar(ch1);putchar(ch2);putchar('n');}运行程序,运行结果为ABputchar()函数也可以输出转义字符,如:putchar('\101')即输出字符‘A'字符输入函数格式:getchar()、功能:从标准设备(一般是键盘)输入一个字符。字符输入函数没有参数,函数值就是从设备输入的字符。应注意空格和回车符也是字符,也可以被接受例:#include<stdio.h>main(){chara,b,c,d;a=getchar();b=getchar();c=getchar();d=getchar();putchar(a);putchar(b);putchar(c);putchar(d);}例3从键盘输入三个大写字母,将其转换成小写字母输出。#include"stdio.h"main(){charc1,c2,c3;c1=getchar();c2=getchar();c3=getchar();c1=c1+32;c2=c2+32;c3=c3+32;putchar(c1);putchar(c2);putchar(c3);}3、格式输入输出1、格式输出函数格式:printf(格式控制,输出表列)功能:printf函数可以将任意类型的多个数据输出到标准输出设备上(一般为显示器)。格式字符含义d十进制形式输出带符号整数(正数输出不带符号)o八进制形式输出无符号整数(不输出前导0)x十六进制形式输出无符号整数(不输出前导0x)u十进制形式输出无符号整数c输出一个字符s输出一个字符串f小数形式输出单、双精度实数(隐含输出6位小数)e指数形式输出单、双精度实数(数字部分有6位小数)g当指数小于-4或大于给定的精度时用%哈式,否则用%f格式:附加格式说明符格式字符含义字母l用于长整型,可加在格式符d,o,x,u之前m(整数)数据最小宽度.n(整数)对实数,表示输出n位小数;对字符串,表示截取的字符个数一输出的数字或字符在域内向左靠例:main(){inta,b;a=3;b=4;printf("a=%db=%dn”,a,b);printf("a=%d,b=%dn”,a,b);printf("%d,%dn”,a,b);printf("%d%dn",a,b);}例:main(){inta=123;b=4567;printf("%d%dn",a,b);printf(“%2d%2dn",a,b);printf("%4d%6ch",a,b);printf("%n”,a,b);printf("%n”,a,b);)除了X、E、G外,其它格式字符要求小写例:main(){inta=-654;printf("|%6D|n”,a);printf("|%6d|n",a);)例:main(){inta=97;charb='b';printf("%%da=%dn",a,a);printf("%%db=%dn",b,b);printf("%%3cb=%3cn",b);)%da=97%ca=a%db=98%cb=b%3cb=b例4main(){inta,b;floatx;charc;a=123;b=-1;x=3.14;c='A';printf("%d,%4d\n",a,a);printf("%d,%x,%o,%u\n",b,b,b,b);printf("%c,%d\n",c,c);printf("%f,%6.1f\n",x,x);)4、格式输入函数格式:scanf(格式控制,地址表列)功能:scanf函数可以从标准输入设备输入任意类型的多个数据般为显小器)。注意:输入数不能规定精度当输入一审数据时,系统如何区分每个数据呢?(1)根据格式字符的含义分隔字符。sacnf("%d%c%f",&a,&b,&c);若输入数据:120a45.6贝Ua=120,b='a',c=45.6
(2)系统按格式中指定的长度截取所需的数据。scanf("%3d%2d",&a,&b);输入数据12345则a=123,b=45例:main(){inta;charb,c;scanf("%3d%c%c,&a,&b,&c);printf("a=%db=%cc=%cn”,a,b,c);}例:main(){chara,b;scanf("%3c%3c,&a,&b);printf("%3c%3cn",a,b);}(3)用隐含的分隔符。在输入数据中用空格或换行符分隔数据。scanf("%d%d%d",&a,&b,&c);输入数据345或输入34(回车)5(回车)则a=3,b=4,c=5(4)%后的“*”附加说明符,用来表示跳过它相应的数据。scanf("%d,%*d,%d",&a,&b);如果输入3,4,5则a=3,b=5,第二个数据跳过不赋给任何变量。(5)使用显示分隔符。在格式说明符中还可以有其它字符,在输入字符时应输入与这些字符相同的字符。scanf("%d,%d,%d",&a,&b,&c);输入数据3,4,5scanf("a=%d,b=%d,c=%d",&a,&b,&c);输入数据a=3,b=4,c=5(6)用“%C格式输入字符时,空格字符和转义字符都作为肩效字符输入:scanf("%c%c%c",&c1,&c2,&c3);如果输入abc则字符'a'送给cl,空格送给c2,字符'b'送给c3皿:(1)输入时不能规定精度,如scanf("%6.1f”,&a)是不合法的。(2)格式控制之后是地址表列而不是变量表列scanf("%d,%d,&a,&b);是正确的,而scanf("%d,%d,a,b);是错误的。6、作业P84.10选择结构程序设计【教学目的】掌握选择结构程序设计的方法。【教学重点】IF语句的语法与使用I表达式的逻辑值判断结果【教学方法】讲授式、讨论式、读书指导、案例分析式。【新课内容】1、关系运算符和关系表达式关系运算符关系表达式用关系运算符将两个表达式(可以是算术表达式、关系表达式、赋值表达式或逻辑表达式)连接起来的式子,称为关系表达式。关系表达式的值为逻辑值“真”或“假”,以1代表“真”,以0代表“假”。结合性例如:关系表达式“8==4”的值为“假”,表达式的值为0o关系表达式“5>0”的值为“真”,表达式的值为1。若a=5,b=3,c=1,则a>b>c的计算过程是:先计算a>b,结果为真,值为1再计算1>c,结果为假,值为0f=b>c!=a的计算过程是:先计算b>c,结果为1再计算1!=a结果为1最后将1赋值给f例:main(){inta;a=5;printf("%dn",a<0);}例:a=3;b=2;c=1;f=a>b>cf的值是多少?例:main(){inta;a=0;printf("%dn”,-1<a<1);)2、逻辑运算符和逻辑表达式逻辑运算符!(逻辑非)&&(逻辑与)||(逻辑或)运算符的优先级逻辑表达式逻辑表达式的值是一个逻辑量“真”或“假”。C语言编译系统在给出逻辑结果时,以数值1代表“真”,以0代表“假”;但是在判断一个量是为“真”时,以非0代表“真”,以0代表“假”。例如:若x=10,则!x的值为00若a=3,b=2,贝Ua&&b的值为1。M08的值为1。结合性例:a=4;b='B';写出下列表达式是值!aa&&ba||ba&&!b||2逻辑运算符特点在逻辑表达式的求解中并不是所有的运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行下一个运算符。例如:1、a&&b&&c2、a||b||c当a=5,b=3,c=2,d=1,x=1,y=1则表达式(x=a<b)&&(y=c<d)首先计算“a<b",结果为0,则x=0,因此"y=c<d”不被执行,所以y的值仍为1而不是00例:a=1;b=2;c=3;d=4;m=1;n=1;z=(m=a>b)&&(n=c<d);z=(m==a>b)&&(n==c>d);z=(m=a>b)||(n=c>d);z=(m=a<b)&&(n=c>d);z=(m=a<b)&&(n=c<d);m=0,n=1,z=0m=1,n=1,z=0m=0,n=0,z=0m=1,n=0,z=0m=1,n=1,z=1例:x=4;y=5;z=(++x==5)||(y++==6)例:x=4;y=5;z=(x++==5)||(y++==6)注意:表达式应满足题目的要求写出能满足当x的值在-10到10,100到200之间时值为“真”,否则为“假”的表达式。正确:x>-10&&x<10||x>100&&x<200错误:-10<x<10|1100Vx<200当x=20时,-10<20为真,值为1,1<10为真,整个表达式为真,结果出错。例:a=10;b=15;c=1;d=2;e=0;求下列表达式的值c==b>e!e&&(e==b)==(++c)!e&&e==(b==++c)a++&&e++&&e++a++&&e++||e++(a+c==b)==(b+d==a)||(c=b+a)>(d=c+d)(a+c==b)>(b+d==a)||(c=b+a)>(d=c+d)3、if语句1)、if语句的三种形式:if-else形式:if(表达式)语句1;else语句2;例如:if(x>y)printf("%d,x);elseprintf("%d,y);if形式:if(表达式)语句;例如:if(x>y)printf("%d,x);else-if形式if(表达式1)语句1;elseif(表达式2)语句2;else语句n;例如:if(x>0)y=1;elseif(x==0)y=0;elsey=-1;例:从键盘输入两个整数,输出最大值。main(){inta,b,max;printf("pleaseinputa,b:");scanf("%d%d,&a,&b);if(a>b)max=a;elsemax=b;printf("max=%dn”,max);}例:输入两个实数,由小到大输出。main(){floata,b,t;scanf("%f%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f\n",a,b);}例:输入三个实数,按由小到大顺序输出。main(){floata,b,c,t;scanf("%f%f%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f\n",a,b,c);}例:对求三角形面积的程序进行改进,要求判断输入的三边能否构成三角形。如果能构成三角形则计算面积,否则给出相应信息。#include"math.h"main(){floata,b,c,s,area;scanf("%f,%f,%f',&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%7.2f\n",area);}“,,elseprintf("inputdataerror");}例:判断从键盘输入的一个字符是什么样的字符。#include“stdio.h"main(){charc;printf("pleaseinputacharacter:");c=getchar();if(c>=,a,&&c<=,z,)printf("lowern");elseif(c>='A'&&c<='Z')printf("uppern");elseprintf("NOLettern");}例5给一个成绩,要求输出成绩等级。90分及以上为‘A',80-89分为‘B',70-79分为‘C',60-69分为‘D',60分以下为‘E'。main(){ints;scanf("%d,&s);if(s>=90)printf("An”);elseif(s>=80)printf("Bn”);elseif(s>=70)printf("Cn”);elseif(s>=60)printf("Dn”);elseprintf("En”);}例:main(){inta=1,b=2,c=3;if(a>b)a=b,b=c;c=a;printf("%d,%d,%dn“,a,b,c);)例:main(){inta=1,b=2,c=3;if(a>c);b=a;a=c;c=b;printf("%d,%d,%dn“,a,b,c);)例:main(){inta=1,b=2,c=3;if(a>c)b=a;a=c;c=b;printf("%d,%d,%m",a,b,c);)2)、嵌套的if语句在一个if语句中又包含了另一个if语句,称为if语句的嵌套。例:#include“stdio.h"main(){charch,c1,c2;printf("Enteracharacter:");ch=getchar();if(ch>=,a,&&ch<=,z,)ch-=32;c1=ch-1;c2=ch+1;if(ch=='A')c1=ch+25;elseif(ch=='Z')c2=ch-25;putchar(c1);putchar(ch);putchar(c2);putchar('n');)条件运算符和条件表达式条件运算符?:条件表达式的形式为:表达式1?表达式2:表达式3先计算表达式1,若其值为非零,则结果为表达式2的值,否则就是表达式3的值。结合性:从右到左例如:设a=2,b=3,c=4,则(1)m=a>b?a:b的值为3(2)m=a>b?a:b>c?b:c先计算b>c?b:c,结果为4再计算m=a>b?a:4,结果为4则m的值为4,整个表达式的值也为4。例:a=3;b=2;c=(--a==b++)?a--:++b;switch语句switch语句的基本格式:switch(表达式){case常量表达式1:语句1;[break;]case常量表达式2:语句2;[break;]case常量表达式n:语句n;[break;]default:语句n+1;}注意:当表达式的值与某一个case后面的常量表达式的值相等时,就执行该case后面的语句,都不相等时,就执行default后语句。每个case的常量表达式的值必须互不相同。各个case的出现次序不影响执行结果。用break语句可以跳出switch结构。例7输入两个运算量和一个运算符,完成加、减、乘、除运算,输出运算结果。#include"stdio.h"main(){floatx,y,z;charch;printf("nEnteracalculation(x?y):");scanf("%f%c%f,&x,&ch,&y);switch(ch){case'+':z=x+y;printf("x+y=%d",z);break;case'-':z=x-y;printf("x-y=%d",z);break;case'*':z=x*y;printf("x*y=%d",z);break;case'/':if(y==0)printf("divisionbyzero\n");else{z=x/y;printf("x/y=%d",z);}break;default:printf("Theerroroperator");}}用if语句if(s<250)d=0;elseif(s<500)d=0.02;elseif(s<1000)d=0.05;elseif(s<2000)d=0.08;elseif(s<3000)d=0.1;elsed=0.15;例:switch语句的嵌套main(){inta=2,b=7,c=5;switch(a>0){case1:switch(b<10){case1:printf("@);break;case0:printf(“!”);break;}case0:switch(c==5){case0:printf("*");break;case1:printf("#");break;default:printf("%);break;}default:printf("&');break;}printf("n”);}4、作业P15.7循环结构程序设计【教学目的】掌握循环结构程序设计的基本方法及语句的语法与使用。【教学重点】WHILE、FOR语句的使用【教学难点】循环的原理及理解【教学方法】讲授式、讨论式、读书指导、案例分析式。【新课内容】1、while语句格式:while(表达式)语句;功能:while语句用来实现“当型”循环执行过程:首先判断表达式,当表达式的值为非0时,反复执行while中的语句。while的常见用法i=1;或i=0;while(i<=n)i<n;{i++;)i=n;while(i>=1)或i>0(〜i--;)例:编程计算1+2+...+100main(){inti=1,sum=0;while(i<=100){sum=sum+i;i++;)printf("sum=%\n",sum);)例:main(){intk=2;while(k!=0)printf("%d”,k),k--;printf("n”);)例:k=0;while(k=0){printf("#");k=k-1;)例:main(){inty=3;while(y--);printf("y=%dn”,y);)例:main(){inty=3;while(y!=0)y--;printf("y=%dn”,y);)例:
k=10;while(k=3)k=k-1;无限次循环统计小写字母例:#include“stdio.h"main(){intcount=0;charc;c=getchar();while(c!=’n'){if(c>='a'&&c<='z')count++;c=getchar();}printf("count=%dn”,count);}2、do-while语句格式:do语句while(表达式);功能:do-while语句用来实现“直到型”循环执行过程:先无条件执—次语句,然后再判断表达式,当表达式的值为非0时,返回,再执行该语句。例:i=11;while(i<=10)i++;printf("i=%dn”,i);例:i=11;doi++;while(i<=10);printf("i=%dn”,i);例用do-while语句计算1+2+…+100main(){inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("sum=%\ir,sum);}例:s=7;dos-=2;whlie(s==0);printf("s=%dn”,s);例4编写满足1+2+3+…+n<500中最大的n并求其和的程序main(){intn=0,sum=0;do{++n;sum+=n;}while(sum<500);printf("n=%dsum=%d\n",n-1,sum-n);}统计从键盘输入的小写字母个数i=0;while((c=getchar())!='n')if(c>='a'&&c<='z')i++;统计元音字母while((c=getchar())!='n')switch(c){case4_,a:case,A,:casee:case'E:’1)casei:caseIcaseo:case'O:caseu:case'U':v2++;default:v1++;}例:main(){intx=0,y=0;while(x<20)y++,x+=3;printf("x=%dy=%dn"x,y);}3、for语句格式:for(表达式1;表达式2;表达式3)语句执行过程:首先计算表达式1的值,给循环变量赋初值,再测试表达式2的值,若其值非0,则执行循环体语句,并计算表达式3的值,自动修改循环变量的值,再测试表达式2的值,直到表达式2的值为0(假)则退出循环。三个表达式都可以省略。常用方法inti;for(i=1;i<=n;i++)或for(i=0;i<n;i++)~inti;for(i=n;i>=1;i--)或for(i=n;i>0;i++)例5用for语句计算1+2+...+10main(){inti,sum=0;for(i=1;i<=10;i++)sum=sum+i;printf("%d",sum);}4、循环的嵌套一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多重循环。例如,for(i=1;i<=3;i++){...for(j=1;j<=5;j++){...}…}5、三种循环可以相互嵌套,如:例:main(){inti,j,n,m;n=3;m=4;for(i=1;i<=n;i++){for(j=1;j<=m;j++)printf("#");printf("n”);}}例:main(){inti,j;charc;for(i=1,c=,a,;i<=5;i++){for(j=1;j<=4;j++)printf("%c%d,c,j);printf("n”);c++;))ala2a3a4blb2b3b4clc2c3c4did2d3d4ele2e3e4例:#include<stdio.h>main(){inti,j;for(i=4;i>=1;i--){for(j=i;j>=1;j--)putchar('#');for(j=1;j<=4-i;j++)putchar();putchar('n');))#######*##**#***例打印乘法“九九表”。124369TOC\o"1-5"\h\z48121651015202561218243036714212835424981624324048566491827364554637281main(){inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%d*%d=%-3d",j,i,i*j);}printf("\n");}}6、break和continue语句break语句:break语句用于循环语句和switch语句,作用是跳出循环语句和switch语句,如:while(){...if()break;...)例使用break终止循环。#include“stdio.h"main(){inti,sum=0;for(i=1;;i++){if(i>100)break;sum+=sum;)printf("sum=%dn”,sum);)例输入一个整数m判断是否是素数。main(){intm,i,j;scanf("%d",&m);j=m-1;for(i=2;i<=j;i++)if(m%i==0)break;if(i>j)printf("%disaprimenumber",m);elseprintf("%disnotaprimenumber",m);)例求100-200之间的全部素数。#include"math.h"main(){intm,i,j;for(m=101;m<200;m++){j=sqrt(m);for(i=2;i<=j;i++)if(m%i==0)break;if(i>j)printf("%disaprimenumber",m);elseprintf("%disnotaprimenumber",m);))continue语句:continue语句类似于break语句,但不是退出循环,而是跳过循环体下面未执行的语句,接着执行循环下一次迭代。如:while(){…if()continue;
…}例使用continue语句示例#include"stdio.h"main(){intn;while(1){scanf("%d",&n);if(n%2==1){printf("Isaid");continue;}break;}printf("Thanks.Ineededthat!");}例:main(){intk=0;charc='A';do{swith(c++){case'A':k++;break;case'B':k--;case'C:k+=2;break;case'D':k%=2;continue;case'E':k*=10;break;default:k/=3;}k++;}while(c<'G)printf("k=%dn",k);}例:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;printf("x=%dn”,x);}例用近似公式求e=1+1/1!+1/2!+-••+1/n!分析:设term分别代表求和公式中的每一项,则第i项总可以用第i-1项推算出来,即term=term/i。用单循环编写的程序片段:e=1.0;term=1.0;for(i=1;i<=n;i++){term/=i;e+=term;}例求fibonacci数列的前40个数。分析:设当前项为f,前一项为f1,前二项为f2。首先根据f1和f2推出f,再将f2作为f1,f作为f2,再推出f,如此一直递推下去:TOC\o"1-5"\h\z11235第一次f1+f2-f第二次f1+f2-f第三次f1+f2-f递推法:递推是指在一个数的序列值中,下一项的值是在前一项的基础上推算出来的,即下一项对前一项有某种依赖关系。f1=1.0;f2=1.0;n=2;printf("%10.0f%10.0f",f1,f2);for(i=3;i<=40;i++){f=f1+f2;if(n%4==0)printf("\n");printf("%10.0f",f);f1=f2;f2=f;n++;}f1=1.0;f2=1.0;n=2;for(i=1;i<=20;i++){printf("%10.0f%10.0f",f1,f2);f1=f1+f2;f2=f2+f1;if(n%4==0)printf("\n");n++;}求Fibonacci数列中第一个大于1000的数main(){intf,f1,f2;f1=0;f2=1;for(;;){f=f1+f2;if(f>1000)break;f1=f2;f2=f;}printf("f=%dn",f);}例破译密码。按以下规律翻译密码:将每一个字母变成它后面的字母,如将A变成B,Z变成A,非字母字符不变,‘!’作为电文结束标志。例如,有一电文“right”,翻译成“sjhiu例百钱买百鸡问题。公鸡每只5元,母鸡每只3元,小鸡3只一元,问一百元买一百只鸡有几种解法(各种鸡都要)。枚举法:枚举法是计算机中常用的一种方法,它的基本思路是:一一列举各种可能的情况并判断哪一种情况是符合要求的解。for(x=1;x<=19;x++)for(y=1;y<=33-x;y++){z=100-x-y;if(z%3==0&&5*x+3*y+z/3==100)printf("cock=%dhen=%dchick=%d",x,y,z);)结果:cock=4hen=18chick=78cock=8hen=111chick=81cock=12hen=4chick=84课后题牛顿迭代法:1)x1—x0-f(x)0/f'(x0)2)WHILE|x1-x0|>£DOx0-x14)x1—x0-f(x0)/f'(x0)ENDOUTPUTx1二分法算法:区间[a,b]有且只有一个实根1)取c=(a+b)/2;2)若f(c)=0,则c即为根,过程结束;3)若f(a)?f(c)<0,则b—c;否则a―c,f(a)—f(c);5)若|a-b|<e,则过程结束,(a+b)/2即为根的近似值,否则重复执行1).#include"math.h"main(){floatx1,x2,x,f1,f2,f;do{scanf("%f,%f",&x1,&x2);f1==((x1-5.0)*x1+16.0)*x1-80.0;f2==((x2-5.0)*x2+16.0)*x2-80.0;}while(f1*f2>=0);do{x=(x1*f2-x2*f1)/(f2-f1);f=((x-5.0)*x+16.0)*x-80.0;if(f*f1>0){f1=f;x1=x;}else{f2=f;x2=x;}}while(fabs(f)>=0.0001);printf("Arootofequationis%8.4f”,x);}7、作业P1517.12数组【教学目的】掌握数组的概念及使用方法【教学重点】一维数组的原理与使用方法及在程序设计中的使用【教学难点】多维数组的原理与使用【教学方法】讲授式、讨论式、读书指导、案例分析式。【新课内容】1、数组的有关概念数组是具有一定顺序关系的若干相同类型变量的集合,特点:数组具有有序性数组具有同一性数组具有整体性组成数组的每个分量称为数组的元素;数组的维数(一维,二维,三维)定义类型说明符数组名[常量表达式];inta[5];charc[20];floatx[10];注意:数组名定名规则与变量名相同;数组名后是方括号,而不是小括号;常量表达式表示元素的个数,下标从零开始。数组的大小是固定的,不能动态定义。例如:intn;scanf("%d,&n);inta[n];是错误的。2、引用数组必须先定义,后使用。只能逐个引用数组元素。引用形式:数组名[下标];其中下标可以是整型常量、变量或表达式;数组长度为M时,下标值为0,1,2-M-1例如,定义数组inta[3],数组元素为a[0]a[1]a[2]a[0]=10;a[1]=25;a[2]=a[0]+a[1];初始化顺序指定全部元素的初始值[static]inta[5]={1,2,3,4,5};新标准可以对auto进行初始化。指定部分元素的初始值inta[5]={0,0,1};以上语句只给数组a的前面三个元素赋了初始值,未赋初值的元素的值在此默认为0;常见错误.inta[5]={0,1,2,3,4,5};多了一个初值。.inta(5);inta[5];.inta[5]=0;inta[5]={0};.inta[5]=(0,1,2,3,4);inta[5]={0,1,2,3.4};.inta={0,1,2,3,4};.inta[5];a={0,1,2,3,4};或a[5]={0,1,2,3,4};3、输入和输出C语言规定,对数组的使用只能逐个引用数组元素,不能一次引用整个数组。同样,对数组的输入和输出也是依次对每个元素进行的。例如,输入10个数,并将它们输出。main(){inta[10],i;for(i=0;i<10;i++)scanf("%d”,&a[i]);for(i=0;i<10;i++)printf("%d",a[i]);}常见错误inta[10];for(i=1;i<=10;i++)a[i]=i;改正:for(i=0;i<10;i++)a[i]=i;说明:在循环体内利用循环控制变量作为下标输入输出数组元素,因此数组元素输入输出的次序和数量可以控制。例如,下面的程序段将一个数组按照逆序打印数组元素的值。for(i=9;i>=0;i--)printf("%d",a[i]);下面的程序段只打印一个数组的前五个元素的值。for(i=0;i<5;i++)printf("%d",a[i]);4、一维数组应用举例例有一个一维数组,有10个整数存放其中,找出其中最大的一个数。main(){inti,max,x[10];printf("enterdata:\n");for(i=0;i<10;i++)scanf("%d",&x[i]);max=x[0];for(i=1;i<10;i++)if(x[i]>max)max=x[i];printf("max=%d\n",max);}例有一个一维数组,有10个整数存放其中,找出其中最大的一个数及其下标。main(){inti,max,x[10],k;printf("enterdata:\n");for(i=0;i<10;i++)scanf("%d",&x[i]);max=x[0];k=0;for(i=1;i<10;i++)if(x[i]>max){max=x[i];k=i;}printf("max=%d,k=%d\n”,max,k);}从键盘上输入一个学生五门功课的成绩,求平均分main(){inti;floatsum=0,a[5];printf("enterdata:\n");for(i=0;i<5;i++)scanf("%f",&a[i]);for(i=0;i<5;i++)sum+=a[i];printf("average=%.2f\n",sum/5);}例使用数组编程,计算出前10项日bonacci数列,要求一行打印5个数。应用举例(排序:冒泡法)假定有5个无序的数21,13,90,32,-1应用举例(排序:冒泡法)续应用举例(排序:冒泡法)续for(i=1;i<=n-1;i++)for(j=0;j<n-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}冒泡法优化for(i=1;i<=n-1;i++){flag=1;for(j=0;j<n-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;flag=0;}if(flag)break;}5、应用举例(排序:选择法)例4用选择法对n个数从小到大排序。假定有5个无序的数21,13,90,32,-1应用举例(排序:选择法)续应用举例(排序:选择法)续for(i=0;i<n-1;i++){min=i;for(j=i+1;j<n;j++)if(a[j]<a[min])min=j;if(min!=i){t=a[i];a[i]=a[min];a[min]=t;}}冒泡法:两个相邻的数依次进行比较;比较完立刻进行交换,最多交换n(n-1)/2次选择法:用当前比较过的数中最小的数依次与后面的数进行比较;一轮比较完进行一次交换,最多交换n-1次二维数组
二维数组的定义二维数组的引用二维数组的输入输出二维数组的初始化6、应用举例定义类型说明符数组名[常量表达式][常量表达式];inta[2][3];charc[20][7];floatx[50][3];二维数组的元素在数组中的是按行排列的。引用引用形式:数组名[下标北下标];其中下标可以是整型常量、变量或表达式;例如,定义数组inta[2][3],数组元素为a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]则a[0][2]=1;a[i][j]=i+j;(i,j为整型变量)7、输入和输出启两个下标,要用双重循环。例如,输入2个学生3门课的成绩:课程1课程2课程3学生1657875学生2706682初始化分行赋初值inta[2][3]={{1,2,3},{4,5,6}};不分行赋初值intb[2][3]={1,2,3,4,5,6};对部分元素赋初值intc[3][4]={{1},{0,2},{0,0,3}};未赋值的元素自动赋值0,而且前面的0不能省,后面的0可以省对全部元素赋初值,省略第一维的长度inta[][2]={{1,2},{3,4}};应用举例例求两个3*4矩阵的和。参考程序如下:main(){inta[3][4],b[3][4],c[3][4];inti,j;printf("输入a矩阵的兀素值\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d”,&a[i][j]);printf("输入b矩阵的元素值\n");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&b[i][j]);for(i=0;i<3;i++)for(j=0;j<4;j++)c[i][j]=a[i][j]+b[i][j];/*矩阵a和b的对应元素相加*//*结果存放在c矩阵中*/printf("和矩阵为:\n");for(i=0;i<3;i++){for(j=0;j<4;j++)printf("%5d",c[i][j]);printf("\n");}}例将一个4*3的数组行、列元素互换,存到另外一个数组中。注意两个数组的定义。程序片段如下:inta[4][3],b[3][4];for(i=0;i<4;i++){for(j=0;j<3;j++){printf("%5d",a[i][j]);b[j][i]=a[i][j];}printf("\n");}例求一个3*4矩阵中的最大值及其所在的行、歹I」。参考程序如下:main(){inta[3][4],row=0,col=0,i,j,max;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&a[i][j]);max=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[i][j]>max){max=a[i][j];row=i;col=j;}printf("max=%d,row=%d,col=%dn",max,row,col);}从键盘上输入四个学生五门功课的成绩,求每个学生的平均分main(){inta[4][5],i,j;floatb[4];for(i=0;i<4;i++)b[i]=0;for(i=0;i<4;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);for(i=0;i<4;i++){for(j=0;j<5;j++)b[i]+=a[i][j];b[i]=b[i]/5;}for(i=0;i<4;i++)printf("%6.2f",b[i]);printf("n”);}8、作业P157.67.7字符数组【教学目的】掌握字符数组的原理、概念与使用。【教学重点】字符串的概念与使用【教学难点】字符串函数的使用【教学方法】讲授式、讨论式、读书指导、案例分析式。【新课内容】1、字符数组的定义及初始化字符串字符数组的输入输出字符串处理函数二维字符数组字符数组应用举例字符数组的定义及初始化定义一维字符数组charstr[20];初始化.逐个为数组中各元素指定初值字符。charstr[4]={'w','e',T,T};.charc[20]="abcdef”;.chara[10];a="abcd”;错误2、字符串字符串是用一对双引号括起来的字符序列,这些字符可以是一般的可显示字符,也可以是某些特殊的控制字符;字符串只能用字符数组来处理,没有字符串变量。例如charc[10];c[0]='C;c[1]='';c[2]='l';c[3]='l';c[4]='n';c[5]='g';c[6]='u';c[7]='a';c[8]='g';c[9]='e';字符串在内存中存放时,系统将自动在字符串的末尾添加一个字符用的结束标记'\0'(空字符),碰到第一个‘\0'就认为字符串处理结束。系统对字符串常量自动加'\0'用字符串给字符数组初始化charst[]="welcome”;数组长度为8,字符串长度为7。等价于charst[8]={'w','e',T,'c','o','m','e',''0'};字符数组的输入输出逐个输入输出main(){inti;chara[10];for(i=0;i<10;i++)scanf("%c”,&a[i]);for(i=0;i<10;i++)printf("%c",a[i]);}3、整体输入/输出main(){chara[30];scanf("%s",a);printf("%s\n",a);}不能写scanf("%S',a[0]);输出字符不包含‘\0'用"%S’格式符时,输出项是数组名,而不是数组元素。输入项为数组名时,前面不要再加“&”。当数组长度大于字符串实际长度,也只输出到遇‘\0'结束。如:charc[10]={“well”};printf("%S,c);如果一个字符数组中有多个‘\0',则遇到第一个‘\0'输出就结束。利用scanf输入多个字符串,以空格分隔。如:charc1[5],c2[5],c3[5];scanf("%s%s%s,c1,c2,c3);输入howareyou?(回车)注意:scanf函数不能完整地读入带空格的字符串。例如上例改为:charc[13];scanf(%/os,c);如果输入howareyou!4、字符串处理函数字符串的输入gets(字符数组)格式:gets(ch)功能:从终端输入一个字符串到字符数组ch中,输入回车键时结束,并将回车符'\n'转换成'\0',其中ch只能是一个字符数组名。字符串的输出puts(字符数组)格式:puts(ch)功能:向终端输出字符串,并将‘\0'转换成'\n'输出,其中ch可以是某个字符数组名,也可以是一个字符串常量。#include“stdio.h"main(){charc[30];puts("pleaseenterastring");gets(c);puts(c);)字符串的连接函数strcat()格式:strcat(ch1,ch2);功能:将ch2复制到chi的后面,连接时先将chi的‘\0'去掉,连接后在新字符串后补上‘\0'。要求chi必须是一个足够大的字符数组,ch2可以是字符串常量或字符数组名。例如:charstr1[19]={"Programming"},str2[]={"Design"};strcat(str1,str2);puts(strl);字符串的复制strcpy(字符数组1,字符串2)格式:strcpy(ch1,ch2)功能:将ch2中的字符串复制到ch1字符数组,限定ch1为字符数组名,ch2可以是字符串常量或字符数组名。例如:charstr1[11];strcpy(str1,“China");printf("%《,str1);又如:charstr1[]={"Clanguage"};strcpy(str1,“China");printf("%《,str1);说明:ch1必须定义的足够大拷贝时'\0'一起拷贝过去不能用赋值语句将一个字符串常量或字符数组赋给一个字符数组。如:str1="china”;str1=str2;可以将字符串2前面的n个字符拷贝到字符数组1中,如:strcpy(ch1,ch2,2);字符串的比较strcmp()格式:strcmp(ch1,ch2)功能:对chi和ch2所对应的字符串从左到右进行比较(比较字符的ASCII码值的大小),第一个不相等的字符的大小决定了整个字符串的大小,若chi和ch2的所有字符完全相同,则chi等于ch20ch1=ch2函数返回0ch1<ch2函数返回一个负整数ch1>ch2函数返回一个正整数说明:对两个字符串比较,不能用if(ch1==ch2)printf(“yes”);只能用if(strcmp(ch1,ch2)==0)printf(“yes”);求字符R长度的strlen()格式:strlen(ch)功能:返回ch的有效字符的个数,不包括'\0',其中ch为字符数组名或某个字符串常量。字符串大小写转换strlwr()格式:strlwr(ch);功能:将ch中所有的大写字母转换成小写字母。字符串大小写转换strupr()格式:strupr(ch);功能:将ch中所有的小写字母转换成大写字母。5、二维字符数组charstr[3][30];相当于三个一维字符数组,可以存放三个字符串引用for(i=0;i<3;i++)gets(str[i]);for(i=0;i<3;i++)puts(str[i]);初始化charstr[3][30]={"China“,"Japan“,"Korea"};chara[3][20]={"abcdefg","0123456789,"XYZLMN};1)puts(a[2]);2)for(i=0;i<3;i++)puts(&a[i][i]);3)scanf("%s,&a[1][5]);puts(a[1]);键盘输入:aaa4)scanf("%c,&a[1][5]);puts(a[1]);键盘输入:aaa字符数组应用举例例输入一行文字,找出其中大写字母,小写字母,:其它字符各有多少?程序如下:#include"stdio.h"#include"string.h"main(){inti,up=0,low=0,space=0,digit=0,other=0;charstr[60];puts("pleaseenterastring:");gets(str);for(i=0;str[i]!='\0';i++){if((str[i]>='A')&&(str[i]<='Z'))up++;elseif((str[i]>='a')&&(str[i]<='z'))low++;elseif(str[i]=='')space
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 33223-2024轧制设备术语
- Target-Protein-Ligand-Linker-Conjugates-4-生命科学试剂-MCE-5926
- 1-2-Dihexanoyl-sn-glycero-3-PS-sodium-生命科学试剂-MCE-8684
- 二零二五年度离婚协议书中共同财产清算起诉状
- 2025年度电力市场交易购售电合同
- 二零二五年度大型赛事活动合作2025年度营销合同
- 二零二五年度私人住宅装修质量与安全双保障协议
- 2025年度离婚子女债务偿还与财产分割执行协议
- 2025年度烟酒企业社会责任履行与公益合作合同
- 二零二五年度文化创意产业银行担保协议
- 反走私课件完整版本
- 四年级下册数学知识点总结
- 第三届全国石油工程设计大赛作品(油藏工程设计单项)
- (人卫版第九版传染病学总论(一))课件
- 压力性损伤护理质控细则及集束化管理措施
- 《批判性思维原理和方法》全套教学课件
- 产后康复-腹直肌分离
- 丙烯-危险化学品安全周知卡
- 粉条加工厂建设项目可行性研究报告
- 《配电网设施可靠性评价指标导则》
- 2024年国家电网招聘之通信类题库附参考答案(考试直接用)
评论
0/150
提交评论