要求一个数组中满足条件的值有多少个一般用循环遍历然后if判断做出统计
例子:给定一个数组计算其中的非0值个数,并求出非0值的平均值,并将所有值从大到小排序
#include<stdio.h>
int main(){
int a[15]={20,0,98,90,90,0,60,40,35,85,100,200,30,400,5};
int num=0,sum = 0,temp;
for(int i = 0;i<15;i++){ //排序循环
for(int j = i+1;j<15;j++){
if(a[i]<a[j]){
temp = a[i];
a[i]=a[j];
a[j] = temp;
}
}
}
for(int i = 0;i<15;i++){ //统计循环
if(a[i]!=0){
sum+=a[i];
num++;
}
}
printf("非零值个数:%d 平均值:%d \n",num,sum/num);
for(int i = 0;i<15;i++){ //输出循环
printf("%d ",a[i]);
}
return 0;
}
运行结果
三个循环也可以结合
#include<stdio.h>
int main(){
int a[15]={20,0,98,90,90,0,60,40,35,85,100,200,30,400,5};
int num=0,sum = 0,temp;
for(int i = 0;i<15;i++){ //排序循环
for(int j = i+1;j<15;j++){
if(a[i]<a[j]){
temp = a[i];
a[i]=a[j];
a[j] = temp;
}
}
if(a[i]!=0){
sum+=a[i];
num++;
}
printf("%d ",a[i]);
}
printf("非零值个数:%d 平均值:%d \n",num,sum/num);
return 0;
}
但是结合后统计循环和输出循环得操作必须在排序循环得内层循环结束后进行,因为这时对应a[i]位置得值已经确定