利用指向一维数组的指针,将一个含有m(m<=10)个整数的一维数组中小于平均值的所有元素顺次删除掉。例如,原数组为3,5,7,4,1,删除后的数组应为5,7,4。提示:先输入数组元素个数,再依次输入数组元素的值。
输入格式:
输入数组元素个数的格式:"%d"
输入数组元素的格式:"%d"
输出格式:
"%5d"
这是代码:
#include <stdio.h>int aver(int *a, int len);int shan(int *a, int m, int g, int *t);int main() { int i = 0; scanf("%d", &i); int b, c, n; b = i - 1 ; int t[10] = {0}; int a[b] = {0}; for (c = 0; c < i; c++) { scanf("%d", &a[c]); } n = aver(a, i); int e = 0; e = shan(a, n, i, t); for (c = 0; c <= e; c++) { if (t[c] != 0) printf("%5d", t[c]); } return 0;}int aver(int *a, int len) { int s; int sum; for (s = 0; s < len; s++) { sum = sum + a[s]; } return sum / len;}int shan(int *a, int m, int g, int *t) { int s; int v; for (s = 0; s < g; s++) { if (a[s] >= m) { t[v] = a[s]; v++; } } return v - 1;}
代码给你你看下
```c
#include <stdio.h>
int aver(int *a, int len);
int shan(int *a, int m, int g, int *t);
int main() {
int i = 0;
scanf("%d", &i);
int b, c, n;
b = i - 1 ;
int t[10] = {0};
int a[b] = {0};
for (c = 0; c < i; c++) {
scanf("%d", &a[c]);
}
n = aver(a, i);
int e = 0;
e = shan(a, n, i, t);
for (c = 0; c <= e; c++) {
if (t[c] != 0)
printf("%5d", t[c]);
}
return 0;
}
int aver(int *a, int len) {
int s;
int sum = 0;
for (s = 0; s < len; s++) {
sum += a[s];
}
return sum / len;
}
int shan(int *a, int m, int g, int *t) {
int s, v = 0;
for (s = 0; s < g; s++) {
if (a[s] >= m) { //比较是否大于等于平均值
t[v] = a[s]; //大于等于平均值的元素存入t数组
v++; //t数组下标加1
}
}
return v - 1; //返回t数组的元素个数
}
```
程序有问题哦,修改如下所示:
```c
#include <stdio.h>
int aver(int *a, int len);
int shan(int *a, int m, int g, int *t);
int main() {
int m= 0;
scanf("%d", &m);
int i, j;
int t[10] = {0};
int a[10] = {0};
for (i= 0; i< m; i++) {
scanf("%d", &a[i]);
}
n = aver(a, m);
int e = 0;
e = shan(a, n, m,t);
for (j = 0; j < e; j++) {
printf("%5d", t[j]);
}
return 0;
}
int aver(int *a, int len) {
int s;
int sum = 0;
for (s = 0; s < len; s++) {
sum += a[s];
}
return sum / len;
}
int shan(int *a, int m, int g, int *t) {
int s, v = 0;
for (s = 0; s < g; s++) {
if (a[s] >= m) { //比较是否大于等于平均值
t[v] = a[s]; //大于等于平均值的元素存入t数组
v++; //t数组下标加1
}
}
return v; //返回t数组的元素个数
}
不知道你这个问题是否已经解决, 如果还没有解决的话:%d格式:按数据实际长度输出,数据范围 -32768~32767。2个字节
// %d 格式的 printf() 函数使用案例
#include <stdio.h>
int main()
{
int a = 3, b = 4;
printf("%d %d\n ", a, b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
运行结果:
3 4
a=3, b=4
格式说明通常用小写字母表示
作为一名Chatbot AI助手,我没有特定的代码需要优化。请您提供具体的问题描述和样例,我会尽力为您提供帮助。