资源预览内容
第1页 / 共89页
第2页 / 共89页
第3页 / 共89页
第4页 / 共89页
第5页 / 共89页
第6页 / 共89页
第7页 / 共89页
第8页 / 共89页
第9页 / 共89页
第10页 / 共89页
亲,该文档总共89页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
全国计算机国家等级考试 C语言二级培训课件,南华大学计算机学院培训中心 www.nhjsj.com,一、基础知识,C语言是函数语言,即所有程序均以函数方式出现与调用。,C语言程序中有且只有一个main函数,,C语言中每一条语句结束均以;结束。,C语言是一种编译语言,即将所有源程序编译后才可执行,标识符: 变量名、符号常量名、函数名、类型名、数组名、结构体名以及文件名均为标识符,标识符只能由字母、数字和下划线组成,且第一个字符必须是字母或下画线。 关键字的概念,常量与变量区别,数据类型,整型:int 例:12 012 0x12 short int(2)、int(4) 、long int(4)、 unsigned 12L 78U,实型:4.6 6E-2(十进制小数、指数形式) float(4) 、double(8) 、long double(10),字符型:单引号括起来的一个字每 转义字符 n t v b r ” ddd xhh,字符与字符串的区别,运算符与表达式 算术运算符 + - * / % 关系运算符 = | & 指针运算符 * & 其它运算符 ?: ,类型自动转换,运算符优先级,if语句嵌套:如果if(表达式)或else后面的语句又包含一个或多个if语句,就称为if语句的嵌套。,if语句的两层嵌套结构:,分支结构,if(表达式1) if(表达式1_1) 语句1_1; else 语句1_2;,if else 配对原则:缺省 时,else总是和它上面离它最近的未配对的if配对,switch语句,switch (表达式) case 常量表达式1:语句1; case 常量表达式2:语句2; case 常量表达式n:语句n ; default:语句n+1;,当表达式的值与某一个case后面的常量相等时,执行该case后面的语句。然后执行下一个case后面的语句, 若所有的case后面的常量都不和表达式的值相匹配,就执行default后面的语句。 每一个case的常量表达式必须互不相同,不能表示范围,如x0 。 常量可以是整数或字符,void main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); ,运行结果:a=2,b=1,【例】根据程序写出运行结果,Break的应用,课堂练习,根据所输入的年份与月份,计算该有有多少天。,while循环结构 一般形式:,while(表达式) 循环体语句;,执行流程:,循环结构,特点:先判断表达式,后执行循环体 说明: 循环体有可能一次也不执行 循环体可为任意类型语句 下列情况,退出while循环 条件表达式不成立(为零) 循环体内遇break,return,goto 无限循环: while(1) 循环体;,do 循环体语句; while(表达式);,dowhile循环结构 一般形式:,特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 dowhile可转化成while结构,一般形式:,for(循环变量赋初值;终止条件;循环变量增(减)值) 循环体语句; ,for (表达式1;表达式2;表达式3) 循环体语句; ,for循环结构,执行流程:,循环体的理解,例 判断m是否素数,#include #include main() int m,i,k; scanf(“%d“, ,例 求300360之间素数的个数,#include #include main() int m,n,i,j,k; n=0; for(m=301;m360;m+) k=(int)sqrt(m); i=2; while(m%i!=0 ,break语句 功能:在循环语句和switch语句中,常和if语句一起使用,当满足条件时终止程序并跳出循环体或开关体 说明: break只能终止并跳出最近一层的结构 break不能用于循环语句和switch语句之外的任何其它语句之中,continue语句 功能:跳过循环体中尚未执行的语句,结束本次循环,进行下一次循环体。 仅用于循环语句中,例 求300360,600-680之间素数的个数,#include #include main() int m,n,i,k; n=0; for(m=301;m360,【例1】计算1!+ 3!+ 5!+ + 99!。,【例2】输入一个二进制数,输出其对应的十进制数,【例3】 2/1,3/2,5/3,8/5,/21/13.求该数列的前30项之和,【例4】求1000以内最大的完数。完数就是其真因子的和等于其本身的数。,函数的定义,合法标识符,函数返回值类型 缺省int型 无返回值void,函数体,函 数,函数的返回值 返回语句 形式: return(表达式); 或 return 表达式; 或 return; 功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数 说明: 函数中可有多个return语句 若无return语句,遇时,自动返回调用函数 若函数类型与return语句中表达式值的类型不一致,按前者为准,自动转换-函数调用转换 void型函数,例 无返回值函数 void swap(int x,int y ) int temp; temp=x; x=y; y=temp; ,函数说明 对被调用函数要求: 必须是已存在的函数 库函数: #include 用户自定义函数: 函数类型说明 函数说明 一般形式: 函数类型 函数名(形参类型 形参名, ); 或 函数类型 函数名(); 作用:告诉编译系统函数类型、参数个数及类型,以便检验 函数定义与函数说明不同 函数说明位置:程序的数据说明部分(函数内或外) 下列情况下,可不作函数说明 若函数返值是char或int型,系统自动按int型处理 被调用函数定义出现在主调函数之前 有些系统(如Borland C+)要求函数说明指出函数返值类型和形参类型,并且对void 和 int 型函数也要进行函数说明,说明: 实参必须有确定的值 形参必须指定类型 形参与实参类型一致,个数相同 若形参与实参类型不一致,自动按形参类型转换函数调用转换 形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放,函数参数及其传递方式 形参与实参 形式参数:定义函数时函数名后面括号中的变量名 实际参数:调用函数时函数名后面括号中的表达式,参数传递方式 值传递方式 方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值 特点: 形参与实参占用不同的内存单元 单向传递,地址方式 -方式:函数调用时,为形参接受一个地址,形参与实参共同一个内存单元,对形参的操作可能会影响实参结果; -特点: 形参与实参指向相同的内存单元 相互影响,例:void f(int *p); Main() int a5=1,2,3,4,5,*r=a; f(r);printf(“%dn”,*r); void f(int *p) p=p+3;printf(“%d”,”,*p); 运行结果为:,void fun(int *a,int n) int i,j,k,t; for(i=0;iak)k=j; t=ai;ai=ak;ak=t; main() int aa10=1,2,3,4,5,6,7,i; fun(aa,7); for(i=0;i7;i+)printf(“%d,”,aai); printf(“n”); 结果为:,void ss(char *s,char t) while(*s) if(*s=t)*s=t-a+A; s+; main() char str1100=“abcddfefdbd“,c=d; ss(str1,c); printf(“%sn“,str1); 程序运行后的输出结果是 A)ABCDDEFEDBD B)abcDDfefDbD C)abcAAfefAbA D)Abcddfefdbd,#include #include void fun(char *s,int n) char *t; int i,j; for(i=0;istrlen(sj) t=si;si:sj;sj=t; main() char *ss=“bcc“,“bbcc“,“xy“,“aaaacc“,“aabcc“; fun(ss,5); printf(“%s,%sn“,ss0,ss4); 程序的运行结果是 A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc,#include #define N 80 int fun(int a, int n) int i,j=1; for(i=1;in;i+) if(aj-1 _ ai) aj+=ai; _ ; ,main() int aN= 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10, i, n=19; printf(“The original data : n“); for(i=0; in; i+)printf(“%3d“,ai); n=fun(a,n); printf(“nThe data after deleted: n“); for(i=0; in; i+)printf(“%3d“,ai); printf(“nn“); ,以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。,函数的嵌套 嵌套调用 C规定:函数定义不可嵌套,但可以嵌套调用函数,递归调用 定义:函数直接或间接的调用自身叫函数的递归调用,例1 反向输出一个整数,if(n为一位整数) 输出n; else 输出n的个位数字; 对剩余数字组成的新整数重复 “反向输出”操作; ,#include int f(int x) int y; if(x=0|x=1) return(3); y=x*x-f(x-2); return y; main() int z; z=f(3); printf(“%dn“,z); 程序的运行结果是 A)0 B)9 C)6 D)8,int fun(int n) if(n=1)return 1; else return(n+fun(n-1); main() int x; scanf(“%d“,printf(“%dn“,x) 执行程序时,给变量x输入10,程序的输出结果是 A)55 B)54 C)65 D)45,变量的属性 数据类型:变量所持有的数据的性质(操作属性) 存储属性 存储器类型:寄存器、静态存储区、动态存储区 生存期:变量在某一时刻存在-静态变量与动态变量 作用域:变量在某区域内有效-局部变量与全局变量 变量的存储类型 auto -自动型 register-
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号