学了一学期C语言,期末老师出了道大的程序设计题,我实在无法完成,请各位C编程高手指点不才,不胜感激。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学了一学期C语言,期末老师出了道大的程序设计题,我实在无法完成,请各位C编程高手指点不才,不胜感激。相关的知识,希望对你有一定的参考价值。

1. 定义一个函数void getScore(int a[],int n);用于保存从键盘输入的n个成绩。
2. 定义一个函数为void sort(int a[],int n),进行n个学生成绩从高到低排名。
3. 改进第二步的函数为void sort(int a[],int n, char style);将n个学生成绩排序,排序方式根据sort()函数的style参数进行,如style为‘a’按升序排,style为’d’按降序排。
4. 定义一个查找函数int foundScore(int a[],int n,int score);要求:查找成功返回数组下标值,否则返回-1。
5. 定义一个插入函数void insertScore(int a[],int *n,int score);n是数组中实际存放成绩的个数,要求将score插入到最后一个成绩的后面(提示:插入前判断数组是否已满)。
6. 定义一个删除函数void deleteScore(int a[],int *n,int score);n是数组中实际存放成绩的个数,要求将数组中成绩为score元素删除(提示:删除前判断数组是否空)。
7. 定义一个输出函数void displayScore(int a[],int n);要求:输出数组中所有成绩。
8. 将上述功能通过菜单组织起来,要求程序运行时先显示一个菜单,通过菜单项选择对应功能。菜单中应包含退出选项。

#include <stdio.h>
#include <windows.h>
#define BUFFER 100

void getScore(int a[],int n);
void sort(int a[],int n);
void sort(int a[],int n, char style);
int foundScore(int a[],int n,int score);
void insertScore(int a[],int *n,int score);
void deleteScore(int a[],int *n,int score);
void displayScore(int a[],int n);
void main_menu();

int score[BUFFER]=-1; //-1 表示没有成绩

void getScore(int a[],int n)

for (int i=0;i!=n;++i)

printf("请输入第%d个成绩:\n",i+1);
scanf("%d",&a[i]);



void sort(int a[],int n)

printf("从高到低排序\n");
for (int j=0;j!=n-1;++j)

for (int i=0;i!=n-1-j;++i)

if (a[i]<a[i+1])

int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;



printf("排序后输出:\n");
for (int i=0;i!=n;++i)

printf("%d\n",a[i]);



void sort(int a[],int n, char style)

if (style=='a')

printf("按升序排序\n");
for (int j=0;j!=n-1;++j)

for (int i=0;i!=n-1-j;++i)

if (a[i]>a[i+1])

int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;



printf("排序后输出:\n");
for (int i=0;i!=n;++i)

printf("%d\n",a[i]);


else if (style=='b')

printf("按降序排序\n");
for (int j=0;j!=n-1;++j)

for (int i=0;i!=n-1-j;++i)

if (a[i]<a[i+1])

int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;



printf("排序后输出:\n");
for (int i=0;i!=n;++i)

printf("%d\n",a[i]);


else

printf("输出错误");



int foundScore(int a[],int n,int score)

for (int i=0;i!=n;++i)

if (a[i]==score)

printf("你要查找的成绩%d下标是:%d",a[i],i);
break;


if (i==n)

printf("没有找到\n");
return -1;

return i;


void insertScore(int a[],int *n,int score)

if (BUFFER>*n)

a[++(*n)]=score;
printf("%d",a[*n]);
printf("插入成功\n");

else

printf("数组已满\n");




void deleteScore(int a[],int *n,int score)

if (*n!=0)

int temp=foundScore(a,*n,score);
for (;temp!=*n;++temp)

a[temp]=a[temp+1];

*n--;
printf("删除成功\n");

else

printf("数组是空的\n");



void displayScore(int a[],int n)

printf("输出所有成绩:\n");
for (int i=0;i!=n;++i)

printf("%d\n",a[i]);



int main_menu(int choice)

