版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、01.C 程序基本结构一、C语言的特点:1、 C 语言源程序的基本组成单位是函数;一个C 程序可由若干个函数组成,其中必须有且仅有一个以main 命名的主函数,其余的函数名称可由编程者自行设定。 ,2、 C程序的执行总是由 main()函数的第一个可执行语句开始,到main ()函数的最后一个可执行的语句结束;而其他 函数都是在 main ()函数开始执行以后,通过其他函数的调用才得以运行。3、 C语言系统提供了丰富的库函数,用户在程序中需要调用某个库函数时,必须用#inelude编译预处理命令将描述该 库函数的头文件包含进去。二、C 程序的书写格式:1、语句可从分开放在任意多行内;如: pr
2、intf( “To C, ”);printf( “ or not to C:” );与 printf( “ To C , or not to C是等价的”);2、一行中可以有若干个语句;如: a=123;b=345;3、每个语句和数据定义的最后必须有一个分号;三、C 语言程序的运行:1、编译 (Compile) :将 C 源程序文件翻译成能被计算机识别的二进制形式的 “目标”文件;编译时,编译器将检查源程 序每一条语句的语法错误。2、建造 (Bulid) :C 语言程序示例:显示 “ Hello ”#include<stdio.h>int main(void)printf(“ He
3、nllo”. );return 0;说明: #include<stdio.h> 是必不可少的,它包含了 C 语言标准输入输出库的相关信息;printf 函数来自 ”标准输入输出库 ”,可以产生格式化输出;n 告诉 printf 函数执行完信息显示后要进行换行操作;return 0 表明程序终止时会向操作系统返回值0; 来标出main ()函数的起始和结束。02.数据类型一、C 语言的特点:1、 C语言源程序的基本组成单位是函数;一个C程序可由若干个函数组成,其中必须有且仅有一个以main命名的主函数,其余的函数名称可由编程者自行设定。2、 C程序的执行总是由 main()函数的第一
4、个可执行语句开始,到main ()函数的最后一个可执行的语句结束;而其他 函数都是在 main ()函数开始执行以后,通过其他函数的调用才得以运行。3、C 语言系统提供了丰富的库函数,用户在程序中需要调用某个库函数时,必须用#include 编译预处理命令将描述该库函数的头文件包含进去。二、C 程序的书写格式:1 、语句可从分开放在任意多行内;如: printf( “ To C, ” );printf( “ or not to C:” );与 printf( “ To C , or not to C是等价的”);2、一行中可以有若干个语句;如: a=123;b=345;3、每个语句和数据定义的
5、最后必须有一个分号;三、C 语言程序的运行:1、 编译(Compile):将C源程序文件翻译成能被计算机识别的二进制形式的目标”文件;编译时,编译器将检查源程 序每一条语句的语法错误。2、建造(Bulid):C语言程序示例:显示 “ Hello ”#i nclude<stdio.h>int mai n( void)printf( “ Heno.);return 0;说明:#include<stdio.h>是必不可少的,它包含了C语言标准输入输出库的相关信息;printf函数来自”标准输入输出库”,可以产生格式化输出;n告诉printf函数执行完信息显示后要进行换行操作;
6、return 0表明程序终止时会向操作系统返回值0; 来标出main ()函数的起始和结束。03,运算符和表达式1、算术运算符和表达式+ :加法运算符,如3+ 5;-:减法运算符,如 5-3;* :乘法运算符,如5*8 ;/ :除法运算符,如3/6;参与运算量均为整型时,结果也为整型,舍去小数;若运算量中有一个是实型,则结果为双精度实型。% :模运算符,也称取余运算符”,用于计算两数相除后的余数,如5%3=2 ;2、赋值运算符和赋值表达式赋值运算符:”=”,其作用是将一个表达式的值赋给一个变量;其一般形式为:变量=表达式如:x=a+b;a=b=c=5 可理解为赋值表达式的功能是计算表达式的值再
7、赋予左边的变量。赋值运算符具有右结合性。因此a=(b=(c=5);复合赋值运算符:+=、-=、*=、/=、%=、>>=、<<=、&=、A=、|=构成复合赋值表达式的一般形式为:变量双目运算符=表达式它等价于:变量=变量运算符表达式如:a+=5等价于a=a+5x*=y+7等价于 x=x*(y+7)r%=p等价于r=r%p3、类型转换如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:1) 实型赋予整型,舍去小数部分。前面的例子已经说明了这种情况。2) 整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部
8、分(小数部分的值为0)。3) 字符型赋予整型,由于字符型为一个字节,而整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。整型赋予字符型,只把低八位赋予字符量。4、自增、自减运算符:自增运算符:“ +;'功能是将变量的值加 1;自减运算符:-'-”,功能是将变量的值减1;可有以下几种形式:+ii自增1后再参与其它运算。-ii自减1后再参与其它运算。i+i参与运算后,i的值再自增1。i-i参与运算后,i的值再自减1。注:(1)” +、”-的操作对象只能是变量;(2)” +"”-运算优先级相同,且结合方向自右向左;-i+应理解为-(i+),【例】自增
9、、自减运算、#in clude<stdio.h>main ()int i=8;printf("%dn",+i);/* i先加1,再输出i ,输出结果为 9 */printf("%dn",-i);/* i 先减 1,再输出 i,结果为 8 */printf("%dn",i+); /* 先输出i ,输出结果为 8,i再加1,*/printf("%dn",i-);/*先输出i ,输出结果为 9,i再减1,*/printf("%dn",-i+); /*先加输出-i,输出结果为-8,i再加1
10、*/printf("%dn",-i-);/* 先输出-i,输出结果为-9,i 再减 1 */5、求字节运算符计算表达式的结果所占字节数或某种数据类型的定义字节数。一般格式:sizeof(数据类型标识符)或 sizeof (表达式)女口: sizeof( float)的值为4,占4个字节;sizeof (2*3)的值为2,占2个字节;6、关系运算符和关系表达式关系运算符:“<小于卜 “<=小于等于)、” >大于)、” >=大于等于)、”=”(等于)、“!='(不等于) 关系表达式:若关系表达式成立,其值为 真”,否则为 假”;在C语言中,用0代
11、表 假”,用1代表 真”;7、逻辑运算符和逻辑表达式:逻辑运算符:“!”(非)、“ &&”(与八 “|(或);运算优先级:!>&&>|逻辑表达式:用逻辑运算符将表达式连接起来的式子;逻辑表达式的结果仍然是逻辑量(真”或 假”)&条件运算符:一般格式:<表达式1>?<表达式2>:<表达式3>先计算表达式1,若表达式1的值为真,则计算表达式2的值,且表达式2的值为整个条件表达式的值;否则,计算表达式3的值,且表达式3的值即为整个条件表达式的值。9、逗号运算符和逗号表达式逗号运算符:”作为运算符,其功能是将多个表
12、达式组成一个表达式;一般形式:表达式 1,表达式2,表达式n求解过程:先计算表达式 1,再计算表达式2,依此计算表达式 n,最终,表达式 n的值即为整个表达式的值。04.顺序结构一、概述:顺序语句按照语法形式分为:表达式语句、函数调用语句、复合语句、流程控制语句和空语句。1、表达式语句:语法格式:表达式;女口: a+4;其中赋值语句为最典型的表达式语句,如:a=5;a=b+3;特别提示:分号( ;)是表达式语句中不可缺少的一部分。2、函数调用语句:如: printf (” I am a studen!t ”);其中: printf() 为系统提供的函数,用于显示信息。3、复合语句:所谓“复合语
13、句 ”即由一对 “ 括”起来的一组语句,也称 “块语句 ”或“分程序 ”。 一般形式为:语句 1语句 2语句 n 如:i+;j=a+3;printf("%d,j=",i,j);特别提示:复合语句中的最后一条语句的分号不得缺少;复合语句的“ 之”后不得有分号。4、空语句 :“空语句 ”即为一个独立的分号。如:main()二、数据的输入输出C 语言提供了一些输入输出函数,如 printf() 和 scanf() ,在程序中调用这些输入输出函数时,必须将标准输入输出头文 件“stdio.h包含到用户所编写的源程序中。如: #include <stdio.h>其中: #
14、include 命令一般写在程序的开头位置。1、格式输入输出1、格式输出函数printf()(1)一般格式: printf( 格式字符串,输出列表 )其中:“格式字符串 ”包括“输出字符 ”和“格式控制字符 ”由(%和格式字符组成,指定输出项的输出格式)。? d格式符:用于输出十进制整数;%d:以十进制形式显示输出变量的值;%5d :以十进制形式显示变量的值,且至少占用5个字符的空间,若不够 5位数字,则左侧补空格;%-5d :以十进制形式显示变量的值,且至少占用5个字符的空间,左对齐;%5.3d:以十进制形式显示变量的值,且至少占用5个字符的空间并至少有 3位数字,若不够3位数字,则左侧补
15、0;如: #include<stdio.h>main()int i;i=40;printf(“n%”d,i);printf(“ %n5”d,i);printf(“%n” ,i);printf(“%5n.3”d,i);? f 格式符:用于以小数形式输出实数;%10.3f:以定点十进制形式显示变量的值,且总共用10个字符,其中,整数位6位,小数位3位,小数点1位;如: #include<stdio.h>main() float x; x=839.21f; printf(“ % 1 0n.”3f ,x);? c 格式符:用于输出一个字符; 如: x=”a”,y = ”b”,
16、则 printf(%c %c",x,y) 的输出结果为: a b 若变量的值为整数,则输出该整数值为 ASCII 码的字符:女口 x=65,y=98,贝U printf( “ %c, %c "的输出结果为:A, b;同理,一个字符的数据也可以以整数的形式输出;女口 x= ' a' ,y=,'贝Bprintf(“ d,%c” 的输出结果为:97,66? s格式符:用于输出一个字符串。如: printf( “ %s” , ” I am a student !”)? e,E格式符:用于以指数形式输出实数。如: printf( “%e” , 123,.45贝
17、6输) 出结果为:1.234560e+002;? g,G格式符:用于输出实数,根据数值的大小自动选择f格式或e格式。2、格式输入函数 scanf()(1)一般格式:sea nf(格式字符串,变量地址表 )其中:格式字符串使用双引号括起来的字符串,包括 “普通字符 ”(按原样输入) 、“格式控制字符 ”(由 %和格式 字符组成,用来标定输入数据的格式) 。变量地址表是由若干个变量地址组成的表列,可以是变量的地址,也可以使字符串的首地址。? d 格式:用于输入十进制整数;女口: scanf( “ d,%c”,&x,&贝输入格式为:123 , 3456?u格式:用于输入十进制无符号整
18、数;?f格式:用于输入以小数形式的实数;女口: scanf( “ f,%f”,&x,&y输入格式为:123.23,23.456?c格式:用于输入一个字符;如:seanf(“ c,%c”,&x,&y输入格式为:a,b?s格式:用于输入一个字符串;女口: scanf( “ s"假定a为字符数组,则输入格式为:abcdef注:输入的字符串中间不能包含空格。特别说明:?对于变量,” &加变量名即为该变量的地址;如: &a、&b等分别表示变量 a和变量b的地址; ?对于字符串数组或字符指针型变量,数组名和指针变量名本身即为其地址;?可以在
19、%和格式字符之间加表示位数的数字;如: scanf(“ 5s”表示只能输入5个字符给字符串指针 p;3、字符数据的输入输出:(1)putchar() 函数:是向标准输入输出设备输出一个字符; 其调用格式为: putchar(ch); 其中: ch 为一个字符变量或常量; putchar() 函数作用等同于 printf( “ %c”; ,ch)(2)getch() getche() 和 getchar() 函数:?getch():从键盘上读入一个字符,但不显示在屏幕上;?getche():从键盘上读入一个字符,显示在屏幕上;?getchar():从键盘上读入一个字符,并显示在屏幕上,但直到输入
20、回车键时才结束输入,第一个字符为其函数的返 回值。05.选择结构一、 if 语句:一般格式:if( 表达式 ) 语句; 表示:当 “表达式 ”成立时,则执行 “语句 ”否;则跳过 “语句 ”; 如: if (a>b) printf( “ a>b! ” );例:若用户输入的数为 3 的倍数,则显示 ”OK” #include<stdio.h>main()int a;scanf( “ %d” ,&a);if(a %3=0) printf(“ OK” );二、if-else 语句: 一般格式:if (表达式 )语句 1;else 语句 2;例:给出用户输入的两个整数的
21、较大者#include<stdio.h>main()int a,b;scanf( “ %d,%d” ,&a,&b); if(a>b)printf( “ the max=%d ” ,a);else printf( “ the max=%d ” ,b);三、if 语句的嵌套1、if 子句中嵌套:? if(表达式1)if( 表达式 2) 语句 1;else 语句 2;else 语句 3;? if(表达式1) if( 表达式 2) 语句 1; else 语句 2;2、else子句中嵌套? if (表达式 1) 语句 1;elseif(表达式2) 语句2;else 语句
22、 3;? if(表达式1) 语句1;elseif(表达式2)语句2;3、嵌套一般格式:if (表达式 1) 语句 1;else if (表达式 2) 语句 2; else if (表达式 3) 语句 3 ;else if(表达式n)语句n; else 语句 n+1;例:将用户输入的成绩按以下规则转换成等级成绩:分数: 90100 分数: 8089 分数: 7079 分数: 6069 分数: 60 以下等级:优 等级:良 等级:中 等级:及格等级:不及格# include<stdio.h>main()int d;printf( 输“入分数: ”); scanf( “%d”,&
23、d);if(d>=90 ) printf(优”)“;else if(d>=80)printf(良”);“else if(d>=70)printf(中”);“else if(d>=60)printf(及格”“) ;else printf( 不及“格 ”);四、条件语句:表达式 1 ? 表达式 2 :表达式 3执行的过程:若表达式 1的值为非 0 时,该条件语句的职位表达式 例:求一个整数的绝对值2,否则为表达式 3;#include<stdio.h>main()int i,absi;scanf( “%d”,&i);absi=i>0 ? i : -
24、i;printf( "绝对值是n”,i,absi);五、switch语句switch (表达式)case 常量表达式 1:语句 1 ;break;case 常量表达式 2:语句 2 ;break;case 常量表达式 n:语句 n ;break;default:语句 n+1;例:商店卖货物,每一件 3.5 元,按购买的数量给与优惠: 购买 100 件,优惠 5%; 购买 200 件以上,优惠 6%; 购买 300 件以上,优惠 8%; 购买 400 件以上,优惠 10%;购买 500 件以上,优惠 15%;#include<stdio.h>main()int n;floa
25、t p,price;scanf("%d",&n);switch(n/100)case 1:p=0.05; break;case 2:p=0.06;break;case 3:p=0.08;break;case 4:p=0.10; break;case 5:p=0.15; break;price=3.5*n*(1-p);printf("% 应付款 =%7.2fn",price);06.循环结构、 for 语句:一般格式: for( 表达式 1 ;表达式 2;表达式 3) 语句 ;表示:先计算表达式 1 的值,再计算表达式 2 的值,若表达式 2 的值
26、为 0,则跳出循环体,转去执行循环体后面的程序 命令;若表达式 2 的值非 0,则执行循环体中的语句,接着计算表达式3的值;而后,再从计算表达式 2的值开始重复上诉操作,直到表达式 2 的值为 0 时结束。例:计算sum=1+2+3+100 的值”#include<stdio.h>main()int i,sum;sum=0;for(i=1;i<=100;i+)sum=sum+i;printf(“ sum=%d” ,sum);二、 while 语句:一般格式:while< 表达式 > 语句;表示:先计算表达式的值,若为非 0,则执行循环体语句,然后再计算表达式的值,
27、重复上述过程,直到计算表达 式的值为 0 时结束循环。例:计算sum=1+2+3+100 的值#include<stdio.h>main()int i,sum;i=1;sum=0;while(i<=100)sum=sum+i;i+;printf(“ sum=%d” ,sum);三、 do-while 语句1 、一般格式:Do语句;While< 表达式 >表示:先执行一次循环语句,然后计算表达式的值,若表达式的值非0,则再执行循环语句,然后从计算表达式的值开始重复上述过程,直到计算表达式的值为0,循环结束。例:计算sum=1+2+3+100的值#include<
28、;stdio.h>main()int i,sum;i=1;sum=0;do sum=sum+i;i+; while(i<=100); printf(“ sum=%d” ,sum);四、 break 和 continue 语句:1、break 语句:使用 break 语句可以提前结束由 while、 for、 do-while 语句构成的循环,而去执行循环下面的语句。 例:判定用户输入的一个数是否为素数#include<stdio.h>main()int a,d;printf( 请“输入一个整数: ”);scanf( “%d”,&a); for(d=2;d<
29、a;d+) if(a%d=0) break; / 跳出当前的循环,执行循环后面的语句 if(d<a)printf(“ 不是素数 ”,a);elseprintf(“ %:素数“ ,a);2、 continue:continue 语句用于 for、while、do-while 语句中,其作用:结束本次循环,接着进入下一次:否执行循环的判断。 例:输入 10 个非 0 的整数并求和。#inclu de<stdio.h>main()int i,n=0,sum=0;while(n<10)printf( 请“输入整数: ” );scanf( “%d”,&i);if(i=0)
30、continue; / 若为 0,则继续输入下一个数sum+=i;n+;printf(“%d”,sum);五、三种循环的比较:1、三种循环可以处理同一个问题,一般情况下可以相互代替;2、while 和 do-while 循环语句只在 while 语句之后指定循环条件,在循环体内应包含使循环趋于结束的语句;for 循环语句可以在 <语句 3>中包含使循环趋于结束的语句;3、对于 while 和 do-while 循环语句,循环变量的初始化应在 while 和 do-while 语句之前完成; for 循环语句可以在 < 表达式 1 >中进行;4、while 和 for 语
31、句:先判断表达式,后执行循环; do-while 循环语句:先执行循环,后判断表达式;07 数组 数组是一组具有同一名字、不同下标的变量。数组中带下标的变量称为数组元素,每个数组元素由数组名字和下标唯一地 来确定;同一数组中的元素数据类型相同。一、一维数组:1、定义:只有一个下标的数组。2、定义格式:类型说明符数组名 常量表达式 女口:int a3;定义了一个一维数组,名称为 a,数据类型为整型,含3个数组元素a0、a1、a2;说明:?类型说明符:是指数组的数据类型; ?常量表达式:是一个值为正整数的表达式,用来表示该数组的元素的个数,即数组的大小;3、 数组的引用:数组名 下标 ;如: a2
32、4、数组的初始化:?对数组的全部因素赋初值:如: int a3=10,20,30; 则该语句执行后, a0=10,a1=20,a2=30 ;? 对数组的部分元素赋初值 :如: int b3=12,11; 则该语句执行后, b0=12,b1=11,a2=0 ; ?对数组的全部元素赋初值时,也可将数组定义为一个不确定长度的数组:女口: int c =10,15,20;则该语句执行后,数组c的长度自动确定为3,c0=10,c1=15,c2=20 ;例:将输入的 10 个整数按反序输出#include<stdio.h>main()int a10,i;printf(" 请输入 10
33、 个整数: ");for(i=0;i<10;i+)scanf("%d",&ai);printf(" 反序输出 :") ;for(i=9;i>=0;i-)printf("%d",ai);printf("n");例:计算 Fibonacci 数列的前 20 项Fibonacci 数列定义:f(1)=1f(2)=1f(n)=f(n-1)+f(n-2)(n>2)#include<stdio.h>main()int f21,i;f1=1;f2=1;for (i=3;i<=
34、20;i+)fi=fi-1+fi-2;for (i=1;i<=20;i+)/每个数字占 8 位printf("%8d",fi);if(i%5=0) printf("n");/按 5 个一行输出二、二维数组: 具有两个下标的数组为二维数组。1、定义格式:类型说明符数组名 常量表达式 常量表达式 女口: int a32; /定义了一个二维数组,名称数组名为a,含有6个元素:a00、a01、a10、a11a21;说明:?第一个常量表达式指出的是数组的行数;第二个常量表达式指出的是数组的列数;?二维数组元素的顺序是:按行存放;即先顺序存放第一行的元素,再存
35、放第二行的元素以此类推;其存储格式:a00a01a10a11a20a212、二维数组的初始化:同一维数组。?分行为二维数组赋初值:int a32=1,2,3,4,5,6; 则该语句执行后, a00=1, a01=2, a10=3,a11=4, a20=5, a21=6?按数组在存储时的排列次序赋初值:int a32=1,2,3,4,5,6;?对数组的部分元素赋初值:int a32=1,2,3,4;?忽略第一维的长度 ,对二维数组赋初值:int a2=1,2,3,4,5,6; 该语句执行后, C 语言系统自动计算出第一维的长度为6/2=3,同样有:a01=2,a10=3,a11=4, a20=5
36、, a21=6;例:将两个 2 行 3 列的矩阵相加,并显示结果。#include<stdio.h>main()int a23=1,3,5,7,9,11;int b23=2,4,6,8,10,12;int c23,sum=0,i,j;for(i=0;i<2;i+)/i 表示第 1 行到第 3 行for(j=0;j<3;j+)/j 表示第 1 列到第 3 列cij=aij+bij;for(i=0;i<2;i+)for (j=0;j<3;j+)printf(“ %5d”,cij);if(j+1)%3=0) printf(n” );“08 字符数组字符数组是用来存
37、放字符的数组,字符数组中的一个元素存放一个字符。1、字符数组的定义:、 a20 、a00=1,char a10;2、字符串:字符串是借助于字符数组来存放的,并规定以字符'0'占(用存储空间,但不计入字符串的长度)为字符串的结束标记。3、字符串处理函数:?scanf(“s”,/)以格式符s输入字符串,输入的字符串自动以'0'结尾;输入的字符数组名前不加” &前缀;?printf(“ s” /以格式符%s输出字符串,输出的字符串以0'吉尾;?gets(a); /a 为字符数组名,输入的字符可以包含'0'字符;?puts(a); /a为
38、字符数组名,输入的字符可以包含0'字符;?strcat(字符串1,字符串2); /把字符串2连接到字符串1后;?strcpy(字符数组1,字符串2); /把字符串2拷贝到字符数组1中;女口: str为字符数组,将字符常量赋予str: strcpy (str , "abcdef");?strcmp(字符串1,字符串2); 比较两个字符串,若相等,贝U返回0,若字符串1>字符串2,则返回1,否则返回-1 ;如:比较两个字符串 str1、str2: if(strcmp(str1,str2)=1) printf("str1>str2");?s
39、trlen(字符数组);返回字符数组中包含的字符串的长度;?strlwr(字符串);/将字符串的大写字符转换为小写;?strupr(字符串);/将字符串的小写字符转换为大写;例:不使用strlen()函数,计算一个字符串的长度#include<stdio.h>main()int i=0;char str30;printf( 输“入一个字符串 : ”);gets(str);while (stri!=0')'i+; printf( 字“符串长度为:n”,i);例:将一字符串逆转#include<stdio.h> #include<string.h>
40、; main()char str20,temp;int i,j;printf( 输“入一个字符串: ”);gets(str); for(i=0;i<strlen(str)/2;i+) j=strlen(str)-1; temp=stri; stri=strj-i; strj-i=temp;printf( 倒“置的字符串为 n”,str);09 指针字符数组是用来存放字符的数组,字符数组中的一个元素存放一个字符。1、字符数组的定义:char a10;)为字符串&”前缀;否则返回 -1;2、字符串:字符串是借助于字符数组来存放的,并规定以字符'0'占(用存储空间,但不
41、计入字符串的长度的结束标记。3、字符串处理函数:?scanf(“s”,/)以格式符s输入字符串,输入的字符串自动以 0'结尾;输入的字符数组名前不加'?printf( “ s” /以格式符%s输出字符串,输出的字符串以 0'结尾;?gets(a); /a 为字符数组名,输入的字符可以包含'0'字符;?puts(a); /a为字符数组名,输入的字符可以包含0'字符;?strcat(字符串1,字符串2); /把字符串2连接到字符串1后;?strcpy(字符数组1,字符串2); /把字符串2拷贝到字符数组1中;女口: str为字符数组,将字符常量赋予s
42、tr: strcpy (str , "abcdef");?strcmp(字符串1,字符串2);比较两个字符串,若相等,贝U返回0,若字符串1>字符串2,则返回1,如:比较两个字符串str1、str2: if(strcmp(str1,str2)=1) printf("str1>str2");?strlen(字符数组);返回字符数组中包含的字符串的长度;?strlwr( 字符串 );/将字符串的大写字符转换为小写;?strupr(字符串);/将字符串的小写字符转换为大写;例:不使用strlen()函数,计算一个字符串的长度#include<
43、stdio.h>main()int i=0;char str30;printf( 输“入一个字符串 : ”);gets(str);while (stri!=0)i+;printf( “字符串长度为:n”,i);例:将一字符串逆转#include<stdio.h>#include<string.h>main()char str20,temp;int i,j;printf( 输“入一个字符串: ”);gets(str);for(i=0;i<strlen(str)/2;i+)j=strlen(str)-1;temp=stri;stri=strj-i;strj-i=
44、temp;printf( 倒“置的字符串为 n”,str);10 函数1、函数的定义:一般格式:类型说明 函数名 (形式参数表 ) /函数头说明部分;/函数体执行部分;其中:类型说明:是指函数返回值的数据类型;默认为int;函数名:为一标识符;代表了函数的入口地址;形式参数表:是用逗号分隔的一组变量说明,指出每一个形式参数的类型和名称;函数值的返回:有时,调用函数是为了计算一个结果,这是需要使用返回语句将就是结果返回给主调函数, 此值即为函数的返回值;一般格式: return (表达式 ); 其中,圆括号可以省略;当函数不需要返回值时,可以写成: return;例:编写一个函数 power (
45、) ,用于计算 x 的 n 次方的值#include<stdio.h>float power(float x,int n)int i;float s;s=1;for(i=1;i<=n;i+)s=s*x;return (s);2、函数的调用:C 语言中函数调用的一般格式:函数名 (实参表 );如: float f ;f=power(3,10);3、数组作为函数的参数 ?数据元素作为函数实参在函数调用时,把数组元素作为实参传递给形参,实现单向的值传递;如:判别各个元素的值,大于0,则输出该值,小于或等于0,则输出 0#include<stdio.h> void fun
46、c(int x)if (x>0) printf(“%4d”,x);else printf( main() int a5,i;printf( 请“输入“ %2d”,0);5 个数: ”);for(i=0;i<5;i+)scanf( “ %d” ,&ai); for(i=0;i<5;i+)func(ai); / 将数组元素作为实参传递?数组名作为函数参数( 1)使用数组名作为函数参数时,形参和实参是同类型的数组;( 2)在主调函数和被调函数中分别定义数组;( 3)数组名代表了数组的起始地址,数组名作为函数参数传递的是该数组的起始地址,而不是该数组元素的值; 例:将数组中的
47、元素的和计算并显示出来。#include<stdio.h>func(int b)int sum=0,i;for(i=0;i<10;i+)sum+=bi;return sum;main()int a=1,2,3,4,5,6,7,8,9,10,s;s=func(a);/ 将数组 a 组为参数传递给函数 funcprintf("s=%d",s);4、内部函数和外部函数?内部函数:在定义函数时,在其类型名之前加“ static,则所定义的函数为内部函数,只能被所在的源文件中的函数调用,其他源文件若有同名的内部函数,互不干扰。?外部函数:在定义函数时,在其类型名之前
48、加“ extern (也可省略),则所定义的函数为外部函数(也称全局函数)可被其他源程序的函数调用。如: static int func_1() /内部函数extern func_2 ()/外部函数综合测试 给定程序为:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。以后每天早上都吃了前一天 剩下的一半零一个。到第 10 天早上只剩一个桃子。求第一天共摘了多少桃子。由主函数输出第一天共摘桃子数。输出结 果为 1534。#include<stdio.h>int fun(int n)main()int n=10,sum;sum=fun(n);printf("sum=%d",sum);解析:根据题意,第 n+1 天剩下的桃子数为 x(n+1) ,第 n 天剩下的桃子数为 x(n) ,则满足: x(n)=2*(x(n+1)+1);第十天剩下 1个桃子,可推算出第九天剩下的数量;可利用for 循环,递推出其他天数剩下的桃子数:int fun(int n)int x,i;x=1;/ 第十天剩下的数量for(i=n-1;i>=1;i-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度云南省高校教师资格证之高等教育法规考前冲刺模拟试卷A卷含答案
- 2024-2025学年广东省汕头市潮阳一中明光学校高三(上)月考物理试卷(10月)(含答案)
- 2024年冷凝水回收装置项目投资申请报告代可行性研究报告
- 赣南师范大学《环境监测实验》2022-2023学年第一学期期末试卷
- 阜阳师范大学《材料科学与工程基础》2022-2023学年第一学期期末试卷
- 福建师范大学协和学院《文献检索》2022-2023学年第一学期期末试卷
- 福建师范大学《中国地理》2023-2024学年第一学期期末试卷
- 2024年二级建造师机电-考点押题
- 工程质量重大风险预控和工程质量事故处置指引
- 福建师范大学《素描二》2021-2022学年第一学期期末试卷
- Unit4ExploringLiteratureIntegratedskills话题作文与课文结合学案高中英语译林版
- 小学生航模知识讲座
- 国家标准宣贯培训
- 择校升学规划方案
- 2023年度省综合专家库评标专家继续教育培训考试试题(三套)
- 筋伤的护理措施
- join-in小学英语3-6年级英语单词默写版
- 智能印章 研究报告论文
- 糖尿病进修总结
- 2023年银行安全保卫知识考试题库(含答案)
- 学校项目式学习实施方案
评论
0/150
提交评论