m0_72189889 2023-06-16 11:38 采纳率: 0%
浏览 32

子程序无法运行成功,在黑窗口总是输入完就结束了



#include <stdio.h> 
#include <stdlib.h>
#include <string.h>
typedef struct shouru//收入
{
    char num[10];
    char name[20];
    char kind[20];
    char date[20];
    int jinge;
    char beizhu[100];
    int total=0;
}shouru;
shouru shouruchucun[100];
typedef struct zhichu//支出
{
    char num[20];
    char name[20];
    char kind[20];
    char date[20];
    int jinge;
    char beizhu[100];
}zhichu;
zhichu zhichuchucun[100];

int g = 0;//收入个数
int p = 0;//支出个数
int j = 0;//收入金额
int y = 0;//支出金额

void shuoru1() //收入输入 
{
    int i = 1;
    
    do
    {
        shouru shouru;
        printf("\n请输入序号、姓名、收入类别、收入日期(如6)、收入金额、收入备注\n");
        scanf("%s %s %s %s %d %s", shouruchucun[i].num[10], shouruchucun[i].name[20], shouruchucun[i].kind[20], shouruchucun[i].date[20], shouruchucun[i].jinge, shouruchucun[i].beizhu[100]);
        shouru.total=shouru.total+shouru.jinge;
        printf("kkkk");
        g++;
        printf("若要继续输入按1 or 按0\n");
        scanf("%d", &i);
    } while (i == 1);
    
}
void zhichu1() //支出输入
{
    int i = 1;
    
    do
    {
        printf("\n请输入收入类别、收入金额、收入备注\n");
        scanf("%s %s %s %s %d %s", zhichuchucun[i].num, zhichuchucun[i].name, zhichuchucun[i].kind, zhichuchucun[i].date, zhichuchucun[i].jinge, zhichuchucun[i].beizhu);
        y = y + zhichuchucun[i].jinge;
        p++;
        printf("若要继续输入按1 or 按0\n");
        scanf("%d", &i);
    } while (i == 1);
}
void yuechaxun()//余额查询
{
    int sum = 0;
    sum = j - y;
    printf("当前账户余额为: %d\n",sum);
}
void szfltj()//支付分类统计
{
    int i;
    double srsum = 0, zcsum = 0;
    printf("执行收支分类统计功能!\n");
    printf("收入统计");
    printf("输入几条收入");
    printf("请输入序号、名字、种类、日期、金额、备注");
    for (i = 0; i < j; i++)
    {
        if (strcmp(shouruchucun[i].kind,"wx")==0 )
        {
            printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", shouruchucun[i].num, shouruchucun[i].name[20], shouruchucun[i].kind[20], shouruchucun[i].date, shouruchucun[i].jinge, shouruchucun[i].beizhu[100]);
            srsum = srsum + shouruchucun[i].jinge;
        }
        else if (0 == strcmp(shouruchucun[i].kind, "zfb"))
        {
            printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", shouruchucun[i].num, shouruchucun[i].name[20], shouruchucun[i].kind[20], shouruchucun[i].date, shouruchucun[i].jinge, shouruchucun[i].beizhu[100]);
            srsum = srsum + shouruchucun[i].jinge;
        }
        else
        {
            for (i = 0; i < j; i++)
            {
                printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", shouruchucun[i].num, shouruchucun[i].name, shouruchucun[i].kind[20], shouruchucun[i].date, shouruchucun[i].jinge, shouruchucun[i].beizhu[100]);
                srsum = srsum + shouruchucun[i].jinge;
            }
        }
    }
    int k;
    printf("支出统计");
    printf("输入几条支出");
    scanf("%d", &k);
    for (i = 0; i < k; i++)
    {
        if ( strcmp(zhichuchucun[i].kind, "wx") == 0)
        {
            printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", zhichuchucun[i].num, zhichuchucun[i].name[20], zhichuchucun[i].kind[20], zhichuchucun[i].date, zhichuchucun[i].jinge, zhichuchucun[i].beizhu[100]);
        }
        zcsum = zcsum + zhichuchucun[i].jinge;
        if (strcmp(zhichuchucun[i].kind, "zfb") ==0)
        {
            for (i = 0; i < k; i++)
            {
                printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", zhichuchucun[i].num, zhichuchucun[i].name[20], zhichuchucun[i].kind[20], zhichuchucun[i].date, zhichuchucun[i].jinge, zhichuchucun[i].beizhu[100]);
            }
            zcsum = zcsum + zhichuchucun[i].jinge;
        }
        else
        {
            printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", zhichuchucun[i].num, zhichuchucun[i].name[20], zhichuchucun[i].kind[20], zhichuchucun[i].date, zhichuchucun[i].jinge, zhichuchucun[i].beizhu[100]);
            zcsum = zcsum + zhichuchucun[i].jinge;
        }
    }
}
void richang()
{
    char i=0, k, t[50];
    printf("输入当前月份:\n");
    scanf("%s", &t);
    printf("收入报表\n");
    printf("账户号,姓名,数目,日期,类别,备注\n");
    if (strcmp(zhichuchucun[i].date, t) == 0)
    {
        for (i = 0; i < g; i++)
        {
            printf("%d%s%d%s%s%s\n", &shouruchucun[i].num, &shouruchucun[i].name, &shouruchucun[i].kind, &shouruchucun[i].date, &shouruchucun[i].jinge, &shouruchucun[i].beizhu);
        }
    }
    printf("支出报表\n");
    printf("账户号,姓名,数目,日期,类别,备注\n");
    if (strcmp(zhichuchucun[i].date, t) == 0)
    {
        for (i = 0; i < p; i++)
        {
            printf("%d%s%d%s%s%s\n", &zhichuchucun[i].num, &zhichuchucun[i].name, &zhichuchucun[i].kind, &zhichuchucun[i].date, &zhichuchucun[i].jinge, &zhichuchucun[i].beizhu);
        }
    }


    printf("余额报表\n");
    k = j - y;
    printf("当前余额为&d", k);
}
void chaxun() //查询
{
    char j[50];
    int n = 0;
    printf("******************\n");
    printf("查询功能\n");
    printf("1. 按序号查询\n");
    printf("2. 按日期检索\n");
    printf("3. 按类别检索\n");
    printf("******************\n");
    scanf("%d", &n);

    switch (n)
    {
    case 1:
        printf("输入序号: ");
        scanf("%s", &j);
        for (int i = 0; i < g; i++)
        {
            if (strcmp(shouruchucun[i].num, j) == 0)
            {
                printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", shouruchucun[i].num, shouruchucun[i].name[20], shouruchucun[i].kind[20], shouruchucun[i].date, shouruchucun[i].jinge, shouruchucun[i].beizhu[100]);
            }
            if (strcmp(zhichuchucun[i].num, j) == 0)
            {
                printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", zhichuchucun[i].num, zhichuchucun[i].name[20], zhichuchucun[i].kind[20], zhichuchucun[i].date, zhichuchucun[i].jinge, zhichuchucun[i].beizhu[100]);
            }
        }
        break;
    case 2:
        printf("日期查询: ");
        scanf("%s", j);
        for (int i = 0; i < g; i++)
        {
            if (strcmp(shouruchucun[i].date, j) == 0)
            {
                printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", shouruchucun[i].num, shouruchucun[i].name[20], shouruchucun[i].kind[20], shouruchucun[i].date, shouruchucun[i].jinge, shouruchucun[i].beizhu[100]);
            }
            if (strcmp(zhichuchucun[i].num, j) == 0)
            {
                printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", zhichuchucun[i].num, zhichuchucun[i].name[20], zhichuchucun[i].kind[20], zhichuchucun[i].date, zhichuchucun[i].jinge, zhichuchucun[i].beizhu[100]);
            }
        }
        break;
    case 3:
        printf("类别查询: \n");
        scanf("%s", j);
        for (int i = 0; i < g; i++)
        {
            if (strcmp(shouruchucun[i].kind, j) == 0)
            {
                printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", shouruchucun[i].num, shouruchucun[i].name[20], shouruchucun[i].kind[20], shouruchucun[i].date, shouruchucun[i].jinge, shouruchucun[i].beizhu[100]);
            }
            if (strcmp(zhichuchucun[i].num, j) == 0)
            {
                printf("序号:%s 名字:%s 种类:%s 日期:%s 金额:%d 备注:%s\n", zhichuchucun[i].num, zhichuchucun[i].name[20], zhichuchucun[i].kind[20], zhichuchucun[i].date, zhichuchucun[i].jinge, zhichuchucun[i].beizhu[100]);
            }
        }
        break;
    default:
        printf("输入有误,请重新选择!\n");
    }
}
int main()
{
    int n = 0;
    while (n != 7)
    {
        printf("******************\n");
        printf("\t1.信息输入\n");
        printf("\t2.信息检索\n");
        printf("\t3.信息修改\n");
        printf("\t4.信息删除\n");
        printf("\t5.信息统计\n");
        printf("\t6.信息输出\n");
        printf("\t0.退出系统\n");
        printf("******************\n");
        scanf("%d", &n);
        if (n == 0)
            break;
        switch (n)
        {
        case 1:
            shuoru1();
            break;
        case 2:
            zhichu1();
            break;
        case 3:
            yuechaxun();
            break;
        case 4:
            szfltj();
            break;
        case 5:
            richang();
            break;
        case 6:
            chaxun:
            break;
        default:
            printf("输入有误,请重新选择!\n");
        }
    }

    return 0;
}
  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2023-06-16 11:49
    关注

    运行界面截图看看
    42行错误,将所有[20]这样的中括号带数字的都删掉。只需要变量名,不要带数组大小,带了就是数组的第20个元素的意思啦。
    后面的printf语句也都是这样的错误
    但57行又是写对了,参考一下吧。得统一啊
    printf语句的num是对的,后面都错了

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月16日

悬赏问题

  • ¥50 这Mac系统提示虚拟内存不足,怎么解决
  • ¥15 Rs232电路无法收发数据,求帮助
  • ¥15 百度cookie扫码登录器
  • ¥15 微机原理汇编语言debug调试实验
  • ¥23 matlab可以把相图转换为庞加莱映射吗
  • ¥15 Arduino电机和openmv连接异常
  • ¥15 Arcgis河网分级报错
  • ¥200 java+appium2.1+idea
  • ¥20 请帮我做一个EXE的去重TXT文本
  • ¥15 工价表引用工艺路线,应如何制作py和xml文件