为什么我的input到最后一步被初始化成0了
#include
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;
}
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;
}
把62行的“int input=0”删去即可。
因为第56行 和 第62行定义了两个同名的变量 input,但这两个变量的作用域的范围不同,出现误操作。