- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2019/1/10
C语言程序设计技术
说明: (1) 局部变量只在函数内部起作用,函数结 束时,所占内存空间被释放 (2) 全局变量在定义它的后面任一个函数中 都起作用
2019/1/10
C语言程序设计技术
(3) 全局变量与局部变量同名时,使用局部 变量。 (4) 函数的虚参视同局部变量
2019/1/10
2019/1/10
C语言程序设计技术
#include<stdio.h> #include<conio.h> void main(void) { int add(int x,int y); int a=2,b=3,c; clrscr( ); c=add(a,b); printf("%d+%d=%d\n", a,b,c); getch( ); }
2019/1/10
C语言程序设计技术
for(n=6;n<=limit;n+=2) for(a=3;a<=n/2;a+=2) if (prime(a)) { b=n-a; if (prime(b)) { printf("%d=%d+%d\n",n,a,b); break; } } getch( );
void printd(long n) { if (n<0) { putchar('-'); n=-n; } putchar(n%10+'0'); if (n/10) printd(n/10); }
2019/1/10
C语言程序设计技术
二. 局部变量和全局变量
1. 在函数内部定义的变量称为局部变量。 2. 在函数外部定义的变量称为全局变量。
2019/1/10
C语言程序设计技术
clrscr( ); for(i=0;i<100;i++) scanf("%d",&data[i]); find(data,100); printf("Max=%d,Min=%d",Max,Min); getch( ); }
2019/1/10
C语言程序设计技术
/* 查找数组中的最大值和最小值 */ void find(int a[],int n) { int i; Max=Min=a[0]; for(i=1;i<n;i++) { if (a[i]>Max) Max=a[i]; if (a[i]<Min) Min=a[i]; } }
2019/1/10
C语言程序设计技术
void abc(int x) { int y;
printf("ok3: x=%d y=%d z=%d \n",x,y,z);
x=100; y=200; z=300;
printf("ok4: x=%d y=%d z=%d \n",x,y,z);
}
2019/1/10
例: int a,*p,*p1=&a,*p2=p1; p,p1,p2 都 是 指 向 整 型 数 据 变 量 的 指 针 变 量 , 其 中 p1,p2已指向变量a。
例: char *s; s 是指向字符型数据变量的指针。
2019/1/10
C语言程序设计技术
2. 指针运算符 ( 1) & 取变量的地址 例 p=&a
2019/1/10
C语言程序设计技术
( 2) * 取出或改变指针所指向的变量之值。
例 int *p,a; a=10; p=&a; *p=*p+2; printf("%d",a);
2019/1/10
C语言程序设计技术
( 3) + 指针可以加上一个整型量,以便指向另一个 变量。 例: int d[11],*p=&d[4],*q; p+=3,q=p-2;
2019/1/10
C语言程序设计技术
#include<stdio.h> #include<conio.h> #include<math.h> void main(void) { int prime(int m); int n,a,b,limit;
2019/1/10
C语言程序设计技术
clrscr( ); while(1) { printf("\nInput 1 number(>=6):\n"); scanf("%d",&limit); if (limit>=6) break; }
C语言程序设计技术
第12讲 函数(2)
2019/1/10
C语言程序设计技术
一. 函数递归调用
在一个函数中,如果直接或间接调用 自己,则称为递归调用。 如: int f(int n) { if (n<1) return 0; return f(n-1)+n; }
2019/1/10
C语言程序设计技术
2019/1/10
C语言程序设计技术
二. 函数嵌套调用
在一个子函数中调用另一个函数称 为函数嵌套调用
2019/1/10
C语言程序设计技术
例 2 ( P125 例 4-14 ) . 从键盘输入一正整数 limit(limit>=6),验证从6到n之间的 所有偶数都可以分解为两个奇素数之和。 例如 98=19+79
2019/1/10
C语言程序设计技术
void swap(int *x, int *y) { int p; p=*x; *x=*y; *y=p; }
2019/1/10
C语言程序设计技术
2019/1/10
C语言程序设计技术
第14讲
指针(2)
2019/1/10
C语言程序设计技术
一. 指针与一维数组
2019/1/10
C语言程序设计技术
void swap(int *x, int*y) { int p; p=*x; *x=*y; *y=p; }
2019/1/10
C语言程序设计技术
例2. 将三个数排序。
2019/1/10
C语言程序设计技术
#include<stdio.h> void main(void) { void sort(int *q1,int *q2,int *q3); int a,b,c; printf("输入三个整数:"); scanf("%d %d %d",&a,&b,&c); sort(&a,&b,&c); printf("%d,%d,%d",a,b,c); }
C语言程序设计技术
例2(P113例4-7). 分析程序运行结果。
2019/1/10
C语言程序设计技术
#include<stdio.h> int y,z; void main(void) { void abc(int x); int x; x=10; y=20; z=30; printf("ok1: x=%d y=%d z=%d \n",x,y,z); abc(x); printf("ok2: x=%d y=%d z=%d \n",x,y,z); }
例1. 逆序输出一个整数的各位数字。
2019/1/10
C语言程序设计技术
#include<stdio.h> void main(void) { void printd(long n); long n; scanf("%ld",&n); printd(n); }
2019/1/10
C语言程序设计技术
C语言程序设计技术(下)
2019/1/10
C语言程序设计技术
第11讲 函数(1)
一. 函数的定义与调用
1. 函数的定义 <函数类型标识符> <函数名>(<虚参>) { 〈函数体〉 }
2019/1/10
C语言程序设计技术
2. 函数值 非 void 型函数的函数值必须用 return 语句返 回。
}
2019/1/10
C语言程序设计技术
/* 判断一个数是否为素数 */ int prime(int m) { int i,k; k=sqrt(m)+1; for(i=2;i<k;i++) if (m%i==0) return 0; return 1; }
C语言程序设计技术
2019/1/10
2019/1/10
2019/1/10
C语言程序设计技术
3. 函数调用 <函数名>(<实参>); 例如: c=2*max(13, 25) m=max(a, max(b,c))
2019/1/10
C语言程序设计技术
说明: (1) 调用函数前,应对函数原型进行声明 (2) 实参的个数必须与虚参个数相同,类型必 须匹配 (3) 实参可以是一个表达式,虚参只能是变量 (4) 当虚参是一个指针或数组时,实参与虚参 的值双向传递
2019/1/10
C语言程序设计技术
( 4) 两个同类型的指针可以进行减法运算。 例:int d[100],*p1,*p2,m; p1=d; p2=&d[8]; m=p2-p1; m 的值等于 p1 与 p2 相距的整型变量的个数, 即m=8。
2019/1/10
C语言程序设计技术
3. 说明 (1) 指针的类型与其代表的变量的类型必须 相同。 例:int *p,i; float *pf,f; p=&i是合法的 而p=&f是非法的
设有定义:int a[100], *p 指针赋值方法:p=&a[0] 或p=a 元素a[i]引用方法:*(p+i) 或 p[i]