c语言一维数组结束,c语言能返回一维数组嘛

本文目录一览:

C语言一维数组

main()

{int i,x[10]={2,3,0,3,0,2,3,2,1,3},y[4]={0}; //值定义 x0-x9的值2,3,0,3,0,2,3,2,1,3 y0-y3的值均为0

for(i=0;i10;i++) //循环体开始

y[x[i]]++; //循环体内容

//因为没有大括号,所以循环体结束

printf(“%d\n”,y[3]);

}

运行10次,y3=4 x[3]=3 然后+1

C语言在输入一维数组时,如果想要用回车停止输入,那么这种写法对吗?

这还真有点小学问,如果是字符数组,if(a[i]!=’\n’) break;就可以了,但得把不需要的那个’\n’从数组中用a[i]=’\0′;抹掉并添加了结束符。要是数字数组,比如整数数组呢,上面方法就不凑效了。用下面代码可实现——

C语言 好几个一维的数组 如何结束输入

当读到EOF时结束

Windows采用Ctrl+Z产生一个EOF,*nix采用Ctrl+D产生一个EOF

文件末尾本来就是一个EOF

c语言一维数组

#includestdio.h

#includemalloc.h

#includestring.h

typedef char* string;   //字符串

//学生结构体

typedef struct Student{

    char    name[16];   //姓名

    int     id;         //学号

    float   grade;      //成绩

    struct Student *next;//下一个学生节点

}Student,*student;

//班级结构体

typedef struct Class{

    student list;   //学生列表

    int     num;    //学生人数

}Class,*class;

//创建一个新班级

class newClass();

//销毁一个班级

void destroyClass(class c);

//创建一个新学生

student newStudent(string name,int id,float grade);

//向班级中加入一个学生

void append(class c,student stu);

//统计不及格人数,并打印名单

void showNotPass(class c);

//统计全班平均分及以上的学生人数并打印名单

void showGreaterThanAvg(class c);

//统计各分数段的学生人数及所占百分比

void showGradeRange(class c);

//输出最高分及学号

void showFirst(class c);

//输出班里的所有成员

void output(class c);

int main(){

    char    name[16];

    int     id;

    float   grade;

    class   myClass = newClass();   //创建一个班级

    printf(“输入学生信息\n”);

    puts(“姓名\t学号\t成绩”);

    while(~scanf(“%s%d%f”,name,id,grade)  grade = 0){  //grade0结束

        append(myClass,newStudent(name,id,grade));  //向班级中加入一名新学生

    }

    //不及格信息

    showNotPass(myClass);

    //超过平均分的信息

    showGreaterThanAvg(myClass);

    //区间信息

    showGradeRange(myClass);

    //第一名

    showFirst(myClass);

    return 0;

}

//创建一个新班级

class newClass(){

    class tmp = (class)malloc(sizeof(Class));

    tmp-num = 0;

    tmp-list = NULL;

    return tmp;

}

//销毁一个班级

void destroyClass(class c){

    if(c == NULL) return;

    student list = c-list;

    student next = NULL;

    while(list!=NULL){

        next = list-next;

        free(list); //释放当前节点

        list = next;

    }

    free(c);

    c = NULL;

}

//创建一个新学生

student newStudent(string name,int id,float grade){

    student tmp = (student)malloc(sizeof(Student));

    strcpy(tmp-name,name);

    tmp-id = id;

    tmp-grade = grade;

    tmp-next = NULL;

    return tmp;

}

//向班级中加入一个学生

void append(class c,student stu){

    if(c == NULL || stu == NULL) return;

    stu-next = c-list;

    c-list = stu;

    c-num++;

}

//统计不及格人数,并打印名单

void showNotPass(class c){

    if(c == NULL) return;

    class tmpClass = newClass();

    student tmp = c-list;

    for(;tmp != NULL;tmp = tmp-next){

        if(tmp-grade  60){

            student tmpStu = (student)malloc(sizeof(Student));

            memcpy(tmpStu,tmp,sizeof(Student));

            append(tmpClass,tmpStu);

        }

    }

    printf(“不及格人数:%d\n”,tmpClass-num);

    output(tmpClass);

    destroyClass(tmpClass);

}

//统计全班平均分及以上的学生人数并打印名单

