输入20个整数,统计其中非负数的个数,并计算它们的和,然后将非负数从小到大进行排序并输出的c++代码
时间: 2024-05-14 20:16:52 浏览: 15
好的,我可以回答你的问题。以下是你要求的C代码:
```c
#include<stdio.h>
int main(){
int num[20]; // 声明一个能存放20个整数的数组
int i, count=0, sum=0; //i为循环计数器,count为非负数个数的计数器,sum为非负数之和的计数器
printf("输入20个整数:\n");
for(i=0; i<20; i++){
scanf("%d", &num[i]); // 读入整数
if(num[i]>=0){ // 判断是否为非负数
count++; // 非负数个数+1
sum+=num[i]; // 计算非负数之和
}
}
printf("非负数个数为:%d\n", count);
printf("它们的和为:%d\n", sum);
// 冒泡排序,从小到大排序
int j, temp;
for(i=0; i<count-1; i++){
for(j=0; j<count-1-i; j++){
if(num[j]>num[j+1]){
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
// 输出排序后的非负数
printf("非负数排序结果为:\n");
for(i=0; i<count; i++){
printf("%d ", num[i]);
}
printf("\n");
return 0;
}
```
该程序先通过循环读入20个整数,判断每个数是否为非负数,并对非负数个数和非负数之和进行累加。然后调用冒泡排序算法对非负数进行排序,最后将排序结果输出。