printf("\n\n\t\t\t 学生成绩管理\n");
printf("\t\t\t1、输入成绩\n");
printf("\t\t\t2、成绩从高到低排名\n");
printf("\t\t\t3、成绩排名\n");
printf("\t\t\t4、成绩查找\n");
printf("\t\t\t5、成绩插入\n");
printf("\t\t\t6、成绩删除\n");
printf("\t\t\t7、输出成绩\n");
printf("\t\t\t0、退出\n");
printf("\t\t 你的输入:");
scanf("%d",&choice);
return choice;

int main()

int choice=0;
int flag=0;
int num=0,temp;
char way;
while(1)

system("cls");
switch (main_menu(choice))

case 1:
system("cls");
printf("请输入要输入的成绩个数:");
scanf("%d",&num);
getScore(score,num);
system("pause");
break;
case 2:
system("cls");
sort(score,num);
system("pause");
break;
case 3:
system("cls");
printf("请输入排序方式:\ta==升序\tb==降序\n");
fflush(stdin); //清除缓冲
scanf("%c",&way);
sort(score,num,way);
system("pause");
break;
case 4:
system("cls");
printf("请输入你要查找的成绩:");
fflush(stdin);
scanf("%d",&temp);
foundScore(score,num,temp);
system("pause");
break;
case 5:
system("cls");
printf("请输入你要插入的成绩:");
fflush(stdin);
scanf("%d",&temp);
insertScore(score,&num,temp);
system("pause");
break;
case 6:
system("cls");
printf("请输入你要删除的成绩:");
fflush(stdin);
scanf("%d",&temp);
deleteScore(score,&num,temp);
system("pause");
break;
case 7:
system("cls");
displayScore(score,num);
system("pause");
break;
case 0:
flag=1;
break;

if (flag)

system("cls");
printf("感谢使用!");
break;



return 0;
参考技术A 没有时间帮你改
我这里有个以前交的作业
如果你真学过C
那应该是可以看懂的
自己改改吧
这个是用链表做的

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN sizeof(struct student)

struct student

char xh[12]; //学号 主键
char xm[12]; //姓名
int sxcj; //数学成绩
int cxsj; //程序设计成绩
int zf; //总分
struct student *next; //指向下条记录
struct student *prev; //指向上条记录
;
struct student *head=NULL; //链表头指针,定义为全局变量
struct student *tail=NULL; //链表尾指针,定义为全局变量
struct student *current=NULL; //链表结点指针,定义为全局变量
int nodes; //接点数

void orderprint()

struct student *p;
p=head;
if(head==NULL)

printf("\n没有记录!");

else

printf("\n");
do

printf("%12s%12s%4d%4d%4d\n",p->xh,p->xm,p->sxcj,p->cxsj,p->zf);
p=p->next;

while(p!=NULL);



void order(int tag)
void save(int); //save函数申明
int i,min,nodes1=0;
struct student *head1,*tail1,*p;
if(head==NULL)

printf("\n没有找到记录!\n");

else

for(i=0;i<nodes;i++)

p=head;
current=NULL;
if(tag==1)

min=p->sxcj;
do

if(p->sxcj<=min)

min=p->sxcj;
current=p;

p=p->next;

while(p!=NULL);

if(tag==2)

min=p->cxsj;
do

if(p->cxsj<=min)

min=p->cxsj;
current=p;

p=p->next;

while(p!=NULL);

if(tag==3)

min=p->zf;
do

if(p->zf<=min)

min=p->zf;
current=p;

p=p->next;

while(p!=NULL);

if(current==head) //老链表中去掉该节点

head=head->next;
if(head!=NULL)

head->prev=NULL;


else if(current==tail)

tail=tail->prev;
tail->next=NULL;

else

(current->prev)->next=current->next;
(current->next)->prev=current->prev;


if(nodes1==0) //插入新的链表

head1=current;
tail1=current;
current->prev=NULL;
current->next=NULL;
nodes1+=1;

else

current->prev=tail1;
tail1->next=current;
tail1=current;
tail1->next=NULL;
nodes1+=1;



head=head1;
tail=tail1;
nodes=nodes1;
head1=NULL;
tail1=NULL;
current=NULL;
orderprint();
save(tag);


