关于#ci#的问题,如何解决?

使用函数进行模块化设计,将程序结构优化,合理划分模块,并将两部分程序写为一份程序


 #include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
double w1 = 2.07;
double w2 = 4.07;
double w3 = 6.07;
double s1 = 1.57;
double s2 = 1.07;
double p = 1.36;
static int count = 0;
struct person
{
 char number[100];     //用户编号
 char name[20];        // 姓名
 double water_1;       //自来水用水量
 double water_2;       //自备井用水量
 double balance;         //存款,初始值为0
};
struct person info[100];  //利用结构体数组,创建100个用户
void input();             //输入用户信息
void search();            //输入用户编号可以查询该用户,并显示该户人家的水费明细(水费计算等过程包括在其中),已用水量到下一档的剩余额度。
void balance();           //余额管理,能够进行扣费运算,能够充值。
void recharge();          //充值
void deduction();         //扣费
void print();       //主菜单
void assi();              //对用户余额赋初始值
void set();               //水价设置
//主菜单
void print(){
 system("cls");
 printf("---------------主界面-------------\n");
 printf("**********************************\n");
 printf("**********1 添加用户信息**********\n");
 printf("**********2    查  询   **********\n");
 printf("**********3   余额管理  **********\n");
 printf("**********4    设  置   **********\n");
 printf("**********5    退  出   **********\n");
 printf("**********************************\n");
 printf("请选择(1-4):");
}
//子菜单
void print_1(){
}
void input()    //输入相关数据
{
  system("cls");
  int i;
  char ch[2]="y";
  //printf("是否输入(Y/N):");
  //scanf("%s",ch);
  while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0){
  system("cls");
  printf("用户编号:");
  scanf("%s",&info[count].number);
  printf("姓名:");
  scanf("%s",&info[count].name);
  printf("自来水用水量(立方米):");
  scanf("%lf",&info[count].water_1);
  printf("自备井用水量(立方米):");
  scanf("%lf",&info[count].water_2);
  info[count].balance = 0;
  count++;
  printf("是否继续输入(Y/N):");
  scanf("%s",ch);
 }
 printf("输入完成!\n按任意键返回");
}
//查询操作
void search(){
 system("cls");
 int i;
 char n[100];
 printf("请输入查询的用户编号:");
 scanf("%s",&n);
 for(i = 0;i < count + 1;i++){
  if(strcmp(info[i].number,n)==0){
    int x;//x为查询选项
    float  y,s,m1,m2,m3,e,z,a;
    //y为该住户用水量,s为居民本月总水费,m1为水费,m2为水资源费,m3为污水处理费.e为到下一档的额度,z为账户余额,a为充值金额
    printf("请选择查询项目:");
    scanf("%d",&x);
    switch(x)
    {
        case 1: //功能1为自来水用户查询
        printf("输入该用户用水量:输入账户余额:\n");
        scanf("%f%f",&y,&z);
        if (y<=180)
        {
        s=y*5.0;m1=y*2.07;m2=y*1.57;m3=y*1.36;e=180-y;z=z-s;
        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费:  %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
        }
        else if(y>180&&y<260)
        {
        s=y*7.0;m1=y*4.07;m2=y*1.57;m3=y*1.36;e=260-y;z=z-s;
        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费:  %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
         }
        else if(y>=260)
        {
        s=y*9.0;m1=y*6.07;m2=y*1.57;m3=y*1.36;z=z-s;
        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费: %.2f\n账户余额%.2f\n",s,m1,m2,m3,z);
        }
        break;
        case 2://功能2为自备井用户查询
        printf("输入该用户用水量:输入账户余额:\n");
        scanf("%f%f",&y,&z);
        if(y<=180)
        {
        s=y*4.5;m1=y*2.07;m2=y*1.07;m3=y*1.36;e=180-y;z=z-s;
        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费:  %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
        }
        else if(y>180&&y<260)
        {
        s=y*6.5;m1=y*4.07;m2=y*1.07;m3=y*1.36;e=260-y;z=z-s;
        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费:  %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
        }
        else if(y>=260)
        {
        s=y*8.5;m1=y*6.07;m2=y*1.07;m3=y*1.36;z=z-s;
        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费: %.2f\n账户余额%.2f\n",s,m1,m2,m3,z);
        }
        break;
        case 3://功能3为余额充值
        printf("请输入账户余额:  输入充值金额:\n");
        scanf("%.2f%.2f",&a,&z);
        z=a+z;
        printf("您的账户余额为:%.2f\n",z);
    }
  }
 }
}
int main()
{
   int sel=1;
   while(sel)
   {
       print();
       scanf("%d",&sel);
       switch(sel){
             case 1:input();
                    break;
             case 2:search();
                    break;
             case 5:sel=0;
                    break;
             default:break;
       }
   }
   return 0;
}
 

#include<stdio.h>
#include<string.h>

//编写代码实现,模拟用户登录情景,并且只能登录三次。
//(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。)

int main()
{
    char passw[] = "12345";
    char test[20] = "0";
    int count = 0;//用来记录登录次数
    
    while (count < 3)
    {
        printf("请输入密码->");
        scanf("%s", &test);
        if (strcmp(passw, test) == 0)
        {
            printf("登陆成功\n");
            break;
        }
        else
        {
            printf("密码错误\n");
            count++;
        }
        
    }
    if (3 == count)
    {
        printf("退出程序\n");
    }
    return 0;
}



