C语言程序出错error C2109、error C2102、error C2064 如何修改?

错误:cpp(18):errorC2109:subscriptrequiresarrayorpointertypecpp(18):errorC2102:'&'requir... 错误:
cpp(18) : error C2109: subscript requires array or pointer type
cpp(18) : error C2102: '&' requires l-value
cpp(19) : error C2064: term does not evaluate to a function

代码:
#include<stdio.h>
#include<iostream>
using namespace std;
#define M 10
int x[][3];
int n;
int a[M];
int t,k,l;
int i,f,j;
int main()
{

printf("请输入培养皿数\n");
scanf("%d",&n);
printf("请分别输入n个培养皿的相关数据\n");
for(i=0;i<n;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
f(a,n);
return 0;

for(i=0;i<M;i++) //计算各培养皿的繁殖率
a[i]=(x[i][2]/x[i][1]);
for(i=0;i<M-1;i++) //按照各培养皿的繁殖力,从大到小进行排列
if(a[i]<a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
k=x[i][0];
x[i][0]=x[i+1][0];
x[i+1][0]=k;
}
l=0; //计数
for(i=0;i<M;i++)
{
if(a[i]/a[i+1]<10)
l++;
else
break;
}
printf("A亚种培养皿数量:%d\n",l+1);
for(i=l;i>=0;i--) //按照题目要求,分别按照升序输出
printf("%d\n",x[i][0]);
printf("B亚种培养皿数量:%d\n",M-l-1);
for(i=M-1;i>=l+1;i--)
printf("%d\n",x[i][0]);
return 0;
}

描述

有一种细菌分为A、B两个亚种,它们的外在特征几乎完全相同,仅仅在繁殖能力上有显著差别,A亚种繁殖能力非常强,B亚种的繁殖能力很弱。在一次为时一个 小时的细菌繁殖实验中,实验员由于疏忽把细菌培养皿搞乱了,请你编写一个程序,根据实验结果,把两个亚种的培养皿重新分成两组。

输入

输入有多行,第一行为整数n(n≤100),表示有n个培养皿。

其余n行,每行有三个整数,分别代表培养皿编号,试验前细菌数量,试验后细菌数量。

输出

输出有多行:

第一行输出A亚种培养皿的数量,其后每行输出A亚种培养皿的编号,按繁殖率升序排列。

然后一行输出B亚种培养皿的数量,其后每行输出B亚种培养皿的编号,也按繁殖率升序排列。

样例输入
5

1 10 3456

2 10 5644

3 10 4566

4 20 234

5 20 232

样例输出
3

1

3

2

2

5

4
展开
 我来答
White_MouseYBZ
2016-10-15 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6717万
展开全部
  1. int x[][3];——这个声明有错,[]空着又没有右值,编译器不知道填多少。

  2. int a[M];  ——这个声明的a是一维数组,而后面scanf("%d",&a[i][j]); 中怎么冒出个a[i][j]?


匿名用户
2016-10-15
展开全部
代码太乱啊,几乎很难直视,基本的概念都不是那么清楚,没法改。
问题太多了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式