渴望学到知识的菜鸟


私信TA

用户名:ldhskd

访问量:33522

签 名:

这小伙子人行,能处!

等  级
排  名 112
经  验 8045
参赛次数 1
文章发表 48
年  龄 18
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

    题目的意思就是让这些字符向后移一位就可以了,边界z向后移动一位就是重新开始这个循环,也就是重新重a开始


    a[i] = (a[i] - 'a') % 26 + 'a';

    这句代码的意思就是,通过取模的方式来知道,它是26个字母中的第几位,在加上一个'a'就变成了原来的数了

    而可以进一步改进成这个样子:

    a[i] = (a[i] - 'a' + 1) % 26 + 'a';

    这样表示的是 a[i] - 'a' 先向前移动 一位 然后在 取模 ,这样的话取模的结果就是已经移动一位后的结果了,之后再加'a',就变了'a'移动一位后的结果了



注意事项:

参考代码:

#include <stdio.h>
#include <string.h>
void fun(char a[])//向后移动一位
{
    for (int i = 0; i < strlen(a); i++)
        if (a[i] >= 'a' && a[i] <= 'z')
            a[i] = (a[i] - 'a' + 1) % 26 + 'a';
        else if (a[i] >= 'A' && a[i] <= 'Z')
            a[i] = (a[i] - 'A' + 1) % 26 + 'A';
}

int main()
{
    char a[101];
    gets(a);
    fun(a);
    puts(a);
    return 0;
}


 

0.0分

52 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

int main()
{
    char arr[101] = { 0 };
    gets(arr);
    for (int i = 0; arr[i]; i++)
    {
        if (arr[i] >= 'a' & arr[i] < 'z')
            putchar(arr[i] + 1);
        else if (arr[i] == 'z')
            putchar('a');
        else
            putchar(arr[i]);
    }
    return 0;
}
2024-04-14 14:38:37
#include<stdio.h>
#include<string.h>
 
void enery(char arr[])
{
    int len = strlen(arr);
    int i = 0;
    for (i = 0; i <= len; i++)
    {
        if (arr[i] >= 'a' && arr[i] <= 'y')
            arr[i] += 1;
        else if (arr[i] == 'z')
            arr[i] -= 25;
    }
}
int main()
{
    char arr[1000] = { 0 };
    gets(arr);
    enery(arr);
    printf("%s\n", arr);
 
    return 0;
}
2024-02-06 16:08:35
#include<stdio.h>
int main()
{
	char array[2];
	for(int i=0;i<2;i++){
	scanf("%c",&array[i]);
	getchar();
}
	for(int i=0;i<2;i++){
		if(array[i]>='A'&&array[i]<='Z'){
		array[i]=(array[i]+1-'A')%26+'A';}
			else if(array[i]>='a'&&array[i]<='z'){
			array[i]=(array[i]+1-'a')%26+'a';	
			}
			printf("%c ",array[i]);
		}
	return 0;
}
大佬,最后多了一个空,怎么解决
2023-12-13 17:18:32
#include <stdio.h>
#include <string.h>
int main(){
	char str[20];
	scanf("%s",str);
	int len = strlen(str);
	int i = 0;
	for(i = 0;i < len;i++){
		if(str[i]>='a' && str[i] <= 'z'){
			str[i]++;
		}
	}
	printf("%s",str);
	return 0;
}
我这个为啥错了
2023-08-06 17:48:30
直接加1不可以吗?
2022-12-31 20:44:35
#include<stdio.h>
int main()
{
	char c;
	while(~scanf("%c",&c))
	{
	    if(c>='a'&&c<='z'||c>='A'&&c<='Z')
	    printf("%c",c+1);
	    else
	    printf("%c",c);
	}
	return 0;

多少有些复杂了
2022-11-14 11:01:02
写的不错
2022-10-30 10:40:19
#include <stdio.h>
#include <string.h>
int main()
{
    char ch, c;
   while ((ch = getchar()) != '\n')
   {
       if (ch<='z' && ch>='a')
       ch = (ch-'a'+1)%26+'a';
       else if (ch<='Z'&&ch>='A')
       ch = (ch-'A'+1)%26+'A';
        printf("%c", ch);
   }
    return 0;
}

题目不是说输入一行字符吗,咋while ((ch = getchar()) != '\n')就错了,while ((ch = getchar()) != EOF)就行呢
2022-07-11 19:57:26