warning C4047: 'function' : 'int *' differs in levels of indirection from 'int ' warning C4024: 'ji
发布网友
发布时间:2022-05-20 19:25
我来回答
共2个回答
热心网友
时间:2023-11-17 12:23
#include<stdio.h>
#define N 4
/*计算N的阶乘*/
int jie_cheng(int a[N])
{
int i,sum1=0;
for(i=0;i<N;i++)
sum1+=a[i];
return sum1;
}
int method1(int a[N])
{
int sum2,M;
M=jie_cheng(a);
sum2=(a[N-2])+M-1;/*计算方法一最少时间*/
return sum2;
}
int method2(int a[N])
{
int M,sum3;
M=jie_cheng(a);
sum3=M-(a[N-2])+(2*2)+(a[N-1]);/*计算方法二最少时间*/
return sum3;
}
void main()
{
int a1=1,b=2,c=5,d=10;//变量a和数组a[4]重名
int MIN_TIME,a[4],i;
printf("\n\t请输入%d个人过桥的时间.\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);//scanf要用地址表示
printf("\n\n\t\t此算法用于计算%d人过桥最短时间。\n",N);
if(N<=2)
MIN_TIME=a1+b;/*N=2时*/
else if(N==3)
MIN_TIME=a1+b+c;
else if(N>=4)
{
if(2*b<a1+c)
MIN_TIME=method1(a);//函数传递实参是数组形式,用数组名,代表数组首地址。
if(2*b>=a1+c)
MIN_TIME=method2(a);
}
printf("此%d人过桥最少时间是%d.\n",N,MIN_TIME);
}
注意函数实参调用方式,还有scanf的使用方法。
热心网友
时间:2023-11-17 12:24
/*计算四人过桥的最少时间*/
#include<stdio.h>
#define N 4
/*计算N的阶乘*/
int jie_cheng(int a[])
{
int i,sum1=0;
for(i=0;i<N;i++)
sum1+=a[i];
return sum1;
}
int method1(int a[])
{
int sum2,M;
M=jie_cheng(a);
sum2=(a[N-2])+M-1;/*计算方法一最少时间*/
return sum2;
}
int method2(int a[])
{
int M,sum3;
M=jie_cheng(a);
sum3=M-(a[N-2])+(2*2)+(a[N-1]);/*计算方法二最少时间*/
return sum3;
}
main()
{
int aa=1,b=2,c=5,d=10;
int MIN_TIME,a[4],i;
printf("\n\t请输入%d个人过桥的时间.\n",N);
for(i=0;i<N;i++)
scanf("%d",a[i]);
printf("\n\n\t\t此算法用于计算%d人过桥最短时间。\n",N);
if(N<=2)
MIN_TIME=aa+b;/*N=2时*/
else if(N==3)
MIN_TIME=aa+b+c;
else if(N>=4)
{
if(2*b<aa+c)
MIN_TIME=method1(a);
if(2*b>=aa+c)
MIN_TIME=method2(a);
}
printf("此%d人过桥最少时间是%d.\n",N,MIN_TIME);
}
/* 上面只保证可以编译,算法那是你的。 */