回复 9楼 linlulu001
搭车同问能帮我看看我的问题出在哪么
程序代码:
#include<stdio.h>
#include<string.h>
int check(char a[]);
int main(void)
{ int i,j,n,l;
char a[20];
scanf("%d ",&n);
for ( i = 0; i < n; ++i)
{
gets(a);
l=strlen(a);
if(l==15)
{
for(j=14;j>5;j--)
a[j+2]=a[j];
if(a[14]=='9'&&a[15]=='9'&&(a[16]>'5'&&a[16]<='9'))
{
a[6]='1';
a[7]='8';
}
else
{
a[6]='1';
a[7]='9';
}
a[17]=check(a);
a[18]='\0';
printf("%s",a);
}
else if(l==18)
{
if(a[17]==check(a))
printf("Valid\n");
else
printf("Invalid\n");
}
else
printf("Invalid\n");
}
return 0;
}
int check(char a[])
{
int s=0,i;
int wi[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char d[11]={'1','0','X','9','8','7','6','5','4','3','2'};
for (i = 0; i < 17; ++i)
s += (a[i]-'0')*wi[i];
return d[s%11];
}
在进入l=15的循环结束后要输入回车才能继续下去
想不通问题出在哪里
[此贴子已经被作者于2016-11-18 18:39编辑过]