void load() //读取记录

int i;
FILE *fp;
struct student *p;
fp=fopen("nodes.txt","r");
fscanf(fp,"%d",&nodes);
fclose(fp);
fp=fopen("students.txt","rb");
if(fp==NULL)

printf("\n\n载入记录失败!\n");

else

for(i=0;i<nodes;i++)

p=(struct student * )malloc(LEN);
fread(p,LEN,1,fp);
if(i==0)

head=p;
tail=p;
head->prev=NULL;
tail->next=NULL;

else

p->prev=tail;
tail->next=p;
tail=p;
tail->next=NULL;


printf("\n\n成功载入记录!\n");



void save(int tag) //记录存入文件

int i;
struct student *p;
FILE *fp;
if(tag==1)

fp=fopen("sxcj.txt","wb");

if(tag==2)

fp=fopen("cxsj.txt","wb");

if(tag==3)

fp=fopen("zf.txt","wb");

if(tag==7)

fp=fopen("students.txt","wb");

p=head;
if(fp==NULL)

printf("\n\n保存失败!\n");

else

do

if(fwrite(p,LEN,1,fp)!=1)

printf("file write error\n");

p=p->next;

while(p!=NULL);

fclose(fp);
fp=fopen("nodes.txt","w");
if(fp==NULL)

printf("\n\n节点数保存失败!\n");

else

fprintf(fp,"%d",nodes);

fclose(fp);
current=NULL;


int select(struct student *p1) //查询

struct student *p;
p=head;
current=NULL;
if(p==NULL)

return 1;

else

do

if(strcmp(p->xh,p1->xh)==0)

current=p; //记录符合记录的位置
return 0;

p=p->next;

while(p!=NULL);
return 1;



void selectbyxh() //学号查询

struct student *p;
p=(struct student * )malloc(LEN);
printf("\n请输入需要查找的学生的学号:");
scanf("%s",p->xh);
if(select(p))

printf("\n未找到该学生的信息!");

else

printf("\n%12s%12s%4d%4d%4d\n",current->xh,current->xm,current->sxcj,current->cxsj,current->zf);



void selectbyxm() //姓名查询

struct student *p,*p1;
p1=(struct student * )malloc(LEN);
printf("\n请输入需要查找的学生的姓名:");
scanf("%s",p1->xm);
p=head;
current=NULL;
if(p==NULL)

printf("\n未找到记录!\n");

else

do

if(strcmp(p->xm,p1->xm)==0)

current=p; //记录查找到的位置
printf("\n%12s%12s%4d%4d%4d\n",p->xh,p->xm,p->sxcj,p->cxsj,p->zf);

p=p->next;

while(p!=NULL);



void selectbysxcj() //数学成绩查询

struct student *p,*p1;
int tag=0; //标记
p1=(struct student * )malloc(LEN);
printf("\n请输入数学成绩:");
scanf("%d",&p1->sxcj);
p=head;
if(p==NULL)

printf("\n未找到成绩大于%d的同学!\n",p1->sxcj);

else

do

if(p->sxcj>=p1->sxcj)

printf("\n%12s%12s%4d%4d%4d\n",p->xh,p->xm,p->sxcj,p->cxsj,p->zf);
tag=1;

p=p->next;

while(p!=NULL);
if(tag==0)

printf("\n未找到数学成绩大于等于%d的同学!\n",p1->sxcj);




void selectbycxsj() //程序设计成绩查询

struct student *p;
struct student *p1;
int tag=0; //标记
p1=(struct student *)malloc(LEN);
printf("\n请输入程序设计成绩:");
scanf("%d",&(p1->cxsj));
p=head;
if(p==NULL)

printf("\n未找到成绩大于%d的同学!\n",p1->cxsj);

else

do

if(p->cxsj>=p1->cxsj)

printf("\n%12s%12s%4d%4d%4d\n",p->xh,p->xm,p->sxcj,p->cxsj,p->zf);
tag=1;

p=p->next;

while(p!=NULL);
if(tag==0)

printf("\n未找到程序设计大于等于%d的同学!\n",p1->cxsj);




