由于初学…加上身边能请教的人有限,所以很苦恼
问题大概是输入一个12位的校验码,通过对其偶数位(即12位中的第2/4/6/8/10/12)位求和并乘以3得到A,奇数位求和得到B , 取A,B之和为C,用大于C的最小10的倍数做差得出校验码,输出。
主要搞不清的地方1是这个12位的校验码怎么声明,是按照数组来还是字符串,2是后面循环语句中的产量声明问题,该怎么声明,在什么时候声明。
附上写的代码…没能写完…。也注定有错,惭愧,望指点,最好能有完整的代码示范,我的毕竟很不标准,还需要学习一个。
#include
#include
using namespace std;
int main()
{int num;
int k=0;
int n=0;
int m=0;
int b,c,d,e,f;
cout<<"请输入12位条形码";
string a
cin>>a>>;
for(int i=0;i<12;i++){
num=a[i];
k++;
if(k%2==0){
b[n]=a[i];
n++;
}
else{
c[m]=a[i];
m++;
}
}
d=b*3+c;
e=(d/10+1)*10;
f=e-d;
cout<<f<<endl;
return 0;
}
int Check_Code(string str)
{
int length = str.size();
int sum1 = 0, B = 0;
for (int i = 0; i < length; i++)
{
if (i % 2 != 0)
{
sum1+= str[i] - '0';
}
else {
B += str[i] - '0';
}
}
int A = sum1 * 3;
int C = A + B;
int e = (C/ 10 + 1) * 10;//不是很清楚你这句话的意识“大于C的最小10的倍数”就按照你的代码上求
return e - C;
}
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string a;
cout<<"请输入12位数:";
cin >> a ;
while(a.length() != 12)
{
cout<<"请输入12位数:";
cin >> a ;
}
int suma = 0, sumb = 0, sumc = 0, yzm = 0;
for(int i = 1;i < 12; i += 2)
sumb += (int)a[i]-'0'; //如果不 -'0' 那么得到的其实是ASSIC码
for(int i = 0;i < 12; i += 2)
suma += (int)a[i]-'0';;
suma *= 3;
sumc = suma + sumb;
int n = 10;
while (n < sumc)
n *= 10;
yzm = n - sumc;
cout<<yzm<<endl;
system("pause");
return 0;
}
while n小于 sumc 那里 应该改成 小于等于 。刚刚写的 这里需要改下