1.转置矩阵
用指针的方法处理:写一个函数,将3*3的整型矩阵转置
转置:第一行变为第一列.......最后一行变为最后一列
要求使用指针写这个转置函数,那就使用数组指针来间接进行转置操作
#include<stdio.h>
void move(int(*pa)[3])
{
int i, j, temp;
for (i = 0; i < 3; i++)
for (j = 0; j < i; j++)
{
temp = *(*(pa + i) + j);
*(*(pa + i) + j) = *(*(pa + j) + i);
*(*(pa + j) + i) = temp;
}
}
int main()
{
int a[3][3];
int temp;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
scanf("%d", &a[i][j]);
printf("转置前的数组为:\n");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
printf("%5d ", a[i][j]);
printf("\n");
}
move(a);
printf("转置后的数组为:\n");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
printf("%5d ", a[i][j]);
printf("\n");
}
return 0;
}
2.字符串连接
用指针的方法处理:写一个函数,将两个字符串连接。
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* dest, const char* src)
{
char* ret = dest;
assert(dest != NULL);
assert(src != NULL);
while (*dest)
{
dest++;
}
while (*dest = *src)
{
dest++;
src++;
}
return ret;
}
int main()
{
char str1[30],str2[30];
scanf("%s", str1);
scanf("%s", str2);
my_strcat(str1, str2);
printf("连接后的结果为:%s", str1);
}
3、分析程序
分析下面程序,说出其功能
#include<stdio.h>
int main()
{
int m,n,i,j;
int max=0;
scanf("%d%d",&m,&n);
for(i=m;1;i++)
{
if(i%m==0&&i%n==0)
break;
}
for(j=1;j<=n;j++)
{
if(m%j==0 && n%j==0)
{
if(max<j)
max=j;
}
}
printf("%d *************%d\n",i,max);
return 0;
}
程序功能:输出输入的两个数的最小公倍数和最大公约数第一个循环的作用:只有i可以同时整除m和n的时候才会执行break跳出循环。所以第一个循环的作用就是找到m和n的最小公倍数。
第二个循环的作用:找出可以同时被m和n整除的数,并且通过if语句,使max是最后的最大公约数。