2つの興味深いC言語プログラムを覚えておいてください

今夜はC言語の面白い番組を2つ見つけて、インターネットで他の人の考えもチェックしましたが、よくわからないといつも感じていて、文章もあまりはっきりしていませんでした。それから20分かけてコードを入力しました。現在、最初のバージョンはタイトルに必要な機能をすでに満たしています。他にバグがあるかどうかはわかりません。ここに書き込んで共有しましょう。

**最初の質問:** 2つの整数配列(配列の長さ<= 20)が与えられた場合、両方に共通ではない要素を見つけて3番目の配列に入れ、結果を出力します。

输入样例:
请输入:第一个数组的元素个数: 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

ソースプログラム:

#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;
}

結果:

** 2番目の質問:**この質問では、指定された数値の数を整数でカウントする単純な関数を実装する必要があります。

関数インターフェースの定義:int CountDigit(int number、int digit)

ここで、numberは長整数までの整数であり、digitは[0、9]の範囲の整数です。関数CountDigitは、数字の出現回数を返す必要があります。

要件:メイン関数に2つの数値を入力し、CountDigit関数を呼び出して、結果をメイン関数に出力します。

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

ソースプログラム:

#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;
}

結果:

おすすめ

転載: blog.csdn.net/weixin_51426754/article/details/118282945