注册 登录
编程论坛 C++教室

求大神帮助 运行不了,自认没问题

qq2416014262 发布于 2016-11-20 21:20, 1121 次点击
#include <stdio.h>
int main()
{
    int a[3][4]={{3,0,4,5},{6,2,1,7},{4,1,5,8}};
    int b[3][4]={{1,4,0,3},{2,5,1,6},{9,3,6,0}};
    int c[3][4];
    int i,j;
    printf("array a:\n");            //输出矩阵A
    for (i=0;i<3;i++)
    {
        for (j=0;i<4;j++)
        {
            printf("%5d",a[i][j]);
            c[i][j]=a[i][j]+b[i][j];    //求和后矩阵
        }
        printf("\n");
    }

    printf("\narray b:\n");
    for (i=0;i<3;i++)
    {
        for (j=0;j<4;j++)
        {
            printf("%5d",b[i][j]);
        }
        printf("\n");
    }

    printf("\narray C:\n");
    for (i=0;i<3;i++)
    {
        for (j=0;j<4;j++)
        {
            printf("%5d",c[i][j]);
        }
        printf("\n");
    }

    return 0;
}
3 回复
#2
qq24160142622016-11-20 21:25
没事了弄错了
#3
qq24160142622016-11-20 21:27
#include <stdio.h>
const int N=7;//定义评委数
int main()
{
    double score[N];
    double max,min,sum,aver;
    int i;
    printf("请输入%d位评委的给分:\n",N);
    for(i=0;i<N;i++)
        scanf("%f",&score[i]);
   
    max=min=sum=score[0];
    for(i=1;i<N;i++)
    {
        if(max<score[i])
            max=score[i];
        if(min<score[i])
            min=score[i];
        sum=sum+score[i];
    }
    sum=sum-max-min;
        aver=sum/(N-2);
    printf("\n去掉一个最高分: %f,去掉一个最低分:%f\n\n",max,min);
    printf("该选手的最后得分是: %.4f\n\n",aver);
    return 0;
}

这个怎么错了
#4
鸿蒙之灵2016-11-21 09:02

和以往的习惯一样,先说说问题在什么地方,你的问题应该是输出的问题,这个问题的主要原因是你在输入的时候,对于格式控制的不严谨:

printf的%f说明符的确既可以输出float型又可以输出double型。 根据"默认参数提升"规则(在printf这样的函数的可变参数列表中 ,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到双精度数。参见问题15.2。

对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升。(通过指针)向float存储和向double存储大不一样,因此,scanf区别%f和%lf


另外,你的这一段代码:
max=min=sum=score[0];
    for(i=1;i<N;i++)
    {
        if(max<score[i])
            max=score[i];
        if(min<score[i])
            min=score[i];
        sum=sum+score[i];
    }
你这样写逻辑上没有错,但是不利于代码的可读性,虽然你将数组中下标为零的元素提前赋值,在循环中直接从下标为1的元素开始,但是不利于程序的可读性,这一点在今后的代码生涯中需要注意一下

程序代码:


#include "stdafx.h"
#include <stdlib.h>
#include <string>
#include <iostream>
using namespace std;

#include <stdio.h>
const int N=7;//定义评委数
int main()
{
    double score[N];
    double max,min,sum,aver;
    printf("请输入%d位评委的给分:\n",N);
    for(int i=0;i<N;i++)
        scanf("%lf",&score[i]);
   
    max=score[0];
    min=score[0];
    sum=0;
    for(int i=0;i<N;i++)
    {
        if(max<score[i])
        {
            max=score[i];
        }
        if(min<score[i])
        {
            min=score[i];
        }
        sum=sum+score[i];
    }
    sum=sum-max-min;
        aver=sum/(N-2);
    printf("\n去掉一个最高分: %6f,去掉一个最低分:%6f\n\n",max,min);
    printf("该选手的最后得分是: %.4f\n\n",aver);
    system("pause");
    return 0;
}
1