哪里有错呢。大家看一下

来源:百度知道 编辑:UC知道 时间:2024/06/15 13:29:39
#inclide<stdio.h>
main()
{ int a[18],i=0,x,s=0;
int b[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char c[12]={"10X98765432"};
gets(a);
for(i=0;i<17;i++)
{
x=a[i]*b[i];
s=s+x;

}
s=s%11;
printf("%c",c[s]);
getch();
}

错在这里:
gets的参数类型为char*,
而你声明的a的类型为int a[18],也就是int*,
所以会报错。

修改办法:
1.将int a[18]改为char a[18]
2.由于数组a中的成员变成了字符型,所以在进行计算时需要减去'0',以得到十进制数值,也就是将x=a[i]*b[i]改为x=(a[i]-'0')*b[i];
3.最后记得数组声明时记得初始化

改过以后:
#include<stdio.h>

main()
{ int i=0,x,s=0;
int b[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
char c[12]={"10X98765432"};
char a[18]={NULL};
gets(a);
for(i=0;(i<17)&&(a[i]!=NULL);i++)
{
x=(a[i]-'0')*b[i];
s=s+x;

}
s=s%11;
printf("%c",c[s]);
getch();
}

第一行就有错。。。

#include<stdio.h>

天啊老大
单词就拼错了
#include<stdio.h>

我帮你看过了

你的头文件有点问题
应该是这样写的
#include<stdio.h>

我不知道你还有哪里不懂。

其他地方都没有语法错误了。

不懂的地方可以在线交谈的。