C语言:这道题为什么不对呢?跪谢~~

来源:百度知道 编辑:UC知道 时间:2024/06/17 15:09:34
#include<stdio.h>
int isbn(int a[]);
main()
{int a[10],i,index;
printf("请输入十个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
index=isbn(a);
if(index==1)
printf("正确的ISBN码");
if(index==0)
printf("错误的ISBN码");

}
int isbn(int a[])
{
int sum=0,i;
for(i=0;i<9;i++)
{sum+=a[i]*(i+1);}
if(sum%10==10)
return 0;
if(sum%10!=10)
return 1;

}

例如ISBN0-8065-0959-7的累加和为:
1*0 + 2*8 + 3*0 + 4*6 + 5*5 + 6*0 + 7*9 + 8*5 + 9*9 = 249
249除以11的余数是7,所以该ISBN的最后一个字符是7。校验码用于检验ISBN的有效性。
#include<stdio.h>
int isbn(int a[]);
main()
{int a[10],i,index;
printf("请输入十个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
index=isbn(a);
if(index==1)
printf("正确的ISBN码");
if(index==0)
printf("错误的ISBN码");


if(sum%11==7)
return 0;
if(sum%11!=7)

1*0 + 2*8 + 3*0 + 4*6 + 5*5 + 6*0 + 7*9 + 8*5 + 9*9 = 249
249除以11的余数是7
这里
为什么是11;
你要把问题讲清楚,不然我不好下手

#include<stdio.h>
int isbn(int a[]);
main()
{int a[10],i,index;
printf("请输入十个数:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
index=isbn(a);
if(index==1)
printf("正确的ISBN码right!\n");
if(index==0)
printf("错误的ISBN码wrong!\n");
system("pause");
}
int isbn(int a[])
{
int sum=0,i;
for(i=0;i<=9;i++)
{sum+=a[i]*(i+1);}
if(sum%11==7)
return 0;
if(sum%11!=7)
return 1;

}
改好了。原因很简单,应该是i<=9而不是i<9。因为要加到9嘛。其他地方都没问题。

249除以11的余数是7,为什么是除11呢?

if(sum%10==10)
return 0;
if(sum%10!=10)
return 1;
余数不是应该等于最后一个数吗?最后一个数不是a[i]吗?为什么这里是除10呢?

还有,返回