- 已知两个升序数组a、b及空数组c: (10分)
Int a[] = {3,1,9,7,5,11,13,17};
Int b[] = {8,2,10,12,14,6,16};
Int c[15];
编写程序将两个数组完成归并,并存入数组c中,并进行从小到大排序;
函数1:实现归并 void Comper(int *a,int *b,int *c,int n,int m)
【说明:a,b,c指针,n表示a指向数组的个数,m表示b指向数组的个数】
函数2:实现排序【使用冒泡】 void Bubble(int *p,int n)
#include <stdio.h>
void Comper(int *a,int *b,int *c,int n,int m)
{
int j=0;
for(int i=0;i<n;i++)
{
*(c+j)=*(a+i);
j++;
}
for(int i=0;i<m;i++)
{
*(c+j)=*(b+i);
j++;
}
}
void Bubble(int *p,int n)
{
int i,j,temp;
for(i=1;i<n;i++)
{
int count=0;
for(j=0;j<n-i;j++)
{
if(*(p+j)>*(p+j+1))
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
count++;
}
}
if(count==0)
break;
}
}
int main(int argc, const char *argv[])
{
int a[]={3,1,9,7,5,11,13,17};
int b[]={8,2,10,12,14,6,16};
int c[15];
//实现归并
Comper(a,b,c,sizeof(a)/sizeof(int),sizeof(b)/sizeof(int));
Bubble(c,sizeof(c)/sizeof(int));
for(int i=0;i<15;i++)
{
printf("%d\t",c[i]);
}
printf("\n");
return 0;
}
结果:
ubuntu@ubuntu:~/kyy/daytest/day113$ ./a.out
1 2 3 5 6 7 8 9 10 11 12 1314 16 17
- 有一个3×4的矩阵,要求输出最后一列的最大值以及它的行号和列号。(10分)
int a[3][4] = {{123, 94, -10, -83},{3, 9, 10, 288},{45, 16, 44, -99}};
函数格式: void LastLineMax(int (*p)[4],int line,int row)
#include <stdio.h>
void LastLineMax(int (*p)[4],int line,int row)
{
int i,j,max;
int l,r;
for(i=0;i<line;i++)
{
for(j=0;j<row;j++)
{
if(j==3)
{
if(i==0)
max=*(*(p+i)+j);
if(max<*(*(p+i)+j))
{
max=*(*(p+i)+j);
l=i+1;
r=j+1;
}
}
}
}
printf("最后一列最大值是:%d\n",max);
printf("行号:%d\t 列号:%d \n",l,r);
}
int main(int argc, const char *argv[])
{
int a[3][4]={{123,94,-10,-83},{3,9,10,288},{45,16,44,-99}};
LastLineMax(a,3,4);
return 0;
}
结果:
ubuntu@ubuntu:~/kyy/daytest/day113$ ./a.out
最后一列最大值是:288
行号:2 列号:4
- 编写strcmp函数(8分)
已知strcmp函数的原型是 int
#include <stdio.h>
int Strcmp(char *p,char *q)
{
while(*p)
{
if(*p==*q)
{
p++;q++;
}
else
return *p-*q;
}
}
int main(int argc, const char *argv[])
{
char str1[]="abcdf";
char str2[]="abcdj";
Strcmp(str1,str2);
printf("Strcmp(str1,str2)=%d\n",Strcmp(str1,str2));
return 0;
}
结果:
ubuntu@ubuntu:~/kyy/daytest/day113$ ./a.out
Strcmp(str1,str2)=-4