void showGreaterThanAvg(class c){

    if(c == NULL || c-num == 0){

        puts(“班级没有人”);

        return;

    }

    student tmp = c-list;

    float sum = 0;

    for(;tmp != NULL;tmp = tmp-next){

        sum+=tmp-grade;

    }//统计总分

    float avg = sum / c-num;//平均分

    class tmpClass = newClass();

    for(tmp=c-list;tmp != NULL; tmp = tmp-next){

        if(tmp-grade = avg){

            student tmpNode = (student)malloc(sizeof(Student)); //一个临时学生节点

            memcpy(tmpNode,tmp,sizeof(Student));

            append(tmpClass,tmpNode);

        }

    }

    printf(“平均分及以上的学生人数为:%d\n”,tmpClass-num);

    output(tmpClass);

    destroyClass(tmpClass);

}

//统计各分数段的学生人数及所占百分比

void showGradeRange(class c){

    if(c == NULL){

        puts(“班级没有人”);

        return;

    }

    int i;

    class container[10];

    for(i = 0; i  10; i++){    //初始化分数段班级容器

        container[i] = newClass();

    }

    student tmp = c-list;

    for(; tmp != NULL; tmp = tmp-next){

        int index = (int)tmp-grade % 10;   //区间

        if(index  9) index = 9;    //大于90的算成一个区间

        student tmpStu = (student)malloc(sizeof(Student));

        memcpy(tmpStu,tmp,sizeof(Student));

        append(container[index],tmpStu);

    }

    for(i = 0; i  10; i++){

        int num = container[i]-num;

        printf(“%d~%d的人数:%d,占比:%.6g%%\n”,i*10,(i+1)*10,num,(float)(num*100)/c-num);

        destroyClass(container[i]);

    }

    puts(“”);

}

//输出最高分及学号

void showFirst(class c){

    if(c == NULL || c-list == NULL) return;

    student max = c-list;

    student tmp = max-next;

    for(;tmp != NULL;tmp = tmp-next){

        if(tmp-grade  max-grade) max = tmp;

    }

    printf(“最高分:%.2g,学号:%d\n”,max-grade,max-id);

}

void output(class c){

    if(c == NULL) return;

    puts(“名单:”);

    student tmp = c-list;

    for(;tmp!=NULL;tmp = tmp-next){

        printf(“%s\n”,tmp-name);

    }

    puts(“”);

}

代码有点长….

C语言如何判定一个数组结束了。函数参数传过来一个一位整型数组的启示位置。。

C语言的数组类型没有专用的方法,不能直接判断长度。

可以通过sizeof()运算符计算长度!

sizeof(数组名)/sizeof(类型)

—————————————————

EXP:

int array[18]; char ch[20];

sizeof(array)/sizeof(int);

sizeof(ch)/sizeof(char);

==================================

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/245119.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:06
下一篇 2024-12-12 13:06

相关推荐

  • Python导入数组

    本文将为您详细阐述Python导入数组的方法、优势、适用场景等方面,并附上代码示例。 一、numpy库的使用 numpy是Python中一个强大的数学库,其中提供了非常丰富的数学函…

    编程 2025-04-29
  • Python返回数组:一次性搞定多种数据类型

    Python是一种多用途的高级编程语言,具有高效性和易读性的特点,因此被广泛应用于数据科学、机器学习、Web开发、游戏开发等各个领域。其中,Python返回数组也是一项非常强大的功…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python去掉数组的中括号

    在Python中,被中括号包裹的数据结构是列表,列表是Python中非常常见的数据类型之一。但是,有些时候我们需要将列表展开成一维的数组,并且去掉中括号。本文将为大家详细介绍如何用…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • Python操作数组

    本文将从多个方面详细介绍如何使用Python操作5个数组成的列表。 一、数组的定义 数组是一种用于存储相同类型数据的数据结构。Python中的数组是通过列表来实现的,列表中可以存放…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python二维数组对齐输出

    本文将从多个方面详细阐述Python二维数组对齐输出的方法与技巧。 一、格式化输出 Python中提供了格式化输出的方法,可以对输出的字符串进行格式化处理。 names = [‘A…

    编程 2025-04-29

发表回复

登录后才能评论