1
上次作业中的问题
!!!!!!!!!没有真正上机
任务?程序设计语言?正确程序
没有加作业要求中的注释只能给一半平时成绩。
抄袭者与被抄袭者均从平时成绩上扣分。
大多数同学反映:
对上机和书写 C语言不熟悉,这是正常现象,多练就会越来越熟悉。
学习方法:
读例题
模仿例题自己写程序
上机调试
再与例题的源程序进行比较第 2章 简单 C程序设计本讲:将从一个问题出发,分析问题,
解决问题,并介绍一些相关语法
3
问题的提出
编写 C程序计算圆的周长和面积,并将结果输出到屏幕。
4
问题的分析
甲:请给我计算一下圆的周长和面积。
乙:请问半径是多少?
甲,5.3。
乙:圆的周长 =2*π*5.3=33.3
圆的面积 =π*5.3*5.3=88.25
算法?
开始
1.输入半径
2.计算周长和面积
3.输出计算结果
结束
5
1、输入半径 -分析
计算机如何区分半径,周长,面积?
为不同的数据定义不同的 变量名,例如:
r,circumference,area.
计算机上处理的数据有几种类型?这些数据又是什么类型?
三种,整数类型 (int)、实数类型 (float和
double)、字符类型 (char),不同类型的数据其 编码方式 和 所占空间 不同。
半径等数据都是实数类型
6
1、输入半径 -分析
用什么语句实现输入?
Scanf()
输入的数据存放在哪?
内存
系统根据变量的数据类型自动为其分配空间,并将 内存地址 与 变量名 进行关联。我们根据变量名使用变量,系统根据其对应的内存地址对数据进行读写。
7
1、输入半径 -结果
float r;
/*定义单精度实数变量 r,用于保存半径的值 */
printf(“please input radium:,);
/*在屏幕上提示:请输入半径 */
scanf(“%f”,&r); /*输入半径 */
确定半径的数据类型 float和变量名 r
从键盘上输入半径的值
使用 Scanf()函数,前边要加上
#include<stdio.h>
“”内表示输入数据的格式,
&求地址运算符。
%的个数应该与变量的个数和类型一致
8
2、计算周长和面积确定周长和面积的类型和变量名。
根据公式计算。
float r,circumference,area;
/*定义单精度实数变量 r的同时,定义周长 circumference
和面积 area,这些定义 一定在写在前面 */
printf(“please input radium:,);
/*在屏幕上提示:请输入半径 */
scanf(“%f”,&r); /*输入半径 */
circumference=2*3.14159*r;
area=3.14159*r*r;
/*上述两个 表达式 求周长和面积; 2和 3.14159称为 常量,
它们也有类型; =是赋值运算符,表示把其右边的值赋给左边的变量 */
9
3、输出结果
printf("area = %f\n",area);
printf("circumference = %f\n",circumference);

