c语言程序设计——实验报告四
c语言程序设计——实验报告四
- 实验项目名称:实验四 选择结构程序设计
- 实验项目类型:验证性
- 实验日期:2024年4月1日
一、实验目的
- 在熟练掌握if语句和switch语句的基础上,能灵活使用if语句和switch语句进行选择结构的程序设计
- 学习调试程序
二、实验硬、软件环境
Windows计算机、Dev c 6.0
三、实验内容及步骤
实验内容:
编写程序:
编写程序:
(1)对输入的大写字母循环移动6个位置后输出,如’A’变为’G’,’W’变为’C’。
(2)输入三个边长a、b、c,如果这三个边长能构成三角形,判断该三角形是等边三角形,等腰三角形,还是其他三角形。
(3)用switch结构编写一个处理四则运算的程序。
(4)综合训练:下图所示为某银行ATM机操作界面,图1-1为登录界面,当密码输入正确,进入图1-2服务项目选择界面。然后根据需要选择相应选项。假设密码为1234,请综合使用if-else、switch等语句,编程模拟该操作过程。


实验步骤:(1)对输入的大写字母循环移动6个位置后输出,如’A’变为’G’,’W’变为’C’。
项目一:输入三个小写字母,输出其ASCII码和对应的大写字母。
解题思路
- 首先预定义一下字符的范围 65~90 大写英语字符的范围
- 使用
if语句判断是否为大写英语字符 - 使用
for循环,连续 6 次,累加 字符的 ascii码 - 如果循环过程中,字符的
ascii码等于英文大写字符最大的ascii值 就把值赋值为最小的ascii值,也就是65,然后接着累加, - 当退出循环时,输出值 即可满足题意
核心代码
#include <stdio.h>
#include <stdlib.h>
#define ASCII_MIN 65
#define ASCII_MAX 90
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
puts("请输入一个大写英语字符:\n\n");
char ch = getchar();
getchar();
printf("你输入的字符为:%c\n",ch);
if(ch > ASCII_MAX || ch < ASCII_MIN){
printf("您输入的不是大写英语字符\n");
exit(1);
}
int i;
for( i = 0; i < 6; i++){
if(ch < ASCII_MAX && ch >= ASCII_MIN){
ch++;
}
else if(ch == ASCII_MAX){
ch = ASCII_MIN ;
}
}
printf("\n");
printf("转换后的字符为:%c\n\n",ch);
printf("*****************************************\n\n");
printf("23080905040502 王永成\n\n");
printf("*****************************************");
return 0;
}
实验截图

项目二:输入三个边长a、b、c,如果这三个边长能构成三角形,判断该三角形是等边三角形,等腰三角形,还是其他三角形。
解题思路
- 首先声明各种类型三角形的标志,初始化为 false。
- 判断是否能够构成三角型,条件为:任意两边值和大于第三边,如果输入的三条边不能构成三角形则直接结束程序
- 判断是否为等边三角形或者等腰三角形,等边三角形条件为:三边相等 ,等腰三角形的条件为:任意两边相等且不等于第三边,都不满足则就是其他三角形
核心代码
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
int a,b,c;
printf("请输入三角形的边长:");
scanf("%d %d %d",&a,&b,&c);
if(!a + b > c ) return 0;
】、
if(a == b && b == c && a == c){
puts("该三角形为等边三角形。");
}
else if(a == b && a != c && b != c || a == c && a != b && c != b || b == c && c != a && c != a ){
puts("该三角形为等腰三角形")
}
else{
puts("该三角形为其他三角形");
}
printf("*****************************************\n\n");
printf("23080905040502 王永成\n\n");
printf("*****************************************");
return 0;
}
实验截图