void selectbyzf() //总分查询

struct student *p;
struct student *p1;
int tag=0; //标记
p1=(struct student * )malloc(LEN);
printf("\n请输入总分:");
scanf("%d",&p1->zf);
p=head;
if(p==NULL)

printf("\n未找到总分大于等于%d的同学!\n",p1->zf);

else

do

if(p->zf>=p1->zf)

printf("\n%12s%12s%4d%4d%4d\n",p->xh,p->xm,p->sxcj,p->cxsj,p->zf);
tag=1; //修改标记

p=p->next;

while(p!=NULL);
if(tag==0)

printf("\n未找到总分大于等于%d的同学!\n",p1->zf);




void addstudent() //添加学生

struct student *p;
printf("\n请按照:学号 姓名 数学成绩 程序设计成绩 结束请输入0!\n");
p=(struct student * )malloc(LEN);
scanf("%s%s%d%d",p->xh,p->xm,&(p->sxcj),&(p->cxsj));
(p->zf)=(p->sxcj)+(p->cxsj);
if(nodes==0)

head=p;
tail=p;
p->prev=NULL;
p->next=NULL;
nodes+=1;

else

if(select(p))

p->prev=tail;
tail->next=p;
tail=p;
tail->next=NULL;
nodes+=1;

else

printf("\n请不重复录入学号为");
puts(p->xh);
printf("学生的成绩!\n");





void delstudent() //删除记录

struct student *p;
current=NULL;
p=(struct student * )malloc(LEN);
printf("\n请输入需要删除的学生的学号:");
scanf("%s",p->xh);
if(select(p))

printf("\n\n数据库中未找到该学生资料!\n");

else

if(current==head) //在链表表头找到学生

head=current->next;
if(head!=NULL)

head->prev=NULL;


free(current);
printf("\n删除成功!\n");
orderprint();

else if(current==tail) //在链表表尾找到学生

tail=current->prev;
tail->next=NULL;
free(current);
printf("\n删除成功!\n");
orderprint();

else

(current->prev)->next=current->next;
(current->next)->prev=current->prev;
free(current);
printf("\n删除成功!\n");
orderprint();

nodes-=1;

current=NULL;



void creatnewlist()

int goon=1;
nodes=0;
while(1)

if(goon)

addstudent();
printf("\n继续输入请按1、输入完成请按0:\n");
scanf("%d",&goon);

else

break;





void main()

load();
int menu; //1级菜单
int menu1; //2级菜单
int menu2; //2级菜单
while(1)

printf("\n1.新建数据 2.添加数据 3.删除数据 4.查看记录 5.排序 6查询 7.退出\n");
printf("\n请选择:");
scanf("%d",&menu);
if(menu==1)

creatnewlist();

else if(menu==2)

addstudent();

else if(menu==3)

delstudent();

else if(menu==4)

orderprint();

else if(menu==5)

while(1)

printf("\n1.数学成绩排序 2.程序设计成绩排序 3.总分排序。4.返回主菜单\n");
printf("\n请选择:");
scanf("%d",&menu1);
if(menu1==1)

order(menu1);

else if(menu1==2)

order(menu1);


else if(menu1==3)

order(menu1);

else if(menu1==4)

break;



else if(menu==6)

while(1)

printf("\n1.按学号查询 2.按姓名查询 3.按数学成绩查询。4.按程序设计成绩查询 5.按总分查询 6.返回主菜单\n");
printf("\n请选择查询方式:");
scanf("%d",&menu2);
if(menu2==1)

selectbyxh();

else if(menu2==2)

selectbyxm();

else if(menu2==3)

selectbysxcj();

else if(menu2==4)

selectbycxsj();

else if(menu2==5)

selectbyzf();

else if(menu2==6)

break;



else if(menu==7)

if(nodes!=0)

save(menu);

exit(0);

else

printf("\n请重新选择:\n");



参考技术B #include <stdio.h>
#include <stdlib.h>
#define MAX 100//数组最大边界值
void getScore(int a[],int n)

int i;
for(i=0; i<n; i++)
scanf("%d",&a[i]);

/*
void sort(int a[],int n)

int i,j,k;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)

if(a[i]<a[j])

k=a[i];
a[i]=a[j];
a[j]=k;


*/
void sort(int a[],int n,char style)//改进后

int i,j,k;
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)

if((style=='a' && a[i]<a[j]) || (style=='d' && a[i]>a[j]))

//判断升降序
k=a[i];
a[i]=a[j];
a[j]=k;



int foundScore(int a[],int n,int score)

int i;
for(i=0; i<n; i++)
if(a[i]==score)return i;
return -1;

void insertScore(int a[],int *n,int score)

if(*n>MAX)printf("数组已满!\n");
else a[(*n)++]=score;

void deleteScore(int a[],int *n,int score)

int s,i;
if(*n<0)printf("数组为空!\n");
else

s=foundScore(a,*n,score);
if(s>=0)

for(i=s; i<*n-1; i++)a[i]=a[i+1];
(*n)--;

else printf("未找到成绩为%d的元素",score);


void displayScore(int a[],int n)

int i;
for(i=0; i<n; i++)printf("%d ",a[i]);
printf("\n");

int main()

int a[MAX],tag,n,score;
char style;
while(1)

printf("1,输入学生成绩\n2,学生成绩排序\n3,插入学生成绩\n4,删除学生成绩\n5,显示学生成绩\n6,退出\n");
scanf("%d",&tag);
switch(tag)

case 1:
printf("请输入学生成绩数量\n");
scanf("%d",&n);
printf("请输入学生成绩\n");
getScore(a,n);
break;
case 2:
printf("请输入排序标识,升序为a,降序为d\n");
//while((style=getchar())!='\n');//如果是输一个数值就按回车,请加上这一行
scanf("%c",&style);
sort(a,n,style);
break;
case 3:
printf("请输入要插入的成绩!\n");
scanf("%d",&score);
insertScore(a,&n,score);
break;
case 4:
printf("请输入要删除的成绩\n");
scanf("%d",&score);
deleteScore(a,&n,score);
break;
case 5:
displayScore(a,n);
break;
case 6:
break;
default:
printf("未识别标识,请重新输入\n");

if(tag==6)break;
if(tag!=5)system("cls");

return 0;

//此代码未经严格测试,请慎重选择
参考技术C 貌似不难,只是我电脑上连软件都没装,也忘记罗,等其他人帮你解答吧,不过,估计,没人帮忙写这么多 参考技术D 哎…………看到这些东西才知道STL是多么的方便高效

期末作品检查

1.个人期末总结

这学期杜云梅老师教的信息系统管理和网站设计,我从中学到了好多,学会了如何设计首页页面,注册页面以及注册功能,登录页面以及登录功能。还学会了设计个人中心,其中包含了全部问答、全部评论以及个人信息等等。在上半学期,老师教导的是管理信息系统理论课以及引导我们初步了解python,在老师的一步步引导下,我对python越来越了解,也越来越感受到用pycharm设计网页的好处。还学习了turtle库,在这个库里学会了如何运用条件if语句,循环语句来画出了一个五角星,还画出中国五星红旗。随后欧也学了一些字符串的操作和用字符串编码,还了解了凯撒密码和格式化输出,还学会对列表、元组、字典和集合进行区分。还学会了对词语出现的频率的统计,datatime日期和时间的格式化方法,日期与字符串之间的转换,datatime的加减。而到了中学期,就开始学习web开发基础,认识了HTML这种用来描述网页的语言。也就是超文本标记语言,HTML使用标签来描述网页,HTML文档也叫web页面,从中也学习到适用于大多数HTML元素的属性有class、id、style、title。HTML的<span>元素是内联元素,可用作文本的容器,这个标签对文档中的行内元素进行组合,提供了一种将文本的一部分或者文档的一部分独立出来的方式。而HTML<div>元素是块级元素,它用于组合其他HTML元素的容器,还可以用于文档布局。HTML表单是一个包含表单元素的区域,用于搜集不同类型的用户的输入。而<nav>则是标签定义导航链接的部分,再接着就是学了CSS基础,使用CSS同时控制多重网页的样式和布局,其中也有内联样式,内嵌样式和外部样式。CSS的float指一个盒子是否应该浮动,其周围的元素也会重新排列。再接着就是学习了JavaScript基础,这是一种轻重级的、web编程、脚本语言,这些语句是发给浏览器的命令,HTML中的脚本必须在<script>与</script>标签之间,也可以把脚本保存到外部js文件中,从中也学习了JavaScript没有任何打印或者输出的函数。在下半学期就开始在最初设计的简陋的页面添加功能。开始做Flask项目和加载静态文件,学会连接数据库和在数据库里面创建用户数据,通过用户模式对数据库进行增删查改功能。随后完成注册和登录功能,在注册和登录里面要求设计密码要超过6位,可是在用户那里与js文件里面的单词没有对应上,因此这个功能无法实现,所以我学会了不仅仅要好好打代码,也要对里面的代码所对应的部分要好好检查,而且打好一部分代码就试着去实现它,这样子一步步来就可以容易找出错误。登录之后就更新了导航,用上下文处理器定义函数。在首页功能里用for循环显示每一条数据,还要弄问答功能,问答详情页,如何弄里面的评论,还有个人中心显示、个人中心标签页导航,完成个人中心--导航标签,以及实现搜索功能评论功能等,美中不足的是里面的CSS样式弄得还不够漂亮,里面的框框都没有做到完全居中。最后直接在网页中的检查元素里面修改,一步步做到最好,以做到这个网页的更加完美。

 

2.总结Python+Flask+MysqL的web建设技术过程,标准如下:

python: 是一种面向对象、解释型计算机程序设计语言,Python 源代码同样遵循 GPL(GNU General Public License)协议。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。它的主要特点是简单,Python是一种代表简单主义思想的语言。易学,Python极其容易上手,因为Python有极其简单的语法,解释性和面向对象。可移植,跨平台,可嵌入(使 ArcGIS 可脚本化),稳定成熟,用户社区规模大。

Flask:Flask是一个使用 Python 编写的轻量级 Web 应用框架。其WSGI工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask也被称为 "microframework" ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。它的特点有自带开发用服务器和debugger、集成单元测试 (unit testing)、RESTful request dispatching、支持 secure cookies (client side sessions)、100% WSGI 1.0 兼容、Unicode based、详细的文件、教学、可用 Extensions 增加其他功能。Flask对于那些开发小项目、需要快速制作一个简单的python支撑的网站的开发者很有用,它提供小型的统一工具,或者在已有的API上构建的简单网络接口。

# from http://flask.pocoo.org/ tutorial

from flask import Flask

app = Flask(__name__)

@app.route("/") # take note of this decorator syntax, it‘s a common pattern

def hello():

    return "Hello World!"

if __name__ == "__main__":

app.run()

MYSQL:Mysql不支持事务处理,没有视图,没有存储过程和触发器,没有数据库端的用户自定义函数,不能完全使用标准的SQL语法。Mysql是一个关系型数据库,MYSQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。Mysql所使用的SQL语言是用于访问数据库的最常用的标准化语言。其特点有体积小、速度快、总体拥有成本低、尤其是开放源码。

在这学期学的仅仅是基础,而在这方面的发展中,我也将继续加深对python的学习,学习python里面的更多功能,在设计网页方面,也要努力学习以便实现更多的例如个人页面、点赞以及收藏等功能。我也在这学期中学习到对于代码其实并不要对其恐惧,要学会对代码进行检查、找错然后进一步完善代码。

 

以上是关于学了一学期C语言,期末老师出了道大的程序设计题,我实在无法完成,请各位C编程高手指点不才,不胜感激。的主要内容,如果未能解决你的问题,请参考以下文章

谷歌2017面经题集

期末作品检查

计算机二级C语言考试中,后面三道大题需要自己修改或者填写里面的部分程序,考试的时候能不能修改好了之

2019年下C语言课程学期总结

大一下学期的自我目标

ACM程序设计学期总结