一语法.ppt

上传人:本田雅阁 文档编号:2660594 上传时间:2019-05-01 格式:PPT 页数:35 大小:226.01KB
返回 下载 相关 举报
一语法.ppt_第1页
第1页 / 共35页
一语法.ppt_第2页
第2页 / 共35页
一语法.ppt_第3页
第3页 / 共35页
一语法.ppt_第4页
第4页 / 共35页
一语法.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《一语法.ppt》由会员分享,可在线阅读,更多相关《一语法.ppt(35页珍藏版)》请在三一文库上搜索。

1、一、语法,标识符: 由字母、数字和下划线三种字符组成,且必须以字母或下划线开头。 关键字不能作为用户定义的标识符。 用户定义标识符: 合法: char2 _abc a3 P1 max 等 不合法: int p.i break 3a a+b等 常量: 合法: n 102 0 t 2L 72等 不合法: ABC 1.2e0.5 M 等 基本数据类型 :整型、实型、字符型,(一)运算符和表达式: 1. 结合性及优先级 (p16) 例: a+=a*=2 a+=(a=a*2) a=a+(a=a*2) 若初始情况下a=3,则执行上述运算后a=?,12,2. 对操作数的要求 (1) (i+j)+, 3+ (

2、) +,- - 只能对变量操作 (2) a%b %两边的操作数必须为整型 (3) a,b若为整型,则a/b为整除 1/5 结果为0 1.0/5 结果为0.2 (4) 赋值号的左边只能是变量名或数组元素名 x+y=3 () sqrt(4)=2 () s=s+i ( ) (5)数值型和字符型在一定范围内可通用 char c=a; printf(“%c %dn”,c+1 ,c+1); (b 98),3. 用逻辑表达式表达某个命题 如: ch=0&ch=a&x=100&x1000 x是一个3位整数 x是一个3位整数,其十位数为:x/10%10 或 x%100/10,有定义:int a=1,b=3;fl

3、oat x=2.5; 则以下那些是合法的表达式? a+1=a+1 () + (a*b) () sqrt(16)=4 () a+=1 a=a+b a= =a+b a=x%b () x=(int)x%b; x=10/3%5 x=x/2 a=b+ a=+b,已知 a=b =1; 则执行语句 a- 后a、b的值? (0,1),4. 初始化与赋值 错误: int a=b=c=0; int a,b,c=0; 应为: int a=0,b=0,c=0; 或: int a,b,c; a=b=c=0; 5. 数据输入和输出 (函数scanf ,printf,getchar(),putchar() ) (1)数据如

