#include <stdio.h>
int check();
main()
{ int flag;
int score[5][5]={{17,24,1,8,15},{23,5,7,14,16},{4,6,13,20,22},{10,12,19,21,3},{11,18,25,2,9}};
int i,j;
flag=check(score);
if(flag)
{ for(i=0;i<5;i++)
{ for(j=0;j<5;j++)
printf("%4d",score[i][j]);
}
printf("\n");
}
else
{ printf("no");}
}
int check(int score[][5])
{ int i,j;
static int s[5],sum[5];
int sum1=0,sum2=0;
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
{s[i]=s[i]+score[i][j];
sum[i]=sum[i]+score[i][j];
}
}
for(i=0;i<5;i++)
{ sum1=sum1+score[i][i];
sum2=sum2+score[i][4-i];
}
for(i=0;i<5;i++)
{if(sum[i]==s[i]&&s[i]==sum1&&sum1==sum2)
return 1;
else
return 0;
}
}我自己定義的函數不能調用好像,而且有return返回值時他講
D:\學習課件\c語言編程\幻型方正\1.c(41) : warning C4715: 'check' : not all control paths return a value這是什麼意思啊
你的程序我修改了一下,就是參數傳遞問題細心點仔細對照看看:代碼如下:
#include <stdio.h>
int check(int score[][5]); ///參數傳遞
void main()
{ int flag;
int score[5][5]={{17,24,1,8,15},{23,5,7,14,16},{4,6,13,20,22},{10,12,19,21,3},{11,18,25,2,9}};
int i,j;
flag=check(score);
if(flag)
{ for(i=0;i<5;i++)
{ for(j=0;j<5;j++)
printf("%4d",score[i][j]);
}
printf("\n");
}
else
{ printf("no");}
}
int check(int score[][5]) ///////////注意參數傳遞,保持與前面定義相同
{ int i,j;
static int s[5],sum[5];
int sum1=0,sum2=0;
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
{s[i]=s[i]+score[i][j];
sum[i]=sum[i]+score[i][j];
}
}
for(i=0;i<5;i++)
{ sum1=sum1+score[i][i];
sum2=sum2+score[i][4-i];
}
for(i=0;i<5;i++)
{if(sum[i]==s[i]&&s[i]==sum1&&sum1==sum2)
return 1;
else
return 0;
}
return 0;
}
//希望能幫到你!
對了對了,,那麻煩你再看看這個#include <stdio.h>
void ARM();
int TERM();
int TERM1();
main()
{ int a,b;
int i,n;
int score[30],num[30];
scanf("%d,%d",&score[0],&num[0]);
for(i=0;i<=29&&score[i]>0;i++)
scanf("%d,%d",&score[i],&num[i]);
n=i-1;
a=TERM(score,num,n);
b=TERM1(score,num,n);
ARM(score,num,n);
printf("%d,%d",a,b);
for(i=0;i<=n-1;i++)
{ printf("%4d,%4d",num[i],score[i]);}
}
int TERM1(int score[],int num[],int n)
{ int i,j;
int sum=0;
float ave;
for(i=0;i<=n-1;i++)
sum=sum+score[i];
ave=(float)sum/n;
j=0;
for(i=0;i<=n-1;i++)
{if(score[i]>=ave)
{ j++;
printf("%4d,%4d",num[i],score[i]);
}
}
return j;
}
int TERM(int score[],int num[],int n)
{ int i,j=0;
for(i=0;i<=n-1;i++)
{if(score[i]<60)
{j++;
printf("%d",num[i]);
}
}
return j;
}
void ARM(int score[],int num[],int n)
{ int j,k;
int temp,temp2;
for(j=0;j<=n-2;j++)
for(k=0;k<=n-1;k++)
{if(score[j]>score[k])
{ temp=score[j];
score[j]=score[k];
score[k]=temp;
temp2=num[j];
num[j]=num[k];
num[k]=temp2;
}
}
}
還是編譯通過但是執行結果不對。。。。。
看看結果
題目不一樣了。。。。。你可以吧扣扣號給我啊