大一编程标题。
大一编程题目。。。。
/* 输入6×6的数组,下面的各要求通过编写函数实现,要求用数组名作为函数参数:
① 求出对角线上各元素的和;
② 求出对角线上行、列下标均为偶数的各元素的积;
③ 找出对角线上其值最大的元素和它在数组中的位置
*/
#include <stdio.h>
int sum( int a[][],int n);
int pro( int a[][],int n);
int main(void)
{
int a[6][6],i,j,n=6;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d%d",&a[i][j]);
sum(a,n);
printf("%d",sum);
pro(a,n);
printf("%d",pro);
}
int sum( int a[][],int n)
{
int i,j=((n-i)||i),sum;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
sum+=a[i][j];
return sum;
}
int pro( int a[][],int n)
{
int i,j=((n-i)||i),pro;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i%2==0&&j%2==0)
pro*=a[i][j];
return pro;
}
大人帮忙改一下吧。。。如果实在错的离谱就给我个新的。。。。。。
------解决方案--------------------
或者这样写,判断的次数尽量减少
/* 输入6×6的数组,下面的各要求通过编写函数实现,要求用数组名作为函数参数:
① 求出对角线上各元素的和;
② 求出对角线上行、列下标均为偶数的各元素的积;
③ 找出对角线上其值最大的元素和它在数组中的位置
*/
#include <stdio.h>
int sum( int a[][],int n);
int pro( int a[][],int n);
int main(void)
{
int a[6][6],i,j,n=6;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d%d",&a[i][j]);
sum(a,n);
printf("%d",sum);
pro(a,n);
printf("%d",pro);
}
int sum( int a[][],int n)
{
int i,j=((n-i)||i),sum;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
sum+=a[i][j];
return sum;
}
int pro( int a[][],int n)
{
int i,j=((n-i)||i),pro;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i%2==0&&j%2==0)
pro*=a[i][j];
return pro;
}
大人帮忙改一下吧。。。如果实在错的离谱就给我个新的。。。。。。
------解决方案--------------------
或者这样写,判断的次数尽量减少
#include <stdio.h>
int sum(int a[][6],int n);
long pro(int a[][6],int n);
void max(int a[][6],int n);
int main(void)
{
int a[6][6],i,j,n=6;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
//只输入一个值,为什么要放两个格式说明符进来??
//scanf("%d%d",&a[i][j]);
scanf("%d",&a[i][j]);
printf("对角线元素之和=%d\n",sum(a,6));
//函数名不等同返回值,不能直接输出啊,传递形参也没有传递一个变量的啊~~~~~~
printf("对角线上行列值为偶数的元素之积=%ld\n",pro(a,6));
max(a,6);
return 0;
}
//对角线之和
int sum( int a[][6],int n)
{
int i,j,sum=0,max=0;
for(i=0;i<n;i++)
for(j=0;j<6;j++)
if(i==j
------解决方案--------------------
(i+j==n-1))
sum+=a[i][j];
return sum;
}
//行列均为偶数的元素之积
long pro( int a[][6],int n)
{
int i,j;
long pro=1;
for(i=0;i<n;i++)
for(j=0;j<6;j++)
if((i==j
------解决方案--------------------
i+j==n-1)&&!(i%2)&&!(j%2))
pro*=a[i][j];
return pro;
}
//对角线最大元素
void max(int a[][6],int n)
{
int i,j,Max=a[0][0],m,s;
for(i=0;i<n;i++)
for(j=0;j<6;j++)
if((i==j
------解决方案--------------------
(i+j==n-1))&&Max<a[i][j])
{
Max=a[i][j];
m=i;
s=j;
}
printf("对角线上最大元素是=%d,行值=%d,列值=%d\n",Max,m+1,s+1);
}