鱼C论坛

 找回密码
 立即注册
查看: 2816|回复: 2

关于这个程序哪里有错误?

[复制链接]
发表于 2012-3-21 15:15:37 | 显示全部楼层 |阅读模式
1鱼币
本帖最后由 lyq19900123 于 2012-3-21 18:13 编辑

此程序实现找出不及格学生序号,并统计不及格总人数;运行的时候会出错,好像是内存上读写的问题;百思不得其解;求指点
#include<stdio.h>
#define LEN 4
#define KAI 1

int serch(int y,int (*p1)[4]);
char *f(int x);

char *p1="English";//多个函数用到,在这里定义
char *p2="Math";
char *p3="Chinese";
char *p4="Janpannese";


void main()
{

int x;
int c1[LEN][4]={{98,76,84,92},{56,67,58,84},{87,68,96,79},{54,58,98,68}};
int z;
printf("请输入及格分数x:");
scanf("%d",&x);
printf("及格分数X=%d\n",x);
z=serch(x,c1);
printf("不及格的科次为%d\n",z);
}


void serch(int y,int (*p1)[4])//这个函数实现不及格人数的统计,并打印序号
{
          int i,j,k=0;
         for(i=0;i<LEN;i++)
         {
                for(j=0;j<4;j++)
                 if(*(*(p1+i)+j)<y)
                {
                k++;
                printf("序号%d的%s成绩\n",i+1,*f(j));
   
                 }
          }
          return k;
}


#ifdef KAI
char *f(int x)//这个函数实现根据行数确定不及格科目的名称,
{
                     char *m;
          switch(x)
         {
                case 0:m=p1;break;
                case 1:m=p2; break;
                case 2:m=p3;break;
                 default:m=p4;
          }
                return m;
}
#endif

最佳答案

查看完整内容

char * f(int x); 这是一个名叫f的函数,返回 char *,改后的代码在下面楼主直接复制 再编译就行了 还有建议,楼主把代码美化一下,把缩进对齐 #include #define LEN 4 #define KAI 1 int serch(int y,int (*p1)[4]); char *f(int x); char *p1="English";//多个函数用到,在这里定义 char *p2="Math"; char *p3="Chinese"; char *p4="Janpannese"; void main() { int x; int c1[LEN][4]={{98 ...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-3-21 15:15:38 | 显示全部楼层
本帖最后由 wAterLoo 于 2012-3-21 16:12 编辑

char * f(int x);
这是一个名叫f的函数,返回 char *,改后的代码在下面楼主直接复制 再编译就行了
还有建议,楼主把代码美化一下,把缩进对齐

#include<stdio.h>
#define LEN 4
#define KAI 1

int serch(int y,int (*p1)[4]);
char *f(int x);

char *p1="English";//多个函数用到,在这里定义
char *p2="Math";
char *p3="Chinese";
char *p4="Janpannese";


void main()
{

    int x;
    int c1[LEN][4]={{98,76,84,92},{56,67,58,84},{87,68,96,79},{54,58,98,68}};
    int z;
    printf("请输入及格分数x:");
    scanf("%d",&x);
    printf("及格分数X=%d\n",x);
    z=serch(x,c1);
    printf("不及格的科次为%d\n",z);
}


int serch(int y,int (*p1)[4])//这个函数实现不及格人数的统计,并打印序号
{
    int i,j,k=0;
    for(i=0;i<LEN;i++)
    {
        for(j=0;j<4;j++)
            if(*(*(p1+i)+j)<y)
            {
                k++;
                // 把*f(j); 改成 f(j);
                printf("序号%d的%s成绩\n",i+1,f(j));
            }
    }
    return k;
}


#ifdef KAI
char *f(int x)//这个函数实现根据行数确定不及格科目的名称,
{
    char *m;
    switch(x)
    {
        case 0:m=p1;break;
        case 1:m=p2; break;
        case 2:m=p3;break;
        default:m=p4;
    }
    return m;
}
#endif
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-3-21 18:18:15 | 显示全部楼层

非常感谢,看来还是基础不够扎实,这么简单的错误都没找到!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-12 05:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表