回 帖 发 新 帖 刷新版面

主题:求助调试程序

#include<stdio.h>
void main()
{
  int i,j,a[10][5];            /*定义二维数组储存成绩*/
  char *xk[5];              /*定义字符串数组储存学科*/
  char *n[10];               /*定义字符串数组储存学生姓名*/
  void sga(char *n[10],int a[][5]); /*声明求学生平均成绩函数*/ 
  void cag(char *xk[5],int *a[][5]);/*声明求学生各科平均成绩函数*/
  void pri(char *n[10],char *xk[5],int a[][5]);/*打印学生成绩单*/
  printf("input students name\n");
    for(i=0;i<10;i++)
     scanf("%s",*n[i]);
  printf("please input xk\n");
    for(i=0;i<5;i++)
      scanf("%s",*xk[i]);
  printf("input student gerad\n");
    for(i=0;i<10;i++)
     for(j=0;j<5;j++)
      scanf("%d",&a[i][j]);
  sga( *n[10], a[10][5]);                             /*函数引用格式????*/
  cga( *xk[5], a[10][5]);
  pri( *xk[10], *n[5],int a[10][5]);
}
void sga(char *n[10],int a[][5])
{
  int i,j,sum;
  float aver;
  for(i=0;i<10;i++)
  {
   printf("students %c",n[i]);
    for(sum=0,j=0;j<5;j++)
      sum=sum+a[j][i];
    aver=sum/5.0;
    printf("aver grade is%5.2f",aver);
    printf("\n");
  }
}
void cga(char *xk[5],int a[][5])
{
  int i,j,sum;
  float aver;
  for(i=0;i<5;i++)
  {
  printf("xk%c",xk[i]);
  for(sum=0,j=0;j<10;j++)
    sum=sum+a[j][i];
    aver=sum/10.0;
    printf(" aver gread%5.2f\n",aver);
  }
}
void pri(char *xk[5],char *n[10],int a[][5])   /*n[i]学生姓名数组*/
{
  int i,j;
  for(i=0;i<10;i++)
  {
     printf("%s",n[i]);                       /*xk[i]学科*/
   for(j=0;j<5;j++)
     printf("%sgread is%d",xk[i],a[i][j]);
     printf("\n");
  }
}

那位大侠给找找BUG  并顺便说说那里出的问题?我好找出自己没有掌握的或者不熟悉的知识
谢了·····

回复列表 (共5个回复)

沙发

这代码似曾相识,以前有人贴过,大家帮忙改过很久……
代码里问题太多了……你还是去看看原帖里大家查出来的错吧……

板凳


[code=c]
#include "stdafx.h"


#include<stdio.h>
void main()
{
    int i,j,a[10][5];            /*定义二维数组储存成绩*/
    char *xk[5];              /*定义字符串数组储存学科*/
    char  *n[10];               /*定义字符串数组储存学生姓名*/
    void sga(char *n[],int a[][5]); /*声明求学生平均成绩函数*/ 
    void cga(char *xk[],int *a[][5]);/*声明求学生各科平均成绩函数*/
    void pri(char *n[],char *xk[],int a[][5]);/*打印学生成绩单*/
    printf("input students name\n");
    for(i=0;i<10;i++)
        scanf("%s",n[i]);
    printf("please input xk\n");
    for(i=0;i<5;i++)
        scanf("%s",xk[i]);
    printf("input student gerad\n");
    for(i=0;i<10;i++)
        for(j=0;j<5;j++)
            scanf("%d",&a[i][j]);
    sga( n[], a[][5]);                             /*函数引用格式????*/
    cga( xk[],a[][5]);
    pri( xk[], n[],int a[][5]);
}
void sga(char *n[],int a[][5])
{
    int i,j,sum;
    float aver;
    for(i=0;i<10;i++)
    {
        printf("students %c",n[i]);
        for(sum=0,j=0;j<5;j++)
            sum=sum+a[j][i];
        aver=sum/5.0;
        printf("aver grade is%5.2f",aver);
        printf("\n");
    }
}
void cga(char *xk[],int a[][5])
{
    int i,j,sum;
    float aver;
    for(i=0;i<5;i++)
    {
        printf("xk%c",xk[i]);
        for(sum=0,j=0;j<10;j++)
            sum=sum+a[j][i];
        aver=sum/10.0;
        printf(" aver gread%5.2f\n",aver);
    }
}
void pri(char *xk[],char *n[],int a[][5] )
//void  pri(char  *xk[],char  *n[],int a[][5])   /*n[i]学生姓名数组*/
{
    int i,j;
    for(i=0;i<10;i++)
    {
        printf("%s",n[i]);                       /*xk[i]学科*/
        for(j=0;j<5;j++)
            printf("%sgread is%d",xk[i],a[i][j]);
        printf("\n");
    }
}

[/code]

改了下还是有问题  看看后面高手怎么改吧

3 楼

函数调用,我汗,实参传递的时候什么都不用加的……一个变量名就够了……

4 楼

一直就是我在问,不过每次用的方法不一样。在不断地完善我的问题中··········刚刚学到指针,就用上了。但是出问题了····

5 楼

指针不是这么用的……
最稳妥的方式使用指针是严格地一一加以转换
比如int a[5]对应修改成int* a=(int*)malloc(5*sizeof(int));
a[1]对应修改成*(a+1)类似这样
不建议使用多级指针,那样比较负责,容易出错

我来回复

您尚未登录,请登录后再回复。点此登录或注册