解题思路:用getchar()函数来实现字符密码翻译:一个元素一个元素进行判断


注意事项:'z' 'Z' 需要考虑如何转换,用ASCII码转换:‘Z’-25 = ‘Z’ 同理‘z’可知。

参考代码:

#include<stdio.h>
int main()
{
	char c;
	while((c=getchar())!='\n')
	if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
	{
		if(c=='z'||c=='Z') 
		{
			c=c-25;
		}
		else 
		{
			c = c + 1;
		}
		printf("%c",c);
	}
	else
	{
		printf("%c",c);
	}
	return 0;
}


点赞(10)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 23 条评论

Ymengo 5年前 回复TA
@七星 因为这个程序可以无限输入,也就可以无限输出,必须要设置个数组限制输入长度
编程cxk 5年前 回复TA
贴个通过的
#include <stdio.h>
#include <string.h>
int main(int argc,const char *argv[])
{
	char a[1000];
	gets(a);
	int len;
	len=strlen(a);
	int i;
	for(i=0;i<len;i++){
		if(a[i]>='a'&&a[i]<'z'||a[i]>='A'&&a[i]<'Z'){
			a[i]+=1;
			}else if(a[i]=='z'||a[i]=='Z'){
				a[i]-=25;
			}
	}
	a[i]='\0';
	puts(a);
	return 0;
}
编程cxk 5年前 回复TA
@七星 a你定义的是字符型变量,应该是字符数组
小白到大神 5年前 回复TA
#include <stdio.h>
#include <string.h>

char Secret(char str[])
{
    int len, i;

    len = strlen(str);

    for(i = 0; i < len; i++)
    {
        if((str[i] >= 'a' && str[i] < 'z') || (str[i] >= 'A' && str[i] < 'Z'))
            str[i] = str[i] + 1;
        else if(str[i] == 'z' || str[i] == 'Z')
            str[i] = str[i] - 25;
    }
}

int main(void)
{
    char str1[10];
    int i, len;


    gets(str1);

    len = strlen(str1);

    Secret(str1);

    for(i = 0; i < len; i++)
        printf("%c", str1[i]);


    return 0;
}
有没有大佬帮忙看看为什么运行错误50% 啊?
375740157 5年前 回复TA
@七星 我用作者的代码通不过哟,显示输出超限
七星 5年前 回复TA
#include<stdio.h>
int main()
{
char a;
while((a=getchar())!='\n')
if((a>='a'&&a<'z')||(a>='A'&&a<'Z'))
{
a=a+1;
printf("%c ",a);
}
else
{
a=a-25;
printf("%c",a);
}
printf("\n");
return 0;
}
输出超限啥意思????
lisky 5年前 回复TA
#include<cstdio>

char sch[]="abcdefghijklmnopqrstuvwxyz";
char bch[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int main(){
	int i;
	char c;
	while((c = getchar()) != '\n'){
		if(c<='z'&&c>='a'){
			for(i=0;sch[i]&&sch[i]!=c;i++);
			if(sch[i]) putchar(sch[(i+1)%26]);
		}
		else if(c<='Z'&&c>='A'){
			for(i=0;bch[i]&&sch[i]!=c;i++);
			if(bch[i]) putchar(bch[(i+1)%26]);
		}
		else putchar(c);
	}
	printf("\n");
	return 0;
}
Strider 5年前 回复TA
@豆豆哦 输入改成 scanf("%[^\n]", &a);
cpython3 5年前 回复TA
@cpython3 声明本人此答案是不正确的,但确实能通过测试。系统测试数据不全面,高手忽喷...谢谢。
菜农 5年前 回复TA
#include<stdio.h>
#include<string.h>

int main()
{
    char s[1000];
    gets(s);
    
    int len = strlen(s);
    char *p_s = s ;
    for(int i = 0 ; i < len ; i ++)
    {
        if(*p_s >= 'a' && *p_s <= 'y')
            *p_s = *p_s+ 1;
        else if(*p_s == 'z')
            *p_s = 'a' ;
        
        p_s ++ ;
    }
    puts(s);
    return 0;
}