-
peng111说:
#include
#define STUDENT_NUM 10void fun(int score[], int size) {
int avg = 0;
int min = score[0];
int fail_num = 0;for (int i = 0; i avg += score[i];
if (score[i] min = score[i];
if (score[i] fail_num++;
}
avg /= size;printf("平均成绩:%d\n", avg);
printf("最低成绩:%d\n", min);
printf("不及格人数:%d\n", fail_num);
}int main(void) {
int score[STUDENT_NUM] = {90, 65, 75, 88, 88, 82, 76, 88, 94, 79};fun(score, STUDENT_NUM);
return 0;
}解释一下
这段代码通过调用函数fun()来计算一组整型数组(score)的平均成绩、最低成绩以及不及格人数。
函数fun()接受两个参数,第一个参数score是一个整型数组,存放一组数据,第二个参数size是数组score的大小;
函数fun()先将平均成绩、最低成绩和不及格人数初始化为0,然后循环遍历数组score,将每一个成绩累加到avg中,比较每一个成绩,找出最低成绩,如果某一个成绩小于60分,则将fail_num加1;最后将avg除以size,得到平均成绩,并打印出最低成绩、平均成绩和不及格人数。 -
peng111说:
java成绩管理系统由单一课程成绩管理修改成多门课程成绩管理,请同学以统计最高分功能设计为例,从对象设计,数据结构、算法操作等方面简略文字回答需要做哪些修改操作,详细一点
就更好了:
对象设计:
- 由于单一课程成绩管理系统已有的类,如学生类,可以保留,但需要添加一个新的类,称为课程类,该类用于存储每个课程的信息,包括课程名称、分数等;
- 再添加一个统计类,用于存储统计信息,如最高分等。
数据结构:
- 增加一个数据结构,该数据结构用于存储多个课程的信息,如课程名称、成绩等;
- 再增加一个数据结构,用于存储统计信息,如最高分等。
算法操作:
- 修改录入成绩的算法,改为录入多门课程的成绩;
- 添加一个查找最高分的算法,该算法应该能够查找出每门课程的最高分,从而可以得出总体最高分。
-
peng111说:
用keil程序编写 数码管显示99,每输入一个脉冲,显示数字减1,减到50停止,同时点亮发光二极管。
include
sbit P2_0=P2^0;
unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char num;
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}void main()
{
num=99;
while(1)
{
P0=smgduan[num%10];
P2_0=1;
delay(5);
P2_0=0;
delay(5);
P0=smgduan[num/10];
P2_0=1;
delay(5);
P2_0=0;
delay(5);
num--;
if(num==50)
break;
}
while(1);
} -
@ChatGPT include
sbit P2_0=P2^0;
unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char num;
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}void main()
{
num=99;
while(1)
{
P0=smgduan[num%10];
P2_0=1;
delay(5);
P2_0=0;
delay(5);
P0=smgduan[num/10];
P2_0=1;
delay(5);
P2_0=0;
delay(5);
num--;
if(num==50)
break;
}
while(1);
}
解释一下 -
peng111说:
include
sbit P2_0=P2^0;
unsigned char code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char num;
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}void main()
{
num=99;
while(1)
{
P0=smgduan[num%10];
P2_0=1;
delay(5);
P2_0=0;
delay(5);
P0=smgduan[num/10];
P2_0=1;
delay(5);
P2_0=0;
delay(5);
num--;
if(num==50)
break;
}
while(1);
}
解释一下:
代码中定义了一个数组变量smgduan,用来存放7段数码管的段码,定义了一个变量num,用来存放计数值,主函数设置num的初值为99,然后使用while循环,每次使用num取余10的结果作为数组smgduan的下标,取出该下标对应的数组元素值,将其作为P0口的输出值,然后将P2_0置1,延时5ms,再将P2_0置0,延时5ms,将num取整除10的结果作为数组smgduan的下标,取出该下标对应的数组元素值,将其作为P0口的输出值,然后将P2_0置1,延时5ms,再将P2_0置0,延时5ms,循环计数,每次循环将num减1,当num=50时,跳出循环,最后放置一个死循环,以此保持循环正常运行,实现了从99到50的定时计数的功能。