C语言程序设计 教案 崔武子制作 2008.7
第1章 C语言基础与顺序结构 P1 1.1 认识C语言程序 1.2 合理选用数据类型 1.3 学会使用常用运算符 1.4 学会控制输入输出数据 1.5 画顺序结构的流程图 1.6 熟悉Turbo C集成环境 *贯穿教学全过程的实例
P2 1.1 认识C语言程序 1.1.1 了解C语言程序的构成 1.1.2 熟悉主函数框架 返回
【实例1.1】观察下面程序,认识1个完整的C语言程序,了解C语言程序结构。 P2 【实例1.1】观察下面程序,认识1个完整的C语言程序,了解C语言程序结构。
预处理命令 函数原型说明 主函数 #include <stdio.h> #include <math.h> #define PI 3.14159 float sup_area(float r); float volume(float r); main() { float a=-5,b,c,d; b=fabs(a); c=sup_area(b); d=volume(b); printf("c=%f,d=%f\n",c,d); } 预处理命令 函数原型说明 主函数
sup_area函数的定义(计算球的表面积) float sup_area(float r) { float s; s=4*PI*r*r; return s; } float volume (float r) { float v; v=4.0/3.0*PI*r*r*r; return v; sup_area函数的定义(计算球的表面积) volume函数的定义(计算球的体积) 运行结果:c=314.158997,d=523.598328
归纳分析: 有且仅有1个主函数 所有C程序都由若干个函数构成的 #include <stdio.h> #include <math.h> #define PI 3.14159 float sup_area(float r); float volume(float r); main() { …… } float sup_area(float r) { …… } float volume (float r) { …… } 有且仅有1个主函数 所有C程序都由若干个函数构成的
归纳分析: 使用输入、输出函数时加此行 #include <stdio.h> #include <math.h> #define PI 3.14159 float sup_area(float r); float volume(float r); main() { …… } float sup_area(float r) { …… } float volume (float r) { …… } 使用数学函数时加此行
归纳分析: 注释部分 #include <stdio.h> #include <math.h> #define PI 3.14159 float sup_area(float r); float volume(float r); main() { …… } float sup_area(float r) { …… } float volume (float r) { …… } PI均用3.14159代替 /*函数原型说明*/ /*函数原型说明*/ 注释部分
1.1.2 熟悉主函数框架 P3 【实例1.2】编写程序,计算2个数的和与差,要求从键盘输入2个数。 编程思路 使用函数scanf实现数据的输入,使用函数printf实现数据的输出。 加法操作使用“+”,减法操作使用“-”。
#include <stdio.h> main() { int x,y,a; printf("Input x and y:"); scanf("%d%d",&x,&y); a=x+y; printf("The sum:%d\n",a); a=x-y; printf("The difference:%d\n",a); } 定义3个变量 显示提示信息 键盘输入2个整数 计算2个数的和 输出2个数的和 运行结果: Input x and y:1200 180<回车> The sum:1380 The difference:1020
#include <stdio.h> main() { int x,y,a; printf("Input x and y:"); scanf("%d%d",&x,&y); a=x+y; printf("The sum:%d\n",a); a=x-y; printf("The difference:%d\n",a); } 定义变量部分 功能语句部分
P6 1.2 合理选用数据类型 1.2.1 合理选用整型数据 1.2.2 合理选用实型数据 1.2.3 合理选用字符型数据 返回
1.2.1 合理选用整型数据 P6 【实例1.3】编写程序,计算2个正方形铁板的面积,铁板边长分别为150和200。 200 150
编程思路 利用公式“面积=边长边长”计算正方形的面积 由于需要处理的数据是整数,应从int型和long型中选用
#include <stdio.h> main() { int area1; long area2; area1=150; area2=200; area1=area1*area1; area2=area2*area2; printf("%d,%ld\n",area1,area2); } 注意数据的溢出 输出int型 输出long型 运行结果: 22500,40000
150 不确定 22500 处理“ int area1; “后 执行“area1=150;”后 执行“area1=area1*area1; “后 150 不确定 22500 area1
1.2.2 合理选用实型数据 P8 【实例1.4】编写程序,计算半径为15.67的圆面积。要求分别使用单精度型和双精度型数据计算。 编程思路 通过求圆面积公式r2计算 单精度实型变量用float定义,双精度实型变量用double定义
#include <stdio.h> #define PI 3.14159 main() { float s1; double s2; s1=PI*15.67*15.67; s2=PI*15.67*15.67; printf("s1=%f,s2=%lf\n",s1,s2); } 输出float型 输出double型 运行结果: s1=771.413940,s2=771.413969
1.2.3 合理选用字符型数据 P10 【实例1.5】假设变量ch中已存放字母'H',编写程序,将ch中的字母转换成小写字母后重新存放在该变量中。 编程思路 要处理字符,必须使用字符型类型 通过'H'+32可以得到字母'H'所对应的小写字母
#include <stdio.h> main() { char ch; ch='H'; ch=ch+32; printf("ch=%d,ch=%c\n",ch,ch); } 相当于ch=72+32; 按字符形式 按ASCLL码 运行结果:ch=104,ch=h
P11 1.3 学会使用常用运算符 1.3.1 学会使用算术运算符 1.3.2 学会使用赋值运算符 返回
1.3.1 学会使用算术运算符 P11 【实例1.6】编写程序,计算函数 的值,其中自变量x的值从键盘输入。
编程思路 先把数学表达式改写为C语言表达式 用sqrt函数计算平方根
#include <stdio.h> #include <math.h> main() { float x,y; printf("Input x:"); scanf("%f",&x); y=(sqrt(x)+2*x)/(x-5); printf("x=%f,y=%f\n",x,y); } 运行结果: Input x:7<回车> x=7.000000,y=8.322876
1.3.2 学会使用赋值运算符 P13 【实例1.7】假设A、B两个职员的原来工资都是1860.50,后来经考验决定给A职员加200元,B职员加500元。编写程序,计算两个职员的新工资。 编程思路 先定义2个单精度型变量a和b,分别存放原来的工资,再通过它们计算新的工资。
赋值运算符 赋值语句 #include <stdio.h> main() { float pay_a,pay_b; pay_a=pay_a+200; pay_b=pay_b+500; printf("%.2f,%.2f\n",pay_a,pay_b); } 赋值语句 运行结果: 2060.50,2360.50
1.4 学会控制输入输出数据 P14 1.4.1 格式输入输出函数的使用 1.4.2 单个字符输入输出函数的使用 返回
1.4.1格式输入输出函数的使用 P14 【实例1.8】编写程序,给小学生出1道100以内2个数的加法题,等学生说出自己的答案后,再告诉学生正确的答案。
编程思路 先随机产生2个100以内的整数 再用printf函数给出算术式 用scanf函数使学生输入答案
用随机函数时加此行 产生0~99之间的数 显示算式 学生输入答案 #include <stdio.h> #include <stdlib.h> main() { int op1,op2,pupil,answer; op1=random(100); op2=random(100); printf("%d+%d=",op1,op2); scanf("%d",&pupil); answer=op1+op2; printf("The answer:%d\n",answer); } 用随机函数时加此行 产生0~99之间的数 显示算式 学生输入答案 运行结果: 46+30=66<回车> The answer:76
完善后的程序保证: 每次出不同的题目 #include <stdio.h> #include <time.h> #include <stdlib.h> main() { int op1,op2,pupil,answer; randomize(); op1=random(100); op2=random(100); printf("%d+%d=",op1,op2); scanf("%d",&pupil); answer=op1+op2; printf("The answer:%d\n",answer); } 完善后的程序保证: 每次出不同的题目
1.4.2单个字符输入输出函数的使用 P15 【实例1.9】编写程序,根据输入的一个字母,计算下一个字母并输出 编程思路 用getchar函数输入1个字符 对字符加1得到其下一个字符 输出1个字符用putchar函数
scanf("%c",&ch); #include <stdio.h> main() { char ch; ch=getchar(); ch=ch+1; putchar(ch); putchar('\n'); } scanf("%c",&ch); 运行结果: B<回车> C
1.5 画顺序结构的流程图 P16 【实例1.10】画出实例1.9中程序的流程图。 返回
#include<stdio.h> main() { char ch; ch=getchar(); ch=ch+1; putchar(ch); putchar('\n'); } 定义变量ch 给ch输入1个字符 ch的值增1 输出ch中的字符 输出换行符 开始 结束
1.6 熟悉Turbo C集成环境 P17 1.6.1 验证程序的正确性 1.6.2 观察程序的单步执行过程 返回
1.6.1 验证程序的正确性 P17 若在Turbo C集成环境中验证, 请按照教材第17页中的步骤验证。
1.6.1 验证程序的正确性 P237 若在VC++6.0集成环境中验证, 请按照教材第237页中的步骤验证。 也可按照如下方法简化验证操作:
文件|新建
一定输入.c 1 3 2
②编译 ①输入代码
选“是” 选“是”
若有多个错误,先找第1个错误,修改后再编译。 若不是0,在第1个错误处双击
若有多个敬告,先找第1个敬告,修改后再编译。 若不是0,在第1个敬告处双击
连接 若有多个错误,先找第1个错误,修改后再编译。 若不是0,在第1个错误处双击
连接 若有多个敬告,先找第1个错误,修改后再编译。 若不是0,在第1个敬告处双击
运行
从键盘输入的 用Ctrl+空格切换
1.6.2 在Turbo C环境中观察程序的单步执行过程 P19 若在Turbo C集成环境中单步执行, 请按照教材第19页中的步骤进行。
1.6.2 在Turbo C环境中观察程序的单步执行过程 P241 若在VC++6.0集成环境中单步执行, 可按照教材第241页中的步骤进行。 也可按照如下方法简化操作:
光标在此行时按Ctrl+F10 编译连接后按Ctrl+F10,执行到光标所在行
从键盘输入 通过任务栏切换到代码窗口
准备执行的语句行
按F10或单击此按钮单步执行 可观察变量的值
输入表达式观察值
停止单步执行
贯穿教学全过程的实例 P20 根据教材第20~23页上机操作 返回