7-8 男生女生 (10 分)
任务描述
给定一个班每个同学的性别,分别输出男女比例,男生学号和女生学号。
输入
第一行一个整数n,0<n≤500表示班级人数。第二行中有n个0(女生)或者1(男生),表示按学号(从1号开始)顺序的每个同学性别。
输出
第一行输出男生与女生的比例,形式为1:?。如果男女生相等,则输出1:1;如果没有男生输出性别为0:1;如果没有女生,性别比输出1:0,否则输出1:?,结果保留2位小数。 第二行从小到大输出男生的学号,学号之间用空格分隔,行首和行尾不能有空格。如果没有男生则输出“no boys”。 第三行从小到大输出女生的学号,学号之间用空格分隔,行首和行尾不能有空格。如果没有女生则输出“no girls”。
输入举例
10
1 0 0 1 0 0 1 1 0 1
输出举例
1:1
1 4 7 8 10
2 3 5 6 9
// 代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,a[501],b=0,g=0,d[501],c[501],j=1,k=1;
double x;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(i=1;i<=n;i++){
if(a[i]==0){
d[k]=i;
k++;
g=g+1;
}
if(a[i]==1){
c[j]=i;
j++;
b=b+1;
}
}
if(g==0){
printf("1:0\n");
for(i=1;i<=n;i++){
if(i==n){
printf("%d",i);
}
else{
printf("%d ",i);
}
}
printf("\n");
printf("no girls");
}
else if(b==0){
printf("0:1\n");
printf("no boys");
printf("\n");
for(i=1;i<=n;i++){
if(i==n){
printf("%d",i);
}
else{
printf("%d ",i);
}
}
}else{
if(g==b){
printf("1:1");
}else{
x=g*1.0/b;
printf("1:%.2lf",x);
}
printf("\n");
for(j=1;j<=b;j++){
if(j==b){
printf("%d",c[j]);
}else{
printf("%d ",c[j]);
}
}
printf("\n");
for(k=1;k<=g;k++){
if(k==g){
printf("%d",d[k]);
}
else{
printf("%d ",d[k]);
}
}
}
return 0;
}