这系列问题
1,给定两个整型数组,本题要求找出不是两者共有的元素,并且要求要按从大到小的顺序输出。
(这是这几个题中打的算是很麻烦的了,可能我的方法不是最优的,但是还不会用指针,所以再慢慢进化吧)
输入示例
10
3 -5 2 8 0 3 5 -15 9 100
6 4 8 2 6 -5 9 0 100 8
输出
-15 3 4 5 6
#include <stdio.h>
int main()
{
int n,a[50],b[50],o[50],i,j,m,q,c,d,p=0;
int count=0,temp;
while(~scanf("%d",&n))
{
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);///////输入第一个数组
}
for(j=0;j<n;j++)
{
scanf("%d",&b[j]);//////输入第二个数组
}
////////////////////////////////////////输入结束
for(i=0;i<n;i++)
{
d=0;
c=0;
for(j=0;j<n;j++)
{
if(a[i]!=b[j])
c++;
if(c==n)
{
for(m=i+1;m<n;m++)
{
if(a[i]==a[m])
{
d++;
}
}
if(d==0)
{
o[p]=a[i]; /////这个o[p]的作用就是最后输出....
p++;
}
}
}
}
/////作用是输出与b不同的a中数组数
for(i=0;i<n;i++)
{
d=0;
c=0;
for(j=0;j<n;j++)
{
if(b[i]!=a[j])
c++;
if(c==n)
{
for(m=i+1;m<n;m++)
{
if(b[i]==b[m])
{
d++;
}
}
if(d==0)
{
o[p] = b[i];
p++;
}
}
}
}
///////这里是输出b数组中不同a的数
for(i=0;i<p-1;i++)
{
for(j=0;j<p-1-i;j++)
{
if(o[j]>o[j+1])
{
temp=o[j];
o[j] = o[j+1];
o[j+1] = temp; ///让筛选出来的数组按顺序排列。
}
}
}
for(q=0;q<p;q++)
{
printf("%d ",o[q]);
}
printf("\n");
}
}
2,一个整型数组中(数组长度不超过20)除了两个数字之外,其他的数字都出现了两次。请写程序找出这2个只出现一次的数字。
输入示例
14
12 34 12 34 56 78 67 67 78 98 98 89 89 55
输出
56 55
#include <stdio.h>
int main()
{
int n,a[100],m,count;
while(~scanf("%d",&n))
{
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
////////////输入结束,开始进行操作。
for(int i=0;i<n;i++)
{
count=0;
for(int j=0;j<n;j++)
{
if(a[i]!=a[j])
{
count++;
}
//////如果有数没有相等的数,满足条件就计数加1.
}
if(count==n-1)
{
printf("%d ",a[i]);
}
}
}
}
3, 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
输入
8
4 5 1 6 2 7 3 8
4
输出
1 2 3 4
#include <stdio.h>
int main(){
int n,k;
scanf("%d",&n);
int a[10];
int i=0,j,temp;
int m=n;
while(m>0)
{
scanf("%d",&a[i]);
m--;
i++;
}
scanf("%d",&k);
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=0;i<k;i++){
printf("%d ",a[i]);
}
printf("\n");
}
4,在一个长度为n(n<20)的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中第一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。
输入
7
2 3 1 0 2 5 3
输出
2
#include <stdio.h>
int main()
{
int n,a[100],m;
while(~scanf("%d",&n))
{
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
/////////输入。
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(a[i]==a[j])
{
m=1;
break;
}
}
if(m==1) ////第一个相等的数字
{
printf("%d\n",a[i]);
break;
}
}
}
}