2 larry ke Larry_Ke 于 2014.12.12 21:20 提问

用for循环输入二维数组的时候,第一组数为什么为0?

代码如下
#include
int main()
{
void paixu(float food[100][2], int N);
float M,total = 0;
int N,j,i;
while (scanf("%f%d", &M, &N)&&M != -1 && N != -1)
{

float food[100][2] = { 0 };
for (i = 0; i < N; i++)
{
for (j = 0; j < 2; j++)
scanf("%f", &food[i][j]);
}
paixu(food, N);
for (i = 0; M>food[i][1]; i++)
{
M = M - food[i][1];
total += food[i][0];
}
total = total + M / food[i][1] * food[i][0];
printf("%.3f\n", total);
}
return 0;
}
void paixu(float food[100][2],int N)
{
int i, j, k;
float t_1, t_2;
for (i = 0; i < N; i++)
{
k = i;
for (j = i + 1; j < N; j++)
{
if (food[k][1] < food[j][1])
k = j;
}
if (i != k)
{
t_1 = food[i][1];
t_2 = food[i][0];
food[i][1] = food[j][1];
food[i][0] = food[j][0];
food[j][1] = t_1;
food[j][0] = t_2;
}
}
}求高手帮忙找下哪里错了

2个回答

u013451048
u013451048   2014.12.12 21:58
已采纳

数组的下标就是从0开始的啊

Larry_Ke
Larry_Ke 对啊。但是我对food【0】【0】和food【0】【1】输入7 2但是里面保存的却是0 0
3 年多之前 回复
qq_24464727
qq_24464727   2014.12.12 22:49

不知道,应该就是从0开始的。、

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
用两个for循环和一个for循环方式为二维数组赋初值并求出正对角线元素之和
//两个for循环和一个for循环为二维数组赋初值并求出正对角线元素之和 #include #include #define N 10 //两个for循环为二维数组赋值 void for2(int a[N][N]) { int sum=0; for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { // a[i][j]=++sum;//适合在一
【程序29】 TestAdd3.java 题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组, //再将a[i][i]累加后输出。
//【程序29】 TestAdd3.java 题目:求一个3*3矩阵对角线元素之和 1.程序分析:利用双重for循环控制输入二维数组, //再将a[i][i]累加后输出。 public class TestAdd3App { /** * @param args */ public static void main(String[] args) { // TODO Auto-ge
利用For循环创建二维数组
一、目的 利用for循环嵌套,通过随机数产生二维数组。 二、VI前面板 三、VI的程序框图
使用for()嵌套循环输出二维数组
// ex5-20.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include const int citys=5; const int year=4; int _tmain(int argc, _TCHAR* argv[]) { using namespace std; const char * city[citys]= { "Bei
/*c++中二维数组的输入正常,但是输出有问题,感觉就是输入进去但是没有保存下 */
/*c++中二维数组的输入正常,但是输出有问题 */ int aa[10][2],b(0),c(0),d(0); do { std::cin >> c >> d; aa[b][0] = c; aa[b][1] = d; } while (++b < 10); std::cout << std::endl; do { std::cout << aa[--b][0] <<
增强for循环对于“二维”数组进行循环的案例
对于“二维”数组进行foreach循环的话可以如下: String name[][] = { { "张三", "李四", "王五" }, { "张六", "李七", "王八" }, { "张九", "李十", "王十一" } }; for (String[] str1 : name) { for (String str2 : str1) { System.out.pri
二维数组,字符串数组
二维数组: 二维数组定义时,第一维下标可以省略(行数可以省略),但是第二维下标必须制定,(列数必须要给,列数时换行的一个标准) int a[][3] = {1,2,3,4,5,6, 7}; 并且,第一维下标和第二位下标都必须是常量或常量表达式 //外层循环用来控制行数,内层循环用来控制列数 // for (int i = 0; i < 4; i ++) { //
如何用一个for循环打印出一个二维数组
解析 常规的可以通过两层for循环嵌套来进行二维数组的输出,设二维数组array[MAXX][MAXY],其中MAXX表示是二维数组的行数,MAXY表示的是二维数组的列数。 代码#include <stdio.h> #define MAXX 2 #define MAXY 3void printArray() { int array[MAXX][MAXY] = { 1,2,3,4,
一道二维数组的面试题
题目:给一个M*N的二维数组,数组元素的值为0或者1,要求转换数组,将含有1的行和列全部置1.  比如原数组: 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 需要转换成: 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 这个题目看起来很简单,可是我在面试过程的40分钟硬是没写出个满意的答案。 首先想到的就是遍历数组,然后遇到1,就设
C#用for循环设置二维数组下标和元素
一个意外导致数组中的元素无限循环的实例_https://blog.csdn.net/number1killer/article/details/80021129遍历数组          https://blog.csdn.net/number1killer/article/details/77703289...