《C语言讲解思路资料》由会员分享,可在线阅读,更多相关《C语言讲解思路资料(10页珍藏版)》请在人人文库网上搜索。
1、C语言讲解思路1,认识C语言的组成: #in elude main ()printf(Hello, worldn);构成:包含预定义文件、函数体、主函数 一个C程序有且只有一个 main函数 2, printf 函数 prin tf(Hello, worldn ”); printf( %d,%d”a,b)3, scanf 函数 scanf( %d,%d ,&a,&d); scanf( %d %d,&a,&d);定义的格式即为输入的格式 &符号必需,取地址。格式字符意义d以十进制形式输出o以8进制形式输出x, X以16进制形式输出u以16进制形式输出f以小数形式输出e,E以指数形式输出c输出单个。
2、字符s输出字符串4,变量定义与赋值int a;int a,b,c;int a = 0;int a = 0,b=0;数据类型类型说明符字节数值范围字符型char1整形int2-32768-32767短整形short int2-32768-32767长整形long int4-214783648-214783647单精度实型float43/4E-38-3/4E+38双精度实型double81/7E-308-1/7E+3085, 常量 常量:在程序执行中其值不改变就叫常量 变量:在程序执行过程中值会发生变化 在 C 语言中常量可直接拿来使用,如 x= y*10 ;10 就是常量字符常量是用单引号括起来。
3、的一个字符。例如a,b,=,+, ?都是合法字符常量。字符串常量用双引号括起来的一个字符串,如“abcdef”。但“a”占2个字节, a占一个字节 数字常量直接写就可以, 5和 5 是不同的, 5 可参加运算, 5不可常量也可用来定义(荐)#define PI 3.14159 void main()float s,r;r=5;s=PI*r*r; printf(s=%fn,s);6, 转义字符转义字符是一种特殊的字符常量。转义字符以反斜线 开头,后跟一个或几个字符。转义 字符具有特定的含义, 不同于字符原有的意义, 故称 “转义 ”字符。 例如, 在前面各例题 printf 函数的格式串中用到的。
4、“n”就是一个转义字符,其意义是回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。常用的转义字符及其含义转义字符 转义字符的意义n回车换行t横向跳到下一制表位置v竖向跳格b退格r回车f走纸换页反斜线符 单引号符a鸣铃ddd13位八进制数所代表的字符xhh12位十六进制数所代表的字符 7, 强制类型转换其一般形式为:(类型说明符 ) (表达式 )1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把 (int)(x+y) 写成 (int)x+y 则 成了把 x 转换成 int 型之后再与 y 相加了。2.无论是强制转换或是自动转换, 都只是为了本次运算的需要而对变量的。
5、数据长度进行的临 时性转换,而不改变数据说明时对该变量定义的类型。main()float f=5.75;printf(int)f=%d,f=%fn,(int)f,f);f、 =、 =、 (右移)赋值运算符: =、+=、-=、*=、/=、%=&=|= A= =LPCSTR(Pointer to a constant null-terminated string of 8-bit Windows (ANSI) Characters.) 指向以 null 结尾的常量字符串的指针 自增自减 :+i/-i:i 自增(减) 1 后参与其他运算i+/i-:i 参与运算后在增加或减 1 x = + I (I 。
6、= I +1 ; x = i) x=i+ (x=I, I = i+1)例子: 赋值表达式+=,-=,*=,/=,%=,=,&=,A=,|=X-=10 X= x-10逗号表达式1,再求解表达式 2,一直到最后,最终的表达式结逗号表达是的求解过程是先求解表达式 果是最后一个表达式的值。X= ( 1+2, 3+5) 结果 x=7X= (y=3 , 4*5) 结果 y=3, x=20优先级及结合性优先级运算符类型运算符结合性1基本运算符()-自左至右2单目运算符! + -(负数)*(指针)& (取址)sizeof自右至左3算术运算符* / %自左至右4算术运算符+ -自左至右5移位运算符自左至右6关系。
7、运算符 = = b)prin tf(max=%dn,a);elseprin tf(max=%dn,b);if(表达式1)语句1;else if( 表达式2)语句2;else if( 表达式3)语句3;else if( 表达式m)语句melse语句n;#i ncludestdio.hvoid mai n()char c;prin tf(i nput a character:);c=getchar();if(c=0&c=A &c=a&cvoid mai n()int n=0;prin tf(i nput a stri ng:n);while(getchar()!=n) n+;prin tf(%d,。
8、 n);do语句;while(表达式);for(表达式1;表达式2;表达3)表达式1通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。表达式2通常是循环条件,一般为关系表达式或逻辑表达式。表达式3通常可用来修改循环变量的值,一般是赋值语句。这三个表达式都可以是逗号表达式,即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。void mai n()int n, s=0;for(n=1; *=100; n+)s=s+n;printf(s=%dn,s);各语句间可以相互嵌套。10,转移语句GotoContinue;BreakRet。
9、urn练习 211,数组一维数组 a20 (a0a19) (a0,a1,a2,a3,a4,a5,a6,a7,a8,a9) 二维数组 a1010 (a00a99)AOO, a01,a02a09A10,a11,a12a19,A90,a91,a92a99定义:一维: int a10; char bc9;二维: int a1010; float bf23赋值:一维: a10=1,2,3,4,5,6,7,8,9,10 二维: a23 = 1,2,3,4,5,6a23 = 1,2,3,4,5,6b10= I, ,a,m, ,a, , b, o, y b10= “Iam a boy ”没有赋值的会自动赋值为。
10、0.,或为空, NULL 。字符性如果长度和定义相同,赋值时可省略长度。操作:Scanf(“%s”,a); /输入遇空格、 Tab、Enter 标志结束Scanf(“%c”,&a3)Printf (“ %d”, a5);Printf( “%s”,a)main()int a23=1,3,5,2,4,6;int b32,i,j;for(i=0;i2;i+)for(j=0;j3;j+) bji = aij; for(i=0;i3;i+) for(j=0;j2;j+) Printf (“ %d”,bij );Printf( “n”);getch();字符串的函数:puts(字符串数组)将字符串输出到终。
11、端 gets(字符串数组)从终端得到字符串 strcat(字符串数组1,字符串数组2)连接两个字符串 strcpy(字符串数组1,字符串数组2)将字符串2拷贝到字符串1 strcmp(字符串数组1,字符串数组2)比较字符串1和字符串2,相等为0,字符串1 大为 1 ,小为 -1strlen(字符串数组)测试字符串的长度 strlwr( 字符串 ) 将大写字母换成小写字母 strupr(字符串)将小写字母换成大写字母12, 指针 运算符: *&定义:int *p; char *p; float *p; int a ;含义:*p:实际的变量,等同于a(变量),a0( 维),a00(二维)P:等同于。
12、&a(变量),a (一维),a 0(二维)&p:等同于& ( &a)(变量),&a (一维),a (二维)赋值:*p = 5;P=&a;P = a;X 操作 :*p=ap=5 ; X*p+1p+1*(p+1)a+1(变量)a10+1( 维)&a+1 (变量)a+1= &a1( 一维)a113,文件定义:FILE *fp;函数:打开:fopen (文件名,模式)例:fopen( d:filefile1.txt ”;文件的使用方式文件的使用方式含义备注“”(只读)为输入打开一个文本文件:不能打开不存在的文件“W ” (只写)为输出打开一个文本文件右原文件不存在,可新建。右原来 的文件存在,则覆盖“。
13、 a” (追加)向文本文件尾增加数据:在原文件末尾添加数据“rb ” (只读)为输入打开一个二进制文件“wb ” (只写)为输出打开一个二进制文件“ ab” (追加)向二进制文件尾增加数据“r+” (读写)为读/写打开一个文本文件“W+”(读写)为读/写新建一个文本文件“ a+ ”(读写)为读/写打开一个文本文件“rb+ ” (读写)为读/写打开一个二进制文件“wb+ ”(读写)为读/写新建一个二进制文件“ ab+” (读写)为读/写打开一个二进制文件关闭:fclose (文件指针)文件读写:读写一个字符:ch=fgetc(fp) fputc(ch,fp)读写字符串:fgets(str, n,。
14、fp) fputs(str,fp);读写一个整数:i=getw (fp) putw (10, fp)读写数据块:fread (buffer,size,count,fp );fwrite(buffer,size,co un t,fp);读写任意类型的若干数据:fprintf(fp, %d%f”,t);/写fscanf(fp, ”d”,&i)/ 读取文件状态:feof(fp)测试文件指针是否指向文件末尾,是返回1,否返回0ferror(fp) /文件读写未出错返回0,出错返回非 0clearerr (fp)/使 ferror(fp)的值为 0文件定位:rewind(fp) /定位到文件头fseek( fp,100L,0)将文件指针移动到 100行14,函数嵌套#define swap(a,b) a=a+b;b=a-b;a=a-b;void main()int x=5, y=10; swap (x,y);printf( “%d n%”d ,x,y); swap2(x,y);int swap2(int a, int b) int temp; temp=b; b=a; a=temp; printf( “%d n%”d ,a,b); return 0;Swap 函数用宏定义的方式,只是简单的代替。参数是直接代替。 Swep2 用函数调用 ,参数传递是数值拷贝。