1.元素移动
题目:编写函数move将数组a(共有M个元素)中元素向左循环移位n次
源代码
void move(int a[],int m,int n) { int b[m],i; for(i=0;i<m;i++) b[(i+m-n)%m]=a[i]; for(i=0;i<m;i++) a[i]=b[i]; }
反思:如题目向右循环位移n次,代码又将如何改变?
代码如下
void move(int a[],int m,int n) { int b[m],i; for(i=0;i<m;i++) b[(i+n)%m]=a[i]; for(i=0;i<m;i++) a[i]=b[i]; }
2.凯撒加密
题目:为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个正整数k,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上向后偏移k位后被替换成密文。 例如,当偏移量k是2时,表示所有的字母被向后移动 2 位后的字母替换,即所有的字母 A 将被替换成C,字母 B 将变为 D,…,字母 X 变成 Z,字母 Y 则变为 A,字母 Z 变为 B
源代码
#include<stdio.h> int main() { char a[80],*str=a; int i; gets(str); scanf("%d",&i); while(*str) { if(*str>='A'&&*str<='Z') *str=((*str-'A')+i)%26+'A'; if(*str>='a'&&*str<='z') *str=((*str-'a')+i)%26+'a'; str++; } printf("%s",a); printf(" "); return 0; }
总结:从以上两个例子中,可以体会到C语言%在一些“循环”中的秒解,也希望能给你们带来一丝感悟。