今天晚上遇到了两个比较有意思的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;
}
结果: