第5章 递归 (Recurve)
|
|
|
- 郊也 项
- 9 years ago
- Views:
Transcription
1 第 11 讲指针与引用 (Part II) 周水庚
2 提要 指针形参 数组形参 字符指针形参 函数形参 返回指针值的函数 程序设计 年秋 2
3 提要 指针形参 数组形参 字符指针形参 函数形参 返回指针值的函数 程序设计 年秋 3
4 函数形参 函数设置形参的目的是让函数被调用时, 能从调用处获得数据或指针信息 C 语言关于函数形参遵守以下规定 函数调用时, 形参从实参获得初值 函数形参可看作函数内部的局部变量, 函数体内对形参的修改不会影响实参本身 函数形参的作用由形参的类型确定 基本类型 指针类型 数组类型 当函数的形参是某种指针类型或数组类型时, 形参从实参处得到某环境变量的地址, 函数体就能通过指针形参间接引用环境变量, 并能改变环境变量的值 程序设计 年秋 4
5 指针类型形参 指针形参从实参处得指针值 它使函数得到了调用环境中某变量的地址, 函数可用这个地址间接访问函数之外的变量, 或引用其值, 或修改其值 指针类型形参为函数改变调用环境中的数据对象提供了手段 程序设计 年秋 5
6 指针类型形参示意程序 -1 对于简单类型形参, 实参向形参传值, 函数不能改变实参变量值的示意程序 #include <stdio.h> void swap(int u, int v) { int t = u; u = v; v = t; printf( In swap: u = %d, v = %d\n, u, v); void main() { int x = 1, y = 2; swap(x, y); printf( In main: x = %d, y = %d\n, x, y); 输出结果 : In swap: u=2, v=1 In swap: x=1, y=2 程序设计 年秋 6
7 指针类型形参示意程序 -2 #include <stdio.h> void swap-1(int u, int v); void swap-2(int *pu, int *pv); void main() { int a = 1, b = 2; printf( Befor swap. a = %d\tb = %d\n, a, b); swap-1(a, b); /* 以变量的值为实参 */ printf( After swap: a = %d\tb = %d\n, a, b); swap-2(&a, &b); /* 以变量的指针为实参 */ printf( After swap: a = %d\tb = %d\n, a, b); a=1 b=2 a=1 b=2 a=2 b=1 void swap-1(int u, int v) { int t; t = u; u = v; v = t; void swap-2(int *pu, int *pv) { int t; t = *pu; *pu = *pv; *pv = t; 程序设计 年秋 7
8 指针类型形参 ( 续 ) 如希望函数能按需要任意引用指定的变量, 需要在三个方面协调一致 函数应设置指针类型的形参 函数体必须通过指针形参间接访问变量, 或引用其值, 或修改其值 调用函数时, 要以欲改变值的变量的指针为实参调用函数 程序设计 年秋 8
9 #include<stdio.h> void f1(int x, int y){int t=x;x=y;y=t; void f2(int *x, int *y){int t=*x; *x=*y; *y=t; void f3(int **x, int **y){int *t=*x; *x=*y;*y=t; Void main() { int x=1, y=2; int *xpt=&x,*ypt=&y; printf(first: x=%d y=%d\n\n,x,y); int x=1, y=2;f1(x,y); printf(after call f1(): x=%d y=%d\n\n,x,y); int x=1, y=2;f2(&x,&y); printf(after call f2(): x=%d y=%d\n\n,x,y); int x=1, y=2; printf(before call f3(): x=%d y=%d\n\n,x,y); printf(before call f3(): *xpt=%d *ypt=%d\n\n,*xpt,*ypt); 1 2 f3(&xpt,&ypt); printf(after call f3(): x=%d y=%d\n\n,x,y); printf(after call f3(): *xpt=%d *ypt=%d\n\n,*xpt,*ypt); 程序设计 年秋 9
10 提要 指针形参 数组形参 字符指针形参 函数形参 返回指针值的函数 程序设计 年秋 10
11 数组类型形参 使函数能处理不同的成组变量, 应使用数组类型形参 对应数组形参的实参是数组某元素的地址, 最通常的情况是数组首元素的地址 由于数组名能代表数组首元素的地址, 所以常用数组名实参对应数组形参 例如, 下面定义的函数 sum() 用于求数组的前 n 个数之和 int sum(int a[], int n) { int i, s; for(s = 0, i = 0; i < n; i++) return s; s += a[i]; 函数 sum 有两个形参, 一个形参是数组类型的, 用于对应可变的实在数组 ; 另一个形参是整型的, 用于指定求和数组的元素个数 程序设计 年秋 11
12 数组类型形参 ( 续 ) 前面定义的函数 sum() 用于求数组的前 n 个数之和 利用函数 sum(), 如有以下变量定义 int x[] = {1, 2, 3, 4, 5; int i, j; 则语句 i = sum(x, 5); j = sum(&x[2], 3); printf("i = %d\nj = %d\n", i, j); 将输出 i = 15 j = 12 函数调用 sum(x,5) 将数组 x 的地址 (&x[0]) 传送给形参 a; 函数调用 sum(&x[2], 3) 将数组 x 中的 x[2] 的地址 (&x[2]) 传送给形参 a, 而 x[2] 的地址就是数组元素段 x[2] x[3] x[4] 的开始地址 程序设计 年秋 12
13 数组类型形参 ( 续 ) 与数组类型形参对应的实在数组有多少个元素是不确定的, 可能会对应一个大数组, 也可能会对应一个小数组, 甚至会对应数组中的某一段 所以在数组形参说明中, 形参数组不必指定数组元素的个数 为了正确指明某次函数调用实际参与计算的元素个数, 应另引入一个整型形参来指定 因传递给数组形参的实参是数组段的开始地址, 函数内对数组形参的访问就是对实参所指数组的访问 函数也可以改变实参所指数组元素的值 程序设计 年秋 13
14 数组类型形参示例 函数 initarray() 是给数组元素赋指定值的 void initarray(int x[], int n, int val) { int i; for(i = 0; i < n; i++) x[i] = val; 如另有数组定义 int a[10], b[100]; 语句 initarray(a, 10, 1); initarray(b, 50, 2); initarray(&b[50], 50, 4); 分别给数组 a 的所有元素置值 1, 为数组 b 的前 50 个元素置值 2, 后 50 个元素置值 4 程序设计 年秋 14
15 数组类型形参 ( 续 ) 数组形参也可以是多维数组 当数组形参是多维时, 除数组形参的第一维大小不必指定外, 其它维的大小必须明确指定 如下面的函数 sumatob(), 用于将一个 n 行 10 列的二维数组各行的 10 个元素之和存于另一个数组中 void sumatob(int a[][10], int b[], int n) { int i, j; for(i = 0; i < n; i++) for(b[i] = 0, j = 0; j < 10; j++) b[i] += a[i][j]; 在函数 sumatob() 的定义中, 对形参 a 的说明如写成 int a[][]; 是错误的 程序设计 年秋 15
16 数组类型形参 ( 续 ) 因二维数组的元素只是按行存放, 如在数组形参中不说明它的列数, 就无法确定数组元素 a[i][j] 的实际地址 在实际使用数组形参编写函数时, 注意程序中实参所指数组大小不能小于函数实际要用的数组的大小 如实参数组太小, 因系统不检查超界情况, 可能会使用实际数组后面别的变量的空间, 这会发生意想不到的错误 程序设计 年秋 16
17 数组类型形参函数示例 -1 为数组输入值的函数 void readarray(int a[], int n) { int i; for(i = 0; i < n; i++) { printf("enter a[%d] scanf("%d", &a[i]); ", i); 程序设计 年秋 17
18 数组类型形参函数示例 -2 求数组中最大元素值的函数 int max(int a[], int n) { int i, m; for(m = 0, i = 1; i < n ; i++) if (a[m] < a[i]) m = i; return a[m]; 程序设计 年秋 18
19 数组类型形参即指针形参 数组形参对应的实参也可以是数组某元素的地址, 即数组某元素的指针, 所以数组形参也是一种指针形参 所以任何数组形参说明类型形参名 [] 都可改写成类型 * 形参名 如前面的函数 sum() 的定义可改写成如下形式 int sum(int *a, int n) { int i, s; for(s = i = 0; i < n; i++) s += a[i]; return s; 程序设计 年秋 19
20 数组类型形参 - 指针形参示例 函数形参也是函数的局部变量, 指针形参就是函数的指针变量, 函数 sum() 的定义又可改写成如下形式 int sum(int *a, int n) { int s = 0; for(; n--; ) s += *a++; return s; 程序设计 年秋 20
21 数组类型形参 - 指针形参示例 ( 续 ) 为使函数对数据进行操作更具一般性, 可为函数设置数据的首元素指针和元素个数等形参, 而函数体用指向数据元素的指针对数组作处理 如函数 sum() 也可改写成以下形式 int sum(int *a, int n) { int *ap, s; for(s = 0, ap = a; ap < a+n; ap++) s += *ap; return s; 程序设计 年秋 21
22 数组类型形参程序示例 设某个班有若干位学生, 共学 5 门功课 学生成绩单的学号和各门功课成绩存放在二维数组 s[][] 中,s 的每一行存储一位学生的有关信息, 其中每行的第一列存放学生的学号 程序设计分析 设计函数 search(int (*p)[6], int m, int no) 用于寻找指定学号的学生, 并输出该生的各门功课成绩 其中, 形参 p 是指向数组的指针, 它所指数组有 6 个 int 型元素 ; 形参 m 是学生数 ; 形参 no 是待寻找学生的学号 主函数按以下格式调用 search(s, m, n); 其中 s 为成绩单首行数组的指针 ;m 为成绩单行数, 即学生人数 ;n 为某学生的学号 程序设计 年秋 22
23 数组类型形参程序示例 ( 续 ) 学生成绩单程序 ( 续 )-P1 #include <stdio.h> #define MAXN 3 int s[maxn][6] = {{ 5, 70, 80, 96, 70, 90, { 7, 40, 80, 50, 60, 80, { 8, 50, 70, 40, 50, 75; void search(int (*)[6], int, int); void main() { search(s, MAXN, 7); search(s, MAXN, 5); search(s, MAXN, 8); search(s, MAXN, 2); 程序设计 年秋 23
24 数组类型形参程序示例 ( 续 ) 学生成绩单程序 ( 续 )-P2 void search(int (*p)[6], int m, int no) { int (*ap)[6], *pp; for(ap = p; ap < p+m; ap++) if (**ap == no) { printf( %d 号学生是 :\n", no); for(pp = *ap+1; pp <= *ap+5; pp++) printf("%4d\t", *pp); printf("\n"); return; printf( 没有 %d 号的学生.\n", no); 程序设计 年秋 24
25 数组类型形参程序示例 ( 续 ) 学生成绩单程序 ( 续 ) 内循环的 ap 是找到的那位学生的信息数组指针,*ap 是该数组的第一个元素的指针,*ap+1 是第二个元素的指针 利用二维数组元素按行连续存放的规则, 如有必要, 二维数组也可看作一维数组 如下面的代码段能累计全班学生的全部成绩之和, 并存于变量 total 中 { int *pp = *p, i; for(total = 0, i = 0; i < MAXN*6; i++; pp++) if (i%6) /* 跳过学号 */ total += *pp; 工作变量 pp 是一个指向 int 型的指针, 每次循环增加 1 个单位, 遍历整个二维数组 s 程序设计 年秋 25
26 提要 指针形参 数组形参 字符指针形参 函数形参 返回指针值的函数 程序设计 年秋 26
27 字符指针形参 字符指针形参, 是说它指向字符串的首字符, 对应的实参或是字符数组某个元素的指针, 或是字符串的首字符指针 字符串就是元素为字符的一维数组 所以字符指针形参与指向数组元素指针形参有相同的使用方法 但因字符串的特殊性, 在编写字符串处理函数时还会有许多技巧 程序设计 年秋 27
28 字符指针形参示例 -1 字符串拷贝函数 strcpy() 实现该函数功能的代码前面讨论过, 这里把它改写成函数, 是将一个已知字符串内容复制到另一字符数组中 拷贝函数设有两个形参 from,to from 为已知字符串的首字符指针, to 为存储复制的字符串首字符指针 void strcpy(char *to, char *from) { while ((*to++ = *from++)!= \0 ); 由于字符串结束符 \0 的 ASCII 码值为 0, 因此上述测试当前拷贝字符不是字符串结束符的代码!= \0 可以省略 函数可简写为 void strcpy (char *to, char *from) { while (*to++ = *from++); 程序设计 年秋 28
29 字符指针形参示例 -2 两字符串比较函数 strcmp() 比较两字符串大小的函数 strcmp() 有两个形参 s 和 t; 分别为两个待比较字符串的首字符指针 如 s 所指的字符串小于 t 所指的字符串, 函数返回值小于零 ; 如 s 所指字符串大于 t 所指字符串, 函数返回值大于零 ; 如两个字符串相同, 则函数返回零 int strcmp(char *s,char *t) { while (*s == *t) { /* 对应字符相等循环 */ if (*s == '\0') return 0; s++; t++; return *s - *t; /* 返回比较结果 */ 程序设计 年秋 29
30 字符指针形参示例 -3 输入字符行函数 getnch() 函数 getnch() 输入字符行, 输入的字符存于由指针形参指定的字符数组中 为避免输入过多字符, 函数 getnch() 另设一个 int 型形参, 它给出最多能存储的字符数 int getnch(char *s, int lim) { int c; char *ps = s; while (ps < s+lim-1&&c = getchar()) { *ps++ = c; if (c == \n ) break; /* 输入换行符结束 */ *ps = \0 ; return ps - s;/* 返回实际输入存储的字符个数 */ 程序设计 年秋 30
31 提要 指针形参 数组形参 字符指针形参 函数形参 函数指针和函数指针变量 利用函数指针调用函数 函数指针形参 函数指针数组 返回指针值的函数 程序设计 年秋 31
32 函数指针和函数指针变量 在 C 语言中, 函数不可设置函数形参, 但函数可以设置函数指针形参, 函数要调用的函数也可以由实参指定 为了实现函数通过实参调用其它的函数,C 语言引入函数指针类型 函数指针和函数指针变量等概念 函数指针如同一般数据一样能复制 存贮, 函数指针变量能作为复杂数据结构的成分, 也能作为函数的形参等 函数的目标码有入口地址, 这个入口地址就认作指向该函数的指针值, 并用函数名来标记函数的入口地址 函数指针变量是一种特殊的指针变量, 它能存储函数的指针值, 使它指向某个函数 如同数据指针变量可间接访问它所指变量一样, 程序也可利用函数指针变量间接调用它所指的函数 程序设计 年秋 32
33 函数指针和函数指针变量 ( 续 ) 为区别能指向不同特性函数的函数指针变量, 用函数的返回值类型和函数的形参类型等来区分不同的函数指针, 并以函数指针类型来标识 定义指向函数的指针变量的一般形式为函数返回值类型 (* 指针变量名 )( 形参类型表 ); 例如, int (*fp)(int); 定义 fp 是一个能指向函数的指针变量, 它能指向的函数的返回值必须是 int 型的, 并有一个 int 类型的形参 注意,*fp 两侧的括弧是必需的, 表示 fp 先与 * 结合, 说明它是一个指针变量 然后与后随的 () 结合, 表示指针变量 fp 是指向函数的 最前面的 int 表示所指向的函数应是返回 int 型值的函数 而代码 int *f(int), 因 () 优先级高于 *, 就变成是说明一个函数 f(), 该函数的返回值是指向 int 型量的指针 程序设计 年秋 33
34 函数指针和函数指针变量 ( 续 ) 指向函数的指针变量表示它能存放函数的入口地址, 它能指的函数是函数指针变量定义时所规定的 在程序执行时, 某个符合要求的函数入口地址都能赋给函数指针变量, 使函数指针变量指向该函数, 可以用该指针变量间接调用它所指函数 可根据需要向函数指针变量赋不同的函数入口地址, 使它指向的函数可以按需要改变 程序设计 年秋 34
35 利用函数指针调用函数 定义了指向函数的指针变量, 就可向它赋某函数的入口地址 C 语言约定, 单独的函数名本身就是函数的入口地址 ( 不可以在函数名之后加上一对园括号, 否则变成函数调用 ) 如语句 fp = min; 使函数指针变量 fp 指向函数 min() 当一个指向函数的指针变量确实指向某个函数时, 就可用它调用它所指向的函数 一般形式的函数调用是 函数名 ( 实参表 ) 改用指向函数的指针变量调用该函数, 就要改写成 (* 函数指针变量名 ) ( 实参表 ) 程序设计 年秋 35
36 利用函数指针调用函数示例 求两个整数中小的值的函数 min(), 它返回 int 型值 如有 int (*fp)(int,int),x=5, y=8, z, min(int,int); 则语句 fp = min; 使指针变量 fp 指向函数 min() 用 fp 间接调用函数 min(), 写成 z = (*fp)(x, y); 程序设计 年秋 36
37 利用函数指针调用函数示例 用函数指针变量调用函数的示意程序 #include <stdio.h> void main() { int (*fp)(int, int), x, y, z; int min(int, int), max(int, int); printf("enter x, y:");scanf("%d%d", &x, &y); fp = min; /* 让 fp 指向函数 min()*/ z = (*fp)(x, y); /* 调用 fp 所指函数 */ printf("min(%d, %d) = %d\n", x, y, z); fp = max; /* 现在更改 fp, 使它指向函数 max()*/ z = (*fp)(x, y); /* 调用 fp 所指函数 */ printf("max(%d, %d) = %d\n", x, y, z); int min(int a, int b) { return a < b? a : b; int max(int a, int b) { return a > b? a : b; 程序设计 年秋 37
38 函数指针形参 为什么要为函数设函数指针形参? 设有一个函数 fun(), 它有一个函数指针形参 fp 和若干其他形参 函数 fun() 利用函数指针形参 fp 和其他形参, 根据给定的算法计算结果 调用函数 fun() 时, 除提供其它实参外, 还得为它提供与形参 fp 相对应的实在函数指针 这样, 用不同的实在函数指针调用函数 fun(), 就能获得不同的结果 程序设计 年秋 38
39 函数指针形参示例 对给定实数数表, 求它的最大值 最小值和平均值 程序设计分析 程序有三个函数 max() min() 和 ave(), 另设一个函数 afun() 主函数调用函数 afun(), 并提供数组 数组元素个数和求值函数指针作为实参 由函数 afun() 根据主函数提供的函数指针实参调用实际函数 程序设计 年秋 39
40 函数指针形参示例 ( 续 ) 给定实数数表, 求最大值 最小值和平均值 ( 续 ) #include <stdio.h> #define N sizeof a / sizeof a[0] double max(double a[], int n) { int i; double r; for(r = a[0], i = 1; i < n; i++) if (r < a[i]) r = a[i]; return r; double min(double a[], int n) { int i; double r; for(r = a[0], i = 1; i < n; i++) if (r > a[i]) r = a[i]; return r; double ave (double a[], int n) { int i; double r; for (r = 0.0, i = 0; i < n; i++) r += a[i]; return r/n; double afun(double a[], int n, double (*f)(double *, int)) { return (*f)(a, n); 程序设计 年秋 40
41 函数指针形参示例 ( 续 ) 给定实数数表, 求最大值 最小值和平均值 ( 续 ) void main() { double a[]={1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0, 9.0; double result; printf("\n\nthe results are : "); result = afun(a, N, max); printf("\t%s = %4.2f", "MAX", result); result = afun(a, N, min); printf("\t%s = %4.2f", "MIN", result); result = afun(a, N, ave); printf("\t%s = %4.2f", "AVERAGE", result); printf("\n\n\n"); 程序设计 年秋 41
42 函数指针数组 利用函数指针能被存储的性质, 可将若干函数指针存于一数组中 如以下代码 double (*fpt[])(double*, int)={ max, min, ave; /* 函数指针数组 */ 定义了函数指针数组 fpt[], 并用函数名对它初始化, 将函数 max() min() 和 ave() 的函数指针填写在函数指针数组 fpt[] 中, 使数组 fpt[] 成为函数的入口表 例子 : 设计一个通用的菜单处理函数, 除其它有关菜单位置 大小 颜色等信息外, 另设两个数组形参 一个数组元素为指向菜单项字符串的指针, 另一个数组元素为指向对应处理函数的指针 程序设计 年秋 42
43 函数指针数组示例 通用的菜单处理函数 ( 续 ) #include <stdio.h> #define N sizeof a / sizeof a[0] void main () { double a[] ={1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0, 9.0; double result; double(*fpt[])(double *,int)={ max, min, ave; char *title[]={" 最大值 ", " 最小值 ", " 平均值 "; char *menuname[] ={ 求最大值, 求最小值, 求平均值, ; int ans, k; 程序设计 年秋 43
44 函数指针数组示例 ( 续 ) 通用的菜单处理函数 ( 续 ) while (1) { printf( 请选择以下菜单命令 \n ); for(k = 0; menuname[k][0]!= \0 ; k++) printf( \t%d: %s\n, k+1, menuname[k]); printf( \t 其它选择结束程序运行 \n ); scanf( %d, &ans); if (ans < 1 ans > k) break; printf("\n\n 结果 : "); result = (*fpt[ans-1])(a, N); printf("\t%s=%4.2f\n\n",title[ans-1], result); 程序设计 年秋 44
45 提要 指针形参 数组形参 字符数组形参 函数指针 返回指针值的函数 返回数据对象指针的函数 返回函数指针的函数 程序设计 年秋 45
46 返回数据对象指针的函数 函数可以返回整型值 字符值 实型值等, 也可以返回指向某种数据对象的指针值 返回指针值的函数与以前介绍的函数在概念上是完全一致的 定义 ( 或说明 ) 返回指针值函数的一般形式为类型说明符 * 函数名 ( 形参表 ); 例如, 函数说明 : int *f(int,int); 函数 f() 返回指向 int 型数据的指针, 有两个整型形参 注意 : 在函数名两侧分别为 * 运算符和 ( ) 运算符, 而 ( ) 的优先级高于 *, 函数名先与 () 结合 函数名 () 是函数的说明形式 在函数名之前的 *, 表示函数返回指针类型的值 程序设计 年秋 46
47 返回数据对象指针的函数示例 -1 编制在给定的字符串中找特定字符的第一次出现 若找到, 返回指向字符串中该字符的指针 ; 否则, 返回 NULL 值 程序设计分析 设函数为 sear_ch(), 该函数有两个形参, 指向字符串首字符的指针和待寻找的字符 函数 sear_ch() 的定义 char *sear_ch(char *s, char c) { while (*s && *s!= c) s++; return *s? s : NULL; 程序设计 年秋 47
48 返回数据对象指针的函数示例 -2 改写前面例子 ( 学生成绩单 ) 的函数 search(), 使新的 search() 函数具有单一的寻找功能, 不再包含输出等功能 新的函数 search() 的功能是从给定的成绩单中找指定学号的成绩表 新的函数 search() 的形参与前面例子中的函数 search() 的形参相同, 但新的函数 search() 返回找到的那位学生的成绩表 ( 不包括学号 ) 的指针 函数 search() 定义如下 int *search (int (*p)[6], int m, int no) { int (*ap)[6]; for(ap = p; ap < p+m; ap++) if(**ap == no) return *ap+1; return NULL; 程序设计 年秋 48
49 返回函数指针的函数 返回函数指针值函数定义或说明的一般形式为类型说明符 (* 函数名 ( 形参表 ))( 形参类型表 ); 按前面的例子, 菜单函数接受用户选择, 返回相应处理函数的指针 : double (*menu(char **))(double*, int) 在 menu() 函数说明中, 先是 menu(char **),menu 同园括号结合, 说明 menu 是函数 ; 随后是 (*menu(char **)), 同 * 结合, 函数返回指针 ; 接着是 (*menu(char **))(double*, int) 同一对园括号结合, 表示是指向函数的指针, 所指函数有 double* 和 int 类型两个形参 ; 最后是 double (*menu(char **))(double*,int), 说明指向的函数的返回值是 double 类型 程序设计 年秋 49
50 返回函数指针的函数示例程序 #include <stdio.h> #define N sizeof a / sizeof a[0] double max(double *, int), min(double *, int), ave(double *, int); double (*fpt[])(double *, int) = {max, min, ave, NULL; /* 函数指针数组 */ char *title[] = { 最大值, 最小值, 平均值, ; char *menuname[] ={" 求最大值 "," 求最小值 "," 求平均值 ",""; double a[] ={1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0; double (*menu(char **titptr))( double *, int) /* 函数返回函数的指针 */ { int ans, k; printf(" 请选择以下菜单命令 \n"); for(k=0; menuname[k][0]!='\0';k++) printf("\t%d:%s\n", k+1, menuname[k]); printf("\t 其它选择结束程序运行 \n"); scanf("%d", &ans); if (ans < 1 ans > 3) return NULL; *titptr = title[ans-1]; return fpt[ans-1]; /* 返回函数的指针 */ 程序设计 年秋 50
51 返回函数指针的函数示例程序 ( 续 ) void main () { double (*fp)( double *, int); char *titstr; double result; while (1) { if ((fp = menu(&titstr)) == NULL) break; result = (*fp)(a, N); printf("\n 结果 :%s = %4.2f\n\n", titstr, result); double max(double a[], int n) { int i; double r; for(r = a[0], i = 1; i < n; i++) if (r < a[i]) r = a[i]; return r; 程序设计 年秋 51
52 返回函数指针的函数示例程序 ( 续 ) double min(double a[], int n) { int i; double r; for(r = a[0], i = 1; i < n; i++) if (r > a[i]) r = a[i]; return r; double ave(double a[], int n) { int i; double r; for (r = 0.0, i = 0; i < n; i++) r += a[i]; return r/n; 程序设计 年秋 52
53 第 11 讲小结 指针形参 数组形参 字符指针形参 函数指针 函数指针和函数指针变量 利用函数指针调用函数 函数指针形参 函数指针数组 返回指针值的函数 返回数据对象指针的函数 返回函数指针的函数 程序设计 年秋 53
54 第六章作业 习题六 第 题 程序设计 年秋 54
chap07.key
#include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,
《C语言程序设计》第2版教材习题参考答案
教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =
Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]
指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++
《C语言程序设计》教材习题参考答案
教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,
Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]
Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];
Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3
浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.
Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]
函数 Function 如何重用代码 How to reuse code 3 4 = 3*3*3*3 3 4,6 5 : 拷贝 - 粘帖代码 (Copy-paste code) 3 4,6 5,12 10 : 拷贝 - 粘帖代码 (Copy-paste code) Bad! 使用函数 (with a function) 使用函数 (with a function) 使用函数 (with a function)
C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1
C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,
网C试题(08上).doc
学习中心 姓名 学号 西安电子科技大学网络与继续教育学院 高级语言程序设计 (C) 全真试题 ( 闭卷 90 分钟 ) 题号一二三总分 题分 60 20 20 得分 一 单项选择题 ( 每小题 3 分, 共 60 分 ) 1.C 语言程序的基本单位是 A) 程序行 B) 语句 C) 函数 D) 字符 2. 下列四组选项中, 均是不合法的用户标识符的选项是 A)A B)getc C)include D)while
新版 明解C言語入門編
328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66
新・解きながら学ぶC言語
330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180
新・明解C言語入門編『索引』
!... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177
NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p
NOWOER.OM /++ 程师能 评估. 单项选择题 1. 下 描述正确的是 int *p1 = new int[10]; int *p2 = new int[10](); p1 和 p2 申请的空间 的值都是随机值 p1 和 p2 申请的空间 的值都已经初始化 p1 申请的空间 的值是随机值,p2 申请的空间 的值已经初始化 p1 申请的空间 的值已经初始化,p2 申请的空间 的值是随机值 2.
PowerPoint 演示文稿
第 12 章再谈指针 本章的基本内容是 : 指针与数组 指针与结构体 动态存储分配 由于指针可以直接对内存进行操作, 所以指针的功能非常 强大 正确灵活地使用指针可以有效地表示复杂的数据结 构, 并可动态分配内存空间, 提高程序的运行效率 任务 12.1 判断回文 问题 输入一个字符串, 判断该字符串是否为回文 ( 首尾对称的字句, 例如 abcba abba 均为回文 ) 要求用指针实现 想法 设两个指针变量
untitled
A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (
OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: [email protected] 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP
CC213
: (Ken-Yi Lee), E-mail: [email protected] 177 [P179] (1) - [P181] [P182] (2) - for [P183] (3) - switch [P184] [P187] [P189] [P194] 178 [ ]; : : int var; : int var[3]; var 2293620 var[0] var[1] 2293620
Guava学习之Resources
Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于
C C
C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please
《C语言程序设计》教材习题参考答案
教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN: 978-7-302-13599-9, 红色封面答案制作时间 :2011 年 2 月 -5 月一 选择题 1. 以下数组定义中, 错误的是 :C)int a[3]=1,2,3,4; 2. 以下数组定义中, 正确的是 :B) int a[][2]=1,2,3,4; 3. 设有定义 int a[8][10];,
C/C++ 语言 - 循环
C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf
文件
CH10 文件 1 文件的概念 一 文件分类 二 文件的组织结构 : ASCII 码文件 ( 文本文件 ) 二进制文件 文件是二进制代码的, 则文件就是字节流 文件是 ASCII 码的, 则文件就是字符流, 也是字节流 1 如 : 对于整型变量 x, 其值为 32767 若以文本方式存放, 则共有 5 个字符, 内容为 : 00110011 00110010 00110111 00110110 00110111
C
C 2017 4 1 1. 2. while 3. 4. 5. for 6. 2/161 C 7. 8. (do while) 9. 10. (nested loop) 11. 12. 3/161 C 1. I 1 // summing.c: 2 #include 3 int main(void) 4 { 5 long num; 6 long sum = 0L; 7 int status;
C/C++语言 - 运算符、表达式和语句
C/C++ Table of contents 1. 2. 3. 4. C C++ 5. 6. 7. 1 i // shoe1.c: # include # define ADJUST 7. 64 # define SCALE 0. 325 int main ( void ) { double shoe, foot ; shoe = 9. 0; foot = SCALE * shoe
C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9
201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void
C/C++ - 文件IO
C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;
CC213
: (Ken-Yi Lee), E-mail: [email protected] 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,
C/C++ - 字符输入输出和字符确认
C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,
プログラムの設計と実現II
UNIX C ls mkdir man http://www.tj.chiba-u.jp/lecture/prog2/ Ctrl+x, Ctrl+s ( )..[4]% gcc Wall o hoge hoge.c..[5]%./hoge 1 : 1 2 : 2 3 : 3 4 : 0 6..[6]% (! )..[4]% gcc Wall o hoge hoge.c..[5]%!g gcc Wall
试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默
试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默认扩展名为 ( ) A. cpp B. c C. exe D. obj 2. 设 x 和 y 均为逻辑值,
nooog
C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1
C/C++语言 - C/C++数据
C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;
エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******
******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);
2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d
2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,
《计算概论》课程 第十九讲 C 程序设计语言应用
计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 [email protected] 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout
2013 C 1 #include <stdio.h> 2 int main(void) 3 { 4 int cases, i; 5 long long a, b; 6 scanf("%d", &cases); 7 for (i = 0; i < cases; i++) 8 { 9 scanf("%
2013 ( 28 ) ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 10 B 1 C 1 D 5 E 5 F 1 G II 5 H 30 1 2013 C 1 #include 2 int main(void) 3
untitled
Introduction to Programming ( 數 ) Lecture 3 Spring 2005 March 4, 2005 Lecture 2 Outline 數 料 If if 狀 if 2 (Standard Output, stdout): 料. ((Standard Input, stdin): 料. 類 數 數 數 說 printf 見 數 puts 串 數 putchar
untitled
不 料 料 例 : ( 料 ) 串 度 8 年 數 串 度 4 串 度 數 數 9- ( ) 利 數 struct { ; ; 數 struct 數 ; 9-2 數 利 數 C struct 數 ; C++ 數 ; struct 省略 9-3 例 ( 料 例 ) struct people{ char name[]; int age; char address[4]; char phone[]; int
PowerPoint 演示文稿
第 1 章程序设计和 C 语言 1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C 语言的发展及其特点 1.4 最简单的 C 语言程序 1.5 运行 C 程序的步骤与方法 1.6 程序设计的任务 1.1 什么是计算机程序 程序 : 一组计算机能识别和执行的指令 只要让计算机执行这个程序, 计算机就会自动地 有条不紊地进行工作 计算机的一切操作都是由程序控制的, 离开程序, 计算机将一事无成
C/C++ - 数组与指针
C/C++ Table of contents 1. 2. 3. 4. 5. 6. 7. 8. 1 float candy [ 365]; char code [12]; int states [50]; 2 int array [6] = {1, 2, 4, 6, 8, 10}; 3 // day_mon1.c: # include # define MONTHS 12 int
C 1
C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=
C/C++程序设计 - 字符串与格式化输入/输出
C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int
C/C++ - 字符串与字符串函数
C/C++ Table of contents 1. 2. 3. 4. 1 char C 2 char greeting [50] = " How " " are " " you?"; char greeting [50] = " How are you?"; 3 printf ("\" Ready, go!\" exclaimed John."); " Ready, go!" exclaimed
C++ 程式設計
C C 料, 數, - 列 串 理 列 main 數串列 什 pointer) 數, 數, 數 數 省 不 不, 數 (1) 數, 不 數 * 料 * 數 int *int_ptr; char *ch_ptr; float *float_ptr; double *double_ptr; 數 (2) int i=3; int *ptr; ptr=&i; 1000 1012 ptr 數, 數 1004
int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;
Memory & Pointer [email protected] 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,
_汪_文前新ok[3.1].doc
普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向
untitled
1 DBF (READDBF.C)... 1 2 (filetest.c)...2 3 (mousetes.c)...3 4 (painttes.c)...5 5 (dirtest.c)...9 6 (list.c)...9 1 dbf (readdbf.c) /* dbf */ #include int rf,k,reclen,addr,*p1; long brec,erec,i,j,recnum,*p2;
<4D F736F F D20D7DBBACFCAD4CCE231B2CEBFBCB4F0B0B82E646F63>
综合测试题一参考答案 一 填空题 ( 表达式求值 )( 本大题共 10 小题, 每小题 1 分, 共 10 分 ) 设各语句的初始化 相同 :int x=3,y=2,z=1; 1. x=y==z x= 0 2. x=!(z>y)&&!x 1 x= 1 3. x=(y++*1/3) x= 0 4. x=((x>y>z)?1:0) x= 0 5. x*=2+3 x= 15 6. x=(++z*y,y++,z%y)
[改訂新版]C言語による標準アルゴリズム事典
iii C 1991 SEND + MORE = MONEY C 100 2003 Java 2003 27 PC-9800 C BMP SVG EPS BMPSVG WindowsMacLinux Web iv int main() int main(void) EXIT_SUCCESS 0 https://github.com/okumuralab/ algo-c TEX TEX PDF PDF
Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.07.doc
2 5 8 11 0 1. 13 2. 15 3. 18 1 1. 22 2. 25 3. 27 2 1. 35 2. 38 3. 41 4. 43 5. 48 6. 50 3 1. 56 2. 59 3. 63 4. 65 5. 69 13 22 35 56 6. 74 7. 82 8. 84 9. 87 10. 97 11. 102 12. 107 13. 111 4 114 1. 114 2.
OOP with Java 通知 Project 4: 4 月 19 日晚 9 点
OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d
C
C 14 2017 5 31 1. 2. 3. 4. 5. 2/101 C 1. ( ) 4/101 C C ASCII ASCII ASCII 5/101 C 10000 00100111 00010000 ASCII 10000 31H 30H 30H 30H 30H 1 0 0 0 0 0 ASCII 6/101 C 7/101 C ( ) ( ) 8/101 C UNIX ANSI C 9/101
PowerPoint Presentation
Typed Lambda Caculus,+, 程序设计语言理论 张昱 0551-63603804,[email protected] 中国科学技术大学计算机科学与技术学院 References PFPL Chapters: 4 Statics, 5 Dynamics, 6 Type Safety, 7 Evaluation Dynamics Chapters: 10 Product Types,
3. 給 定 一 整 數 陣 列 a[0] a[1] a[99] 且 a[k]=3k+1, 以 value=100 呼 叫 以 下 兩 函 式, 假 設 函 式 f1 及 f2 之 while 迴 圈 主 體 分 別 執 行 n1 與 n2 次 (i.e, 計 算 if 敘 述 執 行 次 數, 不
1. 右 側 程 式 正 確 的 輸 出 應 該 如 下 : * *** ***** ******* ********* 在 不 修 改 右 側 程 式 之 第 4 行 及 第 7 行 程 式 碼 的 前 提 下, 最 少 需 修 改 幾 行 程 式 碼 以 得 到 正 確 輸 出? (A) 1 (B) 2 (C) 3 (D) 4 1 int k = 4; 2 int m = 1; 3 for (int
<4D F736F F D205A572D2D A1AAA1AAD4ACE7F42D43D3EFD1D4CAB5D1B5BDCCB3CC2E646F6378>
第 1 部分 Visual Studio 6.0 开发环境介绍 本书以 Visual C++ 6.0 作为 C 源程序的实践开发环境, 本章将首先介绍 Visual C++ 6.0 环境的基本操作, 包括 Visual C++ 6.0 的安装和启动,C 源程序的编辑 运行与调试 1.1 安装与启动 Visual C++ 6.0 MSDN Visual C++ 6.0 1.1 Microsoft Visual
Microsoft PowerPoint - C语言课件-9-结构体.pptx
第九章结构体 郎大鹏 第九章结构体 9.1 结构体类型的声明方法 9.2 结构体类型变量的定义与使用 9.3 结构体数组 9.4 编程举例 9.5 习题 9.1 结构体类型的声明方法 结构体声明的语法形式如下 : struct 结构体标识符 成员变量列表 ; }; 例如, 为了描述班级 ( 假设仅仅包括班级编号 专业 人数等信息 ), 可以声明如下的结构体类型 struct Class char Code[10];
技能竞赛C试题
C 语言程序设计单元测验六 ( 指针 ) 一 单项选择题 ( 每题 1 分, 共 54 分 ) 1 有以下程序 void fun(char *a, char *b) { a=b; (*a)++; { char c1='a',c2='a',*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf("%c%c\n",c1,c2); A Ab B aa C Aa D Bb 2
帝国CMS下在PHP文件中调用数据库类执行SQL语句实例
帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)
JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/
单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:// 不能以数字开头 D._3_ B:// 不能用点和空格 提问 抢答 E.$anothervar C: // 不能用点和空格
1 2005 9 2005,,,,,,,,,, ( http: \ \ www. ncre. cn,, ) 30,,,,,,,, C : C : : 19 : 100081 : : 7871092 1 /16 : 8. 75 : 96 : 2005 11 1 : 2005 11 1 : ISBN 7
1 2005 9 2005,,,,,,,,,, ( http: \ \ www. ncre. cn,, ) 30,,,,,,,, C : C : : 19 : 100081 : : 7871092 1 /16 : 8. 75 : 96 : 2005 11 1 : 2005 11 1 : ISBN 7-80097 - 564-9 /TP 8 : 10. 00 ,,,, 1994 NCRE,,, ( ),,,,,
C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1
C++ 程序设计 OJ9 - 参考答案 MASTER 2019 年 6 月 7 日 1 1 CARDGAME 1 CardGame 题目描述 桌上有一叠牌, 从第一张牌 ( 即位于顶面的牌 ) 开始从上往下依次编号为 1~n 当至少还剩两张牌时进行以下操作 : 把第一张牌扔掉, 然后把新的第一张放到整叠牌的最后 请模拟这个过程, 依次输出每次扔掉的牌以及最后剩下的牌的编号 输入 输入正整数 n(n
SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基
开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些
