C语言:对%的一些用法

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("\n");
    return 0;
}

总结:从以上两个例子中,可以体会到C语言%在一些“循环”中的秒解,也希望能给你们带来一丝感悟。

 

posted @ 2020-05-11 00:39  如梦的少年丶  阅读(718)  评论(0编辑  收藏  举报