1,main0函数里用malloc函数实现一个动态整型数组,数组长度由键盘输入,然后键盘输入各个数组元素的值。编写一个无返回值函数void find( int all,int x,int size, int
*sum, int xtotal)求该数组里面所有能被整数整除的元素之和以及其个数,用sum接收
元素之和,total接收元素个数。这里size为数组a的长度.
2,编写函数 void Afunc(int *p,int size)(size为数组长度,p为指向数组的指针)将一数组中的零元移至数组未尾,将非零元素移至数组开始,然后对非零元排序。
例如:int a11=$12,0,31,14,5,0,0,17,0,123
主函数里调用Afunc(a,10)处理后a数组为:{-12,5,12,14,17,31,0,0,0}
3,编写函数int get(int pll,int a,int size)在有序数组查找数组p中是否存在值为a的整数,如存在,输出该元素的位置(这里认为al0的位置为1),否则输出0。这里size为
L数组p的长度
例如:int data11=5-12.5.12,14,17.31,42.551
望采纳
问题1
#include <stdio.h>
#include <stdlib.h>
void find(int all, int x, int size, int *sum, int *total) {
*sum = 0;
*total = 0;
for (int i = 0; i < size; i++) {
if (all[i] % x == 0) {
*sum += all[i];
(*total)++;
}
}
}
int main() {
int size;
printf("输入数组的大小:");
scanf("%d", &size);
int *all = malloc(size * sizeof(int));
if (all == NULL) {
printf("分配数组内存时出错\n");
return 1;
}
printf("输入数组的各个元素:");
for (int i = 0; i < size; i++) {
scanf("%d", &all[i]);
}
int x;
printf("输入一个整数,以便对数组中的元素进行除法:");
scanf("%d", &x);
int sum, total;
find(all, x, size, &sum, &total);
printf("被 %d 整除的数组元素之和为 %d,共有 %d 个\n", x, sum, total);
free(all);
return 0;
}
问题2
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
void Afunc(int *p, int size) {
int zeros = 0;
for (int i = 0; i < size; i++) {
if (p[i] == 0) {
zeros++;
} else {
p[i - zeros] = p[i];
}
}
for (int i = size - zeros; i < size; i++) {
p[i] = 0;
}
qsort(p, size - zeros, sizeof(int), cmpfunc);
}
int cmpfunc(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main() {
int size = 10;
int *a = malloc(size * sizeof(int));
if (a == NULL) {
printf("分配数组内存时出错\n");
return 1;
}
a[0] = 12;
a[1] = 0;
a[2] = 31;
a[3] = 14;
a[4] = 5;
a[5] = 0;
a[6] = 0;
a[7] = 17;
a[8] = 0;
a[9] = 123;
Afunc(a, size);
printf("修改后的数组:");
for (int i = 0; i < size; i++) {
printf("%d ", a[i]);
}
printf("\n");
free(a);
return 0;
}
问题3
#include <stdio.h>
#include <stdlib.h>
int get(int *pll, int a, int size) {
int low = 0;
int high = size - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (pll[mid] == a) {
return mid + 1;
} else if (pll[mid] > a) {
high = mid - 1;
} else {
low = mid + 1;
}
}
return 0;
}
int main() {
int size = 9;
int *pll = malloc(size * sizeof(int));
if (pll == NULL) {
printf("分配数组内存时出错\n");
return 1;
}
pll[0] = -12;
pll[1] = 5;
pll[2] = 12;
pll[3] = 14;
pll[4] = 17;
pll[5] = 31;
pll[6] = 42;
pll[7] = 55;
pll[8] = 123;
int a = 55;
int result = get(pll, a, size);
if (result == 0) {
printf("数组中没有值为 %d 的整数\n", a);
} else {
printf("数组中值为 %d 的整数的位置是 %d\n", a, result);
}
free(pll);
return 0;
}