记两个有点意思的C语言程序

今天晚上遇到了两个比较有意思的C语言的程序,也上网查了一下别人的思路啥的,但是总感觉看的不是很明白,写的不是那么清楚。然后自己花了二十几分钟的时间敲了一下代码,目前第一版已经可以满足题目要求的功能了,不知道还有没有其他bug,先写在这里分享一下吧。

**第一题:**给定两个整型数组(数组长度<=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;
}

结果:

**第二题:**本题要求实现一个统计整数中指定数字的个数的简单函数。

​ 函数接口定义: int CountDigit( int number, int digit )

​ 其中number是不超过长整型的整数,digit为[0, 9]区间内的整数。函数CountDigit应返回number中digit出现的次数。

​ 要求:在main函数中输入两个数,调用CountDigit函数, 在main函数中输出结果。

输入样例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