C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计((一、二、三、四)的综合文章)
- 一、实验目的
- 二、 实验内容
- 2.1、实验内容1:通过下面的程序掌握各种格式转换符的正确使用方法
- 2.2、实验内容2:求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积
- 2.3、计算存款利息
- 2.4、将"China”译成密码
- 三、 实验步骤
- 3.1、顺序程序设计实验题目1:通过下面的程序掌握各种格式转换符的正确使用方法的实验步骤
- 3.2、顺序程序设计实验题目2:求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积的实验步骤
- 3.2.1、定义宏
- 3.2.2、定义变量
- 3.2.3、输入圆的半径、高
- 3.2.4、计算圆的周长、面积等参数
- 3.2.5、输出圆的周长、面积等参数
- 3.2.6、程序运行结果
- 3.3、顺序程序设计实验题目3:计算存款利息的实验步骤
- 3.3.1、变量的声明
- 3.3.2、变量的赋值
- 3.3.3、计算五种方案得到的本息和
- 3.3.4、输出五种方案得到的本息和
- 3.3.5、程序运行结果
- 3.4、顺序程序设计实验题目4:将"China”译成密码的实验步骤
- 3.4.1、变量的定义与赋初值
- 3.4.2、将字符译成密码
- 3.4.3、putchar与printf方式输出密码
- 3.4.4、程序运行结果
- 四、 实验总结
- 五、 实验完整程序
- 5.1、顺序程序设计实验题目1:通过下面的程序掌握各种格式转换符的正确使用方法的完整程序
- 5.2、顺序程序设计实验题目2:求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积的完整程序
- 5.3、顺序程序设计实验题目3:计算存款利息的实验完整程序
- 5.4、顺序程序设计实验题目4:将"China”译成密码的实验步骤的完整程序
一、实验目的
(1) 掌握c语言中使用最多的一种语句一赋值语句的使用方法。
(2) 掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。
(3) 进一步掌握编写程序和调试程序的方法。
二、 实验内容
2.1、实验内容1:通过下面的程序掌握各种格式转换符的正确使用方法
(1)通过下面的程序掌握各种格式转换符的正确使用方法。
① 输入以下程序:
#include <stdio.h>
int main()
{
int a, b;
float d, e;
char cl, c2;
double f, g;
long m, n;
unsigned int p, q;
a = 61; b = 62;
cl = 'a'; c2 = 'b';
d = 3.56; e = -6.87;
f = 3157.890121; g = 0.123456789;
m = 50000; n = -60000;
p = 32768; q = 40000;
printf("a=%d,b=%d\ncl=%c,c2=%c\nd=%6.2f,e=%6.2f\n", a, b, cl, c2, d, e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n", f, q, m, n, p, q);
}
② 运行此程序并分析结果。
③ 在此基础上,将程序第10〜14行改为
cl = a; c2 = b;
f = 3157.890121; g = 0.123456789;
d = f; e = g;
p = a = m = 50000; q = b = n = -60000;
运行程序,分析结果。
④ 用sizeof
运算符分别检测程序中各类型的数据占多少字节。
例如,int型变量a的字节数为sizeof(a)或sizeof(int)
,用printf
函数语句输出各类型变量的长度(字节数)。
2.2、实验内容2:求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积
(2)设圆半径r=l. 5,圆柱高九=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体 积。编程序,用scanf
输入数据,输出计算结果。输出时要有文字说明,取小数点后两位数字。
2.3、计算存款利息
(3)计算存款利息
有1000元,想存5年,可按以下5种办法存:
① 一次存5年期。
② 先存2年期,到期后将本息再存3年期。
③ 先存3年期,到期后将本息再存2年期。
④ 存1年期,到期后将本息存再存1年期,连续存5次。
⑤ 存活期存款。活期利息每一季度结算一次。
银行存款利率:请去银行査当日利率。
计算利息的公式
如下
1年期定期存款利息为4.14%;
2年期定期存款利息为4.68%,
3年期定期存款利息为5.4%;
5年期定期存款利息为5.85%;
活期存款利息为0.72%(活期存款每一季度结算一次利息)。
如果r为年利率,n为存款年数,则计算本息和
的公式
为
1年期本息和:p=1000×(l + r);
n年期本息和:p=1000×(l + n×r);
存n次1年期的本息和:p=1000×(1+r)^n
活期存款本息和:p=1000× (1+r/4)^4n
说明:1000×(1+r/4)是一个季度的本息和。
2.4、将"China”译成密码
(4)编程序将"China"
译成密码,密码规律是:用原来的字母后面第4个字母代替原来 的字母。例如,字母’A’后面第4个字母是’E’,用’E’代替’A’。因此,"China"
应译为"Glmre"
。 请编一程序,用赋初值的方法使cl,c2,c3,c4,c5这5个变量的值分别为'C','h','i','n','a'
, 经过运算,使 cl ,c2,c3 ,c4, c5 分别变为'G','l','m','r','e'
。分别用 putchar 函数和 printf 函数输出这5个字符。
① 输入事先已编好的程序,并运行该程序。分析是否符合要求。
② 改变cl,c2,c3,c4,c5的初值为:'T'、'o'、'd'、'a'、'y'
,对译码规律做如下补充:'W'
用'A'
替,'X'
用'B'
代替,'Y'
用'C'
代替,'Z'
用'D'
代替。修改程序并运行。
③ 将译码规律修改为:将一个字母被它前面第4个字母代替,例如'E'
用'A'
代替,'Z'
用'U'
代替,'D'
用'Z'
代替,'C'
用'Y'
代替,'B'
用'X'
代替,'A'
用'V'
代替。修改程序并运行。
三、 实验步骤
3.1、顺序程序设计实验题目1:通过下面的程序掌握各种格式转换符的正确使用方法的实验步骤
(1)通过下面的程序掌握各种格式转换符的正确使用方法。
① 输入以下程序:
#include <stdio.h>
int main()
{
int a, b;
float d, e;
char cl, c2;
double f, g;
long m, n;
unsigned int p, q;
a = 61; b = 62;
cl = 'a'; c2 = 'b';
d = 3.56; e = -6.87;
f = 3157.890121; g = 0.123456789;
m = 50000; n = -60000;
p = 32768; q = 40000;
printf("a=%d,b=%d\ncl=%c,c2=%c\nd=%6.2f,e=%6.2f\n", a, b, cl, c2, d, e);
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n", f, q, m, n, p, q);
}
② 运行此程序并分析结果。
运行结果如下
- 可以看到
g、m、n、q、p
的值输出不对,原因在于printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n", f, q, m, n, p, q);
输出的f,后面应该为g,所以应该该为如下所示
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n\n", f, g, m, n, p, q);
运行结果如下
- 可以看到,现在输出变量的数值完全正确。
③ 在此基础上,将程序第10〜14行改为
cl = a; c2 = b;
f = 3157.890121; g = 0.123456789;
d = f; e = g;
p = a = m = 50000; q = b = n = -60000;
运行程序,分析结果。
在此基础上,将程序第10〜14行改为如上的代码,运行结果为
a=50000,b=-60000
cl==,c2=>
d=3157.89,e= 0.12
f= 3157.890121,g= 0.123456789000
m=50000,n=-60000
p=50000,q=4294907296
④ 用sizeof
运算符分别检测程序中各类型的数据占多少字节。
例如,int型变量a的字节数为sizeof(a)或sizeof(int)
,用printf
函数语句输出各类型变量的长度(字节数)。
用
sizeof
运算符检测程序中各类型的数据占多少字节的代码如下所示
printf("sizeof(a)=%d字节,sizeof(b)=%d字节\n", sizeof(a), sizeof(b));
printf("sizeof(c1)=%d字节,sizeof(c2)=%d字节\n", sizeof(cl), sizeof(c2));
printf("sizeof(f)=%d字节,sizeof(g)=%d字节\n", sizeof(f), sizeof(g));
printf("sizeof(m)=%d字节,sizeof(n)=%d字节\n", sizeof(m), sizeof(n));
printf("sizeof(p)=%d字节,sizeof(q)=%d字节\n", sizeof(p), sizeof(q));
用
sizeof
运算符检测程序中各类型的数据占多少字节的运行结果如下所示
3.2、顺序程序设计实验题目2:求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积的实验步骤
(2)设圆半径r=l. 5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体 积。编程序,用scanf
输入数据,输出计算结果。输出时要有文字说明,取小数点后两位数字。
3.2.1、定义宏
定义宏的代码如下所示
#define PI 3.1415926 // π
3.2.2、定义变量
定义变量的代码如下所示
float R; // 定义半径变量
float Height; // 定义高变量
float CP; // 定义圆周长变量
float CA; // 定义圆面积变量
float BSA; // 定义圆球表面积变量
float BV; // 定义圆球体积变量
float CCV; // 定义圆柱体变量
3.2.3、输入圆的半径、高
输入圆的半径、高的代码如下所示
printf("输入圆的半径,圆柱的高: ");
scanf("%f%f", &R, &Height); // 输入圆的半径、高
3.2.4、计算圆的周长、面积等参数
计算圆的周长、面积等参数的代码如下所示
CP = 2 * PI * R; // 计算圆周长
CA = PI * R * R; // 计算圆面积
BSA = 4 * PI * R * R; // 计算圆球表面积
BV = 3.0 / 4.0 * PI * R * R * R; // 计算圆球体积
CCV = PI * R * R * Height; // 计算圆柱体积
3.2.5、输出圆的周长、面积等参数
输出圆的周长、面积等参数的代码如下所示
// 输出数据
printf("圆周长 = %.2f\n", CP);
printf("圆面积 = %.2f\n", CA);
printf("圆球表面积 = %.2f\n", BSA);
printf("圆球体积 = %.2f\n", BV);
printf("圆柱体积 = %.2f\n", CCV);
3.2.6、程序运行结果
求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积的实验运行结果如下所示
3.3、顺序程序设计实验题目3:计算存款利息的实验步骤
(3)计算存款利息
有1000元,想存5年,可按以下5种办法存:
① 一次存5年期。
② 先存2年期,到期后将本息再存3年期。
③ 先存3年期,到期后将本息再存2年期。
④ 存1年期,到期后将本息存再存1年期,连续存5次。
⑤ 存活期存款。活期利息每一季度结算一次。
银行存款利率:请去银行査当日利率。
计算利息的
公式
如下
1年期定期存款利息为4.14%;
2年期定期存款利息为4.68%,
3年期定期存款利息为5.4%;
5年期定期存款利息为5.85%;
活期存款利息为0.72%(活期存款每一季度结算一次利息)。
如果r为年利率,n为存款年数。
则计算
本息和
的公式
为
1年期本息和:p=1000×(l + r);
n年期本息和:p=1000×(l + n×r);
存n次1年期的本息和:p=1000×(1+r)^n
活期存款本息和:p=1000× (1+r/4)^4n
说明:1000×(1+r/4)是一个季度的本息和。
3.3.1、变量的声明
变量的声明 代码如下所示
// 变量的声明
float r5, r3, r2, r1, r0; // 定期存款利息
float p, p1, p2, p3, p4, p5; // 本息和
3.3.2、变量的赋值
变量的赋值 代码如下所示
// 变量的赋值
p = 1000;
r5 = 0.03;
r3 = 0.0275;
r2 = 0.021;
r1 = 0.015;
r0 = 0.0035;
3.3.3、计算五种方案得到的本息和
计算五种方案得到的本息和 代码如下所示
// 计算五种方案得到的本息和
p1 = p * (1 + r5 * 5); //一次存5年期
p2 = p * (1 + 2 * r2) * (1 + 3 * r3); //先存2年期,到期后将本息再存3年期
p3 = p * (1 + 3 * r3) * (1 + 2 * r2); //先存3年期,到期后将本息再存2年期
p4 = p * pow(1 + r1, 5); //存1年期,到期后将本息再存1年期,连续存5次
p5 = p * pow(1 + r0 / 4, 4 * 5); //存活期存款,活期利息每一季度结算一次
3.3.4、输出五种方案得到的本息和
输出五种方案得到的本息和 代码如下所示
// 输出五种方案得到的本息和
printf("p1= %f\n", p1); //输出按第1种方案得到的本息和
printf("p2= %f\n", p2); //输出按第2种方案得到的本息和
printf("p3= %f\n", p3); //输出按第3种方案得到的本息和
printf("p4= %f\n", p4); //输出按第4种方案得到的本息和
printf("p5= %f\n", p5); //输出按第5种方案得到的本息和
3.3.5、程序运行结果
计算存款利息的实验运行结果如下所示
- 可以看到第一种方案的本息和是最高的。
输出运行结果时,得到6位小数,连同整数部分有10 位数字,而一个float 型变量只能保证6位有效数字,后面几位是无意义的。
而且在输出款额时,入们一般只要求精确到两位小数(角、分)
,因此可以在printf 函数中用%10.2
格式符输出。
最后5个语句可改为如下所示
// 输出五种方案得到的本息和
printf("p1=%10.2f\n", p1); //输出按第1种方案得到的本息和
printf("p2=%10.2f\n", p2); //输出按第2种方案得到的本息和
printf("p3=%10.2f\n", p3); //输出按第3种方案得到的本息和
printf("p4=%10.2f\n", p4); //输出按第4种方案得到的本息和
printf("p5=%10.2f\n", p5); //输出按第5种方案得到的本息和
运行结果如下所示
3.4、顺序程序设计实验题目4:将"China”译成密码的实验步骤
(4)编程序将"China"
译成密码,密码规律是:用原来的字母后面第4个字母代替原来 的字母。例如,字母’A’后面第4个字母是’E’,用’E’代替’A’。因此,"China"
应译为"Glmre"
。 请编一程序,用赋初值的方法使cl,c2,c3,c4,c5这5个变量的值分别为'C','h','i','n','a'
, 经过运算,使 cl ,c2,c3 ,c4, c5 分别变为'G','l','m','r','e'
。分别用 putchar 函数和 printf 函数输出这5个字符。
① 输入事先已编好的程序,并运行该程序。分析是否符合要求。
3.4.1、变量的定义与赋初值
// 变量的定义与赋初值
char c1 = 'C', c2 = 'h', c3 = 'i', c4 = 'n', c5 = 'a';
3.4.2、将字符译成密码
// 将字符译成密码
c1 = c1 + 4;
c2 = c2 + 4;
c3 = c3 + 4;
c4 = c4 + 4;
c5 = c5 + 4;
3.4.3、putchar与printf方式输出密码
// putchar与printf方式输出密码
printf("putchar方式输出China的密码是:");
putchar(c1);
putchar(c2);
putchar(c3);
putchar(c4);
putchar(c5);
printf("\nprintf方式输出China的密码是: %c%c%c%c%c\n", c1, c2, c3, c4, c5);
3.4.4、程序运行结果
将"China”译成密码的实验运行结果如下
② 改变cl,c2,c3,c4,c5的初值为:'T'、'o'、'd'、'a'、'y'
,对译码规律做如下补充:'W'
用'A'
替,'X'
用'B'
代替,'Y'
用'C'
代替,'Z'
用'D'
代替。修改程序并运行。
- 程序修改如下
// 将字符译成密码
c1 = c1 + 4;
c2 = c2 + 4;
c3 = c3 + 4;
c4 = c4 + 4;
c5 = c5 + 4 - 26;
运行结果
③ 将译码规律修改为:将一个字母被它前面第4个字母代替,例如'E'
用'A'
代替,'Z'
用'U'
代替,'D'
用'Z'
代替,'C'
用'Y'
代替,'B'
用'X'
代替,'A'
用'V'
代替。修改程序并运行。
- 程序修改如下
// 将字符译成密码
c1 = c1 - 4;
c2 = c2 - 4;
c3 = c3 - 4 + 26;
c4 = c4 - 4 + 25;
c5 = c5 - 4;
运行结果
四、 实验总结
通过本次的实验:C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计的4个题目,掌握了如下的几点。
-(1)掌握c语言中使用最多的一种语句一赋值语句的使用方法。
-(2)掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。
-(3)进一步掌握编写程序和调试程序的方法。
五、 实验完整程序
5.1、顺序程序设计实验题目1:通过下面的程序掌握各种格式转换符的正确使用方法的完整程序
完整程序如下所示
#include <stdio.h>
int main()
{
int a, b;
float d, e;
char cl, c2;
double f, g;
long m, n;
unsigned int p, q;
a = 61; b = 62;
cl = 'a'; c2 = 'b';
d = 3.56; e = -6.87;
f = 3157.890121; g = 0.123456789;
m = 50000; n = -60000;
p = 32768; q = 40000;
//cl = a; c2 = b;
//f = 3157.890121; g = 0.123456789;
//d = f; e = g;
//p = a = m = 50000; q = b = n = -60000;
printf("a=%d,b=%d\ncl=%c,c2=%c\nd=%6.2f,e=%6.2f\n", a, b, cl, c2, d, e);
/*printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n", f, q, m, n, p, q);*/
printf("f=%15.6f,g=%15.12f\nm=%ld,n=%ld\np=%u,q=%u\n\n", f, g, m, n, p, q);
printf("sizeof(a)=%d字节,sizeof(b)=%d字节\n", sizeof(a), sizeof(b));
printf("sizeof(c1)=%d字节,sizeof(c2)=%d字节\n", sizeof(cl), sizeof(c2));
printf("sizeof(f)=%d字节,sizeof(g)=%d字节\n", sizeof(f), sizeof(g));
printf("sizeof(m)=%d字节,sizeof(n)=%d字节\n", sizeof(m), sizeof(n));
printf("sizeof(p)=%d字节,sizeof(q)=%d字节\n", sizeof(p), sizeof(q));
}
5.2、顺序程序设计实验题目2:求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积的完整程序
完整程序如下所示
#define _CRT_SECURE_NO_WARNINGS
#define PI 3.1415926 // π
#include <stdio.h>
int main()
{
float R; // 定义半径变量
float Height; // 定义高变量
float CP; // 定义圆周长变量
float CA; // 定义圆面积变量
float BSA; // 定义圆球表面积变量
float BV; // 定义圆球体积变量
float CCV; // 定义圆柱体变量
printf("输入圆的半径,圆柱的高: ");
scanf("%f%f", &R, &Height); // 输入圆的半径、高
CP = 2 * PI * R; // 计算圆周长
CA = PI * R * R; // 计算圆面积
BSA = 4 * PI * R * R; // 计算圆球表面积
BV = 3.0 / 4.0 * PI * R * R * R; // 计算圆球体积
CCV = PI * R * R * Height; // 计算圆柱体积
// 输出数据
printf("圆周长 = %.2f\n", CP);
printf("圆面积 = %.2f\n", CA);
printf("圆球表面积 = %.2f\n", BSA);
printf("圆球体积 = %.2f\n", BV);
printf("圆柱体积 = %.2f\n", CCV);
return 0;
}
5.3、顺序程序设计实验题目3:计算存款利息的实验完整程序
完整程序如下所示
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main()
{
// 变量的声明
float r5, r3, r2, r1, r0; // 定期存款利息
float p, p1, p2, p3, p4, p5; // 本息和
// 变量的赋值
p = 1000;
r5 = 0.03;
r3 = 0.0275;
r2 = 0.021;
r1 = 0.015;
r0 = 0.0035;
// 计算五种方案得到的本息和
p1 = p * (1 + r5 * 5); //一次存5年期
p2 = p * (1 + 2 * r2) * (1 + 3 * r3); //先存2年期,到期后将本息再存3年期
p3 = p * (1 + 3 * r3) * (1 + 2 * r2); //先存3年期,到期后将本息再存2年期
p4 = p * pow(1 + r1, 5); //存1年期,到期后将本息再存1年期,连续存5次
p5 = p * pow(1 + r0 / 4, 4 * 5); //存活期存款,活期利息每一季度结算一次
// 输出五种方案得到的本息和
//printf("p1= %f\n", p1); //输出按第1种方案得到的本息和
//printf("p2= %f\n", p2); //输出按第2种方案得到的本息和
//printf("p3= %f\n", p3); //输出按第3种方案得到的本息和
//printf("p4= %f\n", p4); //输出按第4种方案得到的本息和
//printf("p5= %f\n", p5); //输出按第5种方案得到的本息和
// 输出五种方案得到的本息和
printf("p1=%10.2f\n", p1); //输出按第1种方案得到的本息和
printf("p2=%10.2f\n", p2); //输出按第2种方案得到的本息和
printf("p3=%10.2f\n", p3); //输出按第3种方案得到的本息和
printf("p4=%10.2f\n", p4); //输出按第4种方案得到的本息和
printf("p5=%10.2f\n", p5); //输出按第5种方案得到的本息和
return 0;
}
5.4、顺序程序设计实验题目4:将"China”译成密码的实验步骤的完整程序
完整程序如下所示
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
// 变量的定义与赋初值
/*char c1 = 'C', c2 = 'h', c3 = 'i', c4 = 'n', c5 = 'a';*/
// 变量的定义与赋初值
char c1 = 'T', c2 = 'o', c3 = 'd', c4 = 'a', c5 = 'y';
// 将字符译成密码
//c1 = c1 + 4;
//c2 = c2 + 4;
//c3 = c3 + 4;
//c4 = c4 + 4;
//c5 = c5 + 4;
// 将字符译成密码
//c1 = c1 + 4;
//c2 = c2 + 4;
//c3 = c3 + 4;
//c4 = c4 + 4;
//c5 = c5 + 4 - 26;
// 将字符译成密码
c1 = c1 - 4;
c2 = c2 - 4;
c3 = c3 - 4 + 26;
c4 = c4 - 4 + 25;
c5 = c5 - 4;
// putchar与printf方式输出密码
printf("putchar方式输出Today的密码是:");
putchar(c1);
putchar(c2);
putchar(c3);
putchar(c4);
putchar(c5);
printf("\nprintf方式输出Today的密码是: %c%c%c%c%c\n", c1, c2, c3, c4, c5);
return 0;
}