求教,对于不知道待测试数据个数的时候如何定义数组
描述验证18位证件号是否正确。
输入
现有一组M个18位证件号,将奇位数的值相加的和求的平均数X,偶位数先与3相乘得到的各位数的和的平均数y。如果(X+Y)是10的倍数,则证件号正确,否则则错误。
输出
若证件号正确,单独一行输出”Y”,否则输出”N”。
样例输入
2
431023198919230939
568952114235123155
样例输出
Y
N
提示
注意每个数据后的回车键的处理
我不知道怎么处理这个M啊,就定义了个100 的二维数组,但就算按样例输入,也得不到结果,该怎么修改啊,谢大神了
程序代码:
#include<stdio.h> void main() {int n,i,j,d[100][2],x=0,y=0; int s[100][18]; char ch; scanf("%d",&n); for(i=0;i<n;i++) {for(j=0;j<18;j++) scanf("%d",&s[i][j]); ch=getchar(); } for(i=0;i<n;i++) {for(j=0;j<18;j+=2) x+=s[i][j]; d[i][0]=x; x=0; } for(i=0;i<18;i++) {for(j=1;j<18;j+=2) y+=s[i][j]*3%10; d[i][0]=y; y=0; } for(i=0;i<n;i++) {if(d[i][0]%9==0&&d[i][1]%9==0&&int(d[i][0]/9+d[i][1]/9)%10==0) printf("Y\n"); else printf("N\n"); } }