编程序将“china”译成密码

/*请编程序将“China”译成密码,密码规律是:用原来的字母后面
第4个字母代替原来的字母。分别用putchar函数和printf函数输出*/ 
#include<stdio.h>
int main(){
	char c1,c2,c3,c4,c5;
	printf("请输入:\n");//其余4个直接copy即可 
	c1 = getchar();
	c1 += 4;
	printf("编译完成:\n"); 
	putchar(c1);
	printf("\n"); 
	printf("%c\n",c1);
}  

谭浩强C程序设计(第四版)p84第6题
复习:
1.getchar()
2.+=
说明:
1.此程序借用ASCⅡ值完成
2.只能一个字符一个字符输入

/*请编程序将“China”译成密码,密码规律是:用原来的字母后面
第4个字母代替原来的字母。分别用putchar函数和printf函数输出*/ 
#include<stdio.h>
int main(){
	char c1[100];
	int n,i=0;
	printf("请输入单词:\n");
	do{
		 scanf("%c",&c1[i]);
	}	
	while(c1[i++]!='#');
	printf("输出结果:\n");
	for(i=0;c1[i]!='#';i++){
		if((c1[i]>='a'&&c1[i]<='v')||(c1[i]>='A'&&c1[i]<='V'))
		printf("%c",c1[i]+4);//前22个用+4 
		if((c1[i]>='w'&&c1[i]<='z')||(c1[i]>='W'&&c1[i]<='Z'))
		     printf("%c",c1[i]-22);//后4个用-22 
	}	 
} 

这是借助数组的第二种解答
复习:
1.i++与++i的不同
2.do……while的用法
说明:
1.可以连续输入,’#'结束输入后开始进行译码
2.涉及到前22个与后4个不同问题,功能更加强大
3.使用了ASCⅡ码

/*请编程序将“China”译成密码,密码规律是:用原来的字母后面
第4个字母代替原来的字母。分别用putchar函数和printf函数输出*/
#include <stdio.h>
#include <stdlib.h> 
#define MAXQSIZE 26
typedef struct{
	char *base;
	int front;//下标 
	int rear;//下标 
}SqQueue; 
int main(){
	SqQueue Q;
	int n=65,i;
	char c1; 
	Q.base=(char *)malloc(MAXQSIZE*sizeof(char));//这里注意是base,malloc是为了返回首地址 
	Q.front=Q.rear=0;
    for(i=0;i<MAXQSIZE;i++)
	    Q.base[i]= n++;
	printf("输入要转码的字母:\n");
	scanf("%c",&c1);
	for(Q.front=0;Q.front<MAXQSIZE;Q.front++){//front
		if(Q.base[Q.front] == c1){
			Q.rear = (Q.front+4)%MAXQSIZE;
			printf("输出:\n%c",Q.base[Q.rear]);
		}
	}
		
}

这是借助循环队列的第三种做法
复习:
1.循环队列
2.malloc
说明:
1.这个译码机制与前两个完全不同,前两个只是ASCⅡ的增加减,这个是26个字母形成一个圈,寻找第四个位置然后输出
2.字符只能一个一个输入
3.利用ASCⅡ输入数据,然后进行寻找
4.可以加上对小写字母的寻找

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值