PTA,均为素数,字符串转化

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


PTA练习

一、字母串

题目:英语老师要求学生按照如下规则写一串字母:
如果写了某个大写字母,下一个就必须写同个字母的小写,或者写字母表中下一个字母的大写;
如果写了某个小写字母,下一个就必须写同个字母的大写,或者写字母表中前一个字母的小写;
当然也可以什么都不写,就结束这个字母串。
例如 aAaABCDdcbBC 就是一个合法的字母串;而 dEFfeFGhI 就是非法的。注意 a 没有前一个字母, Z 也没有下一个字母。
现在面对全班学生交上来的作业,老师请你写个程序自动批改。

输入测试案例:
在这里插入图片描述

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int n;
    scanf("%d",&n);
    char arr[2000001];       //创建符合题目上限的数组
    while(n)
    {
        scanf("%s",arr);
       int sz = strlen(arr);
        getchar();         //吸收回车字符
   //     puts(arr);
        	int i;
         int pd = 0;
        for(i=0;arr[i+1]!='\0';i++)
        {  
            if('A'<=arr[i]&&arr[i]<='Z') {    //输入是大写字母时
              if((arr[i+1]==arr[i]+32)||(arr[i+1]==arr[i]+1)) {
                      continue;
             }  else{
                  pd=1;
                  break;
              }
            }
                if('a'<=arr[i]&&arr[i]<='z')    //输入是小写字母时
                {
                    if(arr[i+1]==arr[i]-32||arr[i+1]==arr[i]-1)
                    {
                       continue;
                    } else {
                        pd=1;
                      break;
                    }
                }
        }
       
       if(pd==1) {
           printf("N\n");
       } else {
           printf("Y\n");
       }
 
        n--;
    }
    return 0;
}

二、英文字母替换加密

本题要求编写程序,将英文字母替换加密。为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:将明文中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母。例如,字母a->B、b->C、…、z->A、A->b、B->c、…、Z->a。输入一行字符,将其中的英文字母按照以上规则转换后输出,其他字符按原样输出。
在这里插入图片描述

#include <stdio.h>
#include <string.h>
int main()
{
    char arr[100];
    gets(arr);
    int i;
    for(i=0;arr[i]!='\0';i++)
    {
        if(arr[i]>='a'&&arr[i]<='z') {
            arr[i]='A'+(arr[i]-'a')+1;     //A+其小写字母到a的距离=其本身大写字母,然后+1
            if(arr[i]>'Z') arr[i] = 'A';
        } else if(arr[i]>='A'&&arr[i]<='Z') {
            arr[i]='a'+(arr[i] - 'A')+1;
            if(arr[i]>'z') arr[i] = 'a';
        } else {
            ;
        }
    }
    puts(arr);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值