Recuerda dos interesantes programas en lenguaje C

Esta noche me encontré con dos programas interesantes en lenguaje C, y también revisé las ideas de otras personas en Internet, pero siempre sentí que no lo entendía muy bien y que la escritura no era tan clara. Luego estuve 20 minutos escribiendo el código, actualmente la primera versión ya puede cumplir con las funciones requeridas por el título, no sé si hay otros errores, vamos a escribirlo aquí y compartirlo.

**La primera pregunta:** Dadas dos matrices de enteros (longitud de la matriz <=20), busque los elementos que no son comunes a ambos y colóquelos en la tercera matriz y genere el resultado.

输入样例:
请输入:第一个数组的元素个数: 10
请输入第一个数组: 3 -5 2 8 0 3 5 -15 9 100
请输入第二个数组的元素个数: 11
请输入第二个数组: 6 4 8 2 6 -5 9 0 100 8 1
输出样例: 
不是共有的元素有: 3 5 -15 6 4 1

Programa fuente:

#include <stdio.h>
#include <stdlib.h>

#define maxArraySize 20

int main()
{
    
    
    int firstArray[maxArraySize];  //定义第一个数组
    int secondArray[maxArraySize];  //定义第二个数组
    int differentElement[maxArraySize];  //定义非公有元素数组
    int resultArray[maxArraySize];  //定义最终结果数组
    int firstNum;  //定义第一个数组元素个数
    int secondNum;  //定义第二个数组元素个数
    int i,j;  //定义循环变量
    int k = 0;
    int m = 0;
    int flag;  //定义是否公有的标志变量
    printf("请输入第一个数组的元素个数:");
    scanf("%d",&firstNum);
    printf("请输入第一个数组:");
    for(i = 0;i<firstNum;i++)
    {
    
    
        scanf("%d",&firstArray[i]);
    }
    printf("请输入第二个数组的元素个数:");
    scanf("%d",&secondNum);
    printf("请输入第二个数组:");
    for(i = 0;i<secondNum;i++)
    {
    
    
        scanf("%d",&secondArray[i]);
    }
    for(i = 0;i<firstNum;i++)
    {
    
    
        flag = 1;
        for(j = 0;j<secondNum;j++)
        {
    
    
            if(firstArray[i]==secondArray[j])
            {
    
    
                flag = 0;
            }
        }
        if(flag==1)
        {
    
    
            differentElement[k] = firstArray[i];
            k++;
        }
    }

    for(i = 0;i<secondNum;i++)
    {
    
    
        flag = 1;
        for(j = 0;j<firstNum;j++)
        {
    
    
            if(secondArray[i]==firstArray[j])
            {
    
    
                flag = 0;
            }
        }
        if(flag==1)
        {
    
    
            differentElement[k] = secondArray[i];
            k++;
        }
    }

    for(i = 0;i<k;i++)
    {
    
    
       flag = 1;
       for(j = i+1;j<k;j++)
       {
    
    
           if(differentElement[i]==differentElement[j])
           {
    
    
               flag = 0;
           }
       }
       if(flag==1)
       {
    
    
           resultArray[m] = differentElement[i];
           m++;
       }

    }

    printf("不是公有的元素有:");
    for(i = 0;i<m;i++)
    {
    
    
        printf("%d ",resultArray[i]);
    }

    return 0;
}

resultado:

**Segunda pregunta:** Esta pregunta requiere la implementación de una función simple que cuente la cantidad de números especificados en un número entero.

Definición de interfaz de función: int CountDigit (número int, dígito int)

Donde número es un número entero hasta un número entero largo y dígito es un número entero en el rango [0, 9]. La función CountDigit debe devolver el número de ocurrencias de dígitos en número.

Requisito: Ingrese dos números en la función principal, llame a la función CountDigit y envíe el resultado a la función principal.

输入样例1:
-21252 2
输出样例1:
Number of digit 2 in -21252: 3
输入样例2:
12345 0
输入样例2:
Number of digit 0 in 12345: 0

Programa fuente:

#include <stdio.h>
#include <stdlib.h>


int CountDigit(int number, int digit);
int main()
{
    
    
    int number;
    int digit;
    int times;
    printf("请输入一个整数和要统计的是0-9中的哪个整数\n");
    scanf("%d %d",&number, &digit);
    times = CountDigit(number, digit);
    printf("Number of digit %d in %d:%d",digit,number,times);

    return 0;
}

int CountDigit(int number, int digit)
{
    
    
    int quotient;  //定义商
    int remainder;  //定义余数
    int times = 0;  //定义出现的次数

    if(number<0)
    {
    
    
        number = -number;
    }
    quotient = number;
    while(quotient!=0)
    {
    
    
        remainder = quotient%10;
        quotient = quotient/10;
        if(remainder==digit)
        {
    
    
            times++;
        }
    }
    return times;
}

resultado:

Supongo que te gusta

Origin blog.csdn.net/weixin_51426754/article/details/118282945
Recomendado
Clasificación