C语言基本知识点扫盲大作战终于到最后了,诚不负所望,这道字符串char型与int整型相互转换的题目又让我出了一把汗诶
先上题目
输入是字符串,将其中的char型数字乘以一定的权值,计算时如果对char字符强制类型转换也只会得到对应的ASCII码,如何将它对应的int型数字得到就是最重要的问题。
但其实不难想到,每一位数字范围都在0~9之间,一是可以利用简单的一位十进制数与ASCII码的转换关系去求
http://wenku.baidu.com/link本来想找一张清晰的图看到了这份完整的码表
挑选一些常用的截图保存了hhhhhhh
另一种方法就是利用相对差来计算,用表达式表达就是,0~9之间的整型数字与字符型变量的变换 int=char- '0' char=int+'0' [QAQ减号太短实在受不了.......
char型数据1yte(字节)8it,数据范围在-128~127
常用与运算存储的常常是unsigned char型数据,1字节,范围在0~255
嗯。对于这道题总结就是第一次50分是因为没记清楚题目把识别码为X的情况忘掉了。。。。时间不多了要细心啊
上代码
#include<stdio.h>
int main()
{
char m1='0';
char m2='-';
char a[14];
scanf("%s",&a);
int temp=0;
int i,j;
int k=0;
for(i=0;i<14;i++)
{
if(a[i]==m2)
continue;
else
{
k++;
if(k!=9)
{
j=a[i]-'0';
temp+=(j*k);
}
else
{
j=a[i]-'0';
temp+=(j*k);
break;
}
}
}
temp=temp%11;
j=a[12]-'0';
if(temp==j)
printf("Right\n");
else if(temp==10)
{
if(a[12]=='X')
printf("Right\n");
else
{
a[12]='X';
printf("%s",a);
}
}
else
{
a[12]=temp+'0';
printf("%s",a);
}
return 0;
}
Good luck to myself !