项目三:用switch结构编写一个处理四则运算的程序。
解题思路
- 通过格式化输入函数,获取用户输入的 两个运算数值(
n,m)和用户输入的运算符(ch) - 通过
switch case语句实现四种运算符对应运算
核心代码
#include <stdio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
float n,m;
char ch;
printf("请输入四则运算表达式:");
scanf("%f %c %f",&n,&ch,&m);
switch(ch)
{
case '+' : printf("%.2f + %.2f = %.2f\n", n,m,n+m);break;
case '-' : printf("%.2f - %.2f = %.2f\n", n,m,n-m);break;
case '*' : printf("%.2f * %.2f = %.2f\n", n,m,n*m);break;
case '/' : printf("%.2f / %.2f = %.2f\n", n,m,(float)n/m);break;
default :break;
}
printf("*****************************************\n\n");
printf("23080905040502 王永成\n\n");
printf("*****************************************");
return 0;
}
实验截图

项目四:综合训练:下图所示为某银行ATM机操作界面,图1-1为登录界面,当密码输入正确,进入图1-2服务项目选择界面。然后根据需要选择相应选项。假设密码为1234,请综合使用if-else、switch等语句,编程模拟该操作过程。


解题思路
- 首先声明了两个函数,功能分别为:显示菜单和选择服务功能
- 接着初始化了一个常量数组
login_passwd用来存储系统的密码,然后声明了一个字符数组passwd用来存储用户输入的密码 - 进入循环,使用户可以退出后重新输入密码进入系统,或者密码输入错误后也可以重新输入密码
- 然后显示登陆页面提示输入登录密码
- 这里
if语句用来判断输入的密码是否和系统内的密码相同,如果相同则进入功能选择页面,如果不相同则提示重新输入密码,这里判断条件使用了strcmp()函数,用来比较两个字符串是否相同 select()函数中通过while()可以实现多次选择服务功能,函数中我使用了switch case语句来实现选择功能
核心代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//菜单函数
void show_menu();
//功能选择函数
void select();
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
const char login_passwd[8] = "1234";
char passwd[8];
while(1)
{
puts(" ");
puts(" 请输入您的密码 ");
puts(" 按下[回车]键登录 ");
puts(" ");
puts(" _________________ ");
printf(" |_________________|\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
scanf("%s",passwd);
getchar();
if(!strcmp(passwd,login_passwd))
{
puts("登录成功");
system("cls");
show_menu();
slect();
continue;
}
else
{
system("cls");
puts("登录失败");
puts("请重新输入密码......");
continue;
}
}
return 0;
}
//显示菜单
void show_menu(){
puts("\n 请选择服务项目\n\n");
puts("- 1.改密 4.查询 -\n");
puts("- 2.转账 5.存款 -\n");
puts("- 3.电子现金 6.取款 -\n");
puts("- 7.取卡 -");
puts("=========================================================\n\n");
puts("23080905040502\n王永成\n\n");
puts("=========================================================");
}
//功能选择
void select(){
printf("输入数字以选择服务项目:____\b\b\b\b");
int num = 0;
while(1){
scanf("%d", &num);
switch (num) {
case 1:
puts("这里是改密功能");
puts("请重新输入数字选择功能");
break;
case 2:
puts("这里是转账功能");
puts("请重新输入数字选择功能");
break;
case 3:
puts("这里是电子现金功能");
puts("请重新输入数字选择功能");
break;
case 4:
puts("这里是查询功能");
puts("请重新输入数字选择功能");
break;
case 5:
puts("这里是存款功能");
puts("请重新输入数字选择功能");
break;
case 6:
puts("这里是取款功能");
puts("请重新输入数字选择功能");
break;
case 7:
puts("这里是取卡功能");
puts("请重新输入数字选择功能");
break;
case 0:
system("cls");
puts("已退出");
return;
default:
puts("输入无效,请重新输入");
break;
}
}
}
实验截图
- 输入密码登陆
![image]()
- 登陆之后输入对应数字选择功能
![image]()
- 功能服务结束后可重新选择服务功能
![image]()
- 输入数值 0 以结束服务
![image]()
- 退出之后可以重新登陆
![image]()
四、实验结果及分析
- 项目四中每个功能都被封装成了简洁的函数,比如登录功能和选择功能
// 显示菜单函数
void show_menu();
// 功能选择函数
void select();
- 在代码中实现了所有要求的功能,并且考虑了各种可能的情况和错误处理





浙公网安备 33010602011771号