#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*************************************************************
1. 实现swap函数, 实现数a和数b的交换
int swap(int *a, int *b);
2. 数组求和,将结果通过参数s返回
int sum(int array[], int n, int *s); // n表示数组元素的个数
3. 数组求和,将结果通过指针返回
int * sum2(int array[], int n);
4. 传入结构体的指针,给结构体里的成员赋初始值, 其中结构体的定义如下
struct student {
char name[32];
char address[256];
int age;
};
int init(struct student * pstdnt);
5. 数组元素相加, 三个数组arrA, arrB, sums, 其长度均为n,将arrA与arrB中
下标相同的元素相加,并将结果保存到sums数组中对应的位置。
即sums[i] = arrA[i] + arrB[i]其中 0 <= i < n;
要求不能使用数组下标操作,只能使用指针操作
int add(int arrA[], int arrB[], int sums[], int n);
*************************************************************/
int swap(int *a, int *b) {
int tmp = *a;
*a = *b;
*b = tmp;
return 0;
}
int sum(int array[], int n, int *s)
{
int i = 0;
*s = 0;
for (i = 0; i < n; i++) {
*s = *s + array[i];
}
return 0;
}
int * sum2(int array[], int n)
{
int *s = (int *) malloc(sizeof(int));
int i = 0;
*s = 0;
for (i = 0; i < n; i++) {
*s = *s + array[i];
}
return s;
}
struct student {
char name[32];
char address[256];
int age;
};
int init(struct student *pstdnt) {
strcpy(pstdnt->name, "张三");
strcpy(pstdnt->address, "武汉市关山大道");
pstdnt->age = 22;
return 0;
}
int add(int arrA[], int arrB[], int arrC[], int n)
{
int i = 0;
int * piA = arrA;
int * piB = arrB;
int * piC = arrC;
for (i = 0; i < n; i++) {
*(piC + i) = *(piA + i) + *(piB + i);
}
return 0;
}
int main()
{
printf("\n-------第1题-------\n");
int a = 5;
int b = 10;
swap(&a, &b);
printf("a is:%d, b is:%d\n", a, b);
printf("\n-------第2题-------\n");
int numbers[] = {10, 22, 34, 5, 10, 20};
int s = 0;
sum(numbers, sizeof(numbers)/sizeof(int), &s);
printf("sum is:%d\n", s);
printf("\n-------第3题-------\n");
int *ps = sum2(numbers, sizeof(numbers)/sizeof(int));
printf("sum is:%d\n", *ps);
if (ps != NULL) {
free(ps);
ps = NULL;
}
printf("\n-------第4题-------\n");
struct student stdnt;
init(&stdnt);
printf("name is:%s, arrderr is:%s, age is:%d\n",
stdnt.name, stdnt.address, stdnt.age);
printf("\n-------第5题-------\n");
int arrA[] = {1, 2, 3, 4, 5};
int arrB[] = {11, 12, 13, 14, 15};
int arrC[5];
add(arrA, arrB, arrC, 5);
int i = 0;
for (i=0; i<5; i++) {
printf("arrC[%d] = %d\n", i, arrC[i]);
}
return 0;
}
指针、数组、结构体练习
最新推荐文章于 2022-09-14 19:33:41 发布