ZZULIOJ 1164: 字符串加密

題目描述

輸入一串字符(長度不超過100)和一個正整數k,將其中的英文字母加密並輸出加密後的字符串,非英文字母不變。加密思想:將每個字母c加一個序數k,即用它後面的第k個字母代替,變換公式:c=c+k。如果字母爲z,則後一個字母是a,也就是字母字符形成一個圓。

輸入

輸入第一行是若干字符,以回車結束。輸入第二行是一個整數k,k是int範圍內的正整數;

輸出

輸出加密後的字符串。

樣例輸入 

12kjsdZjk
280

樣例輸出 

12edmxTde

提示

注意,即使通過模運算把k控制在小於26的範圍內,依然要考慮char類型溢出的問題,如'z' + 10也會超出char的表示範圍。但慶幸的是,我們只需要考慮向內存存儲時的char類型溢出,而在計算過程中不會溢出,因爲計算過程中char會被提升爲int類型。

 

tips:

1 字符與數字進行運算時,運算結果會自動變成int

2   判斷此時的結果是否超出 'z'  或  'Z'

 

#include<stdio.h>
#include<stdlib.h>

int main(){
	char buf[1024];
	int num, temp;
	gets(buf);
	scanf("%d", &num);
	num = num % 26;
	for (int i = 0; buf[i] != '\0'; i++)
	{
		if (buf[i]>='a'&&buf[i]<='z')
		{
			temp = (buf[i] + num);
			if (temp>122)
			{
				buf[i] = temp - 26;
			}
			else{
				buf[i] = temp;
			}
		}
		else if (buf[i]>='A'&&buf[i]<='Z')
		{
			temp = (buf[i] + num) ;
			if (temp>90)
			{
				buf[i] = temp - 26;
			}
			else
			{
				buf[i] = temp;
			}
		}
	}
	puts(buf);

}

 

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