getelement.cpp

来自「霍夫曼编码」· C++ 代码 · 共 94 行

CPP
94
字号
#include "StdAfx.h"

void getletter(char * in)
{
	char choice;
	int flag = 1;
	
	printf("请输入一段字符:");
	do
	{
		fflush(stdin);
		gets(in);
		//去除字符中的空格

		for(unsigned i = 0;i < strlen(in);i++)
		{
			if(in[i] == ' ')
			{
				for(unsigned int j = i;j < strlen(in);j++)
					in[j] = in[j+1];
				i--;
			}
		}
/*--------------除去字符串首的空格-----------------
		while (in[0] == ' ')
		{
			for(unsigned i = 0;i < strlen(in);i++)
				in[i] = in[i+1];
		}
----------------------------------------------------*/
		//处理只输入回车的情况
		if (strlen(in) == 0)
		{
			printf("您未输入有效字符,是否重新输入(Y/N):");
			scanf("%c",&choice);
			while(choice!='y' && choice!='n' && choice!='Y' && choice!='N')
			{
				printf("选择错误,请重新选择(Y/N)");
				fflush(stdin);
				scanf("%c",&choice);
			}
			if (choice == 'Y' || choice == 'y')
				printf("请输入一段字符:");
			else
				exit(1);
		}
		//不是只有回车时
		else
			flag = 0;
	}while (flag == 1);
}

//求取各个字符的权重,储存在w[26]中
void getweight(char * in,char * letter,int * w,int * n)
{
	unsigned int i,j;
	
	//将字符串中的大写变为小写
	for (i = 0; i < strlen(in);i++)
		in[i] = tolower(in[i]);

	//将第一个是字母的字符赋给letter[0]
	for (i = 0;i < strlen(in);i++)
	{
		if((in[i] > 64 && in[i] < 91)||(in[i] > 96 && in[i] < 123))
		{
			letter[0] = in[i];
			break;
		}
	}
	* n = 1;
	w[0] = 1;
	//赋值并计录各个字符的个数
	for (i = 1;i < strlen(in); i++)
	{
		if((in[i] > 64 && in[i] < 91)||(in[i] > 96 && in[i] < 123))
		{
			for (j = 0;j < strlen(letter); j++)
			{
				if(in[i] == letter[j])
				{
					w[j]+=1;
					break;
				}
			}
			if(j == strlen(letter))
			{
				letter[j] = in[i];
				w[j]++;
				(*n)++;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?