生产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;
}