一、实验目标
- 掌握变量的正确定义与赋值方法。
- 熟练运用运算符构建合法的C表达式。
- 能够使用顺序结构编写简单C程序。
- 熟悉VS2010开发环境,完成程序的创建、编写、运行与调试。
二、核心知识回顾
(一)变量基础
- 变量使用原则:遵循“先定义,后使用”,未定义的变量无法在程序中调用。
- 变量定义格式:
数据类型 变量名1, 变量名2, ..., 变量名n;- 数据类型:决定变量占用的字节数、存储形式及取值范围(如
int占4字节,char占1字节)。 - 变量名:需为合法标识符,由字母、数字、下划线组成,且不能以数字开头(错误示例:
int 0_cj;,正确示例:int a, b; float x;)。
- 数据类型:决定变量占用的字节数、存储形式及取值范围(如
- 变量初始化:定义时为变量赋初始值(推荐编程习惯,避免内存中随机值干扰),格式为
数据类型 变量名 = 初始值;- 示例1:
int x = 1, y, z;(仅x初始化,y、z未初始化) - 示例2:
int x = y = z = 1;(x、y、z均初始化为1)
- 示例1:
(二)不同类型数据混合运算规则
整型(int)、字符型(char)、浮点型(float/double)可混合运算,转换遵循“低精度→高精度”“少字节→多字节”原则,具体优先级(从低到高):char/short → int → float → double。
运算示例解析
已知 int i = 3; float f = 2.5; double d = 7.5;,计算表达式 10 + 'a' + i * f - d / 3:
10 + 'a':'a'的ASCII值为97(int型),结果为107(int型)。i * f:i(int)与f(float)均转换为double,计算得3*2.5=7.5(double型)。- 步骤1结果 + 步骤2结果:
107(int)转换为double,得114.5(double型)。 d / 3:3(int)转换为double,计算得7.5/3=2.5(double型)。- 最终运算:
114.5 - 2.5 = 112.0(double型)。
(三)简单程序编写步骤
- 编写
main函数:C程序入口,格式为int main() { ... return 0; }。 - 定义与初始化变量:根据需求选择合适的数据类型,必要时初始化。
- 输入数据:使用
scanf函数为变量赋值(如scanf("%f", &r);)。 - 实现算法语句:通过表达式、公式等完成核心计算(如圆面积公式、速度位移公式)。
- 输出数据:使用
printf函数展示结果(如printf("圆面积S=%.6f", s);)。
三、实验内容与实现
(一)实验1:观察整型与字符型变量的地址、值与占用空间
- 实验需求:存储1个整数和1个字符,观察其存储地址、占用字节数及具体值,支持断点调试与结果打印(选做)。
- 参考代码:
#include<stdio.h>
int main(void)
{
int a = 2; // 初始化整型变量a
char c = '2'; // 初始化字符型变量c
// 打印字符变量信息
printf("字符c的值是%c\n", c);
printf("字符c的存储地址是0x%x\n", &c);
printf("字符c占用内存%d个字节\n", sizeof(c));
// 打印整型变量信息
printf("整数a的值是%d\n", a);
printf("整数a的存储地址是0x%x\n", &a);
printf("整数a占用内存%d个字节\n", sizeof(a));
return 0;
}
- 关键说明:
sizeof(变量名):获取变量占用的字节数(char占1字节,int占4字节)。&变量名:获取变量的内存地址,打印格式用%x(十六进制)。
(二)实验2:计算圆的面积与周长
- 实验需求:输入圆的半径
r,根据圆周率3.14计算面积S(公式:S=3.14*r*r)与周长C(公式:C=2*3.14*r)。 - 参考代码:
#include<stdio.h>
int main()
{
float r, s, c; // 定义半径r、面积s、周长c(浮点型)
printf("请输入圆半径r:");
scanf("%f", &r); // 输入半径
s = 3.14 * r * r; // 计算面积
c = 2 * 3.14 * r; // 计算周长
printf("圆面积S=%.6f\n", s); // 保留6位小数输出面积
printf("圆周长C=%.6f\n", c); // 保留6位小数输出周长
return 0;
}
- 运行示例:输入
3.5,输出“圆面积S=38.465000,圆周长C=21.980000”。
(三)实验3:计算物体的速度与位移
- 实验需求:输入初速度
v0(浮点型)、加速度a(浮点型)、时间t(整型),根据物理公式计算t时刻的速度与位移。 - 核心公式:
- 速度:
v = v0 + a * t - 位移:
s = v0 * t + 0.5 * a * t * t(用0.5避免整数除法精度问题)
- 速度:
- 参考代码:
#include <stdio.h>
int main(void)
{
float v0, a; // 初速度v0、加速度a(浮点型)
int t; // 时间t(整型)
float v, s; // t时刻速度v、位移s(浮点型)
printf("请输入初始速度、加速度和经过的时间:\n");
scanf("%f%f%d", &v0, &a, &t); // 输入三个参数
v = v0 + a * t; // 计算速度
s = v0 * t + 0.5 * a * t * t; // 计算位移
printf("当初始速度为%f时\n", v0);
printf("%.1fs时的速度为%f\n", t, v); // 时间t保留1位小数
printf("%.1fs时的位移为%f\n", t, s);
return 0;
}
- 运行示例:输入
0 0.19 30,输出“当初始速度为0.000000时,30.0s时的速度为5.700000,30.0s时的位移为85.500000”。
(四)实验4(选做):计算平面两点间距离
- 实验需求:输入两点坐标
(x1,y1)和(x2,y2),计算两点间距离(保留2位小数)。 - 核心公式:
distance = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))(需调用math.h头文件的sqrt函数)。 - 参考代码:
#include<stdio.h>
#include<math.h> // 包含sqrt函数的头文件
int main()
{
float x1, y1, x2, y2; // 两点坐标
float distance; // 两点间距离
scanf("%f%f%f%f", &x1, &y1, &x2, &y2); // 输入坐标
// 计算距离的平方
distance = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
distance = sqrt(distance); // 开平方得距离
printf("%.2f", distance); // 保留2位小数输出
return 0;
}
- 运行示例:输入
3 5 6 7,输出“3.61”。
四、程序调试(VS2010环境)
(一)调试核心步骤
- 设置断点:在需观察的代码行左侧单击,出现红色圆点(如变量初始化行)。
- 启动调试:点击“调试”→“启动调试”(或按
F5),程序运行至断点处暂停。 - 观察变量:
- 打开“局部变量”窗口,查看变量的实时值。
- 若需查看地址或自定义变量,使用“快速监视”(按
Shift+F9),输入&变量名查看地址。
(二)常用调试快捷键
| 功能 | 快捷键 |
|---|---|
| 启动调试 | F5 |
| 停止调试 | Shift+F5 |
| 逐语句执行(进入函数) | F11 |
| 逐过程执行(跳过函数) | F10 |
| 跳出当前函数 | Shift+F11 |
| 切换断点 | F9 |
| 快速监视 | Shift+F9 |
五、思考题
- 如何在程序运行时测试多组数据以验证正确性?(提示:可结合循环结构实现)
- 能否让程序从文件中读取数据,或把运行结果保存到文件中?(提示:需使用文件操作函数)