#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>
double w1 = 2.07;
double w2 = 4.07;
double w3 = 6.07;
double s1 = 1.57;
double s2 = 1.07;
double p = 1.36;
static int count = 0;
struct person
{
    char number[100];     //用户编号
    char name[20];        // 姓名
    double water_1;       //自来水用水量
    double water_2;       //自备井用水量
    double balance;         //存款,初始值为0
};
struct person info[100];  //利用结构体数组,创建100个用户
void input();             //输入用户信息
void search();            //输入用户编号可以查询该用户,并显示该户人家的水费明细(水费计算等过程包括在其中),已用水量到下一档的剩余额度。
void balance();           //余额管理,能够进行扣费运算,能够充值。
void recharge();          //充值
void deduction();         //扣费
void print();       //主菜单
void assi();              //对用户余额赋初始值
void set();               //水价设置
//主菜单
void print()
{
    system("cls");
    printf("---------------主界面-------------\n");
    printf("**********************************\n");
    printf("**********1 添加用户信息**********\n");
    printf("**********2    查  询   **********\n");
    printf("**********3   余额管理  **********\n");
    printf("**********4    设  置   **********\n");
    printf("**********5    退  出   **********\n");
    printf("**********************************\n");
    printf("请选择(1-4):");
}
//子菜单
void print_1()
{
}
void input()    //输入相关数据
{
    system("cls");
    int i;
    char ch[2]="y";
    //printf("是否输入(Y/N):");
    //scanf("%s",ch);
    while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)
    {
        system("cls");
        printf("用户编号:");
        scanf("%s",&info[count].number);
        printf("姓名:");
        scanf("%s",&info[count].name);
        printf("自来水用水量(立方米):");
        scanf("%lf",&info[count].water_1);
        printf("自备井用水量(立方米):");
        scanf("%lf",&info[count].water_2);
        info[count].balance = 0;
        count++;
        printf("是否继续输入(Y/N):");
        scanf("%s",ch);
    }
    printf("输入完成!\n按任意键返回");
}
//查询操作
void search()
{
    system("cls");
    int i;
    char n[100];
    printf("请输入查询的用户编号:");
    scanf("%s",&n);
    for(i = 0; i < count + 1; i++)
    {
        if(strcmp(info[i].number,n)==0)
        {
            int x;//x为查询选项
            float  y,s,m1,m2,m3,e,z,a;
            //y为该住户用水量,s为居民本月总水费,m1为水费,m2为水资源费,m3为污水处理费.e为到下一档的额度,z为账户余额,a为充值金额
            printf("请选择查询项目:");
            scanf("%d",&x);
            switch(x)
            {
                case 1: //功能1为自来水用户查询
                    printf("输入该用户用水量:输入账户余额:\n");
                    scanf("%f%f",&y,&z);
                    if (y<=180)
                    {
                        s=y*5.0;
                        m1=y*2.07;
                        m2=y*1.57;
                        m3=y*1.36;
                        e=180-y;
                        z=z-s;
                        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费:  %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
                    }
                    else if(y>180&&y<260)
                    {
                        s=y*7.0;
                        m1=y*4.07;
                        m2=y*1.57;
                        m3=y*1.36;
                        e=260-y;
                        z=z-s;
                        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费:  %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
                    }
                    else if(y>=260)
                    {
                        s=y*9.0;
                        m1=y*6.07;
                        m2=y*1.57;
                        m3=y*1.36;
                        z=z-s;
                        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费: %.2f\n账户余额%.2f\n",s,m1,m2,m3,z);
                    }
                    break;
                case 2://功能2为自备井用户查询
                    printf("输入该用户用水量:输入账户余额:\n");
                    scanf("%f%f",&y,&z);
                    if(y<=180)
                    {
                        s=y*4.5;
                        m1=y*2.07;
                        m2=y*1.07;
                        m3=y*1.36;
                        e=180-y;
                        z=z-s;
                        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费:  %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
                    }
                    else if(y>180&&y<260)
                    {
                        s=y*6.5;
                        m1=y*4.07;
                        m2=y*1.07;
                        m3=y*1.36;
                        e=260-y;
                        z=z-s;
                        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费:  %.2f\n到下一档额度:%.2f\n账户余额%.2f\n",s,m1,m2,m3,e,z);
                    }
                    else if(y>=260)
                    {
                        s=y*8.5;
                        m1=y*6.07;
                        m2=y*1.07;
                        m3=y*1.36;
                        z=z-s;
                        printf("总水费:%.2f\n水费 %.2f\n水资源费:  %.2f\n污水处理费: %.2f\n账户余额%.2f\n",s,m1,m2,m3,z);
                    }
                    break;
                case 3://功能3为余额充值
                    printf("请输入账户余额:  输入充值金额:\n");
                    scanf("%.2f%.2f",&a,&z);
                    z=a+z;
                    printf("您的账户余额为:%.2f\n",z);
            }
        }
    }
}
int main()
{
    char passw[] = "12345";
    char test[20] = "0";
    int count = 0;//用来记录登录次数
    while (count < 3)
    {
        printf("请输入密码->");
        scanf("%s", &test);
        if (strcmp(passw, test) == 0)
        {
            printf("登陆成功\n");
            int sel=1;
            while(sel)
            {
                print();
                scanf("%d",&sel);
                switch(sel)
                {
                    case 1:
                        input();
                        break;
                    case 2:
                        search();
                        break;
                    case 5:
                        sel=0;
                        break;
                    default:
                        break;
                }
            }
            break;
        }
        else
        {
            printf("密码错误\n");
            count++;
        }
    }
    if (3 == count)
    {
        printf("退出程序\n");
    }

    return 0;
}