| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1188 人关注过本帖
标题:很久没写C了,运行时EXE竟然停止工作
只看楼主 加入收藏
开心松儿
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-6-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
很久没写C了,运行时EXE竟然停止工作
代码如下:只有两个子函数,但是运行第二个子函数时,exe便停止工作。。。实在找不出原因,望高手指教
#include <stdio.h>
#define N 2  
#define M 5

void chuli_1(float a[N+3][M+1])
{
  int i,j;
  for(i=1;i<=N;i++)
  {
      float sum=0;
      for(j=1;j<=M;j++)
      {
        sum=sum+a[i-1][j-1];
      }
      a[i-1][M]=sum/5;
  }
  for(i=1;i<=N;i++)
  printf("第%d个学生的平均成绩是:%.2f   \n",i,a[i-1][M]);
  printf("\n\n\n");
}

void chuli_2(float a[N+3][M+1])
{
  int i,j;
  for(i=1;i<=M;i++)
  {
      int sum=0;
      float max=0,min=100;
      for(j=1;j<=N;i++)
      {
        sum=sum+a[j-1][i-1];
        if(a[j-1][i-1]>max)
            max=a[j-1][i-1];
        if(a[j-1][i-1]<min)
            min=a[j-1][i-1];
      }
      a[N][i-1]=sum/5;
      a[N+1][i-1]=max;
      a[N+2][i-1]=min;
  }
  printf("      语文  数学  外语  体育  计算机\n");
  printf("平均分");
  for(i=1;i<=M;i++)
  printf("%.2f   ",a[N][i-1]);
  printf("\n");
  printf("最高分");
  for(i=1;i<=M;i++)
  printf("%.2f   ",a[N+1][i-1]);
  printf("\n");
  printf("最低分");
  for(i=1;i<=M;i++)
  printf("%.2f   ",a[N+2][i-1]);
  printf("\n\n\n");
}


void main()
{
  int i,j,t;
  float c[N+3][M+1];
  printf("*************************\n");
  printf("      学生成绩录入\n");
  printf("*************************\n\n\n");
  for(i=1;i<=N;i++)
  {
  printf("请按序输入第%d 个学生的成绩\n",i);
  for(j=1;j<=M;j++)
  {
    scanf("%f",&c[i-1][j-1]);
  }
  }
  printf("***************************************\n");
  printf("1、每个学生平均成绩\n");
  printf("2、每个课程的平均成绩、最大值、最小值\n");
  printf("***************************************\n\n");
  loop:printf("请输入要进行的操作的序号:");
  scanf("%d",&t);
  if(t==1) {chuli_1(c);goto loop;}
  if(t==2) {chuli_2(c);goto loop;}
}

搜索更多相关主题的帖子: EXE 运行 
2010-06-22 22:07
笨到家啦
Rank: 2
等 级:论坛游民
帖 子:19
专家分:73
注 册:2010-6-7
收藏
得分:20 
#include <stdio.h>
#define N 2  
#define M 5

void chuli_1(float a[N+3][M+1])
{
  int i,j;
  for(i=1;i<=N;i++)
  {
      float sum=0;
      for(j=1;j<=M;j++)
      {
        sum=sum+a[i-1][j-1];
      }
      a[i-1][M]=sum/5;
  }
  for(i=1;i<=N;i++)
  printf("第%d个学生的平均成绩是:%.2f   \n",i,a[i-1][M]);
  printf("\n\n\n");
}

void chuli_2(float a[N+3][M+1])
{
  int i,j;
  for(i=1;i<=M;i++)
  {
      int sum=0;
      float max=0,min=100;
      for(j=1;j<=N;j++)
      {
        sum=sum+a[j-1][i-1];
        if(a[j-1][i-1]>max)
            max=a[j-1][i-1];
        if(a[j-1][i-1]<min)
            min=a[j-1][i-1];
      }
      a[N][i-1]=sum/N;//原程序是a[N][i-1]=sum/5;
      a[N+1][i-1]=max;
      a[N+2][i-1]=min;
  }
  printf("      语文  数学  外语  体育  计算机\n");
  printf("平均分");
  for(i=1;i<=M;i++)
  printf("%.2f   ",a[N][i-1]);
  printf("\n");
  printf("最高分");
  for(i=1;i<=M;i++)
  printf("%.2f   ",a[N+1][i-1]);
  printf("\n");
  printf("最低分");
  for(i=1;i<=M;i++)
  printf("%.2f   ",a[N+2][i-1]);
  printf("\n\n\n");
}


