实验六 变长数组一实验目的1)理解变长数组的概念、定义和初始化;2)熟悉变长数组的使用方法。二程序示例[源程序2-1]编写程序通过变长数组计算平均分。1#include<stdio.h>23#ifdefSTDC_NO_VLA//判断当前环境是否支持变长数组4printf("Variable length arrays are not supported.In");5exit(1);//如果不支持,退出程序6#endif78int main()9{10size_t nGrades = O;11printf("Enter the number of grades:");12scanf("%d",&nGrades);//输入成绩数量13intgrades[nGrades];//定义变长数组14long sum= 0;15float average = 0.0;16printf("InEnterthe %d grades:In", nGrades);1718for(size_ti=O;i<nGrades;++i)//数据输入19120printf("%2d>",i+1);21scanf("%d", &grades[il);22sum += grades[i];23124printf("The grades you entered are:\n");25for(size_ti=O;i<nGrades;++i)//数据显示
实验六 变长数组 一 实验目的 1) 理解变长数组的概念、定义和初始化; 2) 熟悉变长数组的使用方法。 二 程序示例 [源程序 2-1] 编写程序通过变长数组计算平均分。 1 #include<stdio.h> 2 3 #ifdef _STDC_NO_VLA_ //判断当前环境是否支持变长数组 4 printf("Variable length arrays are not supported.\n"); 5 exit(1); //如果不支持,退出程序 6 #endif 7 8 int main() 9 { 10 size_t nGrades = 0; 11 printf("Enter the number of grades: "); 12 scanf("%d",&nGrades); //输入成绩数量 13 int grades[nGrades]; //定义变长数组 14 long sum = 0; 15 float average = 0.0; 16 printf("\nEnter the %d grades:\n", nGrades); 17 18 for(size_t i = 0; i < nGrades; ++i) //数据输入 19 { 20 printf("%2d> ", i+1); 21 scanf("%d", &grades[i]); 22 sum += grades[i]; 23 } 24 printf("The grades you entered are:\n"); 25 for(size_t i = 0; i < nGrades; ++i) //数据显示
26(27printf("Grade[%2d] = %3d)n",i + 1, grades[i]);28if(i+1)%5==0) //每5个一行29printf("\n");1303132average=(float)sum/nGrades;//计算平均成绩33printf("InAverage of the %d grades entered is %.2f/n", nGrades, average);3435return 0;361[程序输入]Enter the number of grades: 12Enterthe12grades:1>562> 673>784> 675>686> 567> 888>989> 7610>7511>8712>72[程序输出]The grades you entered are:Grade[1]= 56Grade[2]= 67 Grade[3] = 78Grade[4] =67Grade[5] =68Grade[6] =56Grade[7] =88Grade[8]=98Grade[9] =76Grade[10] =75Grade[11] = 87 Grade[12]= 72Average of the12grades entered is74.00
26 { 27 printf("Grade[%2d] = %3d\n", i + 1, grades[i]); 28 if((i+1)%5 == 0) //每 5 个一行 29 printf("\n"); 30 } 31 32 average = (float)sum/nGrades; //计算平均成绩 33 printf("\nAverage of the %d grades entered is %.2f\n", nGrades, average); 34 35 return 0; 36 } [程序输入] Enter the number of grades: 12 Enter the 12 grades: 1> 56 2> 67 3> 78 4> 67 5> 68 6> 56 7> 88 8> 98 9> 76 10> 75 11> 87 12> 72 [程序输出] The grades you entered are: Grade[ 1] = 56 Grade[ 2] = 67 Grade[ 3] = 78 Grade[ 4] = 67 Grade[ 5] = 68 Grade[ 6] = 56 Grade[ 7] = 88 Grade[ 8] = 98 Grade[ 9] = 76 Grade[10] = 75 Grade[11] = 87 Grade[12] = 72 Average of the 12 grades entered is 74.00
[程序分析]该程序展示了如何定义和使用变长数组保存数据。程序中第1-6行为预编译指令,第1行包含系统库头文件stdio.h,第3-6行为条件编译语句,如果定义宏_STDC_NO_VLA,则说明系统不支持变长数组,通过printf输出提示语句Variablelengtharraysarenotsupported后,结束程序,其中exit的参数为1表示程序错误退出,第6行表示条件编译结束。程序第8-36行为主函数,其中:1、第10行定义size_t类型变量nGrades并初始化为0,用于存储成绩个数,第11行显示Enterthenumberofgrades:提示用户输入个数;2、第12行通过scanf函数扫描用户输入数据并存放于nGrades变量中;3、第13行定义整型数组,数组元素个数为nGrades;4、第14-15行定义长整型变量sum和单精度浮点型变量average,用于存储数据累加和与平均值;5、第16行提示用户输入nGrades个数据;6、第18-23行通过for循环按照十进制整型数据的形式扫描至数组grades中,并将每个数值通过sum完成累加操作;7、第24-30行通过for循环输出用户输入的数据,其中第28行表示当输出个数对5求余为0时(即可被5整除时)输出n符,表示每行显示个数最多为5个;8、第32行计算平均值average,其中对sum进行强制类型转换;9、第33行保留2位小数输出平均值。注意:程序第3-6行不是必须的,在确定当前系统支持变长数组的前提下可以移除。三、程序编写编写程序,使用变长数组计算任意多个学生的最高、最低和平均成绩。要求:1)通过直到型循环do...while进行学生成绩的循环输入;2)平均成绩保留1位小数输出
[程序分析] 该程序展示了如何定义和使用变长数组保存数据。 程序中第 1-6 行为预编译指令,第 1 行包含系统库头文件 stdio.h,第 3-6 行 为条件编译语句,如果定义宏_STDC_NO_VLA_,则说明系统不支持变长数组, 通过 printf 输出提示语句 Variable length arrays are not supported 后,结束程序, 其中 exit 的参数为 1 表示程序错误退出,第 6 行表示条件编译结束。 程序第 8-36 行为主函数,其中: 1、 第 10 行定义 size_t 类型变量 nGrades 并初始化为 0,用于存储成绩 个数,第 11 行显示 Enter the number of grades:提示用户输入个数; 2、 第12行通过scanf函数扫描用户输入数据并存放于nGrades变量中; 3、 第 13 行定义整型数组,数组元素个数为 nGrades; 4、 第 14-15 行定义长整型变量 sum 和单精度浮点型变量 average,用于 存储数据累加和与平均值; 5、 第 16 行提示用户输入 nGrades 个数据; 6、 第 18-23 行通过 for 循环按照十进制整型数据的形式扫描至数组 grades 中,并将每个数值通过 sum 完成累加操作; 7、 第 24-30 行通过 for 循环输出用户输入的数据,其中第 28 行表示当 输出个数对 5 求余为 0 时(即可被 5 整除时)输出’\n’符,表示每行 显示个数最多为 5 个; 8、 第 32 行计算平均值 average,其中对 sum 进行强制类型转换; 9、 第 33 行保留 2 位小数输出平均值。 注意:程序第 3-6 行不是必须的,在确定当前系统支持变长数组的前提下可 以移除。 三、程序编写 编写程序,使用变长数组计算任意多个学生的最高、最低和平均成绩。要求: 1) 通过直到型循环 do.while 进行学生成绩的循环输入; 2) 平均成绩保留 1 位小数输出