还是无法正常执行子程序


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

struct shouru//收入
{
    int num[20];
    char name[20];
    char kind[20];
    int date[20];
    int jinge[20];
    char beizhu[100];
}shouru[20];

struct zhichu//支出
{
    int num;
    char name[20];
    char kind[20];
    int date;
    int jinge;
    char beizhu[100];
}zhichu[20];

void caidan()//菜单
{
    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");
}


void shourujilu()//收入记录
{
    int i, j;
    int srzonge = 0;
    printf("执行输入功能!\n");
    printf("输入几条收入");
    scanf_s("%d", &i);
    for (j = 0; j < i; j++)
    {
        scanf_s("%d %s %s %d %f %s", &shouru[j].num, &shouru[j].name, &shouru[j].kind, &shouru[j].date, &shouru[j].jinge, &shouru[j].beizhu);
        srzonge = srzonge + *shouru[j].jinge;
    }
}
void zhichujilu()//支出记录
{
    int a, b;
    int zczonge = 0;
    printf("执行支出功能!\n");
    printf("输入几条支出");
    scanf_s("%d", &a);

    for (b = 0; b < a; b++)
    {
        scanf_s("%d %s %s %d %f %s", &zhichu[b].num, &zhichu[b].name, &zhichu[b].kind[b], &zhichu[b].date, &zhichu[b].jinge, &zhichu[b].beizhu);
        zczonge = zczonge + zhichu[b].jinge;
    }
}
void szfltj()//支付分类统计
{
    int i;
    double srsum = 0, zcsum = 0;
    printf("执行收支分类统计功能!\n");
    printf("收入统计");
    for (i = 0; i < 20; i++)
    {
        if (shouru[i].kind[i] == 'wx')
        {
            printf("%d %s %s %d %f %s", shouru[i].num, shouru[i].name, shouru[i].kind[i], shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
            srsum = srsum + *shouru[i].jinge;
        }
        else if (*shouru->kind == 'zfb')
        {
            printf("%d %s %s %d %f %s", shouru[i].num, shouru[i].name, shouru[i].kind[i], shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
            srsum = srsum + *shouru[i].jinge;
        }
        else
        {
            for (i = 0; i < 20; i++)
            {
                printf("%d %s %s %d %f %s", shouru[i].num, shouru[i].name, shouru[i].kind[i], shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
                srsum = srsum + *shouru[i].jinge;
            }
        }
    }
    printf("支出统计");
    for (i = 0; i < 20; i++)
    {
        if (*zhichu[i].kind == 'wx')
        {
            printf("%d %s %s %d %f %s", shouru[i].num, shouru[i].name, shouru[i].kind[i], shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
        }
        zcsum = zcsum + zhichu[i].jinge;
        if (*zhichu[i].kind == 'zfb')
        {
            for (i = 0; i < 20; i++)
            {
                printf("%d %s %s %d %f %s", shouru[i].num, shouru[i].name, shouru[i].kind[i], shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
            }
            zcsum = zcsum + zhichu[i].jinge;
        }
        else
        {
            printf("%d %s %s %d %f %s", shouru[i].num, shouru[i].name, shouru[i].kind[i], shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
            zcsum = zcsum + zhichu[i].jinge;
        }
    }
}
void yuechaxun()//余额查询
{
    int o, i;
    int sum = 0;
    printf("输入要查询的账户号:\n");
    scanf_s("%d", &o);
    for (i = 0; i < 20; i++)
    {
        if (*shouru[i].num == o)
        {
            sum = sum + *shouru[i].num;
        }
    }
    for (i = 0; i < 20; i++)
    {
        if (zhichu[i].num == o)
        {
            sum = sum - zhichu[i].num;
        }
    }
    printf("当前账户余额为: %d\n", sum);
}
void richangbaobiao()//日常报表
{
    int i, j;
    printf("执行日常报表功能!\n");
    printf("请输入你要查询的月份");
    scanf_s("%d", &i);
    printf("序号 名字 支付种类 日期 金额 备注");
    for (j = 0; j < 20; j++)
    {
        if (*shouru[j].num == i)
        {
            printf("%d %s %s %d %f %s", shouru[j].num, shouru[j].name, shouru[j].kind, shouru[j].date, shouru[j].jinge, shouru[j].beizhu);
        }
        else if (zhichu[j].num == i)
        {
            printf("%d %s %s %d %f %s", zhichu[j].num, zhichu[j].name, zhichu[j].kind, zhichu[j].date, zhichu[j].jinge, zhichu[j].beizhu);
        }
        else if (shouru[j].num && zhichu[j].num == i)
        {
            printf("%d %s %s %d %f %s", shouru[j].num, shouru[j].name, shouru[j].kind, shouru[j].date, shouru[j].jinge, shouru[j].beizhu);
            printf("%d %s %s %d %f %s", zhichu[j].num, zhichu[j].name, zhichu[j].kind, zhichu[j].date, zhichu[j].jinge, zhichu[j].beizhu);
        }

    }
}
void chaxun()//查询
{
    int t;
    printf("执行查询功能!\n");
    printf("******************\n");
    printf("\t1.序号查询\n");
    printf("\t2.名字查询\n");
    printf("\t3.支付种类查询\n");
    printf("\t4.支付时间查询\n");
    printf("\t0.退出查询\n");
    printf("******************\n");
    scanf_s("%d", &t);
    switch (t)
    {
    case 0:
        break;
    case 1://序号查询
        printf("请输入你要查询的序号:");
        int i, k;
        scanf_s("%d", &i);
        for (k = 0; k < 20; k++)
        {
            if (*shouru[k].num == i)
            {
                printf("%d %s %s %d %f %s", shouru[k].num, shouru[k].name, shouru[k].kind, shouru[k].date, shouru[k].jinge, shouru[k].beizhu);
            }
            else if (zhichu[k].num == i)
            {
                printf("%d %s %s %d %f %s", zhichu[k].num, zhichu[k].name, zhichu[k].kind, zhichu[k].date, zhichu[k].jinge, zhichu[k].beizhu);
            }
            else if (shouru->num && zhichu->num == i)
            {
                printf("%d %s %s %d %f %s", shouru[k].num, shouru[k].name, shouru[k].kind, shouru[k].date, shouru[k].jinge, shouru[k].beizhu);
                printf("%d %s %s %d %f %s", zhichu[k].num, zhichu[k].name, zhichu[k].kind, zhichu[k].date, zhichu[k].jinge, zhichu[k].beizhu);
            }
            else
            {
                printf("您输入的序号不存在");
            }
        }
        break;

    case 2://姓名查询
        int h;
        char a[10];
        printf("请输入你要查询的名字:");
        scanf_s("%s", &a[10]);
        for (h = 0; h < 20; h++)
        {
            if (*shouru[h].name == a[10])
            {
                printf("%d %s %s %d %f %s", shouru[h].num, shouru[h].name, shouru[h].kind, shouru[h].date, shouru[h].jinge, shouru[h].beizhu);
                printf("%d %s %s %d %f %s", zhichu[h].num, zhichu[h].name, zhichu[h].kind, zhichu[h].date, zhichu[h].jinge, zhichu[h].beizhu);
            }
            else if (*zhichu[h].name == a[10])
            {
                printf("%d %s %s %d %f %s", zhichu[h].num, zhichu[h].name, zhichu[h].kind, zhichu[h].date, zhichu[h].jinge, zhichu[h].beizhu);
            }
            else if (*shouru->name && *zhichu->name == a[10])
            {
                printf("%d %s %s %d %f %s", shouru[h].num, shouru[h].name, shouru[h].kind, shouru[h].date, shouru[h].jinge, shouru[h].beizhu);
                printf("%d %s %s %d %f %s", zhichu[h].num, zhichu[h].name, zhichu[h].kind, zhichu[h].date, zhichu[h].jinge, zhichu[h].beizhu);
            }
            else
            {
                printf("您输入的名字不存在");
            }
        }
        break;

    case 3://支付种类查询
        int l;
        char b[10];
        printf("请输入你要查询支付的种类:");
        scanf_s("%s", &b[10]);
        for (l = 0; l < 20; l++)
        {
            if (*shouru[l].kind == b[10])
            {
                printf("%d %s %s %d %f %s", shouru[l].num, shouru[l].name, shouru[l].kind, shouru[l].date, shouru[l].jinge, shouru[l].beizhu);
            }
            else if (*zhichu[l].kind == b[10])
            {
                printf("%d %s %s %d %f %s", zhichu[l].num, zhichu[l].name, zhichu[l].kind, zhichu[l].date, zhichu[l].jinge, zhichu[l].beizhu);
            }
            else if (*shouru->kind && *zhichu->kind == b[10])
            {
                printf("%d %s %s %d %f %s", shouru[l].num, shouru[l].name, shouru[l].kind, shouru[l].date, shouru[l].jinge, shouru[l].beizhu);
                printf("%d %s %s %d %f %s", zhichu[l].num, zhichu[l].name, zhichu[l].kind, zhichu[l].date, zhichu[l].jinge, zhichu[l].beizhu);
            }
            else
            {
                printf("您输入的支付种类不存在!");
            }
        }
        break;

    case 4://时间查询
        int m;
        int c[10];
        printf("请输入你要查询的时间:");
        scanf_s("%d", &c[10]);
        for (m = 0; m < 20; m++)
        {
            if (*shouru->date == c[10])
            {
                printf("%d %s %s %d %f %s", shouru[m].num, shouru[m].name, shouru[m].kind, shouru[m].date, shouru[m].jinge, shouru[m].beizhu);
            }
            else if (zhichu->date == c[10])
            {
                printf("%d %s %s %d %f %s", zhichu[m].num, zhichu[m].name, zhichu[m].kind, zhichu[m].date, zhichu[m].jinge, zhichu[m].beizhu);
            }
            else if (shouru->date && zhichu->date == c[10])
            {
                printf("%d %s %s %d %f %s", shouru[m].num, shouru[m].name, shouru[m].kind, shouru[m].date, shouru[m].jinge, shouru[m].beizhu);
                printf("%d %s %s %d %f %s", zhichu[m].num, zhichu[m].name, zhichu[m].kind, zhichu[m].date, zhichu[m].jinge, zhichu[m].beizhu);
            }
            else
            {
                printf("您输入的时间不存在");
            }
        }
        break;
    }
}

int main()//主函数
{
    int n;

    while (1)
    {
        caidan();
        printf("请输入要执行的功能:");
        scanf_s("%d", &n);
        if (n == 0)
            break;
        else
            switch (n)
            {
            case 1:
                shourujilu();
                break;
            case 2:
                zhichujilu();
                break;
            case 3:
                yuechaxun();
                break;
            case 4:
                szfltj();
                break;
            case 5:
                richangbaobiao();
                break;
            case 6:
                chaxun();
                break;
            default:
                printf("输入错误,请重新选择。\n");
            }
    }
    printf("系统退出,欢迎下次使用!\n");
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/962622
  • 这篇博客也不错, 你可以看下双字节乘法执行过程
  • 除此之外, 这篇博客: 递归法求阶乘和中的 裁判程序 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    unsigned long  Fact(unsigned int  n)
    {
        int  i;
        unsigned long result = 1;
        for (i=2; i<=n; i++)
            result *= i;
        return result;
    }
    
  • 您还可以看一下 靳士锋老师的图像相关算法课程中的 图像存储格式小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    由于缺少问题的上下文,无法确定具体是哪个问题需要解决,因此无法提供具体的操作步骤和解决方案。需要更具体的信息和问题描述才能进行回答。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^



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

struct shouru//收入
{
    int num;
    char name[20];
    char kind[20];
    int date;
    int jinge;
    char beizhu[100];
}shouru[20];

struct zhichu//支出
{
    int num;
    char name[20];
    char kind[20];
    int date;
    int jinge;
    char beizhu[100];
}zhichu[20];

void caidan()//菜单
{
    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");
}


void shourujilu()//收入记录
{
    int i, j;
    int srzonge = 0;
    printf("执行输入功能!\n");
    printf("输入几条收入:");fflush(stdout);
    scanf("%d", &i);
    for (j = 0; j < i; j++)
    {
        scanf("%d%s%s%d%d%s", &shouru[j].num, &shouru[j].name, &shouru[j].kind, &shouru[j].date, &shouru[j].jinge, &shouru[j].beizhu);
        srzonge = srzonge + shouru[j].jinge;
    }
}
void zhichujilu()//支出记录
{
    int a, b;
    int zczonge = 0;
    printf("执行支出功能!\n");
    printf("输入几条支出:");fflush(stdout);
    scanf("%d", &a);

    for (b = 0; b < a; b++)
    {
        scanf("%d%s%s%d%d%s", &zhichu[b].num, &zhichu[b].name, &zhichu[b].kind[b], &zhichu[b].date, &zhichu[b].jinge, &zhichu[b].beizhu);
        zczonge = zczonge + zhichu[b].jinge;
    }
}
void szfltj()//支付分类统计
{
    int i;
    double srsum = 0, zcsum = 0;
    printf("执行收支分类统计功能!\n");
    printf("收入统计\n");
    for (i = 0; i < 20; i++)
    {
        if (0==strcmp(shouru[i].kind,"wx"))
        {
            printf("%d %s %s %d %d %s", shouru[i].num, shouru[i].name, shouru[i].kind, shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
            srsum = srsum + shouru[i].jinge;
        }
        else if (0==strcmp(shouru[i].kind,"zfb"))
        {
            printf("%d %s %s %d %d %s", shouru[i].num, shouru[i].name, shouru[i].kind, shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
            srsum = srsum + shouru[i].jinge;
        }
        else
        {
            for (i = 0; i < 20; i++)
            {
                printf("%d %s %s %d %d %s", shouru[i].num, shouru[i].name, shouru[i].kind, shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
                srsum = srsum + shouru[i].jinge;
            }
        }
    }
    printf("支出统计\n");
    for (i = 0; i < 20; i++)
    {
        if (0==strcmp(zhichu[i].kind,"wx"))
        {
            printf("%d %s %s %d %d %s", shouru[i].num, shouru[i].name, shouru[i].kind, shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
        }
        zcsum = zcsum + zhichu[i].jinge;
        if (0==strcmp(zhichu[i].kind,"zfb"))
        {
            for (i = 0; i < 20; i++)
            {
                printf("%d %s %s %d %d %s", shouru[i].num, shouru[i].name, shouru[i].kind, shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
            }
            zcsum = zcsum + zhichu[i].jinge;
        }
        else
        {
            printf("%d %s %s %d %d %s", shouru[i].num, shouru[i].name, shouru[i].kind, shouru[i].date, shouru[i].jinge, shouru[i].beizhu);
            zcsum = zcsum + zhichu[i].jinge;
        }
    }
}
void yuechaxun()//余额查询
{
    int o, i;
    int sum = 0;
    printf("输入要查询的账户号:");fflush(stdout);
    rewind(stdin);scanf("%d", &o);
    for (i = 0; i < 20; i++)
    {
        if (shouru[i].num == o)
        {
            sum = sum + shouru[i].num;
        }
    }
    for (i = 0; i < 20; i++)
    {
        if (zhichu[i].num == o)
        {
            sum = sum - zhichu[i].num;
        }
    }
    printf("当前账户余额为: %d\n", sum);
}
void richangbaobiao()//日常报表
{
    int i, j;
    printf("执行日常报表功能!\n");
    printf("请输入你要查询的月份:");fflush(stdout);
    rewind(stdin);scanf("%d", &i);
    printf("序号 名字 支付种类 日期 金额 备注");
    for (j = 0; j < 20; j++)
    {
        if (shouru[j].num == i)
        {
            printf("%d %s %s %d %d %s", shouru[j].num, shouru[j].name, shouru[j].kind, shouru[j].date, shouru[j].jinge, shouru[j].beizhu);
        }
        else if (zhichu[j].num == i)
        {
            printf("%d %s %s %d %d %s", zhichu[j].num, zhichu[j].name, zhichu[j].kind, zhichu[j].date, zhichu[j].jinge, zhichu[j].beizhu);
        }
        else if (shouru[j].num && zhichu[j].num == i)
        {
            printf("%d %s %s %d %d %s", shouru[j].num, shouru[j].name, shouru[j].kind, shouru[j].date, shouru[j].jinge, shouru[j].beizhu);
            printf("%d %s %s %d %d %s", zhichu[j].num, zhichu[j].name, zhichu[j].kind, zhichu[j].date, zhichu[j].jinge, zhichu[j].beizhu);
        }

    }
}
void chaxun()//查询
{
    int t;
    printf("执行查询功能!\n");
    printf("******************\n");
    printf("\t1.序号查询\n");
    printf("\t2.名字查询\n");
    printf("\t3.支付种类查询\n");
    printf("\t4.支付时间查询\n");
    printf("\t0.退出查询\n");
    printf("******************\n");
    scanf("%d", &t);
    switch (t)
    {
    case 0:
        break;
    case 1://序号查询
        printf("请输入你要查询的序号:");fflush(stdout);
        int i, k;
        rewind(stdin);scanf("%d", &i);
        for (k = 0; k < 20; k++)
        {
            if (shouru[k].num == i)
            {
                printf("%d %s %s %d %d %s", shouru[k].num, shouru[k].name, shouru[k].kind, shouru[k].date, shouru[k].jinge, shouru[k].beizhu);
            }
            else if (zhichu[k].num == i)
            {
                printf("%d %s %s %d %d %s", zhichu[k].num, zhichu[k].name, zhichu[k].kind, zhichu[k].date, zhichu[k].jinge, zhichu[k].beizhu);
            }
            else if (shouru->num && zhichu->num == i)
            {
                printf("%d %s %s %d %d %s", shouru[k].num, shouru[k].name, shouru[k].kind, shouru[k].date, shouru[k].jinge, shouru[k].beizhu);
                printf("%d %s %s %d %d %s", zhichu[k].num, zhichu[k].name, zhichu[k].kind, zhichu[k].date, zhichu[k].jinge, zhichu[k].beizhu);
            }
            else
            {
                printf("您输入的序号不存在");
            }
        }
        break;

    case 2://姓名查询
        int h;
        char a[10];
        printf("请输入你要查询的名字:");fflush(stdout);
        rewind(stdin);scanf("%s", a);
        for (h = 0; h < 20; h++)
        {
            if (0==strcmp(shouru[h].name,a))
            {
                printf("%d %s %s %d %d %s", shouru[h].num, shouru[h].name, shouru[h].kind, shouru[h].date, shouru[h].jinge, shouru[h].beizhu);
                printf("%d %s %s %d %d %s", zhichu[h].num, zhichu[h].name, zhichu[h].kind, zhichu[h].date, zhichu[h].jinge, zhichu[h].beizhu);
            }
            else if (0==strcmp(zhichu[h].name,a))
            {
                printf("%d %s %s %d %d %s", zhichu[h].num, zhichu[h].name, zhichu[h].kind, zhichu[h].date, zhichu[h].jinge, zhichu[h].beizhu);
            }
            else if (0==strcmp(shouru[h].name,a) && 0==strcmp(zhichu[i].name,a))
            {
                printf("%d %s %s %d %d %s", shouru[h].num, shouru[h].name, shouru[h].kind, shouru[h].date, shouru[h].jinge, shouru[h].beizhu);
                printf("%d %s %s %d %d %s", zhichu[h].num, zhichu[h].name, zhichu[h].kind, zhichu[h].date, zhichu[h].jinge, zhichu[h].beizhu);
            }
            else
            {
                printf("您输入的名字不存在\n");
            }
        }
        break;

    case 3://支付种类查询
        int l;
        char b[10];
        printf("请输入你要查询支付的种类:");fflush(stdout);
        rewind(stdin);scanf("%s", b);
        for (l = 0; l < 20; l++)
        {
            if (0==strcmp(shouru[l].kind,b))
            {
                printf("%d %s %s %d %d %s", shouru[l].num, shouru[l].name, shouru[l].kind, shouru[l].date, shouru[l].jinge, shouru[l].beizhu);
            }
            else if (0==strcmp(zhichu[l].kind,b))
            {
                printf("%d %s %s %d %d %s", zhichu[l].num, zhichu[l].name, zhichu[l].kind, zhichu[l].date, zhichu[l].jinge, zhichu[l].beizhu);
            }
            else if (0==strcmp(shouru[l].kind,b) && 0==strcmp(zhichu[l].kind,b))
            {
                printf("%d %s %s %d %d %s", shouru[l].num, shouru[l].name, shouru[l].kind, shouru[l].date, shouru[l].jinge, shouru[l].beizhu);
                printf("%d %s %s %d %d %s", zhichu[l].num, zhichu[l].name, zhichu[l].kind, zhichu[l].date, zhichu[l].jinge, zhichu[l].beizhu);
            }
            else
            {
                printf("您输入的支付种类不存在!\n");
            }
        }
        break;

    case 4://时间查询
        int m;
        int c;
        printf("请输入你要查询的时间:");fflush(stdout);
        rewind(stdin);scanf("%d", &c);
        for (m = 0; m < 20; m++)
        {
            if (shouru->date == c)
            {
                printf("%d %s %s %d %d %s", shouru[m].num, shouru[m].name, shouru[m].kind, shouru[m].date, shouru[m].jinge, shouru[m].beizhu);
            }
            else if (zhichu->date == c)
            {
                printf("%d %s %s %d %d %s", zhichu[m].num, zhichu[m].name, zhichu[m].kind, zhichu[m].date, zhichu[m].jinge, zhichu[m].beizhu);
            }
            else if (shouru->date && zhichu->date == c)
            {
                printf("%d %s %s %d %d %s", shouru[m].num, shouru[m].name, shouru[m].kind, shouru[m].date, shouru[m].jinge, shouru[m].beizhu);
                printf("%d %s %s %d %d %s", zhichu[m].num, zhichu[m].name, zhichu[m].kind, zhichu[m].date, zhichu[m].jinge, zhichu[m].beizhu);
            }
            else
            {
                printf("您输入的时间不存在");
            }
        }
        break;
    }
}

int main()//主函数
{
    int n;

    while (1)
    {
        caidan();
        printf("请输入要执行的功能:");fflush(stdout);
        rewind(stdin);scanf("%d", &n);
        if (n == 0)
            break;
        else
            switch (n)
            {
            case 1:
                shourujilu();
                break;
            case 2:
                zhichujilu();
                break;
            case 3:
                yuechaxun();
                break;
            case 4:
                szfltj();
                break;
            case 5:
                richangbaobiao();
                break;
            case 6:
                chaxun();
                break;
            default:
                printf("输入错误,请重新选择。\n");
            }
    }
    printf("系统退出,欢迎下次使用!\n");
    return 0;
}