7-16 sdut-C语言实验- 简单编码
将一串文本译成密码,密码的规律是:
将原来的小写字母全部翻译成大写字母,大写字母全部翻译成小写字母,数字的翻译规律如下:
0——>9
1——>8
2——>7
3——>6
4——>5
5——>4
6——>3
7——>2
8——>1
9——>0
然后将所有字符的顺序颠倒。
输入格式:
输入一串文本,最大字符个数不超过100。
输出格式:
输出编码后的结果。
输入样例:
china
输出样例:
ANIHC
#include<stdio.h>
#include<string.h>
int main()
{
char a[101];
gets(a);
int n=strlen(a);
for(int i=0;i<n;i++){
if(a[i]>=’A’&&a[i]<=’Z’)a[i]=a[i]+32;
else if(a[i]>=’a’&&a[i]<=’z’)a[i]=a[i]-32;
else if(a[i]>=’0’&&a[i]<=’9′)a[i]=105-a[i];
}
for(int i=0;i<=(n-1)/2;i++){
int t=a[i];a[i]=a[n-i-1];a[n-i-1]=t;
}
printf(“%s\n”,a);
return 0;
}
7-17 sdut-C语言实验- 编码
给你一个由大写字母组成的组成的字符串,你可以用如下规则对其进行编码:
1、 包含K个相同字母的连续字符串可以用KX表示,其中X是相同的字母。
2、 如果K为1,不输出K。
输入格式:
输入有多组,直到文件结束。每组一个字符串,长度为10000以内。
输出格式:
输出编码后的字符串。
输入样例:
ABC
ABBCCC
输出样例:
ABC
A2B3C
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,k;
char s[10000];
while(gets(s)){
k=1;
for(i=0;s[i]!=’\0′;i++){
if(s[i]==s[i+1])
k++;
else
{
if(k==1)
printf(“%c”,s[i]);
else
printf(“%d%c”,k,s[i]);
k=1;
}
}
printf(“\n”);
}
return 0;
}
7-18 sdut-C语言实验-字符串逆序
将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。
输入格式:
输入包括一行。
第一行输入的字符串。
输出格式:
输出转换好的逆序字符串。。
输入样例:
在这里给出一组输入。例如:
I am a student
输出样例:
在这里给出相应的输出。例如:
tneduts a ma I
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[101];
gets(a);
int n;n=strlen(a);
for(int i=n-1;i>=0;i–){
printf(“%c”,a[i]);
}
printf(“\n”);
return 0;
}
7-19 sdut-C语言实验-回文串的判断(这个题是部分正确,也没找到正确答案,有没有友友知道正确答案啊)
输入一个字符串,判断该字符串是否为回文,只考虑数字和字母字符,字母的大小写没有区别。
回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的。
输入格式:
输入一串字符(长度小于100)。
输出格式:
若该串字符是回文串输出“yes”,否则输出“no”。
输入样例:
level
输出样例:
yes
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char a[101];
int n,i;
gets(a);
n = strlen(a);
for(i=0;i<n/2;i++)
{
if(a[i]!=a[n-i-1]) //前后对应相等,若不相等结束循环;
break;
}
if(i<n/2) printf(“no\n”);
else printf(“yes\n”);return 0;
}
7-20 sdut-C语言实验- 简单密码破解
假设虎子的一个BBS上的密码为zvbo941987,为了方便记忆,他通过一种算法把这个密码变换成YUANzi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。
他是这么变换的,大家都知道老年人手机上的字母: 1–1, abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9, 0–0,就这么简单,虎子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先边成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。
输入格式:
输入包括多个测试数据。输入是一个明文,密码长度不超过100个字符,输入直到文件结尾。
输出格式:
输出渊子真正的密文。
输入样例:
YUANzi1987
输出样例:
zvbo941987
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[101];
while(gets(a)!=NULL){
int n=strlen(a);
for(int i=0;i<n;i++){
if(a[i]==’a’||a[i]==’b’||a[i]==’c’)printf(“2”);
else if(a[i]==’d’||a[i]==’e’||a[i]==’f’)printf(“3”);
else if(a[i]==’g’||a[i]==’h’||a[i]==’i’)printf(“4”);
else if(a[i]==’j’||a[i]==’k’||a[i]==’l’)printf(“5”);
else if(a[i]==’m’||a[i]==’n’||a[i]==’o’)printf(“6”);
else if(a[i]==’p’||a[i]==’q’||a[i]==’r’||a[i]==’s’)printf(“7”);
else if(a[i]==’t’||a[i]==’u’||a[i]==’v’)printf(“6”);
else if(a[i]==’w’||a[i]==’x’||a[i]==’y’||a[i]==’z’)printf(“9”);
else if(a[i]>=’A’&&a[i]<=’Z’)printf(“%c”,a[i]+33);
else if(a[i]>=’0’&&a[i]<=’9′)printf(“%c”,a[i]);
}
return 0;
}
}
7-21 统计大写辅音字母
英文辅音字母是除A
、E
、I
、O
、U
以外的字母。本题要求编写程序,统计给定字符串中大写辅音字母的个数。
输入格式:
输入在一行中给出一个不超过80个字符、并以回车结束的字符串。
输出格式:
输出在一行中给出字符串中大写辅音字母的个数。
输入样例:
HELLO World!
输出样例:
4
#include<stdio.h>
#include<string.h>
int main()
{
int n,k;
char a[81];
gets(a);
n=strlen(a);
for(int i=0;i<n;i++){
if(a[i]!=’E’&&a[i]!=’I’&&a[i]!=’O’&&a[i]!=’U’&&a[i]>’A’&&a[i]<=’Z’)k++;
}
printf(“%d”,k);
return 0;
}
7-22 sdut- C语言实验-单词统计
从键盘输入一行字符(长度小于100),统计其中单词的个数,各单词以空格分隔,且空格数可以是多个。
输入格式:
输入只有一行句子。仅有空格和英文字母构成。
输出格式:
单词的个数。
输入样例:
stable marriage problem Consists of Matching members
输出样例:
7
#include<stdio.h>
#include<string.h>
int main()
{
char a[10000];
int f=0,i,n;
int z=0;
gets(a);
n=strlen(a);
for(i=0;i<n;i++)
{
if(f==0)
{
if(a[i]>=’a’&&a[i]<=’z’||a[i]>=’A’&&a[i]<=’Z’)
{
f=1;
z++;
}
}
else
{
if(f==1&&a[i]==’ ‘)
{
f=0;
}
}
}
printf(“%d\n”,z);
return 0;
}
7-23 字母串
英语老师要求学生按照如下规则写一串字母:
- 如果写了某个大写字母,下一个就必须写同个字母的小写,或者写字母表中下一个字母的大写;
- 如果写了某个小写字母,下一个就必须写同个字母的大写,或者写字母表中前一个字母的小写;
- 当然也可以什么都不写,就结束这个字母串。
例如 aAaABCDdcbBC
就是一个合法的字母串;而 dEFfeFGhI
就是非法的。注意 a
没有前一个字母, Z
也没有下一个字母。
现在面对全班学生交上来的作业,老师请你写个程序自动批改。
输入格式:
输入在第一行给出一个不超过 100 的正整数 N。随后 N 行,每行给出一位学生的作业,即仅由英文字母组成的非空字母串,长度不超过 2×106。
输出格式:
对每位学生的作业,如果正确就在一行中输出 Y
,否则输出 N
。
输入样例:
2
aAaABCDdcbBC
dEFfeFGhI
输出样例:
Y
N
#include <stdio.h>
#include <math.h>
#include <string.h>
void judgment(char a[],int n)
{
int j, k=0;
for (j = 0; j + 1 <= n; j++)
{
if (a[j] > 96 && a[j] < 123)
if (a[j + 1] == a[j] – 32 || (a[j + 1] == a[j] – 1&&a[j]!=’a’))
k++;
if(a[j] > 64 && a[j] < 92)
if (a[j + 1] == a[j] + 32 || (a[j + 1] == a[j] + 1&&a[j]!=’z’))
k++;
}
if (k + 1 == n)
printf(“Y\n”);
else printf(“N\n”);
}
int main()
{
int m;
m=2E6;
char a[m];
int n, i, j, k;
scanf(“%d”, &n);
for (i = 0; i < n; i++)
{
scanf(“%s”, a);
judgment(a,strlen(a));
memset(a,0,sizeof(a));
}
return 0;
}
7-24 考试座位号
每个 PAT 考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位。正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座位就座。但有些考生迟到了,试机已经结束,他们只能拿着领到的试机座位号码求助于你,从后台查出他们的考试座位号码。
输入格式:
输入第一行给出一个正整数 N(≤1000),随后 N 行,每行给出一个考生的信息:准考证号 试机座位号 考试座位号
。其中准考证号
由 16 位数字组成,座位从 1 到 N 编号。输入保证每个人的准考证号都不同,并且任何时候都不会把两个人分配到同一个座位上。
考生信息之后,给出一个正整数 M(≤N),随后一行中给出 M 个待查询的试机座位号码,以空格分隔。
输出格式:
对应每个需要查询的试机座位号码,在一行中输出对应考生的准考证号和考试座位号码,中间用 1 个空格分隔。
输入样例:
4
3310120150912233 2 4
3310120150912119 4 1
3310120150912126 1 3
3310120150912002 3 2
2
3 4
输出样例:
3310120150912002 2
3310120150912119 1
#include<stdio.h>
#include<string.h>
int main()
{
char zhun[1500][20];
int a,b,c,shiji[1500],kao[1500];
scanf(“%d\n”,&a);
for(int i=0;i<a;i++){
scanf(“%s %d %d\n”,&zhun[i],&shiji[i],&kao[i]);
}
scanf(“%d”,&b);
for(int i=0;i<b;i++){
scanf(“%d”,&c);
for(int j=0;j<a;j++){
if(c==shiji[j])printf(“%s %d\n”,zhun[j],kao[j]);
}
}
return 0;
}
7-25 A-B
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
输入格式:
输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。
输出格式:
在一行中打印出A−B的结果字符串。
输入样例:
I love GPLT! It's a fun game!
aeiou
输出样例:
I lv GPLT! It's fn gm!
#include<stdio.h>
#include<string.h>
int main()
{
char a[10001],b[10001];
int f[10001];
gets(a);gets(b);
for(int i=0;i<strlen(b);i++){
f[b[i]]++;
}
for(int j=0;j<strlen(a);j++){
if(f[a[j]]==0)printf(“%c”,a[j]);
}
printf(“\n”);
return 0;
}
7-26 检查密码
本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点 .
,还必须既有字母也有数字。
输入格式:
输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束。
注意: 题目保证不存在只有小数点的输入。
输出格式:
对每个用户的密码,在一行中输出系统反馈信息,分以下5种:
- 如果密码合法,输出
Your password is wan mei.
; - 如果密码太短,不论合法与否,都输出
Your password is tai duan le.
; - 如果密码长度合法,但存在不合法字符,则输出
Your password is tai luan le.
; - 如果密码长度合法,但只有字母没有数字,则输出
Your password needs shu zi.
; - 如果密码长度合法,但只有数字没有字母,则输出
Your password needs zi mu.
。
输入样例:
5
123s
zheshi.wodepw
1234.5678
WanMei23333
pass*word.6
输出样例:
Your password is tai duan le.
Your password needs shu zi.
Your password needs zi mu.
Your password is wan mei.
Your password is tai luan le.
#include <stdio.h>
#include <string.h>
int main()
{
char str[81];
int n; scanf(“%d”, &n);
getchar();
for (int i=0; i<n; i++){
gets(str);
int len = strlen(str);
if (len < 6)
printf(“Your password is tai duan le.\n”);
else{
int ccnt=0, dcnt=0, ocnt=0, bcnt=0;
for (int j=0; j<len; j++){
if (str[j] >= ‘0’ && str[j] <= ‘9’)
dcnt++;
else if (str[j] == ‘.’)
bcnt++;
else if (str[j]>=’a’ && str[j]<=’z’
|| str[j]>=’A’ && str[j]<=’Z’)
ccnt++;
else
ocnt++;
}
if (ocnt > 0)
printf(“Your password is tai luan le.\n”);
else if (ccnt == 0)
printf(“Your password needs zi mu.\n”);
else if (dcnt == 0)
printf(“Your password needs shu zi.\n”);
else
printf(“Your password is wan mei.\n”);
}
}
return 0;
}
版权声明:本文为博主作者:独角兽**原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/unicornnnqz/article/details/129072536