printf("area = %f,circumference = %f\n ",area,
circumference);
printf()中给出几个参数,参数之间用 逗号 分隔;
“” 内表示输入数据的格式,其中有三种类型的符号:
直接按原样输出的普通字符,如,area =
以 \开头的转义字符,如,\n表示回车
表示输出数据的格式,如 %f表示 float类型,%的个数应该与变量的个数和类型一致
10
问题解决:
#include <stdio.h>
#define PI 3.14159
/*根据输入的半径,输出圆的面积和周长 */
void main()
{
float r,area,circumference; /* 定义实数变量 */
printf("Please input r:"); /* 显示提示信息 */
scanf("%f",&r); /* 从键盘获得一个实数 r*/
area= PI * r * r; /* 计算面积 */
printf("area = %f\n",area); /* 输出面积 */
circumference =2 * PI * r; /* 计算周长 */
printf("circumference = %f\n",circumference); /* 输出周长 */
}
另一种 编译预处理命令 (宏定义 )
定义一个符号常量,则在编译前,将下边所有,” 以外的 PI替换 成
3.14159
习惯:常量名大写
11
问题的实现方法一
#include <stdio.h>
void main()
{
printf("area = %f\n",3.14159 * 5.3 *
5.3); /* 输出面积 */
printf("circumference = %f\n",2 *
3.14159 * 5.3); /* 输出周长 */
}
12
问题的实现方法二
#include <stdio.h>
void main()
{
float r=5.3;
printf("area = %f\n",3.14159 * r * r);
/* 输出面积 */
printf("circumference = %f\n",2 *
3.14159 * r); /* 输出周长 */
}
13
问题的实现方法三
#include <stdio.h>
#define PI 3.14159
void main()
{
float r=5.3;
printf("area = %f\n",PI * r * r);
/* 输出面积 */
printf("circumference = %f\n",2 * PI * r);
/* 输出周长 */
}
这三种方法都只能计算固定半径 的圆的周长及面积 !!!建议实际编程中采用方法四 。
14
涉及到的语法知识
-标识符 与 关键字
标识符
标识符是变量,函数,标号等的名字或标记
两类:
系统定义的标识符,例如,printf,scanf,main等
用户自己定义的,自己定义标识符时要考虑如下问题:
– 只能用字母,数字和下划线,并且第一个字母只能是字母或下划线;
– 不能与 关键字 (系统保留的特殊词汇 )相同 ;
– 区分大小写,即 R和 r是两个不同变量。
– 为便于阅读和理解,对象的取名尽可能直观,最好不要用系统定义的标识符。
关键字
我们已经学的有,short long int float double char
void
15
涉及到的语法知识
-数据类型数据类型基本类型构造类型指针类型空类型整型实型 ( 浮点型 )
字符型枚举类型数组类型结构体类型共用体类型单精度实型双精度实型基本整型长整型短整型无符号整型
16
基本数据类型
int
整数,在目前绝大多数机器上占 4个字节。 TC2中是 2个字节
float
单精度浮点数,一般是 4个字节长
double
双精度浮点数,一般是 8个字节长
char
字符,一般是 1个字节长
用来表示 256个 ASCII字符,或者 0~255的整数注意:字符类型与整数类型在一定范围内可互相转换。即将字符的 ASCII码等同于一个整数。
17
数据类型修饰符
short
short int的简写,短整数,一般 2个字节长。可简写为 short
long
long int,长整数,一般是 4个字节长。通常简写为 long
long double,长双精度(高精度)浮点数,一般是 10个字节长。
signed
用来修饰 char,int,short和 long,说明他们是 有符号 的整数
(正整数,0和负整数)。一般缺省都是有符号的,所以这个修饰符通常省略
unsigned
用来修饰 char,int,short和 long,说明他们是 无符号 的整数
(正整数和 0)
请大家课下亲自计算一下每种数据类型能够表达的数据范围 !!!
并思考或实验:若计算的数据超出范围会怎样?
18
C语言承认的基本数据类型
char
short int
int
long int
signed(或 unsigned) +
float
double
long double
19
涉及到的语法知识
-变量
使用变量的基本原则
变量必须先定义,后使用,为什么?
所有变量必须在第一条可执行语句前定义
变量的类型要根据实际情况 (数据类型及范围 )设定,
否则导致 类型溢出 和 舍入误差 。
一条声明语句可声明若干个同类型的变量
声明变量,是初始化变量的最好时机
不被初始化的变量,其值为危险的随机数
例:
unsigned int x,y,sum = 0;
char esc = 'a';
float eps = 1.5;
20
涉及到的语法知识
-常数 与 常量十进制,以非 0数字开头,如,123,-9,0
八进制,以 0数字开头,如,0123,011,067
十六进制,以 0x数字开头,如,0x123,0xff
整型常量十进制,必须带小数点,如,123.0,.9,0.0,-10.
指数形式,E或 e前面必须有数值,后边必须是整数,如,1.23E3,.9e-2,5e2,-8E-4
实型常量普通字符,如,’ a’,’ 2’,’ H’,’ &’,’ #’,表示字符的 ASCII码值转义字符,如,’ \n’,’ \167’,’ \x1f’,’ \\’,
’ \’’
字符常量常量字符串常量,用 双引号 引起来,系统最后自动加 ’ \0’。 如
:,Hello”,” a”
枚举常量 ( 枚举元素 )
思考,‘ 3’与 3
有何不同,,a”
与 ‘ a’有何不同?
还有一种常量称为 符号常量
例:
#define PI 3.14159
格式:
#define 符号常量名 常量
21
涉及到的语法知识
-输入输出
C语言中的输入输出由库函数实现
printf()和 scanf()的更多用法请自学,
可参考教材 P400的 B.9。最好的自学方法是 进行实验,观察各种表示的输入、
输出结果
22
本讲小结
要求 学会与例题难度相仿的简单程序设计
要求读懂简单程序的功能,并得判断结果
应掌握的语法内容
标识符与关键字
数据类型
变量与常量
输入输出函数的基本用法
23
作业:
编写求梯形面积的程序
补充:数据由键盘输入,结果输出在屏幕上。
分析:设梯形上底为 a,下底为 b,高为 h,
面职为 s,则:
s=( a+ b) × h÷ 2
完成作业步骤:先写算法,再写程序,人工检查一遍再上机调试,最后按格式上交。