2023-2024-1 20231420 《计算机基础与程序设计》课程总结

发布时间 2024-01-04 22:39:46作者: 20231420

作业信息

这个作业属于哪个课程 2023-2024-1《计算机基础与程序设计》
这个作业要求在哪里 2023-2024-1计算机基础与程序设计第十五周作业
这个作业的目标 课程总结
作业正文 https://www.cnblogs.com/eleslsel/p/17946209.html

每周作业链接汇总

第一周

快速浏览一遍教材《计算机科学概论》,课本每章提出至少一个自己不懂的或最想解决的问题并在期末回答这些问题。

第二周

1.学习《计算机科学概论》第1章并完成云班课测试;2.学习《C语言程序设计》第1章并完成云班课测试。

第三周

1.学习《计算机科学概论》第2、3章并完成云班课测试;2.学习《C语言程序设计》第2章并完成云班课测试。

第四周

1.学习《计算机科学概论》第4、5章并完成云班课测试;2.学习《C语言程序设计》第3章并完成云班课测试。

第五周

1.学习《计算机科学概论》第6章并完成云班课测试;2.学习《C语言程序设计》第4章并完成云班课测试。

第六周

1.学习《计算机科学概论》第7章并完成云班课测试;2.学习《C语言程序设计》第5章并完成云班课测试。

第七周

1.学习《计算机科学概论》第8章并完成云班课测试;2.学习《C语言程序设计》第6章并完成云班课测试。

第八周

1.学习《计算机科学概论》第9章并完成云班课测试;2.学习《C语言程序设计》第7章并完成云班课测试。

第九周

1.学习《计算机科学概论》第10,11章并完成云班课测试;2.学习《C语言程序设计》第8章并完成云班课测试。

第十周

1.学习《计算机科学概论》第12,13,14章并完成云班课测试;2.学习《C语言程序设计》第9章并完成云班课测试。

第十一周

1.学习《计算机科学概论》第15,16章并完成云班课测试;2.学习《C语言程序设计》第10章并完成云班课测试。

第十二周

学习《C语言程序设计》第11章并完成云班课测试。

第十三周

学习《C语言程序设计》第12章并完成云班课测试。

第十四周

学习《C语言程序设计》第13章并完成云班课测试。

实验报告链接汇总

实验一

点击查看实验内容
基于云平台或者在本地创建虚拟机,并熟悉操作系统基本命令。完成下面的任务:(1)基于云平台或者在本地创建虚拟机;(2)熟悉操作系统基本命令;(3)熟悉C语言编译调试命令。

实验1熟悉Linux命令-1-Liinux命令

实验1熟悉Linux命令-2-gcc

实验1熟悉Linux命令-3-gdb

实验二

点击查看实验内容
计算机在教育中的应用常被称为计算机辅助教学(Computer-Assisted Instruction, CAI)。请编写一个程序来帮助小学生学习四则运算,按下列任务要求以循序渐进的方式编程。
(1)程序首先随机产生两个1~10之间的正整数,在屏幕上打印出问题,例如:
6*7=
然后让学生输入答案。程序检查学生输入的答案是否正确。若正确,则打印“Right”,然后问下一个问题;否则打印“Wrong! Please try again.”,然后提示学生重做,直到答对为止。
(2)在上述功能实现的基础之上,当学生回答错误时,最多给三次重做的机会,三次仍未做对,则提示“Wrong! You have tried three times! Test over!”,程序结束。
(3)在任务1的基础之上,连续做10道乘法运算题,不给机会重做,若学生回答正确,则显示“Right!”,否则显示“Wrong!”。10道题全部做完后,按每题10分统计并输出总分,同时为了记录学生能力提高的过程,再输出学生的回答正确率(即正确题数除以总题数的百分比)。
(4)在任务3的基础上,通过计算机随机产生10道四则运算题,两个操作数为1~10之间的随机数,运算类型为随机产生的加、减、乘、整除中的任意一种,不给机会重做,如果学生回答正确,则显示“Right!”,否则显示“Wrong!”。10道题全部做完后,按每题10分统计总得分,然后打印出总分和学生的回答正确率。
(5)在任务4的基础上,为使学生通过反复练习熟练掌握所学内容,在学生完成10道运算题后,若学生回答正确率低于75%,则重新做10道题,直到回答正确率高于75%时才退出程序。
(6)开发一个CAI系统所要解决的另一个问题是学生疲劳的问题。消除学生疲劳的一种办法就是通过改变人机对话界面来吸引学生的注意力。在任务5的基础上,使用随机数产生函数产生一个1~4之间的随机数,配合使用switch语句和printf()函数调用,来为学生输入的每一个正确或者错误的答案输出不同的评价。
对于正确答案,可以在以下4种提示信息中选择一个进行显示:
Very good!
Excellent!
Nice work!
Keep up the good work!
对于错误答案,可在以下4种提示信息中选择一个进行显示:
No. Please try again.
Wrong. Try once more.
Don’t give up!
Not correct. Keep trying.
点击查看代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int m,n,p,q,a,b,c,answer,randnum,randtwo,countone=0,counttwo=0,count=0,trueone=0,truetwo=0,rateone=0,ratetwo=0;
    char randchar;
    srand(time(NULL));
    m=rand()%9+1;
    n=rand()%9+1;
    p=m*n;
