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/zh-hk/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

發表回復

登錄後才能評論