普罗621 2022-06-02 17:25 采纳率: 100%
浏览 78
已结题

【C语言】有一部分不明白。

case 1要求如果已有学生信息存入缴费金额,如果没有则先录入信息再存钱
为什么case 1中for和if都运行,目的是什么
num是什么?
i为什么在for里<num,在if里>=num
#include <stdio.h>
#include <string.h>
int main()
{
float money[100];
char name[100][100];
char name_search[100];
int a,i,num=3;
float paid;

while(a!=2)
{
                printf("*** 0:个人缴费查询 ***\n");
                printf("*** 1:班 费  缴 纳 ***\n");
                printf("*** 2:退 出  系 统 ***\n");
                printf("请输入操作编号(0-2):\n");
                scanf("%d",&a);
    switch(a)
    {
                 
                
                
        case 0: printf("请输入学生姓名:\n");
                scanf("%s",name_search);
                for(i=0;i<num;i++)
                {
                    if(strcmp(name[i],name_search)==0)
                    {
                        printf("该学生已缴费%f\n",money[i]);
                        break;
                    }
                }
                if(i>=num)    printf("查无此人\n");
                
                break;
        case 1: printf("请输入学生姓名:\n");
                scanf("%s",name_search);
                printf("请输入缴费金额:\n");
                scanf("%f",& paid);
                if(paid<0)
                {
                    printf("输入金额不是正数,缴费失败!\n");
                }
                else
                {
                    for(i=0;i<num;i++)
                    {
                        printf("1111111");
                        if(strcmp(name[i],name_search)==0)
                        {
                            money[i]=money[i]+paid;
                            break;
                        }
                    }
                    if(i>=num)
                    {
                        printf("22222222");
                        strcpy(name[num],name_search);
                        money[num]=paid;
                        num++;
                    }
                    printf("缴费成功!\n%s 已缴费 %f\n",name[i],money[i]);
                }
                
                
                break;
        case 2:break;
        default:printf("错误,请输入0-2\n");break;
    }

}
    printf("已退出系统\n");

}

img

img

  • 写回答

2条回答 默认 最新

  • wiyoo0 2022-06-02 18:16
    关注
    
            case 1: printf("请输入学生姓名:\n");
                    scanf("%s",name_search);
                    printf("请输入缴费金额:\n");
                    scanf("%f",& paid);
                    if(paid<0)                          //判断交的钱是不是正数                      
                    {
                        printf("输入金额不是正数,缴费失败!\n");
                    }
                    else
                    {
                        for(i=0;i<num;i++)                    //匹配这个学生之前有没有交过费
                        {
                            printf("1111111");
                            if(strcmp(name[i],name_search)==0)        //如果匹配成功证明这个学生之前交过费
                            {
                                money[i]=money[i]+paid;                   //将新交的钱与之前交的钱相加更新总数
                                break;                                              //跳出for循环
                            }
                        }
                        if(i>=num)                        //如果这个学生之前没有交过费
                        {
                            printf("22222222");
                            strcpy(name[num],name_search);       //将他的名字copy进数组里
                            money[num]=paid;           //将他交的钱录入数组
                            num++;      //数组标志位推进一位
                        }
                        printf("缴费成功!\n%s 已缴费 %f\n",name[i],money[i]);
                    }
                    
                    
                    break;
            case 2:break;
            default:printf("错误,请输入0-2\n");break;
        }
     
    }
        printf("已退出系统\n");
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月10日
  • 已采纳回答 6月2日
  • 创建了问题 6月2日

悬赏问题

  • ¥50 请教 麒麟系统挂载怎么安装
  • ¥15 如何在ns3中实现路径的自由切换
  • ¥20 SpringBoot+Vue3
  • ¥15 IT从业者的调查问卷
  • ¥65 LineageOs-21.0系统编译问题
  • ¥30 关于#c++#的问题,请各位专家解答!
  • ¥15 App的会员连续扣费
  • ¥15 不同数据类型的特征融合应该怎么做
  • ¥15 用proteus软件设计一个基于8086微处理器的简易温度计
  • ¥15 用联想小新14Pro