下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言笔记注意 :在 C 语言中,关键字都是小写的。C 语言简洁、紧凑,使用方便、灵活。 ANSI C 一共只有 32 个关键字 : auto break case default char const continuedo whiledoubleelseenumexternfloatforgoto ifintlongregisterreturnshortsigned unsignedstaticvoidsizofvolatilestructswitchtypedefunion9 种控制语句,程序书写自由,主要用小写字母表示,压缩了一切不必要的成分。 Turbo C 扩充了 11 个关键字:a
2、sm _cs _ds _es _ss cdecl far huge interrupt near pascal#define八进制以 0开头,如 0123,即(123)8 十六进制以 0x 开头 ,如 0123,即(123) 16 整型 : 一个正数的补码和其原码形式相同 ,如 10 得 0000000000001010一 个 负 数 的 补 码 是 取 -10 的 绝 对 值 10, 对 10 的 二 进 制 形 式 取 反 加 1,1111111111110101+1=1111111111110110Signed int unsigned int short long charfloat
3、单精度double 双精度 ,long double%d, %o,%x,%c,%s, 一个整常量后面加一个字母 l 或 L,则认为是 long intmain() / main 是主函数的函数名,表示这是一个主函数。printf(" 世界,您好! n"); / printf 函数的功能是把要输出的内容送到显示器去显示#include<math.h> / include 称为文件包含命令#include<stdio.h> main()double x,s;/定义两个实数变量,以被后面程序使用printf("input number:n&quo
4、t;);/ 显示提示信息scanf("%lf",&x);/从键盘获得一个实数xs=sin(x);/求 x 的正弦 ,并把它赋给变量 sprintf("sine of %lf is %lfn",x,s); / 显示程序运算结果 在本例中,使用了三个库函数:输入函数scanf ,正弦函数 sin,输出函数 printf 。sin 函数是数学函数,其头文件为 math.h 文件scanf 和 printf 是标准输入输出函数,其头文件为 stdio.h语言规定,源程序中所有用到的变量都必须先说明,后使用C 语言规定对 scanf 和 printf 这两
5、个函数可以省去对其头文件的包含命令由于 sin函数要求这两个量必须是双精度浮点型, 故用类型说明符 double 来说明这两个变量scanf 和 printf 这两个函数都由以下两部分组成: “格式控制串 ”,参数表 格式控制串是一个字符串,必须用双引号括起来 ,它表示了输入输出量的数据类型 printf("sine of %lf is %lfn",x,s);其中%lf 为格式字符,表示按双精度浮点数处理。它在格式串中两次现,对应了x和 s两个变量。其余字符为非格式字符则照原样输出在屏幕上。在程序的每行后用 /*和 */括起来的内容为注释部分,程序不执行注释部分。int m
6、ax(int a,int b);/* 函数说明 */main()/* 主函数 */int x,y,z;/* 变量说明 */int max(int a,int b);/* 函数说明 */printf("input two numbers:n");scanf("%d%d",&x,&y);/* 输入 x,y 值 */z=max(x,y); /* 调用 max 函数 */ printf("maxmum=%d",z); /* 输出 */int max(int a,int b) /* 定义 max 函数 */if(a>b)
7、return a;else return b; /* 把结果返回主调函数 */从书写清晰,便于阅读,理解,维护的角度出发,在书写程序时应遵循以下规则:1. 一个说明或一个语句占一行。2. 用 括起来的部分,通常表示了程序的某一层次结构。 一般与该结构语句的第一个字母对齐,并单独占一行。3. 低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更 加清晰,增加程序的可读性。空白符 : 空格符、制表符、换行符等统称为空白符在语言中使用的词汇分为六类: 标识符, 关键字, 运算符, 分隔符, 常量,注释符等。1. 标识符 ( 在程序中使用的变量名、函数名、标号等统称为标识符)C
8、规定,标识符只能是字母 (A Z, az)、数字 (09)、下划线 (_)组成的字符串,并且 其第一个字符必须是字母或下划线。(1) 标准 C 不限制标识符的长度,但它受各种版本的C 语言编译系统限制,同时也受到具体机器的限制。(2) 在标识符中,大小写是有区别的。(3) 标识符虽然可由程序员随意定义,但标识符是用于标识某个量的符号。因此,命名应 尽量有相应的意义,以便于阅读理解,作到 “顾名思义 ”。2. 关键字 ( 关键字是由语言规定的具有特定意义的字符串,通常也称为保留字。用户定 义的标识符不应与关键字相同 )(1) 类型说明符 : 如前面例题中用到的 int,double 等(2) 语
9、句定义符 : if else 就是条件语句的语句定义符(3) 预处理命令字 : include3. 运算符 :4. 分隔符 : 在语言中采用的分隔符有逗号和空格两种5. 常量 : C 语言中使用的常量可分为数字常量、字符常量、字符串常量、符号常量、转 义字符等多种。6. 注释符 : C 语言的注释符是以 “ /*开”头并以 “ */结”尾的串#define PRICE 30 /*#define 定义 PRICE 代表常量 30*/ PRICE 是符号常量 习惯上 符号常量 用大写 ,变量 用写小写例如:整型变量 a和 b,可以进行求余运算 : a%b (%是求余符号 ) 若指定 a和 b为实型
10、变 量,则不允许进行 ”求余 ”运算.整型八进制以 0开头的数是八进制 .如 0123表示八进制 123,即(123)8, 其值为 1X82+2X81+3X80 十六进制以 0x 开头的数是十六进制 .如 0x123 表示十六进制 123,即 (123)16, 其值为 2101X16 2+2X16 1+3X16 0在 C 编译系统 ,每一个整型变量在内存中占 2 个字节 .实际上 ,数值是以补码表示的 .一个正数的补码和其原码的形式是相同.而负数的补码是将该值的绝对值的二进制形式 ,按位取反再加 1.例如:求-10 的补码 ,取-10 的绝对值为 10,然后 10 的二进制为 1010,对 1
11、010(00000000 00001010) 取反 ,11111111 11110101一, 共占 16 个字节 , 再加 1为 11111111 11110110整数的 16位中 ,最左面的一位是表示符号 ,该位为 0表示数值为正 ,该位为 1则数值为负 Signed int 有符号 -32768-32767 unsigned int 无符号 0-65535short int 短整型 long int 长整型 . 不一样的微机 ,位数是不一样的 . 整型 int%d ,%0, %x实型 float double%f字符型 char 一个字符变量在内存中占一个字节%cPrintf(n”,a,b
12、,c);ddd : 1 到 3位 8进制数所代表的字符如:101(八进制)为 65(二进制)的字符 ”A”注意:”0”或”000”是代表 ASCII 码为 0的控制字符 ,即”空操作 ”字符.它将用在字符串中 .xhh :1 到 2 位 16 进制数所代表的字符n :换行,将当前位置移到下一行开头 , ASCII 代码为 10(十进制 )t :水平制表 (跳到下一个 tab位置),制表区占 8列, ASCII 代码为 9(十进制 )b :退格,将当前位置移到前一列 , ASCII 代码为 8(十进制)r : 回车 ,将当前位置移到本行开头 , ASCII 代码为 13( 十进制 )f :换页,
13、将当前位置移到下页开头 , ASCII 代码为 12(十进制 ) :反斜杠字符 ”, ASCII 代码为 92(十进制 )' :单引号 (撇号)字符, ASCII 代码为 39(十进制)” :双引号字符 , ASCII 代码为 34(十进制 )字符串常量a'是字符常量 (是用一对单引号括起来的 ), ”a”是字符串常量 (是用一对双引号括起来的 )C 规定在每一个字符串的结尾加一个 ”字符串结束标志 ”,是以字符 '0 '作为字符结束标志 从 ASCII 代码表中可以看到 ASCII 码为 0 的字符是 ”空操作字符 ”各类数值型数据间的混合运算如字符数据必定先
14、转换为整数 ,short 型转换为 int 型,float 型数据在运算时一律先转换 成双精度型,即是二个全是 float 型也要先转换成 double 型.Char shortl int unsigned long double float运算符优先级和结合性级别类别含义运算符结合方向1强制转换、数组、 结构、联合圆括号( )自左至右下标运算符 指向结构成员运算符或 结构体成员运算符-> 或2逻辑逻辑非!自右至左 (单目运算符)字位按位取反增量自增(加一)+减量自减 (减一 )-指针地址与运算符 ( 取地址 )&指针运算符 ( 取内容 )*算术负号运算符 (单目减 )-长度计算
15、长度计算sizeof3算术乘*自左至右( 双目运算符 )除/求余(取模)%4算术和指针运算加+减-5字位左移<<右移>>6关系大于等于>=大于>小于等于<=小于<7等于( 恒等于)=不等于!=8字位按位与&9按位异或10按位或|11逻辑逻辑与&&左结合 双目运算符12逻辑或|13条件条件运算?:14赋值赋值=复合赋值+=*=/=%= <<=&=15逗号逗号运算右结合强制类型转换运算符(double)a 将 a 转换成 double 类型(int)(x+y) 将 x+y 的值转换成整形 , 如果写成 (i
16、nt)x+y 则只将 x 转换成 int 型 , 然后与 y 相加 (float)(5%3) 将 5%3的值转换成 float 型说明: 在强制转换时 ,得到一个所需的类型的中间变量 ,原来变量的类型未发生变化 . 求余“ %”运算符要求其两侧均为整型量 ,float x ,则 x%3是不合法 ,必须(int)x%3自增自减运算符 ( 只能用于变量 ,不能用于常理和表达式 )+i 是在使用之前先使 i 的值加 (减)1 若 j=+i; i=3; printf(“%dn”,+j) 为 4i+ 是在使用之后使 i 的值加(减)1若 j=i+; i=3; printf(“%dn”,j+) 为 3-i
17、+ 中, 其中 - 为负号运算和 +为同优先级 ,而结合方向是自右至左 ,所以相当于 -(i+)(1) 控制语句C 语言 9 种控制语句 :1 、 if()else (条件语句 )2、 for()( 循环语句 )3、while()(循环语句 )4、dowhile() ( 循环语句 )5、continue(结束本次循环语句 )6、break(中止执行 switch 或循环语句 )7、switch(多分支选择语句 )8、goto(转向语句 )9、return(从函数返回语句 )上述括号 () 表示其中是一个条件 , 表示内嵌的语句例 :if(x>y) z=x; else z=y;(2) 函数
18、调用语句 : printf( “ This is a C statement.n” );(3) 表达式语句 : a=3;( 一个赋值表达式 )(4) 空语句 : ; ( 即只有一个分号语句 )(5) 复合语句 : z=x+y; t=z/100; printf(“%fn ” ,t);输入输出函数#include <stdio.h> 或“ stdio.h ” /* 头文件 stdio.h*/Scanf() 输入函数 printf() 输出函数 是系统提供的标准函数 #include( 预编译命令 )Putchar( 输出字符 )getchar( 输入字符 )Printf( 格式输出 )
19、scanf( 格式输入 )Puts( 输出字符串 ) gets( 输入字符串 )c 语言中 include 后用引号与尖括号的区别使用尖括号的话,编译时会先在系统 include 目录里搜索,如果找不到才会在源代码所在目录搜索; 使用双引号则相反, 会先在源代码目录里搜索。 这就意味着,当系统里(如 /usr/include/里)有一个叫做 math.h 的头文件,而你的源代码目录里也有一个你自己写的 math.h 头文件,那么使用尖括号时用的就是系统 里的;而使用双引号的话则会使用你自己写的那个。所以建议: 使用系统里提供的头文件时使用尖括号 使用自己编写的头文件时使用双引号 输出单个字符:
20、 include <stdio.h>Main() char a,b,c;a= B' ; b= O' c=Y' ;putchar(a); putchar(b); putchar(c);也可以输出转义字符如 : putchar( 101 '); putchar( '' ); 输入单个字符:getchar() 函数没有参数 , 其一般形式为 getchar() 字符输入函数#include <stdio.h>main() char c;c=getchar();putchar(c);格式输入输出函数Printf( “%dn” ,x
21、);%d么按整型数据的实际长度输出%md么 m为指定的输出字段的宽度 ,如果数据的位数小于 m,则左端补以空格 , 若大于 m, 则按实际位数输出 . Printf( “ %4d,%4dn”,a,b); 若 a=123,b=12345则 a 输出结果为 : 空格 123 则 b 输出结果为 :12345%ld么输出长整型数据 若 long a=1356739;printf( “ %9ld” ,a); 则 a输出结果为 : 空 格空格 1356739%o是以八进制形式输出整数 .%x是以十六进制形式输出整数 .%u 用来输出 unsigned 型数据 ,即无符号数 ,以十进制形式输出 .%c用来
22、输出一个字符 .char a= 'w' ;printf( “ %c”,w);%s用来输出一个字符串 .printf( “%s” , ”CHINA” );%ms输出的字符占 m列 , 如字符串本身长度大于 m则突破 m的限制 , 全部输出字符串 , 若 串长小于 m,则左补空格 .%-ms如果串长小于 m则在 m列范围内 , 字符串向左靠 , 右补空格 .%m.ns输出占 m列,但只取字符串左端 n个字符 .这 n个字符输出在 m列的右端 ,左补空 格.%-m.ns输出占 m列, 但只取字符串左端 n 个字符 . 这 n 个字符输出在 m列的左端 ,右补空 格.n>m,则
23、m自动取 n值,即保证 n 个字符正常输出 .%f 用来输出实数 (单精度和双精度 ), 以小数形式输出 .%e以指数形式输出实数 , 输出数据所占的宽度和数字部分小数位数由系统自动指定给 出6位小数,指数部分占 5列(如e+002),其中e占一位,指数符号占一位 ,指数占 3位%g用来输出实数 , 它根据数值大小自动选 f 格式或 e 格式 .Scanf 输入函数 scanf( “ %d,%d,%d” ,&a,&b,&c)#include <stdio.h>main() int a,b,c;scanf("%d,%d,%d",&a
24、,&b,&c);/* 输入这三个数的时候” , ”逗号也要输的 .*/ printf("%d,%d,%dn",a,b,c);getch();若: scanf("%d%d%d",&a,&b,&c); 输入 a,b,c 三个数时 ,12 空格13空格 88Scanf( “ %3d%3”d ,&a,&b);输入 :123456, 系统自动把 123 赋给 a,456 赋给 bScanf( “ %3c” ,&ch);输入 :abc, 由于 ch 只能容纳一个字符 , 系统就把第一个字符' a
25、'赋给 ch如果 %后面有一个” * ”附加说明符 ,表示跳过它指定的列数 .如 :scanf( “ %2d %*3d %2d” ,&a,&b);输入 :12 空格 345 空格 67 回车 , 将 12 赋给 a,%*3d 表示读入 3 位整数但不赋给任何变量.然后再读入 2位整数 67赋给 b.第二组数据 345被跳过.在输入数据进 , 遇以下情况时数据认为结束 :1、遇空格,或按回车或跳格( ab)键;2、按指定的宽度结束,如“ d”, 只取列;3、 遇非法输入;例:输入三角形的三边长,求三角形面积 s=1/2(a+b+c) area= 根号 s(s-a) (s-
26、b) (s-c)Float a,b,c,area,s; scanf(“ %f,%f,%f ” ,&a,&b,&c);s=1.0/2*(a+b+c);Area=sqrt(s*(s-a)*(s-b)*(s-c);Printf( “a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn” ,a,b,c,s);printf(“area=%7.2fn ”,area);If 语句If 与 else 的配对关系 :else 总是与它上面的最近的 if 配对 .If 与 else 的数目一样时 , 采用If()main() int x,y;scanf(“%d” ,&am
27、p;x);if(x<0) y=-1;else if(x=0) y=0; else y=1;printf(“x=%d,y=%dn” ,x,y);If()ElseElseIf()Else语句 1语句 2语句 3语句 4If 与 else 的数目不一样时, 采用加花括号来确定getch();/* 能显示输出 */If()if()语句 1Else 语句 2 判断某一年是否闰年其中一种方法 main()int year,leap;printf("input year:"); scanf("%d",&year); if(year%4=0)if(year
28、%100=0) if(year%400=0) leap=1; else leap=0;else leap=1;else leap=0;if(leap) printf("%d yesn",year); else printf("%d no yearn",year); getch();/* 判断某一年是否闰年另一种方法 */ #include <stdio.h>void main()int year;printf("input year:"); scanf("%d",&year);if(year%4
29、=0)&&(year%100!=0)|(year%400=0) printf("%d yesn",year);else printf("%d no yearn",year);getch();条件运算符 (三目运算符 , 自右至左 ) main() int x,y,max;scanf("%d,%d",&x,&y);max=(x>y) ? x:y; /*如果 (a>b) 条件为真 , 则条件表达式取值 a, 否则取值 b*/* 输入一个字符printf("%dn",max);
30、 getch();/* 能显示输出 */, 判断大小写 , 如果是大写 , 转换成小写 , 并输出最后得到的字符 */Main() char ch;Scanf( “ %c”If(ch>= A'/* ch=(ch>=Else printf( getch();/* 能显示输出 */,&ch);&& ch<=Z') ch=ch+32; printf(“ %cn” ,ch); /* 去掉花括号将编译出错 */A'&& ch<= Z' ) ? (ch+32 ) :ch 也可以用条件运算符 */“%cn”,ch
31、);Switch 语句是多分支选择语句 Switch( 表达式 ) case 常量表达式 case 常量表达式的执行1:语句 1 ; break ;每一个 case 常量表达式的值必须互不相同2:语句 2 ; break ;执行一个分支后可以用一个 break 语句来终止 switch 语句表达式的值与某一个 case 后面的常量表达式的值相等时就执行 case 后面的语句case 常量表达式3:语句; break ; break ;default: 语句 n+1 ;最后一个分支 default 可以不加 break 语句。case 常量表达式n:语句Switch( 表达式) 表达式 的值为
32、A或 B或 C时都执行同一组语句caseA':caseB':caseC':caseD': printf( “>60n ” );break ;/* 求方程的解 */#include <stdio.h> /*输入输出函数要调用 , 也可以不写 */#include <math.h> /* 用到绝对值函数和开根号函数 , 所以要调用 */main()float a,b,c,disc,x1,x2,realpart,imagpart; /* scanf("%f,%f,%f",&a,&b,&c); /
33、* printf("the equation"); /*定义类型 */输入方程的三个数 */ 显示 the equation, 意思是方程 */if(fabs(a)<=pow(10,-6) printf("isnot a quadratic"); /* 对 a 求 绝 对 值 , 判 断a=0(fabs(a)<=le-6) 就不是二次方程 */else disc=b*b-4*a*c; /*计算 b*b-4*a*c 的值是等于还是小于还是大于 0*/if(fabs(disc)<=pow(10,-6) printf("has tw
34、o equal roots:%8.4fn",-b/(2*a); /*has two equal roots 是有两个相等的根的意思 , 这个判断是等于 0后有两个相等实根 */else if(disc>pow(10,-6) /* 大于 0 后有两个不等实根 */ x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf("has two equal roots:%8.4f and %8.4fn",x1,x2);elserealpart=-b/(2*a); /*小于 0 后有两个共轭复根的实部 */imagp
35、art=sqrt(-disc)/(2*a);printf("has complex roots:n"); /*has complex roots 是有复杂的根源的意思 */ printf("%8.4f+%8.4fin",realpart,imagpart);printf("%8.4f-%8.4fin",realpart,imagpart);getch();说明: le-6 :是科学计数法,表示 10 的 -6 次方 , 用函数是 pow(10,-6) 不用 0 来判断,用一个 很小的数就认为 disc 是 0, 是为了产生误差,因为实
36、数在计算和存储时会有一些微小的误差。/* 算运费 */#include <stdio.h> main()int c,s;float f,d,p,w; /* 总运费 f(freight 货物 ), 基本运费 p(price 价格 ), 货物重 w(weight 重 量 ), 距离 s, 折扣 d(discount)*/printf("input number:n");scanf("%f,%f,%d",&p,&w,&s);if(s>=3000) c=12;else c=s/250;switch(c)case 0:d=
37、0;break;case 1:d=2;break;case 2:case 3:d=5;break;case 4:case 5:case 6:case 7:d=8;break;case 8:case 9:case 10:case 11:d=10;break;case 12:d=15;break;f=p*w*s*(1-d/100.0);printf("freight=%fn",f);getch();Goto 语句为无条件转向语句 , 形式 : goto 语句标号 ; 语句标号用标识符表示 , 它的定名 规则与变量名相同 .即字母,下划线 ,数字.一般来说来两种用途 :1、 与
38、if 语句一起构成循环结构 ;2、 从循环体中跳转到循环体外 . 但在 C 语言中可以用 break 语句和 continue 语句跳出本层循环和 结束本次循环 .用 if 语句和 goto 语句构成循环 , 求 1+2+3+ .+99+100#include <stdio.h>main()int sum=0,i=1;loop: if(i<=100) sum=sum+i;i+; goto loop;printf("sum=%dn",sum); getch();语句While 语句用来实现当型循环结构 , 一般形式 :while( 表达式 ) 当表达式非 0
39、 值时执行 while 语句中的内嵌语句 ,先判断表达式后执行语句 /* 用 while 语句构成循环 ,求 1+2+3+ .+99+100 */ #include <stdio.h>main() int sum=0,i=1; while(i<=100) sum=sum+i; i+; /* 如果不加花括弧则 while 语句的范围只到“ sum=sum+”i */ printf("sum=%dn",sum);getch();Do 循环体 While (表达式)Do-While 是循环语句 特点是先执行循环体,然后判断循环条件是否成立 /* 用 do-whi
40、le 语句构成循环 , 求 1+2+3+ .+99+100 */ #include <stdio.h> main()int sum=0,i=1;do sum=sum+i;i+; while(i<=100); printf("sum=%dn",sum);getch();按 esc 后一个一个显示输出/* 用 do-while 语句构成循环 , 求 1+2+3+ .+99+100 */#include <stdio.h>main()int sum=0,i=1;dosum=sum+i;i+;printf("sum=%dn",sum
41、);getch(); while(i<=100);printf("sum=%dn",sum);getch();For 语句格式 : for( 循环变量赋初值 ; 循环条件 ; 循环变量增值 ;) 语句 ; 表达式 1 表达式 2 表达式 3先求解表达式 1。再求解表达式 2,若值为真 , 则执行 for 语句中的内嵌语句 , 然后就求解表达式 3,若为假 则结束循环。1 、“表达式 1”可以省略 for(; 表达式 2;表达式 3) 语句; /* 分号不能少 */ 2、“表达式 2”省略即不判断循环条件,循环将无终止地进行下去。3、“表达式 3”也可以省略,如 i+
42、不放在“表达式 3”,而作为循环体的一部分效果 是一样的。4、全部省略么不赋值,不判断,不增量,无终止地执行循环体。5、for (i=0;(c=getchar()!=n' i+=c;)终端接收一个字符给 C,判断表达式的值是否不等于 n '(换行符)for (;(c=getchar()!= n ' ;) 则输入 Computer 输出则也是 Computerbreak 语句和 continue 语句break 是终止整个循环的执行; continue 只是结束本次循环;if(fabs(a)<=pow(10,-6) 的意思是 if(a=0)y头文件: #includ
43、e <math.h> pow(x,y) 函数是求 X 的值,几的几次方。yPow(x,y) 函数是计算 X 的值 函数原型: double pow(double x,double y )Abs(x) 函数是求整数 x 的绝对值 函数原型: int abs( int x )Fabs(x) 函数是求双精度实数的绝对值 函数原型: double fabs( double x ) Sqrt(x) 函数是开根号子函数原型: double sqrt(double x)摄氏温度 C=5/9(F 华氏温度 -32)数组一维数组 类型说明 :数组名 常量表达式 如:int a10; 表示数组名为 a
44、,此数组有 10个元素 数组必须先定义后使用。 C 语言规定只能逐个引用数组元素而不能一次引用整个数组。main()out number %dn ” ,ai); /*从 9 到 0 输出 */ int i,a10; for(i=0;i<10;i+) ai=i; for(i=9;i>=0;i-) printf( getch();/* 输出数字 101 到 110*/* 输入数字 ,从此数字后输出 10 个数*/#include <stdio.h>#include <stdio.h>main() int i,t=100,a10; for(i=0;i<=9;
45、i+)t+ ;main() int i,t,a10;printf("intput number:"); scanf("%d",&t);for(i=0;i<=9;i+)ai=t;t+ ; ai=t;printf("out number %dn",ai); printf("out number %dn",ai); getch();getch();一维数组初始化定义成:int a10=0,1,2,3,4,5,6,7,8,9;定义成:int a10=0,1,2,3,4,5;表示只给前面 5 个元素赋初值,后面
46、的 5 个元素值为 0/* 后一个数是前二个数之和 ,Fibonacci 数列 */ #include <stdio.h>main() int a20=1,1;int i;for(i=2;i<20;i+) ai=ai-2+ai-1;for(i=0;i<20;i+) if(i%5=0) printf(“n ”);printf( “ %12d”,ai);getch();#include <stdio.h>main() long int a30=1,1;int i;for(i=2;i<30;i+) ai=ai-2+ai-1;for(i=0;i<30;i
47、+) if(i%5=0) printf("n"); printf("%12ld",ai);getch();起泡法对 10个数排序 (由小到大 ): 将相邻的两个数比较 ,将小的调到前头。 main() int a11;int i,j,t;printf(“inpuf 10 numers :n ” );for(i=1;i<11;i+) scanf(“ %d” ,&ai);printf( “ n ” );for(j=1;j<=9;j+) /* 因为 10 个数,所以要要循环 j=10-1 次 */ for(i=1;i<=10-j;i+
48、) /* 第 j 趟要进行 n-j 次两两比较 */ if(ai>ai+1) t=ai; ai=ai+1; ai+1=t;printf(“ the sorted numbers :n” );for(i=1;i<=10;i+) printf( “n” ,ai);getch();二维数组类型说明:数组名 常量表达式 常量表达式 如: float a34; 3行 4列C 语言对二维数组采用这样的定义,可以把二维数组看作是一种特殊的一维数组:它的元素又是一 个一维数组。可以看作是一个一维数组它有 3 个元素 a0, a1, a2 每个元素又包含有 4 个元素的 一维数组。二维数组初始化in
49、t a34= 1,2,3,4,5,6,7,8,9,10,11,12; int a34= 1,2,3,4,5,6,7,8,9,10,11,12;a34=1,5,9; 只对各行第 1 列赋值,其余元素值自动为 0/* 将二维数组行和列互换 , #include "stdio.h" main()int a23=1,2,3,4,5,6; int b32,i,j;printf("array a:n"); for(i=0;i<=1;i+) for(j=0;j<=2;j+)printf("%6d",aij); bji=aij; /* p
50、rintf("n");printf("array b:n"); /* for(i=0;i<=2;i+) for(j=0;j<=1;j+) printf("%6d",bij); printf("n");getch();存到另一个二维数组 */*array/*/*阵列 */行*/列*/赋值给 bji 值 */以下是数组 b 输出 */for(j=0;j<=2;j+) for(i=0;i<=1;i+) printf("%6d",bji); printf("n"
51、;); /*左右两部分输出结果一样的 */* 一个 3X4矩阵, 求出其中最大值的那个元素的值及所在的行号和列号*/#include "stdio.h" main()int i,j,row=0, colum=0,max; /*row 行 排 colum 列 */int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;max=a00;for(i=0;i<=2;i+)for(j=0;j<=3;j+)if(aij>max) max=aij;row=i;colum=j;pritntf(“ max=%d,row=%d,colum=%dn” ,max,
52、row,colum);getch();字符数组 :用来存放字符数据的数组 ,一个元素存放一个字符 .初始化 char c10;c0= I'c1= '; c2= a';c3= m';c4= '; c5= h '; c6= a'; c7= p';c8= p';c9=y';字符型与整型是互相通用,所以也可以定义 int c10; 初始化: char c10= I ', ',a' m', ', h', a',p',p',y' 如果初值个数小于数
53、组长度,将剩下的元素自动定为空字符“ 0 ” 也可以定义二维字符数组char a55=',',',',' , ',',',',' ,',',',',' , ',',',',' , ',',',',' ;单引号中间就是想赋的值C语言中将字符串作为字符数组来处理。C 语言规定了一个“字符串结束标志” ,以字符 0 '代表。 系统对字符串常量也自动加一个 0 '作为结束符。说明: 0 &
54、#39;代表 ASCII 码为 0 的字符,是一个不可以显示的字符,而是一个“空操作字符” 单个字符作初值用单引号,字符串是用双引号。char c10= “ China ” ; 前面 5个元素为 C',h',i',n',a',第 6个为 0 ',后 4个 元素为空字符,所以也是 0 '字符数组的输入输出 逐个字符输入输出,用格式符“ %C ” 输入或输出一个字符。 将整个字符串一次输入或输出,用格式符“%s” 输入或输出一串字符。输出字符不包括结束符 0 ' 用“ %s”格式符输出字符串时, printf 函数中的输出项是字符数组
55、名,而不是数组元素名。如写成 printf( “ %s”,c0); 是不对的。应为: printf( “%s”,c);定义:char a13;Scanf( “%s” ,a); 若输入:Howa re you?回车 而只将第一个空格前的 “ How”送到 a 中。注意: scanf 函数中输入项是字符数组名。输入项是字符数组名时,不要再加地址符&,因为在 C语言中数组名代表该数组的起始地址,Scanf( “ %s” ,&a); 这样的写法是不对的。printf( “%o”,c); 可以输出数组 C 的起始地址puts( 字符数组,输出字符串 ) char str= “Chinan
56、Beijing ” ; puts(str);gets( 字符数组,输入字符串 )定义: char str;gets(str); 若输入: Computer 回车, 将所输入的字符串送给字符数组 str ,8 个字母加一个 自动加上去的 0'共 9 个字符送入 str 。注意:puts 和 gets 函数只能输入或输出一个字符串。 不能写成 :puts(str1,str2) 或 gets(str1,str2)Strcat( 字符数组 1,字符数组 2) 是字符串连接,作用:连接两个字符数组中的字符串,把 字符 2 接到字符 1 的后面,结果放在字符数组 1 中。字符数组 1 必须足够大,
57、以便容纳连接后的新字符串。char str130= “ People ' s Republic of ”;char str2= “ China ”;printf( “%s”,strcat(str1,str2);输出: People ' s Republic of Chinastrcpy( 字符数组 1,字符串 2) 是字符串复制。作用:将字符串 2 复制到字符数组 1 中去。字符数组 1 必须足够大,以便容纳被复制的字符串。字符数组 1 必须写成数组名形式(如 str1 ),字符串 2 可以是字符数组名也可以是一个字符串常量,如strcpy(str1, “ China ” ); 复制时连同字符串后面的 0 '一起复制到字符数组 1 中。 不能用赋值语句将一个字符串常或字符数组直接给一个字符数组. 如:str1= “Chi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理研究培训课程
- 内科护理消化系统疾病护理
- 脑梗护理中的健康教育
- 外科护理科研方法
- 脑震荡护理质量管理与效果评价
- 疝气护理中的引流管护理
- 水电解质与酸碱平衡
- 骨折病人的康复案例分析
- 听课件的策略与方法
- 奢侈品销售话术
- 2025年中国激光安全防护眼镜行业市场全景分析及前景机遇研判报告
- 铁路隧道及地下工程施工阶段异常工况安全处置指导意见暂行
- 儿科护理副高答辩题库及答案解析
- 煤矿消防安全培训报道课件
- 精神卫生防治业务技能竞赛理论试题库300题(含答案)
- 公司变更主体重新签合同三方协议
- 2024csco前列腺癌诊疗指南
- 技术标准解读-洞察及研究
- 基础会计知识课件
- 上海市社区工作者管理办法
- 餐厅员工加班管理办法
评论
0/150
提交评论