重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#include "stdio.h"
在大竹等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站建设、做网站 网站设计制作按需定制设计,公司网站建设,企业网站建设,成都品牌网站建设,网络营销推广,成都外贸网站建设公司,大竹网站建设费用合理。
#define N 30
void votes(int a[])
{
int i;
int n1=0,n2=0,n3=0;
for(i=0;iN;i++)
{
switch(a[i])
{
case 1:
n1++;
break;
case 2:
n2++;
break;
case 3:
n3++;
}
}
printf("Votes of candidate 1 is %d.\n",n1);
printf("Votes of candidate 2 is %d.\n",n2);
printf("Votes of candidate 3 is %d.\n",n3);
}
int winner(int a[])
{
int i;
int n1=0,n2=0,n3=0;
for(i=0;iN;i++)
{
switch(a[i])
{
case 1:
n1++;
break;
case 2:
n2++;
break;
case 3:
n3++;
}
}
if(n1n2 n1n3)
return 1;
if(n2n1 n2n3)
return 2;
if(n3n1 n3n2)
return 3;
}
void main()
{
int array[N];
int i;
printf("Please input 30 votes:");
for(i=0;iN;i++)
scanf("%d",a[i]);
votes(array);
printf("The winner is candidate %d.\n", winner(array));
}
#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("");
}
代码有点长....
符号常量是用一个标识符来表示一个常量,一维数组的定义方法为:类型说明符+数组名+[常量表达式];
类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数组元素的个数或者长度,可以是常量或符号常量,不能为变量。
例如:
1、int x[8]; 表示定义一个整型数组x,数组长度为8.
2、float a[8],b[10];表示定义一个实型数组b,数组长度为8,一个实型数组c,数组长度为10
3、 ch[15]; 表示定义一个字符数组ch,数组长度为15。
扩展资料
在程序中可以使用下标变量,即说明这些变量的整体为数组,数组中的每个变量的数据类型是相同的。当数组中每个元素都只带有一个下标时,称这样的数组为一维数组。
一维数组是由数字组成的以单纯的排序结构排列的结构单一的数组。一维数组是计算机程序中最基本的数组。二维及多维数组可以看作是一维数组的多次叠加产生的。
数组是计算机编程中的重要概念,运用数组可以方便地处理大规模的数据。
参考资料:百度百科-一维数组
数组包含给定类型的一些对象,并将这些对象依次存储在连续的内存空间中。每个独立的对象被称为数组的元素(element)。元素的类型可以是任何对象类型,但函数类型或不完整类型不能作为数组元素。
数组本身也是一个对象,其类型由它的元素类型延伸而来。更具体地说,数组的类型由元素的类型和数量所决定。
如果一个数组的元素是 T 类型,那么该数组就称为“T 数组”。例如,如果元素类型为 int,那么该数组的类型就是“int 数组”。然而,int 数组类型是不完整的类型,除非指定了数组元素的数量。如果一个 int 数组有 16 个元素,那么它就是一个完整的对象类型,即“16 个 int 元素数组”。
数组的定义决定了数组名称、元素类型以及元素个数。没有显式初始化操作的数组定义,其语法如下:
类型 名称[元素数量];