Red de conocimiento informático - Aprendizaje de código fuente - Programación exclusiva clave

Programación exclusiva clave

(¡Función de clasificación agregada! ¡Clasificación básica de burbujas!)

Identifique la clave mediante código Ascii.

Introduce el número obtenido mediante la función getch.

Dado que getch no se muestra en la consola, la función personalizada implementa echo.

El código implementa las funciones de entrada y eliminación.

Solo se reconocen números para la entrada, otros caracteres son inútiles.

La tecla de retroceso elimina un carácter a la vez y puede eliminar entre líneas.

Presione Enter para confirmar la introducción de un número. La próxima vez que ingrese un número nuevo, se ajustará automáticamente a una nueva línea (el cursor no se ajustará después de ingresarlo y podrá regresar a la línea anterior. eliminando la línea actual).

Ctrl D finaliza el programa.

Nota: La función getch es normal en sistemas Windows. Es posible que no se ejecute en sistemas Linux.

Además, no escribí verificación numérica del tamaño. El tipo de variable de matriz es int. Si la entrada excede el límite superior del tipo numérico, aún recibirá un error. Si desea ingresar un número mayor, puede cambiar el atributo longlong. Si desea agregar validación, puede agregarla al código usted mismo o agregarla al bit de recepción de entrada.

# incluir ltstdio.h gt

# incluir ltstdlib.h gt

# incluir ltconio.h gt

#Definir MAXS 100 //Tamaño de la matriz

void showList(int *nums, int n, int flag); //Imprimir matriz

int inputNums(int *nums, int maxSize); Ingrese un número en maxSize y guárdelo en maxSize, y devuelva el número de números ingresados.

void px(int ​​​​*nums, int n); // Ordenar en orden ascendente

int main()

{

int números[MAXS], n=MAXS, cnt

cnt=inputNums(nums, n);

px(nums, CNT); printf(" \nLos números en orden ascendente son:\n ");

showList(nums, cnt, 1);

Devuelve 0;

}

Int input nums (int * nums, int maxSize)//Ingrese un número en maxSize y guárdelo en maxSize, y devuelva el número de números ingresados.

{

int i=1, cnt=0, n=MAXS, flag = 0; //bandera: bandera a guardar 1: indica que hay datos a guardar; guardado 2: No hay datos para guardar.

char c = 0;

mientras(ilt=n)

{

c = getch();

If (c!=13. ampc!= 4 amp ampc gt= ' 0 ' amp ampc lt='9') // La entrada solo recibe y repite caracteres numéricos.

{

if (! flag)

nums[cnt]=0, cnt, flag = 1;

nums[CNT -1]= nums[CNT-1]* 10 c-' 0 ';

}

if(c = = 8 amp; ampcnt gt0)//Retroceso eliminar< / p>

{

if(nums[cnt-1]/10 >0)//Si el número ingresado actualmente es mayor que 1 dígito, elimine un dígito.

nums[CNT-1]= nums[CNT-1]/10;

else If(nums[I-1]/10 = = 0)//si el actual input Si solo queda 1 dígito en el número, el número ingresado actualmente se eliminará y el número de matriz será -1.

{

nums[cnt-1]=0, CNT-;

if (count==0)

flag = 0;

Otro

i -, bandera = 1;

}

}

Si(c ==13)//Entrada

i, bandera = 0;

if((c gt;= ' 0 ' amp ampc lt='9')||c== 13||c==8)

system("cls "), showList(nums, cnt, 0);

if(c==4)//ctrl D

{

if(bandera)

bandera = 0;

Romper

}

}

printf("\nEl número ingresado es:\n");

showList(nums, cnt, 1);

Devuelve cnt

}

Void px(int ​​​​*nums, int n)//Organizar en orden ascendente.

{

int i, j, num

for(I = 0; iltn; i)

for(j = I 1; j ltn; j )

{

if(números[I] gt; números[j])

{

núm = núms[I];

núms[I]= núms[j];

núms[j]= núm;

}

}

}

Lista de presentación nula (int * nums, int n, int flag)//Imprimir matriz, bandera: 1 modo de impresión: 0 modo de visualización <; /p>

{

int I;

if (flag amp ampn gt0)

{

printf(" \ n ");

for(I = 0; iltn; i )

printf("d ",nums[I]);

printf (" \ n ");

}

else if(!flag amp ampn gt0)

{

for(I = 0; iltn-1;i)

printf("d\n",nums[I]);

printf("d",nums[I]);

}

}