收藏 分销(赏)

《C-语言程序设计》实训讲义-目录.doc

上传人:仙人****88 文档编号:12013294 上传时间:2025-08-27 格式:DOC 页数:23 大小:171.50KB 下载积分:10 金币
下载 相关 举报
《C-语言程序设计》实训讲义-目录.doc_第1页
第1页 / 共23页
《C-语言程序设计》实训讲义-目录.doc_第2页
第2页 / 共23页


点击查看更多>>
资源描述
《C 语言程序设计》实训讲义 目录 第一部分 简单程序设计 第 1 单元 顺序结构程序设计(8 课时) 第 6 单元 迭代算法、递归算法和模拟求解 (4 课时) 任务 1 使用迭代算法进行方程求解 17 任务 2 使用递归算法计算阶乘 18 任务 3 模拟求解问题(选做) 20 第三部分 数据的组织 第 7 单元 利用数组来组织数据(6 课时) 任务 1 同类型多个数据的存储 21 任务 2:一维数组应用 21 任务 3 矩阵问题(二维数组的应用) 22 任务 4:冒泡排序法 23 任务 5:插入排序法 24 任务 6:简单排序法(选做) 24 第 8 单元 利用指针来处理数据(6-8 课时) 任务 1:指针的简单应用 25 任务 2:指针函数的简单应用 26 任务3指针与数组 27 第 9 单元 字符串的处理(6-8 课时) 任务 1 字符数组的简单应用 28 任务 2 利用指针处理字符串 29 任务 3:字符串标准函数的应用 任务4命令行参数 30 第 10 单元结构体(4-6 课时) 任务 1 利用结构体类型处理数据 31 任务 2 结构体数组的应用 32 第 11 单元 文件操作(4 课时) 任务 1 文件的读写操作 34 任务2文件的复制 36 任务 1: 任务 2: 任务3: 任务4 第 2 单元 分支结构程序设计(4-6 课时) 任务1数据的比较 5 任务 2 由菜单选择功能实现 6 任务 3:字符分类 7 第 3 单元 循环结构程序设计(6~8 课时) 8 在显示器屏幕上显示一行字符 2 数据的交换 3 基本算术运算 4 展示算术复合赋值运算符特点 5 引例: 在屏幕上显示指定大小长方形 任务 1: 计算 n! 8 任务 2 简单的数据加密程序 9 任务3求素数 10 任务4设置用户登录密码检查(选做) 11 第 4 单元 用函数组织 C 语言程序(4 课时) 任务 1: 简单函数 12 任务 2 函数声明和嵌套调用 13 任务 3 实现函数间参数的传递 14 第二部分 程序设计算法示例 30 第 5 单元 穷举算法(4 课时) 任务 1: 劳动分工问题 15 任务 2: 逻辑推理 16 1 第一部分 简单程序设计 第 1 单元 顺序结构程序设计(8 课时) 任务 1: 在显示器屏幕上显示一行字符 1.题目:输出“This Is My First C Program.”。 2.程序 1 /* 程序名: u101.c*/ 2 #include <stdio.h > 3 int main( ) 4{ 5 printf("Hello World.\n") ; 6 return 0; 7} 3.说明 第1行用/*和*/括起来的是注释行, 用于说明程序的功能或程序的名字 第2行是一个文件包含命令。 第3行中, main 是函数名, 表示“主函数”。每个 C 程序都必须有一个 main 函数, 也只能有一个主函数。 它的结构是这样的: main( ) { 语句 } printf 函数: C 语言提供的标准输入输出库函数 语句: C 语言的函数体由一些语句组成, 每个语句由一个分号结束。本例中, 主函数只有一个语句: printf("This Is My First C Program.\n"); 任务 1.1 知识点: 1. 注释 2. 文件包含命令 3. 主函数 4. printf 函数 5. 转义字符 6. 程序的编译和执行 7. 程序书写格式 4.C 语言程序的编译、连接和执行 第一步: 编辑源程序 第二步: 编译 第三步: 链接 第四步: 执行 5.课堂实践/课后作业 (1) 编写一个 C 语言程序, 在屏幕上显示如下图 形。 ****************** ** ** ****************** (2) 编写一个C语言程序, 在屏幕上显示如下菜单 ********************* 1 计算绝对值 2 计算倒数 3 计算平方值 4 计算平方根 ********************* --------------------------------------------------------------------------------- 2 任务 2: 数据的交换 1.题目 酒杯 A 中盛有红酒, 酒杯 B 中盛有白酒。请将两杯中的酒交换。 2 .算法分析 要交换酒杯 A 和酒杯 B 中的酒, 必须借助第三个酒杯。过程如下: · 准备一个空酒杯 Temp ; · 将 A 杯中的红酒倒入 Temp ; · 将B 杯中的白酒倒入A 中; · 将 Temp 中的红酒倒入 B 中。 3.程序 /*程序名: u102.c*/ #include <stdio.h> int main( ) { int a=2, b=3, temp; printf("a=%d, b=%d\n", a, b); temp=a; a=b; b=temp; printf("a=%3d, b=%d\n", a, b); return 0; } 4.知识点 (1) 变量与常量 (2) 变量的类型和变量类型说明符 (3) 变量名和命名规则 (4) 变量的定义 (5) 赋值运算符 (6) printf 函数的格式参数 5.课堂实践/课后练习 (1) 修改本例, 输出两个字符‘w’ 和‘t’ 。 (2) 分析以下程序的输出结果。 main( ) { char c ='x' ; printf ("c : dec =%d , oct =%o , hex =%x , ASCII =%c\n " , c , c , c , c) ; 以下单词为 C 语言的保留字(关键字),不能 用作其它用途: int,char,long,float,double,short,unsigned, struct,union,enum,auto,extern,static, register,typedef,void,if,else,switch,case, default,do,while,for,break,continue, return,goto,define,include,undef,ifdef, endif,line } (3) 以下 printf 语句中的“-”的作用是 #include<stdio.h> main( ) { 1 , 该程序的输出结果是 2 。 int x=12; 3 double a=3.1415926; printf ("%6d\n", x);\\即%md 的格式, m 为修饰符, d 为格式字符 printf ("%-6d\n", x);\\即%-md 的格式, -和 m 为修饰符, d 为格式字符 printf ("%14.10lf\n", a);\\即%m.nlf 的格式, m、n、l 为修饰符, f 为格式字符 printf ("%-14.10lf\n", a);\\即%md 的格式, -、m、n、l 为修饰符, f 为格式字符 } -------------------------------------------------------------------------------------- 任务3: 基本算术运算 1.题目 编写一个显示基本算术运算功能的程序, 并了解算术运算过程中涉及的有关向题。 2.程序 /*程序名: u103. c*/ #include <stdio.h> int main( ) { printf("\n1: 2%%3 is %d", 2%3); printf("\n2: 2%%-3 is %d", 2%-3); printf("\n3: -2%%3 is %d", -2%3); printf("\n4: 2.0/3 is %f", 2.0/3); printf("\n5: -2.0/3 is %f", -2.0/3); printf("\n6: 2.0/-3 is %f", 2.0/-3); printf("\n7: 2/3*10 is %d", 2/3*10); printf("\n8: 2.0/3*10 is %f", 2.0/3*10); printf("\n9: 2+3*10 is %d", 2+3*10); return 0; } 3.运行结果: 右框 4.知识点: 右框 5.课堂实践/课后练习 (1) 先将如下两个数学表达式转换为 C 语言的表达式, 然后编写程序验证。 运行结果 1:2%3 is 2 2:2% -3 is 2 3:-2%3 is -2 4:2.0/3 is 0.666667 5:-2.0/3 is -0.666667 6:2.0/-3 is -0.666667 7:2/3*10 is 0 8:2.0/3*10 is 6.666667 9:2+3*10 is 32 任务 1.3 知识点: (1)算术运算符 (2)算术运算符的优先级和结合性 (3)算术表达式 (4)不同类型数据之间的转换 1 2 (2*3+ 2 23 3.0 * 4 3.0 - 4+2 12 (2) 求下面算术表达式的值并编程验证结果: x+a%3*(int)(x+y)%2/4 (3) 阅读下面的程序, 修改其中的错误, 并指出造成错误的原因。 #include<stdio. h> main { x, y, z; x+y=5; printf("x+y=, z=", x, y, z); ) 设 x=2.5, a=7, y=4.7 } ---------------------------------------------------------------------------------------------- 4 任务4 展示算术复合赋值运算符特点 1.题目 编写展示算术复合赋值运算符特点的程序。 2.程序 /*程序名: u104.c*/ #include<stdio.h> int main( ) { int x=2, y=3, t; printf("\nl: x=%d, y=%d", x=x+1, y); x=2; printf("\n2: x=%d", x+=1); printf("\n3: x=%d", x++); x=2; x++; ++y; printf("\n4: x=%d, y=%d", x, y); t=x++; printf("\n5: t=%d, x=%d", t, x); printf("\n6: y=%d", y-=1); printf("\n7: y=%d", --y); t=++y; printf("\n8: t=%d, y=%d", t, y); printf("\n9: x++=%d, ++x=%d", x++, ++x); printf("\n10: --y=%d, y--=%d", --y, y --); return 0; } 3.输出结果: 右框 4.知识点: 右框 5.课堂实践\课后练习 (1)已知 int x =8 ;分别写出下面两个 printf 语句的输出结果, 并编程验证 1 printf("%d,%d",x=4,x); 2 printf("%d,%d",x,x++); (2)编写一个 c 语言程序, 根据输入的半径值计算和输出圆的周长、面积及球的体积。 ================================== 第 2 单元 分支结构程序设计(4-6 课时) 任务 1 数据的比较 1.题目 从键盘输入三个数, 输出其中最大的一个数。 2.分析 见框图 运行结果: 1 :x =3 ,y =3 2:x =3 3:x =3 4:x =3 ,y =4 5:t =3 ,x =4 6:y =3 7:y =2 8:t =3 ,y =3 9:x ++=5 ,++x =5 10:--y =1 ,y --=3 任务 1.4 知识点 (1) 自增/ 自减运算 (2) 复合赋值运算符 (3) 复合赋值运算符的优 先级和结合性 (4) 赋值表达式 (5) printf 函数中参数的 5 3.程序 /*程序名: u201.c*/ #include<stdio.h> int main( ) { int a, b, c, max; printf("Please input three integers(a, b, c): \n"); scanf("%d, %d, %d", &a, &b, &c); printf("The three integers is: "); printf("a=%d\tb=%d\tc=%d\n", a, b, c); if(a>b) max=a; else max=b; if(c>max) max=c; printf("The max is: %d", max); return 0; } 任务 2.1 知识点 (1) (2) (3) (4) (5) "交互式"友好界面 格式输入函数 scanf( ) if...else 结构 关系运算符和关系表达式 逻辑运算符和逻辑表达式 4.知识点:右框 5.课堂实践/课后练习 (1) 对于以下函数 y =f(x) ,请编写程序描述之并画出框图。 --------------------------------------------------------------------------------------- 任务 2 由菜单选择功能实现 1.题目 在屏幕上输出菜单,并根据用户输入的选择实现对应的功能。 2 .分析 根据用户输入的字符进行功能实现, 输入 a, 则计算正弦值, 输入 b, 则计算余弦值, 输入 c, 则计算绝对值, 输入 d, 则计算平方根。 3.程序 /* 程序名 u202.c */ #include <stdio.h> #include <math.h> int main() { char ch; float x; printf("*************************\n"); printf(" a 计算指数函数值\n"); printf(" b 计算对数值 \n"); 6 printf(" c 计算绝对值 \n"); printf(" d 计算平方根 \n"); printf("*************************\n"); printf("请输入 a b c d 中任一字符:"); ch=getchar(); printf("您输入的字符是:"); putchar(ch); printf("\n 请输入进行运算的数: "); scanf("%f",&x); switch(ch) { case 'a':printf("\n%f 的指数函数值是%f",x,exp(x));break; case 'b':printf("\n%f 的对数值是%f",x,log(x));break; case 'c':printf("\n%f 的绝对值是%f",x,fabs(x));break; case 'd':printf("\n%f 的平方根是%f",x,sqrt(x));break; default:printf("\n 菜单选择错误!"); } return 0; 任务 2.2 知识点 (1) 字符输入函数 getchar() (2) 字符输出函数 putchar() (3) 多分支 switch 结构 (4) 库函数的使用 } 4.知识点:右框 5.课堂实践/课后练习 (1) 编程实现第 1 单元任务 1 的课后练习(2)的各功能; (2) 根据输入的字符输出成绩区间: 输入 A 或 a, 成绩在[90, 100); 输入 B 或 b,成绩在[80, 90);输入 C 或 c,成绩在[70, 80); 输入 D 或 d, 成绩在[60, 70); 输入 E 或 e, 成绩在[ 0, 60); 输入其它字符, 显示输入错误。 使用 switch 语句编程实现。 --------------------------------------------------------------------------------- 任务 3:字符分类 1.题目 判断由键盘输入的字符是数宇、字母, 还是空白。 2 .分析 根据输入的字符进行判断, 若是数字, 则输出“digiter” , 若是字母, 则输出“char” , 否则输出“white” 3.程序 /*程序名: u203.c*/ #include<stdio.h> int main( ) { char c; printf("Please input c=getchar( );/*输入一个字符*/ printf("\nIt\'s a");/*用\'输出撇号*/ if(c>='0'&&c<='9') a character: "); 7 printf("digiter!"); else if((c>='A'&&c<='Z')||(c>='a'&&c<='z')) printf("char!"); 任务 2.3 知识点 (1) 字符型数据的比较和加减运算 (2) 转义字符的使用 (3) if...else 结构的第三种形式 (4) if 结构的嵌套 else printf("white!"); return 0; } 4.知识点:右框 5.课堂实践/课后练习 (1)下面的程序是否能求出三个数中的最大值?为 什么?如何修改? #include<stdio.h> main( ) { (2)将以下程序段改用嵌套的 if 语句实现。 int s, t, m; t=(int)(s/10); switch(t) { case 10: m=5;break; case 9: m=4;break; case 8: m=3;break; case 7: m=2;break; case 6: m=1;break; default: m=0; } (3) 使用 if 嵌套编程判断某一年是否闰年.(提示: 闰年能被 400 整除或者能被 4 整除但且不能被 100 整除) int x, y, z, max; if(z>y) if(z>x) max=z; if(y>x) max=y; } else printf("\nmax=%d ", max); 任务 3.0 知识点 (1) for 循环结构 (2) 转义字符/t ================================ 第 3 单元 循环结构程序设计(6~8 课时) 引例: 在屏幕上显示指定大小长方形 1.题目:在屏幕上显示一个长 20 个星, 宽 17 颗星组成的长方形 2.程序 循环开始 i<=n /* 程序名 u300.c */ #include "stdio.h" int main() { 假 i=1,p=1 int i; printf("\t********************\n"); for(i=1;i<=15;i++) printf("\t* printf("\t********************\n"); return 0; 真(非0) p*=i *\n"); i++ } 3.知识点: 上页框内 -------------------------------------------------------------------------------- 任务1: 计算n! 8 1.题目:使用 C 语言的三种循环语句编程计算 n 的阶乘 2. 分析: 流程框图(右图) 3. 程序 /* 程序名 u301.c */ #include "stdio.h" int main() { int i,n; long p=1; printf("请输入 n 的值:"); scanf("%d",&n); for(i=1;i<=n;i++) p*=i; printf("%d!=%d",n,p); return 0; 任务 3.1 知识点 (1) while 语句 (2) do while 语句 (3) 三种循环语句的转换 } /* 程序名 u302.c */ #include "stdio.h" int main() { /* 程序名 u303.c */ #include "stdio.h" int main() { int i=1,n; long p=1; printf("请输入 n 的值:"); scanf("%d",&n); do { p*=i; i++; } while(i<=n); printf("%d!=%d",n,p); return 0; int i=1,n; long p=1; printf("请输入 n 的值:"); scanf("%d",&n); while(i<=n) { p*=i; i++; } printf("%d!=%d",n,p); return 0; } 4.知识点:右框 5. 课堂实践/课后练习 (1) 编程计算 1+2+...+100 的和.(分别使用 3 种循环语句) ----------------------------------------------------------------------------------------- 任务 2 简单的数据加密程序 1. 题目 采用某种方法将输入的数据进行转换, 以实现数据加密。 2. 分析 本题采用的是一种最简单的以字符为单位的置换加密方法。这个方法就是在 ASCII 码表中, 把一个要变 换的字符加上(或减去)一个常数使其变成另外一个字符。如字符‘a’ -32 , 变成了‘A’ 。这里“32” 就称为 密钥(key )。 9 3. 程序 /*程序名: u304. c*/ #include<stdio.h> int main( ) { int key; char ch; printf("请输入密钥: \n"); scanf("%d", &key); printf("输入明文, 将得到对应密文如下: \n"); while((ch=getchar())!='\n') (ch+key)>122?putchar(ch-122+33+key): ((ch+key)<33?putchar(ch+122+key): putchar(ch+key)); return 0; } 4.知识点:右框 5.课堂实践/课后练习 (1) 设计一个与本例对应的解密程序。 ------------------------------------------------------------------------------ 任务3 求素数 1.题目 输出 100 以内的素数。 2 .分析 素数是除 1 和它本身之外不能被其他任何整数整除的正整数。本题目可以采用穷举法。 3.程序 任务 3.2 知识点 (1) while 语句表达式 (2) 条件运算符和条 件表达式 (3) 字符的存储与运 算 { /*程序名: u305.c*/ #include<stdio.h> int main( ) int m, n, flag, j=0; printf("\n The primers in 3~100 is: \n"); for(m=3;m<=100;m++) { flag=1; /*设置标志*/ for(n=2;n<=m/2;n++) { if(m%n==0) { flag=0;/*改变标志*/ break; } } if(flag==0)/*判断标志*/ 运行结果: The primers in 3 ~100 is : 3 17 37 59 79 5 7 11 13 19 23 29 31 41 43 47 53 61 67 71 73 83 89 97 10 continue; printf("%4d", m); j++; if(j%5==0) printf("\n"); } return 0; 任务 3.3 知识点 (1) 循环的嵌套 (2) break 语句 (3) continue 语句 (4) 标志变量的使用 (5) 如何写出好程序的几条建议 } 4.运行结果:右上框 5.知识点:右框 6.课堂实践 (1)阅读下面的程序, 指 (2) 编程打印如下九九乘法表。要求分别采用三种循环语句编程。 出运行结果。 main( ) { int a=1, b; for(b=1;b<=10;b++) { if(a>=8) break; if(a%2==1) { a+=5; continue; } a-=3; } printf("%d\n", b); 123456789 ------------------------------------------------------------------------------------------------------------------ 1*1=1 2*1=2 3*1=3 4*1=4 5*1=5 6*1=6 7*1=7 8*1=8 9*1=9 2*2=4 3*2=6 4*2=8 5*2=10 6*2=12 7*2=14 8*2=16 9*2=18 3*3=8 4*3=12 5*3=15 6*3=18 7*3=21 8*3=24 9*3=27 4*4=16 5*4=20 6*4=24 7*4=28 8*4=32 9*4=36 5*5=25 6*5=30 7*5=35 8*5=40 9*5=45 6*6=36 7*6=42 8*6=48 9*6=54 7*7=49 8*7=56 9*7=63 8*8=64 9*8=72 9*9=81 } --------------------------------------------------------------------------------------------- 任务 4 设置用户登录密码检查(选做) 1.题目 设置用户登录密码检查 功能要求: 1提示用户输入一个密码。 2用户输入密码后, 程序对其进行检查: · 密码对, 则告诉用户: “ 欢迎您使用本系统!” ; · 密码不对, 则告诉用户: “ 您无权使用本系统!” 。 3用户有 5 次验证机会。 2.程序 /* 程序名: u306.c*/ #include <stdio.h > #include <stdlib.h >/* 使用转换函数 atoi 必须包含头文件 stdlib.h*/ #define TIMES 5 11 #define PASSWORD "1234" int main( ) { char password[10]; /* password 为用户输入的密码*/ int i =0;/*i 为计数器, 记录回答密码次数*/ do { printf("请输入密码: "); scanf("%s", password); if (!strcmp(password,PASSWORD)) break; else i++; }while(i<TIMES); if(i<TIMES) 任务 3.4 知识点 (1) 符号常量 (2) 字符串常量 (3) 常用字符串操作函数 (4) break 语句 (5) 计数器 printf("欢迎您使用本系统! "); printf("您无权使用本系统!"); else return 0; } 3.知识点: 右框 4.课堂实践 (1) 设计一个累加求和程序, 不断将用户从键盘输入的数字加起来, 直到输入回车为止。 ======================================= 第 4 单元 用函数组织 C 语言程序(4 课时) 任务 1: 简单函数 1. 题目: 编写函数计算 n!,并通过函数调用, 计算组合数 C(m,n)= 。 2. 分析 本例根据阶乘的相关运算, 可以设计一个函数, 完成求 n! 的操作。 主函数的功能就是调用该函数, 以实现题目要求。 m! n!(m-n)! 3.程序 /* 程序名: u401.c*/ #include<stdio.h> int main() { int m,n,c; printf(“\n 请输入 m 和 n 的值: "); scanf("%d,%d",&m,&n); c=fac(m)/(fac(n)*fac(m-n)); /*三次调用函数 fac,求 m!、n!、(m-n)!*/ printf("\nC(m,n)=%d",c); /*输出计算结果*/ return 0; } int fac(int k) /*计算一个整数的阶乘*/ /*输入 n、k 的值*/ { int i,s=1; 12 for(i=1;i<=k;i++) s*=i; return(s); 任务 4.1 知识点 (1) 函数定义 (2) 函数调用 } 4.知识点: 右框 5.课堂实践/课后练习 (1)编写 2 个函数,分别求三个数的最大值和最小值,在主函数中计算最大值和最小值之差。 (2) 编写程序,用泰勒(Taylor)级数求 e 的近似值,直到最后一项小于 10-6 为止. e=1+1+1 +...+ 1 ---------------------------------------------------------------------------------------- 任务 2 函数声明和嵌套调用 1! 2! n! 1.题目 编写两个函数,分别计算 n!和 P(m,n),并在主函数中输出 P(m,n)和 C(m,n) 2 .分析 (1)P(m,n)=m!/(m-n)! (2)C(m,n)= P(m,n)/n! (3)函数 fac 用于计算 n! 3.程序 /*程序名 u402.c*/ #include"stdio.h" long fac(long); long perm(long,long); int main() { long m,n,p,c; printf("\n 请输入 m 和 n 的值: "); scanf("%d,%d",&m,&n); p=perm(m,n); /*调用函数 perm,计算 P(m,n)*/ c=p/fac(n); /*利用上一个语句得到的 P(m,n)并调用函数 fac,计算 C(m,n)*/ printf("\nC(m,n)=%d",c); /*输出计算结果*/ return 0; } long perm(long m, long n) /*计算 P(m,n)*/ { return fac(m)/fac(m-n); /*调用 fac 函数计算 P(m,n)*/ long fac(long k) /*计算阶乘*/ (4)函数 perm 用于计算 P(m,n) (5)主函数中计算 C(m,n)和输出 P(m,n)和 C(m,n) } { long i,s=1; for(i=1;i<=k;i++) s*=i; return(s); 任务 4.2 知识点 (1) 文件包含命令中<>和""的差别 (2) 函数声明的使用 (3) 函数调用的嵌套使用 /*输入 m、n 的值*/ 13 } 4. 知识点:右框 5.课堂实践/课后练习 (1) 编写函数, 功能为求圆的周长和面积。编写主函数进行程序调用, 半径从键盘输入。 (2) 设计程序, 可模仿计算器完成加、减、乘、除四则运算: 由键盘输入两个数, 按用户的决定进行一种运 算, 并给出结果。其中, 加、减、乘、除各由一个函数实现。 --------------------------------------------------------- 任务 3 实现函数间参数的传递 1.题目 定义一个函数, 从主调函数接收两个数据, 并使之 交换。 2.程序 /* 程序名: u403.c*/ #include <stdio.h > void swap(int x , int y) { int temp ; temp =x ; x =y ; y =temp ; printf("in function x =%d , y =%d\n" , x , y) ; } int main() { int a, b; 3.运行结果: 右图 4.分析 从上面的运行结果可以看出, 并没有达到交换的目的。原因: 实参和形参间的传递是单向值传递。即只能由 实参传递给形参, 形参不能传值给实参。形参值的改变对实参不起作用。 5.采用全局变量解决两数交换 /* 程序名: u404.c*/ #include <stdio.h > int a =2 , b =3 ; void swap(); int main() int temp ; temp =a ; a=b; b=temp; printf("in function a=%d, b=%d\n", a, b); { } printf("a=%d, b=%d\n", a, b); swap( ); printf("a=%d, b=%d\n", a, b); return 0; 6.运行结果:右图 7.知识点:变量的类型和作用范围 8.仔细阅读程序 u403.c 和 u404.c,分析哪些变量是全局变量,哪些变量是局数变量,并指出它们的作用 范围和生存周期. ================================ 第二部分 程序设计算法示例 void swap( ) { } } printf("input two integers: \n"); scanf("%d, %d", &a, &b); printf("a=%d, b=%d\n", a, b); swap(a, b); printf("a=%d, b=%d\n", a, b); return 0; 14 第 5 单元 穷举算法(4 课时) 穷举算法的基本思想是: 对问题的所有可能状态一一测试, 直到找到解或全部可能状态都测试完毕为 止(无解)。 任务 1: 劳动分工问题 1. 题目 36 块砖, 36 人搬;男搬 4, 女搬 3, 两个小孩抬一砖, 要求一次全搬完, 问男、女、小孩各若干? 2. 分析 依题意,男人数最多 8 人,女人最多 11 人;男 人(men)、女人(women)、小孩(children)的人数必须 满足以下 3 个条件:␣总人数为 36: men+women+children=36; ␣ 砖 总 数 为 36 : 4*men+3*women+children/2=36; ␣由“两个小孩抬 一块砖”可知:小孩人数为偶数,即 children%2=0.满 足以上条件的men, women, children取值即为该问 题的答案。 本题的穷举过程算法为: 从1开始,列举 men 的各 个可能值,在每个 men 值下找出满足条件的解. for(men=1;men<=8;men++) 下面进一步用穷举方法来分析 S1: for(women=1;women<=11;women++) { S1: 找满足两个方程的解的 women 和 children S2: 输出一组解 } 由于对列举的每个 children 与 women 都可以按下式 children=36-men-women 求出一个 children 因此, 只要该 children 满足另一个方
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服