CCF201312(3)ISBN號碼校驗

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  !

發佈了33 篇原創文章 · 獲贊 13 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章