//    一道乘法运算(1)
    do
//        三次尝试机会(2)
    {
        printf("%d*%d=",m,n);
        scanf("%d",&q);
        if(p!=q&&countone<2)
            printf("Wrong!Please try again.\n");
        countone++;
    }
    while(p!=q&&countone<=2);
    if(p==q)
    {
        printf("Right!\n");
        do
//                十道乘法运算(3)
        {
            srand(time(NULL));
            a=rand()%9+1;
            b=rand()%9+1;
            answer=a*b;
            printf("%d * %d =",a,b);
            scanf("%d",&c);
            if(answer!=c)
                printf("Wrong!\n");
            else
            {
                printf("Right!\n");
                trueone++;
            }
            counttwo++;
        }
        while(counttwo<=9);
        rateone=trueone*10;
        printf("得分=%d\n正确率=%d%%\n",trueone,rateone);
        do
//                正确率低于75%重来(5)
        {
            do
//                十道四则运算(4)
            {
                srand(time(NULL));
                a=rand()%9+1;
                b=rand()%9+1;
                randnum=rand()%4;
                switch(randnum)
//                四个case来生成四则运算(4)
                {
                case 0:
                    randchar='+';
                    answer=a+b;
                    break;
                case 1:
                    randchar='-';
                    answer=a-b;
//                    小缺陷:答案可能是负数
                    break;
                case 2:
                    randchar='*';
                    answer=a*b;
                    break;
                case 3:
                    randchar='/';
                    answer=a/b;
//                    小缺陷:是整除
                    break;
                }
                printf("%d %c %d =",a,randchar,b);
                scanf("%d",&c);
                randtwo=rand()%4;
                switch(randtwo)
//                四个case来生成不同回应(6)
                {
                case 0:
                    if(answer!=c)
                        printf("No. Please try again.\n");
                    else
                    {
                        printf("Very good!\n");
                        truetwo++;
                    }
                    break;
                case 1:
                    if(answer!=c)
                        printf("Wrong. Try once more.\n");
                    else
                    {
                        printf("Excellent!\n");
                        truetwo++;
                    }
                    break;
                case 2:
                    if(answer!=c)
                        printf("Don’t give up!\n");
                    else
                    {
                        printf("Nice work!\n");
                        truetwo++;
                    }
                    break;
                case 3:
                    if(answer!=c)
                        printf("Not correct. Keep trying.\n");
                    else
                    {
                        printf("Keep up the good work!\n");
                        truetwo++;
                    }
                    break;
                }
                count++;
            }
            while(count<=9);
            ratetwo=truetwo*10;
            printf("得分=%d\n正确率=%d%%\n",truetwo,ratetwo);
            count=0;
            truetwo=0;
        }
        while(ratetwo<75);
    }
    else
        printf("Wrong! You have tried three times! Test over!\n");
    return 0;
}

实验三

考试。

实验四

