[Práctica diaria de verano] día 11

Tabla de contenido

opción multiple

(1)

Analizar gramaticalmente: 

(2)

Analizar gramaticalmente: 

(3)

Analizar gramaticalmente: 

(4)

Analizar gramaticalmente:

(5)

 Analizar gramaticalmente:

preguntas de programación

Pregunta uno

describir

ejemplo

pista 

Analizar gramaticalmente:

Código

pregunta dos

describir

Introduzca una descripción:

Descripción de salida:

ejemplo

Analizar gramaticalmente:

Código

Resumir


opción multiple

(1)

1. Declare las siguientes variables, luego el tipo de resultado de la expresión: ch/i + (f*d – i) es ( )

char ch;
int i;
float f;
double d;

A: char B: int C: float D: double
 答案:D

Analizar gramaticalmente: 

Los rangos de tipos de datos básicos de menor a mayor son los siguientes: char int long float double se opera de menor a mayor, y el tipo de expresión se promoverá o convertirá automáticamente al tipo de nivel más alto que participa en la evaluación de la expresión

(2)

2. La afirmación correcta sobre el código es ( )

#include <stdio.h>
int main()
{
    int x = -1;
    unsigned int y = 2;
    if (x > y)
    {
        printf("x is greater");
    } 
    else
    {
        printf("y is greater");
    } 
    return 0;
}

A: x es mayor B: y es mayor C: implementación dependiente D: aleatoria
 Respuesta: A

Analizar gramaticalmente: 

x es un número con signo -1, y todo es 1 en la memoria. Cuando una x con signo se compara con un número sin signo, x se convierte implícitamente y se trata como un número sin signo, que es un número grande. En este momento, elige una

(3)

3. Sabiendo que existen los siguientes tipos de variables, las siguientes expresiones que no se ajustan a la sintaxis del lenguaje C son ( )

int k, a, b;
unsigned int w = 5;
double x = 1.42;

A: x%3 B: w+=-20 C: k=(a=200,b=300) D: a+=a-=a=9
 答案:A

Analizar gramaticalmente: 

En la opción A, ambos lados de la operación de resto deben ser números enteros

(4)

4. La salida de la siguiente función es ( )
 

void func()
{
    int k = 1^(1 << 31 >> 31);
    printf("%d\n", k);
}

A: 0 B: -1 C: -2 D: 1
 Respuesta: C

Analizar gramaticalmente:

(1 << 31 ); Desplace 31 bits a la izquierda y complete 0 a la derecha para obtener 0x80000000, es decir, el bit de signo es 1 y los demás son 0, es decir -2147483648

int k = 1^(1 << 31 >> 31); Tenga en cuenta que cuando se desplaza a la derecha, el bit de signo permanece en 1 y se llena con 1 después de desplazarse a la derecha. El resultado es 0xFFFFFFFF, que es -1, 0x00000001 ^0xFFFFFFFF, que es 0xFFFFFFFE (-2)
 

(5)

5. La salida del siguiente código es ( )
 

#include <stdio.h>
int main()
{
    int i = 1;
    sizeof(i++);
    printf("%d\n", i);
    return 0;
}

A: 1 B: 4 C: 2 D: 8
 Respuesta: A

 Analizar gramaticalmente:

La operación de expresiones generales se ejecuta en tiempo de ejecución, y sizeof es un operador que se ejecuta en la etapa de compilación. No se ejecuta ninguna operación, solo se adivina el tipo del resultado de la expresión para encontrar su tamaño, así que antes y después de i El valor de no cambia.
 

preguntas de programación

Pregunta uno

describir

Dada una matriz binaria  nums , calcule el mayor  1 número continuo en ella

ejemplo

pista 

Analizar gramaticalmente:

La idea de esta pregunta es relativamente simple. Cuente el número de 1 consecutivos. Cuando se encuentra 0, significa interrupción continua. Si el conteo actual es mayor que el anterior más grande, reemplácelo y luego continúe contando desde el siguiente posición.

Código

int findMaxConsecutiveOnes(int* nums, int numsSize)
{
    int max_count = 0, cur_size = 0;;
    for (int i = 0; i < numsSize; i++) 
    {
        if (nums[i] == 1) 
        {
            cur_size++;
        }
        else 
        {
            max_count = max_count > cur_size ? max_count : cur_size;
            cur_size = 0;
        }
    }
    max_count = max_count > cur_size ? max_count : cur_size;
    return max_count;
}

pregunta dos

describir

Los números perfectos, también conocidos como números perfectos o números completos, son algunos números naturales especiales.

La suma (es decir, función factorial) de todos sus factores verdaderos (es decir, divisores distintos de sí mismo) es exactamente igual a sí mismo.

Por ejemplo: 28, tiene divisores 1, 2, 4, 7, 14, 28, excepto él mismo 28, los 5 números restantes se suman, 1+2+4+7+14=28.

Ingrese n, genere la cantidad de números perfectos dentro de n (incluido n).

Rango de datos: 1≤n≤5×105 

Introduzca una descripción:

introduce un número m

Descripción de salida:

Muestra el número de números perfectos que no excedan n

ejemplo

Analizar gramaticalmente:

La clave de esta pregunta radica en el juicio de los números perfectos: un número perfecto se refiere a la suma de todos los divisores de un número igual a sí mismo. Solo necesitamos sumar los divisores de este número a partir de 1.

El divisor es divisible por un número, y una de las ideas simplificadas aquí es que el número puede ser divisible por un divisor, entonces el divisor y el resultado son ambos divisores, de esta manera, solo necesitas calcular desde 1 hasta el cuadrado. raíz.

Por ejemplo: el número 8 puede ser divisible por 2, y el resultado es 4, entonces el divisor 2 y el resultado 4 son ambos aproximaciones, y estos dos solo necesitan un cálculo y juicio.

Cabe señalar que 4, 9, 25... En este caso, el divisor y el resultado son el mismo, basta con sumar el divisor o el resultado una sola vez.

Código

#include <stdio.h>
#include <math.h>
int is_perfect_num(int num) {
    int sum = 1;
    for (int i = 2; i <= sqrt(num); i++) 
    {
        if (num % i ==0) 
        {//判断是否能够整除i,能整除则i和结果都是约数
            sum += i; //与除数相加
            if (i != sqrt(num))//防止除数和结果相同的情况下重复相加
                sum += num / i; //与相除结果相加
        }
    }
    if(sum == num) 
        return 1;
    return 0;
}
int main() 
{
    int n;
    while (~scanf("%d", &n)) 
    {
        int count = 0;
        for (int i = 2; i <= n;i++) 
        { //对n以内的数字都进行判断是否是完全数,注意1不参与判断
            if (is_perfect_num(i)) count++;
        }
        printf("%d\n", count);
    } 
    return 0;
}

Resumir

Este es el final de la explicación de la práctica de hoy. Bienvenido a dejar un mensaje, intercambiar comentarios y hacer correcciones. Si el artículo es útil para usted o cree que la escritura del autor no es mala, puede hacer clic para seguir, dar me gusta y marcar apoyar.

 

Supongo que te gusta

Origin blog.csdn.net/m0_71731682/article/details/132046956
Recomendado
Clasificación