Cadena: el número de caracteres clasificados (experiencia + puntos de conocimiento)

6-1 Número de caracteres en las estadísticas de clasificación (15 puntos)

Esta pregunta requiere la implementación de una función para contar el número de letras en inglés, espacios o retornos de carro, caracteres numéricos y otros caracteres en una cadena dada.

Definición de interfaz de función:
void StringCount( char s[] );
dónde char s[]está el usuario de una cadena entrante. La función StringCountdebe seguir en una línea

Letra = el número de letras en inglés, en blanco = el número de espacios o retornos de carro, dígito = el número de caracteres numéricos y otros = el número
de otros caracteres .

Ejemplo de procedimiento de prueba de árbitro:

#include <stdio.h>
#define MAXS 15

void StringCount( char s[] );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */

int main()
{
    char s[MAXS];

   ReadString(s);
    StringCount(s);
    return 0;
}
/* Your function will be put here */

Muestra de entrada:

aZ y
09 Az

Salida de muestra:

letra = 4, en blanco = 3, dígito = 2, otro = 1

//letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
void StringCount(char s[])
{
	int l, i, j = 0, a, x, blank = 0, letter = 0, digit = 0, other = 0;
	while (s[j] != '\0')
		j++;
	for (i = 0; i<j; i++)
	{
		if (s[i] == ' ' || s[i] == '\n') //期初用的ASCLL来判断,后来发现可以直接打上要判断的条件,前提要有单引号。
		{
			blank++;
		}
		else if ((s[i]>='A' && s[i]<='Z') ||( s[i]>='a' && s[i]<='z'))//或与且两个小括号可以去掉不要,带着比较好看。

		{
			letter++;
		}
		else if (s[i]>='0' && s[i]<='9')
		{
			digit++;
		}
		else
		{
			other++;
		}
	}
	printf("letter = %d, blank = %d, digit = %d, other = %d", letter, blank, digit, other);
}

De esta pregunta, entiendo que en el futuro, al hacer preguntas de cadena, puede escribir directamente los caracteres que se juzgarán, sin tener que buscar los valores del código ASCLL uno por uno.

Supongo que te gusta

Origin blog.csdn.net/hx_521/article/details/84954492
Recomendado
Clasificación