c语言程序设计——实验报告四

c语言程序设计——实验报告四

  • 实验项目名称:实验四 选择结构程序设计
  • 实验项目类型:验证性
  • 实验日期:2024年4月1日

一、实验目的

  1. 在熟练掌握if语句和switch语句的基础上,能灵活使用if语句和switch语句进行选择结构的程序设计
  2. 学习调试程序

二、实验硬、软件环境

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等语句,编程模拟该操作过程。
image
image

实验步骤:(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;
}

实验截图
image

项目二:输入三个边长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;
}

实验截图

image

项目三:用switch结构编写一个处理四则运算的程序。

解题思路

  • 通过格式化输入函数,获取用户输入的 两个运算数值(nm)和用户输入的运算符(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;
}

实验截图
image

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

image
image

解题思路

  • 首先声明了两个函数,功能分别为:显示菜单和选择服务功能
  • 接着初始化了一个常量数组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();
  • 在代码中实现了所有要求的功能,并且考虑了各种可能的情况和错误处理
posted @ 2024-04-15 12:50  juuroppa  阅读(500)  评论(0)    收藏  举报