4、何输入 设:int a,b; char c,d; scanf(“ %d%d“,(2)数据输出 printf(“a=%d , b= %d“,a,b); printf(“c=%c , d= %c“,c,d); putchar(c); putchar(d); c为字符型变量,哪个是正确的语句 ? c=abc; c= n ; () c=“abc“; c= 0; () c=“101”; c= 101; (),how do you do,6. 语句: (1) if语句的几种形式 if( )语句; if( )语句1;else 语句2; if( ) 语句1; else if ( ) 语句2; else (2)

5、 switch语句中适当的地方加break退出 switch(a%5) case 0: printf(“%d ”,a+); case 1: printf(“%d ”,+a); case 2: printf(“%d ”,a-); case 3: printf(“%d ”,-a); 若a=2,则输出: (直接输出2 0,在哪里加break都不行啊),2 0,int a=3; if(a)a=5; if(a!=0) a=5 if(!a)a=5; if(!(a!=0)a=5 if (a3) x=1; else x=0;,(3) 循环: do _while 先执行后判断,至少执行一次 for ,while

6、 先判断后执行,可能一次也不执行 main() int i,s=0; for(i=1;i0;i-=2)s+=i; printf(“%dn”,s); ,8,9,main() int i,s=0; for(i=1;i=10;i+) if(i%3=0)break; s=s+i; printf(“%dn”,s); ,main() int i,s=0; for(i=1;i=10;i+) if(i%3=0)s=s+i; printf(“%dn”,s); ,3,18,以下程序段中循环执行的次数是( ) int k=1; while(k=2) k+;(D) int i,k=0; for(i=0;i!=k;i-

7、)k+; (D) A.无限次 B.有语法错,不能执行 C. 1次 D. 0 次,int k=3; while(k=0) k+; (D),注意:运算符“=”与“=”,break语句用于退出本层循环及退出switch语句,7. 数组 数值型 a. 定义、初始化 int a10=1,2,3,4; int a=1,2,3,4; int n=5,an; () b. 输入、输出 int a10; 输入: for(i=0;i10;i+) scanf(“%d”, ,注意:与 gets(c)函数的区别,字符型 a. 定义、初始化 char a20= “ abcdefg “; char a=“ abcdefg “

8、; 输入、输出 char a20; 输入: scanf(“%s”,a); 若输入how do you do 则c的值? gets(a); 输出: printf(“%s”,a); how do you do printf(“%s”,a+3); do you do puts(a); how do you do,二维数组: int a33=1,2,3,4,5,6;则元素a10的值?(4),8. 指针 (1) 指针和变量 int a=5,*p=的结果为( )。 4 p-p1的值?2,(3) 字符指针 有定义char s =“abcdefgh“,*p=s; 则执行printf(“%s”, p+3); 后

9、输出结果? 执行printf(“%c”,*( p+3); 后输出结果?,defgh,d,char s8; s= “Hello“; () char *s; s=“Hello“; () char *s; s=“Hello“;,以下定义语句,错误的是( ) char a10=1,5,9,*p=a; char a10,*p=a; int n,an=10; () char a=”1234567”,*p= (),9. 函数 定义形式: 返回值类型,形式参数说明位置,返回语句 调用: 函数名(实在参数表); 以语句或表达式的形式调用 说明:位置,形式 函数类型 函数名( ); 或: 函数类型 函数名(参数类

10、型表); 参数传递:原则 值传递-单向 (p119 程序2) 地址传递(数组名或指针变量)-参数本身单向传递,但指针变量所指内容或数组元素的改变是双向的 P109 例6.4 p112 对例6.4的调用,函数定义: int f(int x, int *y) 调用: k=fun(1, ,void f(int x, int *y) 调用: fun(1,int f(int x, int *y) 调用: int x10; k=fun(x,例:,void swap(int x,int y) int temp; temp=x; x=y; y=temp; main() int a,b; scanf(“%d%d

11、“, ,void fun(char *a) *a=*a+1; main() char c1=A, *p1; p1= B ,10. 变量的作用域和存储类别 (1) 静态变量和动态变量: 静态变量只初始化一次, 缺省值为0或0 。 而动态变量每调用一次函数,便初始化一次。缺省值为随机值。 test() int i=1;static int j=1; i+;j+; printf(“i=%d,j=%dn“,i,j); main() test(); test(); ,i=2,j=2 i=2,j=3,(2) 全局变量和局部变量 当全局变量和局部变量同名时,局部变量起作用。 int m=10; void a

12、(int n) n=15/n;m=m/2; main() int n=3; a(n); printf(“n=%d,m=%dn“,n,m); ,n=3,m=5,三、结构体 结构类型的定义、初始化、成员的引用。 如: struct student long no; char name20; float score; s=123456L,”zhang san”,88,*t= 错误,四、文件 文件的打开、字符读写与块读写。 (1)文件的打开方式 如:“ r“ 、“ rb“ 、 “ w“ “ wb“ (2)文件指针指向一打开的文件 #include “ stdio.h “ FILE *fp; fp=fo

13、pen(“ c:a.dat “, “ wb “) (3)字符读写与块读写函数的用法 fgetc函数、 fputc函数 fread函数、fwrite函数,例:从键盘输入一字符串,将小写字母转换成大写字母, 然后保存在test.dat文件中。 #include “stdio.h“ main() FILE *fp; char str100; int i=0; if(fp=fopen(“test.dat“,“w“)=NULL) printf(“Can not open the filen“); exit(1); printf(“Input a string:n“); gets(str); while(

14、stri!= 0) if(stri= a ,二、算法 计算分段函数 最大值、最小值 计数、求和、文本统计 级数求和 素数、最大公约数 穷举法 7. 排序 8. 统计字符串的长度、复制、连接、大小写转换 9. 数据的插入、删除、二分法查找,if (x1) y=1; else if(x=0) y=0; else y=-1;,部分算法举例分析:,main() int i,n,max,min,a100; scanf(“%d“, ,2.,int findmax(int a,int n) int i,max; max=a0; for(i=1;imax)max=ai; return max; ,3. 计数、

15、求和、文本统计,统计整型数组中偶数的个数。 main() int a10,i,count=0; for(i=0;i10; i+) scanf(“%d”, ,统计小写字母的个数。 #include “stdio.h “ main() char ch,sum=0; while(ch=getchar()!= n) if(ch=a ,4. 级数求和 计算:s= 1+1/2!+1/3!+1/n! main() int i,n; float t=1,s=0; scanf(“%d”, , float fun( int n) int i,n;float t=1,s=0; for(i=1; i=n; i+) t

16、=t/i; s=s+t; return s; main() scanf(“%d”, ,最大公约数、最小公倍数 int gcd(int m,int n) int h; while(h=m%n) m=n;n=h; return (n); main() int x,y,g1,g2; scanf(“%d%d”, ,5. 素数 int isprime(int m) int i; for(i=2;m%i!=0;i+); return(i= =m); main() int k,s=0; for(k=100; k200;k+) if(isprime(k) s=s+1; printf(“%d”,s); ,6.

17、穷举法,鸡兔同笼,共有30个头,90只脚,求鸡兔各有多少? main() int m; for(m=1;m30;m+) if(m*2+4*(30-m)=90) printf(“%d chickens and %d hares“,m,30-m); 编一个程序,求出方程x2+2x=y3 (其中1=x=100; 1=y=100)的所有整数解。 main() int x,y; for(x=1;x=100;x+) for(y=1;y=100;y+) if(x*x+2*x=y*y*y) printf(“x=%d,y=%dt“,x,y); ,void sort(int x,int n) int i,j,k,

18、w; printf(“x=%pn“,x); for(i=0;ixj)k=j; if(i!=k) w=xi;xi=xk;xk=w; ,main() int n,a10,i; printf(“a=%pn“,a); scanf(“%d“, ,7. 排序,冒泡法排序 for(i=0;iaj+1) temp=aj;aj=aj+1;aj+1=temp;,8.字符串 (1) 求长度 strlen函数 long len(char s) long i=0; while(si!=0)i+; return i; (2) 复制 strcpy函数,#include “stdio.h“ main() char s180,

19、s280; int i; gets(s1); for(i=0;s1i!=0;i+) s2i=s1i; s2i=0; puts(s2); ,连接 #include “stdio.h“ main() char s180,s280; int i,j; gets(s1); gets(s2); for(i=0;s1i!=0;i+); for(j=0;s2j!=0;j+) s1i+j=s2j; s1i+j=0; puts(s1); ,(4) 大小写转换 #include “stdio.h“ main() char s80; int i; gets(s); for(i=0;si!=0;i+) if(si=A

20、 ,(5) 字符串逆序存放、回文,#include “stdio.h“ #include “string.h“ main() char s180,s280; gets(s1); strcpy(s2,s1); n=strlen(s2); for(i=0;in/2;i+) t=s2i; s2i=s2n-i-1; s2n-i-1=t; if(strcmp(s1,s2) printf(“yes“); else printf(“no“); ,9. 数据的插入、删除 for(i=0;i=i;j-) aj+1=aj; ai=key;,for(k=0;k10;k+) if(key=ak)break; for(j=k;j9;j+) aj=aj+1;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1