点击查看实验内容
1.学生成绩管理系统V1.0
某班有最多不超过40人(具体人数由键盘输入)参加某门课程的考试,用数组作函数参数编程实现如下学生成绩管理:
(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分;
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
(5)按学号查询学生排名及其考试成绩;
(6)按优秀(90-100)、良好(80-89)、中等(70-79)、及格(60-69)、不及格(0-59)5个类别,统计每个类别的人数以及所占的百分比;
(7)输出每个学生的学号、考试成绩,课程总分和平均分。
2.学生成绩管理系统V1.1
在学生成绩管理系统V1.0的基础上,要求程序运行后先显示如下菜单,并提示用户输入选项:
(1)Append record
(2)Calculate total and average score of course
(3)Sort in descending order by score
(4)Sort in ascending order by number
(5)Search by number
(6)Statistic analysis
(7)List record
(8)Exit
点击查看代码
#include <stdio.h>
#include <stdlib.h>
int readscore(long xuehao[],float score[]);
//函数作用:录入每个学生的学号和考试成绩
float add(float score[],int n);
//函数作用:计算课程的总分
void paixuchengji(long xuehao[],float score[],int rank[],int n);
//函数作用:按成绩由高到低排出名次表
void paixuxuehao(long xuehao[],float score[],int rank[],int n);
//函数作用:按学号由小到大排出成绩表
void write(long xuehao[],float score[],int rank[],int n);
//函数作用:输出每个学生的学号、考试成绩、排名
void sortt(float score[],int sort[],int n);
//函数作用:统计每个类别的人数以及所占的百分比
void search(long xuehao[],float score[],int rank[],int n);
//函数作用:按学号查询学生排名及其考试成绩
int main()
{
    int n,rank[40],sort[5],choose;
    long xuehao[40];
    float score[40],total,aver;
    printf("(1)Append record\n(2)Calculate total and average score of course\n(3)Sort in descending order by score\n(4)Sort in ascending order by number\n(5)Search by number\n(6)Statistic analysis\n(7)List record\n(8)Exit\n");

    do
    {
        printf("Please choose one:");
        scanf("%d",&choose);

        switch(choose)
        {
        case 1:
        {
            n=readscore(xuehao,score);
            paixuchengji(xuehao,score,rank,n);
            printf("%d\n",n);
            break;
        }
        case 2:
        {
            total=add(score,n);
            aver=total/n;
            printf("total:%f\naver:%f\n",total,aver);
//语句作用:计算、输出课程总分和平均分
            break;
        }
        case 3:
        {
            printf("by score\n");
            paixuchengji(xuehao,score,rank,n);
            write(xuehao,score,rank,n);
            break;
        }
        case 4:
        {
            paixuxuehao(xuehao,score,rank,n);
            printf("by xuehao\n");
            write(xuehao,score,rank,n);
            break;
        }
        case 5:
        {
            search(xuehao,score,rank,n);
            break;
        }
        case 6:
        {
            sortt(score,sort,n);
            break;
        }
        case 7:
        {

            printf("by score\n");
            write(xuehao,score,rank,n);
            printf("total:%f\naver:%f\n",total,aver);
            break;
        }
        }

    }
    while(choose!=8);
    return 0;
}


int readscore(long xuehao[],float score[])
{
    int students,i=0;
    printf("student number:");
    scanf("%d",&students);
    for(i=0; i<students; i++)
    {
        printf("xuehao and score:");
        scanf("%ld,%f",&xuehao[i],&score[i]);
        getchar();
    }
    return students;
}


float add(float score[],int n)
{
    int i=0;
    float total=0;
    for(i=0; i<n; i++)
    {
        total+=score[i];
    }
    return total;
}


void paixuchengji(long xuehao[],float score[],int rank[],int n)
{
    int i=0,j=0;
    long tempx;
    float temps;
    for(j=0; j<n-1; j++)
    {
        for(i=0; i<n-1-j; i++)
        {
            if(score[i]<score[i+1])
            {
                temps=score[i];
                score[i]=score[i+1];
                score[i+1]=temps;
                tempx=xuehao[i];
                xuehao[i]=xuehao[i+1];
                xuehao[i+1]=tempx;
            }
        }
    }
    for(i=0; i<n; i++)
        rank[i]=i+1;
}

void paixuxuehao(long xuehao[],float score[],int rank[],int n)
{
    int i=0,j=0,tempr;
    long tempx;
    float temps;
    for(j=0; j<n-1; j++)
    {
        for(i=0; i<n-1-j; i++)
        {
            if(xuehao[i]>xuehao[i+1])
            {
                temps=score[i];
                score[i]=score[i+1];
                score[i+1]=temps;
                tempx=xuehao[i];
                xuehao[i]=xuehao[i+1];
                xuehao[i+1]=tempx;
                tempr=rank[i];
                rank[i]=rank[i+1];
                rank[i+1]=tempr;
            }
        }
    }
}


void write(long xuehao[],float score[],int rank[],int n)
{
    int i=0;
    for(i=0; i<n; i++)
        printf("xuehao:%ld,score:%f,rank:%d\n",xuehao[i],score[i],rank[i]);
}

void sortt(float score[],int sort[],int n)
{
    int i=0;
    sort[0]=sort[1]=sort[2]=sort[3]=sort[4]=0;
    for(i=0; i<n; i++)
    {
        if(score[i]>=90)
            sort[0]++;
        else if(score[i]>=80)
            sort[1]++;
        else if(score[i]>=70)
            sort[2]++;
        else if(score[i]>=60)
            sort[3]++;
        else
            sort[4]++;
    }
    printf("youxiu   :%d,rate:%f\n",sort[0],sort[0]/(float)n);
    printf("lianghao :%d,rate:%f\n",sort[1],sort[1]/(float)n);
    printf("zhongdeng:%d,rate:%f\n",sort[2],sort[2]/(float)n);
    printf("jige     :%d,rate:%f\n",sort[3],sort[3]/(float)n);
    printf("bujige   :%d,rate:%f\n",sort[4],sort[4]/(float)n);
}


void search(long xuehao[],float score[],int rank[],int n)
{
    int i,w=0;
    long l;
    printf("xuehao:");
    scanf("%ld",&l);
    for(i=0; i<n; i++)
    {
        if(xuehao[i]==l)
            w=i;
    }
    if(w==0)
        printf("NOT FOUND!\n");
    else
        printf("score:%f,rank:%d\n",score[w],rank[w]);
}

实验五

考试。

实验六

点击查看实验内容
1.学生成绩管理系统V2.0
学生成绩管理系统是一个非常实用的程序,如果能够把用户输入的数据存盘,下次运行时读出,就更有用了。
某班有最多不超过40人(具体人数由键盘输入)参加期末考试,考试科目为数学(MT)、英语(EN)和物理(PH)。利用结构体编程实现如下菜单驱动的学生成绩管理系统:
(1)录入每个学生的学号、姓名和各科考试成绩;
(2)计算每个学生的总分和平均分;
(3)按每个学生的总分由低到高排出名次表;
(4)按姓名的字典顺序排出成绩表;
(5)按姓名查询学生排名及其考试成绩;
(6)将每个学生的记录信息写入文件,包括每个学生的学号、姓名,各科考试成绩,以及其总分与平均分;
(7)从文件中读出每个学生的记录信息并显示。
要求程序运行后先显示如下菜单,并提示用户输入选项:
1.Append record
2.Caculate total and average score of every student
3.Sort in ascending order by total score of every student
4.Sort in dictionary order by name
5.Search by name
6.Write to a file
7.Read from a file
0.Exit
Please enter your choice:
然后,根据用户输入的选项执行相应的操作。
点击查看代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct student
{
    long id;
    char name[10];
    int scoremt;
    int scoreen;
    int scoreph;
    int total;
    float ave;
} STUDENT;

void write_menu();
int read_information(STUDENT *pt);
void calculate_total_and_average(STUDENT *pt,int n);
void sort_by_score(STUDENT *pt,int n);
void sort_by_name(STUDENT *pt,int n);
void write_information(STUDENT *pt,int n);
void search_by_name(STUDENT *pt,int n);
void write_to_file(STUDENT *pt,int n);
void file_to_screen(STUDENT *pt,int n);

int main()
{
    int choice,student_number;
    STUDENT stu[40];
    STUDENT *ps=stu;
    write_menu();
    do
    {
        printf("Please enter your choice:");
        scanf("%d",&choice);
        switch(choice)
        {
        case 1:
        {
            student_number=read_information(ps);
            break;
        }
        case 2:
        {
            calculate_total_and_average(ps,student_number);
            break;
        }
        case 3:
        {
            sort_by_score(ps,student_number);
            write_information(ps,student_number);
            break;
        }
        case 4:
        {
            sort_by_name(ps,student_number);
            write_information(ps,student_number);
            break;
        }
        case 5:
        {
            sort_by_score(ps,student_number);
            search_by_name(ps,student_number);
            break;
        }
        case 6:
        {
            write_to_file(ps,student_number);
            break;
        }
        case 7:
        {
            file_to_screen(ps,student_number);
            write_information(ps,student_number);
            break;
        }
        case 9:
        {
            write_information(ps,student_number);
            break;
        }
        }
    }
    while(choice!=0);
    return 0;
}

void write_menu()
{
    printf("1.Append record\n");
    printf("2.Caculate total and average score of every student\n");
    printf("3.Sort in ascending order by total score of every student\n");
    printf("4.Sort in dictionary order by name\n");
    printf("5.Search by name\n");
    printf("6.Write to a file\n");
    printf("7.Read from a file\n");
    printf("0.Exit\n");
}

int read_information(STUDENT *pt)
{
    int n,i;
    printf("How many students?\n");
    scanf("%d",&n);
    for(i=0; i<n; i++)
    {
        printf("For student %d\n",i+1);
        printf("input id:");
        scanf("%ld",&(*pt).id);
        printf("input name:");
        scanf("%s",&(*pt).name);
        printf("input score math,English,physics:");
        scanf("%d,%d,%d",&(*pt).scoremt,&(*pt).scoreen,&(*pt).scoreph);
        pt++;
    }
    return n;
}

void calculate_total_and_average(STUDENT *pt,int n)
{
    int i;
    for(i=0; i<n; i++)
    {
        (*pt).total=(*pt).scoremt+(*pt).scoreen+(*pt).scoreph;
        (*pt).ave=(*pt).total/3.0;
        pt++;
    }
}

void sort_by_score(STUDENT *pt,int n)
{
    STUDENT temp;
    int i,j,ji;
    for(i=0; i<n-1; i++)
    {
        ji=i;
        for(j=i+1; j<n; j++)
        {
            if((*(pt+ji)).total<(*(pt+j)).total)
                ji=j;
        }
        temp=(*(pt+i));
        (*(pt+i))=(*(pt+ji));
        (*(pt+ji))=temp;
    }
}

void sort_by_name(STUDENT *pt,int n)
{
    STUDENT temp;
    int i,j,ji;
    for(i=0; i<n-1; i++)
    {
        ji=i;
        for(j=i+1; j<n; j++)
        {
            if(strcmp((*(pt+ji)).name,(*(pt+j)).name)>0)
                ji=j;
        }
        temp=(*(pt+i));
        (*(pt+i))=(*(pt+ji));
        (*(pt+ji))=temp;
    }
}

void write_information(STUDENT *pt,int n)
{
    int i;
    for(i=0; i<n; i++)
    {
        printf("student %d:",i+1);
        printf("id:%ld,name:%s,",(*pt).id,(*pt).name);
        printf("math:%d,English:%d,physics:%d,",(*pt).scoremt,(*pt).scoreen,(*pt).scoreph);
        printf("total:%d,average:%f\n",(*pt).total,(*pt).ave);
        pt++;
    }
}

void search_by_name(STUDENT *pt,int n)
{
    char searchname[10];
    int i,ji=-1;
    printf("name:");
    scanf("%s",&searchname);
    for(i=0; i<n; i++)
    {
        if(strcmp((*(pt+i)).name,searchname)==0)
        {
            ji=i;
            pt+=i;
            printf("student %d:",i+1);
            printf("id:%ld,name:%s,",(*pt).id,(*pt).name);
            printf("math:%d,English:%d,physics:%d,",(*pt).scoremt,(*pt).scoreen,(*pt).scoreph);
            printf("total:%d,average:%f,",(*pt).total,(*pt).ave);
            printf("rank:%d\n",i+1);
        }
    }
    if(ji==-1)
        printf("NOT FOUND!\n");
}

void write_to_file(STUDENT *pt,int n)
{
    FILE *fp;
    if((fp=fopen("student.txt","w"))==NULL)
    {
        printf("Failure to open student.txt!\n");
        exit(0);
    }
    fwrite(pt,sizeof(STUDENT),n,fp);
    fclose(fp);
}

void file_to_screen(STUDENT *pt,int n)
{
    int i;
    FILE *fp;
    if((fp=fopen("student.txt","r"))==NULL)
    {
        printf("Failure to open student.txt!\n");
        exit(0);
    }
    for(i=0; i<n; i++)
    {
        fread(pt+i,sizeof(STUDENT),1,fp);
    }
    fclose(fp);
}

实验七

点击查看实验内容

实验八

点击查看实验内容

关于第1周作业的整体评价

回答第1周作业中提出的问题

课程收获与不足

自己的收获(投入,效率,效果等)
自己需要改进的地方
如果有结对,写一下你提供的帮助或接受了什么帮助,并对老师提供参考建议

给开学初的你和学弟学妹们的学习建议

问卷调查

问题 回答
你平均每周投入到本课程多长时间? --
每周的学习效率有提高吗? --
学习效果自己满意吗? --
课程结束后会继续一周至少一篇博客吗? --
你觉得这门课老师应该继续做哪一件事情? --
你觉得这门课老师应该停止做哪一件事情? --
你觉得这门课老师应该开始做什么新的事情? --

本文链接和二维码

本文链接:https://www.cnblogs.com/eleslsel/p/17946209.html

二维码: