语法应该没有问题,不知道为何无法打印目标值,请就我的代码修改并解释
输入格式
第一行两个整数 n,m,表示有 n 个人获得科技创新奖,m 个人获得特殊贡献奖。
第二行 n 个正整数,表示获得科技创新奖的人的编号。
第三行 m 个正整数,表示获得特殊贡献奖的人的编号。
输出格式
输出一行,为获得两个奖项的人的编号,按在科技创新奖获奖名单中的先后次序输出。
#include <stdio.h>
void bubbleSort(unsigned arr[], int len);
void Swap(unsigned int *num1, unsigned int *num2);
int main()
{
unsigned int n,m,item=0;
scanf("%d %d" , &n,&m);
// n个人获得科技创新奖,m个人获得特殊贡献奖。
unsigned int n_a[n] , m_a[m] , res[1];
//存储编号
for ( int i=0 ; i<n ; i++ )
{
scanf("%d" , &n_a[i]);
}
for ( int j=0 ; j<m ; j++ )
{
scanf("%d" , &m_a[j]);
}
bubbleSort( n_a , n );
bubbleSort( m_a , m );
/* for (int a=0 ; a<n ; a++ )
{
printf("%u\n" , n_a[a]);
}
for (int b=0 ; b<m ; b++ )
{
printf("%d\n" , m_a[b]);
}*/
int low=0 , high=m-1 , mid=(low + high) / 2 ;
for ( int l=0 ; l<n ; l++ )
{
item = n_a[l];
while ( low < high )
{
if ( m_a[mid] > item )
{
high = mid - 1;
mid = (high + low) / 2;
}
else if ( m_a[mid] < item )
{
low = mid + 1;
mid = (high + low) / 2;
}
else
{
printf("%u" , item);
break;
}
}
}
return 0;
}
void bubbleSort(unsigned arr[], int len)
{
for (int i = 0; i < len - 1; ++i)
{
for (int j = i + 1; j <= len - 1; ++j)
{
if (arr[i] < arr[j])
{
Swap(&arr[i], &arr[j]);
}
}
}
}
void Swap(unsigned int *num1,unsigned int *num2)
{
int temp = *num1;
*num1 = *num2;
*num2 = temp;
}