void main()
{
  int i,j,t;
  float c[N+3][M+1];
  printf("*************************\n");
  printf("      学生成绩录入\n");
  printf("*************************\n\n\n");
  for(i=1;i<=N;i++)
  {
  printf("请按序输入第%d 个学生的成绩\n",i);
  for(j=1;j<=M;j++)//原程序是for(j=1;j<=M;i++)
  {
    scanf("%f",&c[i-1][j-1]);
  }
  }
  printf("***************************************\n");
  printf("1、每个学生平均成绩\n");
  printf("2、每个课程的平均成绩、最大值、最小值\n");
  printf("***************************************\n\n");
  loop:printf("请输入要进行的操作的序号:");
  scanf("%d",&t);
  if(t==1) {chuli_1(c);goto loop;}
  if(t==2) {chuli_2(c);goto loop;}
}

修改了两个容易出错但又不易发现的地方。
2010-06-22 22:46
笨到家啦
Rank: 2
等 级:论坛游民
帖 子:19
专家分:73
注 册:2010-6-7
收藏
得分:0 
#include <stdio.h>
#define N 2  
#define M 5

void chuli_1(float a[N+3][M+1])
{
  int i,j;
  for(i=1;i<=N;i++)
  {
      float sum=0;
      for(j=1;j<=M;j++)
      {
        sum=sum+a[i-1][j-1];
      }
      a[i-1][M]=sum/5;
  }
  for(i=1;i<=N;i++)
  printf("第%d个学生的平均成绩是:%.2f   \n",i,a[i-1][M]);
  printf("\n\n\n");
}

void chuli_2(float a[N+3][M+1])
{
  int i,j;
  for(i=1;i<=M;i++)
  {
      int sum=0;
      float max=0,min=100;
      for(j=1;j<=N;j++)                    //原程序为for(j=1;j<=N;i++)
      {
        sum=sum+a[j-1][i-1];
        if(a[j-1][i-1]>max)
            max=a[j-1][i-1];
        if(a[j-1][i-1]<min)
            min=a[j-1][i-1];
      }
      a[N][i-1]=sum/N;                    //原程序为a[N][i-1]=sum/5
      a[N+1][i-1]=max;
      a[N+2][i-1]=min;
  }
  printf("      语文  数学  外语  体育  计算机\n");
  printf("平均分");
  for(i=1;i<=M;i++)
  printf("%.2f   ",a[N][i-1]);
  printf("\n");
  printf("最高分");
  for(i=1;i<=M;i++)
  printf("%.2f   ",a[N+1][i-1]);
  printf("\n");
  printf("最低分");
  for(i=1;i<=M;i++)
  printf("%.2f   ",a[N+2][i-1]);
  printf("\n\n\n");
}


void main()
{
  int i,j,t;
  float c[N+3][M+1];
  printf("*************************\n");
  printf("      学生成绩录入\n");
  printf("*************************\n\n\n");
  for(i=1;i<=N;i++)
  {
  printf("请按序输入第%d 个学生的成绩\n",i);
  for(j=1;j<=M;j++)
  {
    scanf("%f",&c[i-1][j-1]);
  }
  }
  printf("***************************************\n");
  printf("1、每个学生平均成绩\n");
  printf("2、每个课程的平均成绩、最大值、最小值\n");
  printf("***************************************\n\n");
  loop:printf("请输入要进行的操作的序号:");
  scanf("%d",&t);
  if(t==1) {chuli_1(c);goto loop;}
  if(t==2) {chuli_2(c);goto loop;}
}
-------------------------------------
不好意思,在楼上把注解写错地方了。
2010-06-22 22:54
开心松儿
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-6-22
收藏
得分:0 
回复 2楼 笨到家啦
谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢,谢谢~~~~~~~~~内牛满面,内牛满面。。
虽然以为你回我的是“笨到家了”四个字。。着实羞愧了一把
2010-06-23 12:45
快速回复:很久没写C了,运行时EXE竟然停止工作
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017220 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved