一路繁华的夏ˇ717 2022-12-31 21:33 采纳率: 0%
浏览 26

最后一步input会被初始化为0

为什么我的input到最后一步被初始化成0了

#include<stdio.h>
void menu()
{
    printf("*********************************\n");
    printf("*****1.加           2.减*********\n");
    printf("*****3.乘           4.除********\n");
    printf("*********************************\n");
}
int add(int n,int *p)
{
    int i = 0;
    int ret = *p;
    for (i = 1 ;i < n; i++)
    {
        ret= ret +*(p + i);

    }
    return ret;
}
int jian(int n, int* p)
{

    int i = 0;
    int ret = *p;
    for (i = 1;i < n; i++)
    {
        ret = ret - *(p + i);

    }
    return ret;
}
int cheng(int n, int* p)
{
    int i = 0;
    int ret = *p;
    for (i = 1;i < n; i++)
    {
        ret = ret * *(p + i);

    }
    return ret;
}
int chu(int n, int* p)
{
    int i = 0;
    int ret = *p;
    for (i = 1 ;i < n; i++)
    {
        ret = ret / *(p + i);

    }
    return ret;
}
int main()
{
    int input = 0;

    do {
        menu();
        int arr[1000] = { 0 };
        int ret = 0;
        int input = 0;
        int i = 0;
        printf("请选择你想要的\n");
        scanf("%d", &input);

        printf("你想要的数据\n");
        do
        {
            scanf("%d", &arr[i]);
            i++;
        } while (getchar() != '\n');
        int n = i + 1;
        int* p = arr;
        int (*paarr[5])(int, int*) = { 0,add,jian,cheng,chu };
        ret = (*paarr[input])(i, arr);
        printf("%d\n", ret);
    }while (input);

     return 0;
}

  • 写回答

3条回答 默认 最新

  • 浪客 2022-12-31 23:02
    关注
    
    int main()
    {
       int input = 0;
       int arr[1000] = {0};
       int (*paarr[5])(int, int *) = {0, add, jian, cheng, chu};
       while (1)
       {
          menu();
          int n = 0;
          printf("请选择你想要的\n");
          scanf("%d", &input);
          if (input == 0)
             break;
    
          printf("你想要的数据\n");
          while (~scanf("%d", &arr[n])) // ctrl+Z结束
          {
             n++;
          }
          n++;
    
          int ret = (*paarr[input])(n, arr);
          printf("%d\n", ret);
       }
    
       return 0;
    }
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 12月31日