C语言-输入任意多个数字,存到整型数组,支持任意间隔符,同时支持输入字母存到字符数组中

第一次在CSDN上写博客…
记录一下想了有那么久的,这串代码

起因是做应用密码学的作业时,有Vigenere密码的加密解密、仿射密码加密解密、Playfair算法、Hill密码
因为数据量比较大,要把字母转换成数字,然后还有各种计算
就想着写程序帮我计算一些步骤

仿射密码的程序比较容易,在之前闲着写的凯撒密码程序的代码上修改了实现算法
另外两个得多想想,估计写完代码的时间够我手写把题目做好多遍了
就是这个Vigenere密码引起了兴趣
几道题目,给出的明文或密文是字母,密钥有的题目给的数字序列,有的是单词
我就在想,该怎样实现,当我输入的是字符串的时候,存到字符数组中
而输入的是数字时,存到整型数组中,而且这个数字是任意数量的
在先手写把作业完成后,闲下来把代码写了些,终于算是完成

代码功能

任意输入数据

  1. 当输入的第一个字符是数字时,将本次输入的数据存到整型数组int[]中,可输入任意个数的数字。别的字符例如空格、逗号、字母等,作为分隔符处理丢弃,最后回车完成输入。
    01会被认为是1。
  2. 当输入的第一个字符为非数字,即字母时,存到字符数组char[]中,别的字符会被丢弃,回车完成输入。

实现代码

#include <stdio.h>
#include <string.h>

int change(char a)		// 字符转数字函数
{
   
	if(a>=65 && a<=90 )
		return (a-65);
	if(a>=97 && a<=122 )
		return (a-97);
}

void inputNum(int M[],int &lenM,char ch)	// 输入数字数组,可实现输入任意数量的数字,以回车作为结束符,其他字符为间隔符
{
   
	int num=0;

	while(1)
	{
   
		if(ch=='0' && num==0)				// 对输入单个0的支持
		{
   
			M[lenM]= num;
			lenM++;
		}
		else if(ch >= '0' && ch <= '9')
		{
   
			num = 10 * num + ch - '0';  
		}
		else if
  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值