科丁乐K13287 科丁工厂4

生产m批零件,每批有n个零件。生产零件后需要检测外直径r,合格品外直径r=1.00cm,零件的外直径在一定的误差范围,也可以视作为合格品,现需要计算:现在要求你统计所有零件中高于p的数量和低于q的数量。


#include
using namespace std;
double b[110],s[110];
int main()
{
    double n,m,x;
    cin>>m>>n;
    for(int i=1;i<=m;i++){
        double maxn=-1,minn=101;
        for(int j=1;j=n;j++){
                cin>>x;
                if(x>maxn){
                    maxn=x;
                }
                if(xfor(int i=1;i<=m;i++){
        printf("%.21f",int(b[i]*100+0.5)/100.0);
    }
    cout<for(int i=1;i<=m;i++){
        printf("%.21f ",int(s[i]*100+0.5)/100.0);
    }
    return 0;
}

错哪了?



#include<bits/stdc++.h>
using namespace std;
int main(){
    double n,m,p,q,x;
    int cntp=0,cntq=0;
    cin>>m>>n>>p>>q;
    for(int i=1;i<=m;i++){
        for(int i=1;i<=n;i++){
            cin>>x;
                if(x>p){
                    cntp++;
                }
                if(x<q){
                    cntq++;
                } 
            }
    }
    cout<<cntp<<" "<<cntq;
    return 0;
}

该回答引用ChatGPT

在第9行的for循环条件中,应该是 <= 而不是 =,表示当 j 的值小于或等于 n 时循环执行。另外,在计算高于 p 和低于 q 的数量时,需要在读入每个零件的外直径时,统计超过 p 和小于 q 的个数。可以使用两个变量分别保存高于 p 和低于 q 的数量。

修改后的代码如下:


#include<bits/stdc++.h>
using namespace std;
double b[110],s[110];
int main()
{
    double n,m,x;
    double p,q;
    int cnt1 = 0, cnt2 = 0; // 统计高于p和低于q的数量
    cin>>m>>n>>p>>q;
    for(int i=1;i<=m;i++){
        double maxn=-1,minn=101;
        for(int j=1;j<=n;j++){ // 循环条件应该是 <=
            cin>>x;
            if(x>maxn){
                maxn=x;
            }
            if(x<minn){
                minn=x;
            }
        }
        b[i]=maxn;
        s[i]=minn;
        if(maxn > p) cnt1++; // 统计高于p的数量
        if(minn < q) cnt2++; // 统计低于q的数量
    }
    for(int i=1;i<=m;i++){
        printf("%.2f ",b[i]); // 四舍五入保留2位小数可以直接用 printf("%.2f ", ...)
    }
    cout<<endl;
    for(int i=1;i<=m;i++){
        printf("%.2f ",s[i]);
    }
    cout<<endl;
    cout << cnt1 << endl; // 输出高于p的数量
    cout << cnt2 << endl; // 输出低于q的数量
    return 0;
}