高级语言程序设计课程设计报告

时间:2024.5.9

  

高级语言程序设计课程设计

题目:

专     业计算机与信息与科学系               

班     级计算机1105               

学     生裴和平               

学     号 3110307518               

指导教师  鲍春波蒋建辉陈乐       

起止时间  2012.2.13——2012.2.17               

        

                      _2012__年 _02___月

题目1:写一个函数计算下列函数的值f(0),f(3),f(-3)。测试之

   

实现代码:

/*

 *函数功能:计算下列函数的值f(0),f(3),f(-3)

 *入口参数:定义域 X,值域y

 *返回值:y

 */

 #include<stdio.h>

 int func(int x);

 int main()

{

     int x;

     while(scanf("%d",&x)!=EOF)

     {

       printf("%d\n",func(x));

     }

       return 0;

 }

int func(int x)

{

    int y;

    if(x > 0)

    {

        y=3*x*x-4;

    }

    else if(x == 0)

    {

        y=2;

    }

    else

    {

        y=0;

    }

    return y;

}

//本题的的目的是学会判断语句的使用,以及如何连续输入。

题目2:写一个函数可以打印下面的图案

                      

       *

      ***

     *****

*******

 *****

  ***

   *

   要求每个打印语句只打印一个*号 ,测试之

实现代码:

/*

 *函数功能:打印菱形

 *入口参数:行号i,列号j,k符号*

 *返回值:无

 */

#include<stdio.h>

int upangle(int i,int j,int k);

int downangle(int i,int j,int k);

int main()

{

    int i,j,k;

    upangle(i,j,k);

    downangle(i,j,k);

    return 0;

}

int upangle(int i,int j,int k)

{

    for(i=1;i<=5;i++)

    {

        for(j=5-i;j>=0;j--)

           printf(" ");

        for(k=1;k<=2*i-1;k++)

           printf("*");

        printf("\n");

    }

}

int downangle(int i,int j,int k)

{

    for(i=4;i>=1;i--)

    {

        for(j=0;j<=5-i;j++)

            printf(" ");

        for(k=1;k<=2*i-1;k++)

            printf("*");

        printf("\n");

    }

}

//本题的目的是学会for循环语句的使用

题目3:写一个函数void maxMinAver(int *data, int *max, int *min,float * ave,int size),  求一组数据的最大值、最小值和平均值,测试之。其中data指向给定数据的数组的指针,max、min、ave分别指向最大值、最小值和平均值,size是数组的大小。

要求第一个实参是数组,第2、3、4个实参都是对普通的简单变量的某种操作,最后一个实参是数组的大小。测试之

实现代码:

/*

 *函数功能:求数据的最大,最小和平均值

 *入口参数:数据data,数据大小size

 *返回值:最大值max,最小值min,平均值ave

 */

#include<stdio.h>

#include<stdlib.h>

#define SIZE 2

void maxMinAver(int *data,int *max, int *min,float *ave,int size);

int main()

{

    int min,max,i;

    int size=SIZE;

    float ave;

    int data[SIZE];

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

    {

        scanf("%d",&data[i]);

    }

    maxMinAver(data,&max,&min,&ave,size);

    printf("%d %d %f\n",max,min,ave);

    return 0;

}

void maxMinAver(int *data, int *max, int *min,float * ave,int size)

{

    int i,total;

    total=0,*ave=0;

    *max=data[0];

    *min=data[0];

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

    {

        total=total+data[i];

    }

    *ave=(float)total/size;

    for(i=1;i<size;i++)

    {

        if(data[i] > *max)

        *max=data[i];

        if(data[i] < *min)

        *min=data[i];

    }

}

//本题主要考指针在数组中的应用,关键在于最大最小值先定义为第一个数据以及参数的指向地址。

题目4 写一个函数用指针型字符串实现两个字符串比较,int mystrcmp(const char *str1, const char *str2),如果大于返回1,等于返回0,小于返回-1,测试之

实现代码:

/*

 *函数功能:用指针型字符串实现两个字符串比较

 *入口参数:字符串a,b

 *返回值:大于返回1,等于返回0,小于返回-1

 */

#include<stdio.h>

int mystrcmp(const char *str1, const char *str2);

int main()

{

    int i=0;

    char a[80],b[80];

    scanf("%s %s",a,b);

    i=mystrcmp(a,b);

    printf("%d\n",i);

    return 0;

}

int mystrcmp(const char *str1, const char *str2)

{

    int i;

    for(i=0;*(str1+i) != '\0' && *(str2+i) !='\0';i++)

    {

        if(*(str1+i) > *(str2+i))

        {

            return 1;

        }

        else if(*(str1+i) < *(str2+i))

        {

            return -1;

        }

    }

    if(str1[i]=='\0'&&str2[i]=='\0')return 0;

    if(str2[i]=='\0')return 1;

    if(str1[i]=='\0')return -1;

}

//本题最主要的是要注意字符串一长一短的比较;刚开始做题时我也忽略了这点,只想到两个字符串自左至右逐个字符相比,直到出现不同的字符。

     题目5写一个函数求求圆周率的近视值,精确到小数7位。计算公式是   

实现代码:

/*

 *函数功能:求圆周率的近似值

 *入口参数:分子a,分母b,第i个数,第i个数的值num,第i个数前的积s

 *返回值:∏

 */

 #include<stdio.h>

 #include<math.h>

 double func(double s);

 int main()

 {

     double s=1;

     printf("∏=%.7f\n",func(s));

     return 0;

 }

 double func(double s)

 {

     double a=0,b=1;

     int i=0;

     double num;

     double s1=0;

     int k;

     while(fabs(2*s-2*s1) >= 1e-7)

     {

         s1=s;

         if(i%2 == 0)

             a=a+2;

         else

             b=b+2;

         num=a/b;

         i++;

         s*=num;

 }

    s=s*2;

 return s;

 }

//本题目的是学会精度的使用,其次是要善于发现该计算公式的规律。

题目6定义一个学生结构体,取别名STU,包含学号、姓名、数学、语文、计算机、英语等课程成绩,还有总分和平均分,写一个函数实现求一组学生每个学生各门课程的平均值,函数原型为float ave(STU stu[],int size)。测试之。

实现代码:

#include<stdio.h>

#include<string.h>

#define SIZE 2

typedef struct

{

    char num[10];

    char name[10];

    int math;

    int english;

    int computer;

    int chinese;

    int sum;

    float average;

}STU;

STU stu[SIZE];

float ave(STU stu[],int size);

int main()

{

    int i,size=SIZE;

    float sum,average;

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

    {

        scanf("%s %s %d %d %d %d",&stu[i].num,&stu[i].name,&stu[i].math,&stu[i].english,

              &stu[i].computer,&stu[i].chinese);

    }

    ave(stu,size);

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

    {

        printf("%s %s %5.2f\n",stu[i].num,stu[i].name,stu[i].average);

    }

    return 0;

}

float ave(STU stu[],int size)

{

    int i;

    int sum=0;

    float average=0;

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

    {

        stu[i].sum=stu[i].math+stu[i].english+stu[i].computer+stu[i].chinese;

        stu[i].average=stu[i].sum/4.0;

    }

}

//结构体会把调用函数计算出的结果自动带回,注意结构体别名的使用。

题目7 写一个函数能够从文件读入一组学生STU的信息,保存到一个结构体数组中。测试之

实现代码:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define SIZE 2

typedef struct

{

    char num[10];

    char name[10];

    int math;

    int english;

    int computer;

    int chinese;

}STU;

STU stu[SIZE];

void readline(STU stu[]);

int main()

{

    int i;

    readline(stu);

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

    {

        printf("%s %s %d %d %d %d\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english,

              stu[i].computer,stu[i].chinese);

    }

    return 0;

}

void readline(STU stu[])

{

    int i;

    FILE *fp;

    if((fp=fopen("php.txt","r+")) == NULL)

    {

        printf("cannot open in file\n");

        getch();

        exit(1);

    }

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

    {

        fscanf(fp,"%s %s %d %d %d %d",stu[i].num,stu[i].name,&stu[i].math,&stu[i].english,

              &stu[i].computer,&stu[i].chinese);

    }

    fclose(fp);

}

//用“r+”方式时该文件应该已经存在,以便能向计算机输入数据。如果不能实现“打开”的任务,fopen函数将会带回一个出错信息,出错原因可能是用“r+”打开一个并不存在的文件。 在使用完一个文件后应该关闭它,以防止再被误用。

题目8 写一个函数能够输出某一学生结构体数组STU stu[10]的信息和每个人的总分、平均分到某一文本文件中,测试之。输出格式是:

   “%s %s %d %d %d %d %d %5.2f”

实现代码:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#define SIZE 10

typedef struct

{

    char num[10];

    char name[10];

    int math;

    int english;

    int computer;

    int chinese;

    int sum;

    float average;

}STU;

STU stu[SIZE];

float ave(STU stu[],int size);

void outfile(STU stu[],int size);

int main()

{

    int i,size=SIZE;

    int sum;

    float average;

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

    {

        scanf("%s %s %d %d %d %d",stu[i].num,stu[i].name,&stu[i].math,&stu[i].english,

              &stu[i].computer,&stu[i].chinese);

    }

    ave(stu,size);

    outfile(stu,size);

    return 0;

}

float ave(STU stu[],int size)

{

    int i;

    int sum=0;

    float average=0;

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

    {

        stu[i].sum=stu[i].math+stu[i].english+stu[i].computer+stu[i].chinese;

        stu[i].average=stu[i].sum/4.0;

    }

}

void outfile(STU stu[],int size)

{

    FILE *fp;

    int i;

    if((fp=fopen("struct stu.txt","w+")) == NULL)

    {

        printf("cannot open infile\n");

        getch();

        exit(1);

    }

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

    {

        fprintf(fp,"%s %s %d %d %d %d %d %5.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english,

              stu[i].computer,stu[i].chinese,stu[i].sum,stu[i].average);

    }

    fclose(fp);

}

//懂得fprintf的作用是将结构体中的整型和实型常量输出到fp指向的文件上。

题目9 写一个函数能够打印输出学生结构体数组STU stu[10]的信息到屏幕上,测试之

实现代码:

#include<stdio.h>

#include<string.h>

#define SIZE 2

typedef struct

{

    char num[10];

    char name[10];

    int math;

    int english;

    int computer;

    int chinese;

    int sum;

    float average;

}STU;

STU stu[SIZE];

float ave(STU stu[],int size);

void print(STU stu[],int size);

int main()

{

    int i,size=SIZE;

    int sum;

    float average;

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

    {

        scanf("%s %s %d %d %d %d",stu[i].num,stu[i].name,&stu[i].math,&stu[i].english,

              &stu[i].computer,&stu[i].chinese);

    }

    ave(stu,size);

    print(stu,size);

    return 0;

}

float ave(STU stu[],int size)

{

    int i;

    int sum=0;

    float average=0;

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

    {

        stu[i].sum=stu[i].math+stu[i].english+stu[i].computer+stu[i].chinese;

        stu[i].average=stu[i].sum/4.0;

    }

}

void print(STU stu[],int size)

{

    int i;

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

    {

  printf("%s %s %d %d %d %d %d %8.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english,

              stu[i].computer,stu[i].chinese,stu[i].sum,stu[i].average);    }

}

题目10 写一个函数能够把一组学生成绩信息按总分进行排序,测试之。

实现代码:

#include<stdio.h>

#include<string.h>

#define SIZE 2

typedef struct

{

    char num[10];

    char name[10];

    int math;

    int english;

    float sum;

}STU;

STU stu[SIZE];

float ave(STU stu[],int size);

void  exchangeSort(STU stu[],int size);

void  print(STU stu[],int size);

int main()

{

    int i,j,size=SIZE;

    float sum;

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

    {

        scanf("%s %s %d %d",&stu[i].num,&stu[i].name,&stu[i].math,&stu[i].english);

    }

    ave(stu,size);

    exchangeSort(stu,size);

    print(stu,size);

    return 0;

}

float ave(STU stu[],int size)

{

    int i,j;

    float sum=0;

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

    {

        stu[i].sum=stu[i].math+stu[i].english;

    }

}

void  exchangeSort(STU stu[],int size)

{

    int i, j ,tmp;

    float temp;

    char tmpstr[size];

   for(i=0; i<size-1; i++)

   {

        for(j=i+1; j<size; j++)

        {

            if(stu[i].sum > stu[j].sum)

            {

              temp=stu[i].sum;stu[i].sum=stu[j].sum;stu[j].sum=temp;

              strcpy(tmpstr,stu[i].num);strcpy(stu[i].num,stu[j].num);strcpy(stu[j].num,tmpstr);

              strcpy(tmpstr,stu[i].name);strcpy(stu[i].name,stu[j].name);strcpy(stu[j].name,tmpstr);

              tmp=stu[i].math;stu[i].math=stu[j].math;stu[j].math=tmp;

              tmp=stu[i].english;stu[i].english=stu[j].english;stu[j].english=tmp;

           }

       }

    }

}

void  print(STU stu[],int size)

{

    int i;

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

    {

        printf("%5s %10s",stu[i].num,stu[i].name);

        printf("%8.2f\n",stu[i].sum);

    }

}

//注意字符串的赋值不是用等号,而是用strcpy( ,);字符串不能和一个字符等价,操作过程中不小心常会犯这样的错误。

题目11 写一个函数能够查找给定学号的学生成绩信息,如果找到打印成绩信息,如果没有,显示“not found!”.测试之。

实现代码:

#include<stdio.h>

#include<string.h>

#define SIZE 2

typedef struct

{

    char num[10];

    char name[10];

    int math;

    int english;

    int computer;

    int chinese;

    float average,sum;

}STU;

STU stu[SIZE];

void choose(STU stu[],int size);

int main()

{

    int i,j,size=SIZE;

    float sum,average;

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

    {

        scanf("%s %s %d %d %d %d",&stu[i].num,&stu[i].name,&stu[i].math,&stu[i].english,

              &stu[i].computer,&stu[i].chinese);

    }

    choose(stu,size);

    return 0;

}

void choose(STU stu[],int size)

{

    int i;

    char num[10];

    int flag=0;

    scanf("%s",&num);

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

    {

        if(strcmp(num,stu[i].num) == 0)

        {

                printf("%5s %10s %d %d %d %d",stu[i].num,stu[i].name,stu[i].math,

                stu[i].english,stu[i].computer,stu[i].chinese);

                flag=1;

        }

    }

    if(!flag)printf("not found!\n");

}

//此题我使用flag作为查找的标志,flag为0时表示没有查找到,为1表示为找到;并使用字符串比较方法来对应要查找的学号。

题目12 设计一个界面函数,包含上述11个题目的调用,即

    请选择

1    调用第一个函数(具体的函数名)

2    调用第二个函数(具体的函数名)

3     

4    。。。

 。。。

5    10 调用第10个函数(具体的函数名)

          继续吗?输入y继续下一次选择,输入n结束

实现代码:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#define SIZE 2

typedef struct

{

    char num[10];

    char name[10];

    int math;

    int english;

    int computer;

    int chinese;

    float sum;

    float average;

}STU;

STU stu[SIZE];

void meau();

int func();

int upangle();

void maxMinAver();

int mystrcmp();

double PI();

float ave();

void readfile();

void outfile();

void print();

void  exchangeSort();

void search();

int main(void)

{

    char choose='\0',yes_no='\0';

  do{

   start:

    meau();

    scanf("%f",&choose);

    switch(choose)

    {

        case '1':func();break;

        case '2':upangle();break;

        case '3':maxMinAver();break;

        case '4':mystrcmp();break;

        case '5':PI();break;

        case '6':ave();break;

        case '7':readfile();break;

        case '8':outfile();break;

        case '9':print();break;

        case 'A':exchangeSort();break;

        case 'B':search();break;

        case '0':exit(0);

        default:printf("error!\n");break;

    }

    printf("继续吗(y/n)?\n");

    do{

    yes_no=getch();

    }while(yes_no!='y' && yes_no!='n');

  }while(yes_no == 'y');

    return 0;

}

void meau()

{

    printf("           欢迎来到调用函数游戏,请选择:                \n");

    printf("=======================================================\n");

    printf("                 1   第一个函数                        \n");

    printf("                 2   第二个函数                        \n");

    printf("                 3   第三个函数                        \n");

    printf("                 4   第四个函数                        \n");

    printf("                 5   第五个函数                        \n");

    printf("                 6   第六个函数                        \n");

    printf("                 7   第七个函数                        \n");

    printf("                 8   第八个函数                        \n");

    printf("                 9   第九个函数                        \n");

    printf("                 A   第十个函数                        \n");

    printf("                 B   第十一个函数                      \n");

    printf("                 0   退出                              \n");

    printf("=======================================================\n");

}

int func()

{

}

int upangle()

{

}

void maxMinAver()

{

}

int mystrcmp()

{

}

double PI()

{

}

float ave()

{

}

void readfile()

{

}

void outfile()

{

}

void print()

{

}

void  exchangeSort()

{

}

void search()

{

}

题目13 创建一个工程文件,包含三个文件,第一个是主函数所在的源文件,含有显示界面,选择1-10,调用不同的函数,第二个是各个函数所在的源文件,第三个是各个函数原型所在的头文件。

实现代码:

  main:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#include"myfuncs.h"

int main(void)

{

    char choose='\0',yes_no='\0';

  do{

   start:

    meau();

    choose=getch();

    switch(choose)

    {

        case '1':func();break;

        case '2':upangle();break;

        case '3':maxMinAver();break;

        case '4':mystrcmp();break;

        case '5':PI();break;

        case '6':ave();break;

        case '7':readfile();break;

        case '8':outfile();break;

        case '9':print();break;

        case 'A':exchangeSort();break;

        case 'B':search();break;

        case '0':exit(0);

        default:break;

    }

    printf("继续吗(y/n)?\n");

    do{

    yes_no=getch();

    }while(yes_no!='y' && yes_no!='n');

  }while(yes_no == 'y');

    return 0;

}

  myfuncs.h:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

#include<math.h>

#ifndef MYFUNCS_H

#define MYFUNCS_H

#define SIZE 2

typedef struct

{

    char num[10];

    char name[10];

    int math;

    int english;

    int computer;

    int chinese;

    float sum;

    float average;

}STU;

STU stu[SIZE];

void meau();

void func();

void upangle();

void maxMinAver();

void mystrcmp();

void PI();

void ave();

void readfile();

void outfile();

void print();

void  exchangeSort();

void search();

#endif

  myfuncs.c:

#include<stdio.h>

#include"myfuncs.h"

void meau()

{

    printf("           欢迎来到调用函数游戏,请选择:                \n");

    printf("=======================================================\n");

    printf("                 1   第一个函数                        \n");

    printf("                 2   第二个函数                        \n");

    printf("                 3   第三个函数                        \n");

    printf("                 4   第四个函数                        \n");

    printf("                 5   第五个函数                        \n");

    printf("                 6   第六个函数                        \n");

    printf("                 7   第七个函数                        \n");

    printf("                 8   第八个函数                        \n");

    printf("                 9   第九个函数                        \n");

    printf("                 A   第十个函数                        \n");

    printf("                 B   第十一个函数                      \n");

    printf("                 0   退出                              \n");

    printf("=======================================================\n");

}

void func()

{

    int x,y;

    while(scanf("%d",&x)!=EOF);

    if(x > 0)

    {

        y=3*x*x-4;

    }

    else if(x == 0)

    {

        y=2;

    }

    else

    {

        y=0;

    }

    printf("%d\n",y);

}

void upangle()

{

         int i,j,k;

    for(i=1;i<=5;i++)

    {

        for(j=5-i;j>=0;j--)

           printf(" ");

        for(k=1;k<=2*i-1;k++)

           printf("*");

        printf("\n");

    }

    for(i=4;i>=1;i--)

    {

        for(j=0;j<=5-i;j++)

            printf(" ");

        for(k=1;k<=2*i-1;k++)

            printf("*");

        printf("\n");

    }

}

void maxMinAver()

{

    int min,max,i;

    int size=SIZE;

    int total=0;

    float ave=0;

    int data[SIZE];

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

    {

        scanf("%d",&data[i]);

    }

    max=data[0];

    min=data[0];

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

    {

        total=total+data[i];

    }

    ave=(float)total/size;

    for(i=1;i<size;i++)

    {

        if(data[i] > max)

        max=data[i];

        if(data[i] < min)

        min=data[i];

    }

    printf("%d %d %f\n",max,min,ave);

}

void mystrcmp()

{

    int i=0;

    char str1[80],str2[80];

    scanf("%s %s",str1,str2);

    for(i=0;str1[i] != '\0' && str2[i] !='\0';i++)

    {

        if(str1[i] > str2[i])

        {

            printf("1\n");

        }

        else if(str1[i] < str2[i])

        {

            printf("-1\n");

        }

    if(str1[i]=='\0'&&str2[i]=='\0')printf("0\n");

    if(str2[i]=='\0')printf("1\n");

    if(str1[i]=='\0')printf("-1\n");

    }

}

void PI()

{

    int i=0;

    double num;

    double s=1,s1=0;

    double a=0,b=1;

    while(fabs(2*s-2*s1) >= 1e-8)

    {

        s1=s;

        if(i%2 == 0)

            a=a+2;

        else

            b=b+2;

        num=a/b;

        i++;

        s*=num;

    }

    s=s*2;

    printf("∏=%.7f\n",s);

}

void ave()

{

    int i,size=SIZE;

    float sum=0,average=0;

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

    {

        scanf("%s %s %d %d %d %d",&stu[i].num,&stu[i].name,&stu[i].math,&stu[i].english,

              &stu[i].computer,&stu[i].chinese);

    }

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

    {

        stu[i].sum=stu[i].math+stu[i].english+stu[i].computer+stu[i].chinese;

        stu[i].average=stu[i].sum/4.0;

    }

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

    {

        printf("%s %s %5.2f\n",stu[i].num,stu[i].name,stu[i].average);

    }

}

void readfile()

{

    int i;

    FILE *fp;

    if((fp=fopen("php.txt","r+")) == NULL)

    {

        printf("cannot open in file\n");

        getch();

        exit(1);

    }

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

    {

        fscanf(fp,"%s %s %d %d %d %d",stu[i].num,stu[i].name,&stu[i].math,

               &stu[i].english,&stu[i].computer,&stu[i].chinese);

    }

    fclose(fp);

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

    {

        printf("%s %s %d %d %d %d\n",stu[i].num,stu[i].name,stu[i].math,

               stu[i].english,stu[i].computer,stu[i].chinese);

    }

}

void outfile()

{

    int i,size=SIZE;

    float sum=0,average=0;

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

    {

        scanf("%s %s %d %d %d %d",stu[i].num,stu[i].name,&stu[i].math,&stu[i].english,

              &stu[i].computer,&stu[i].chinese);

    }

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

    {

        stu[i].sum=stu[i].math+stu[i].english+stu[i].computer+stu[i].chinese;

        stu[i].average=stu[i].sum/4.0;

    }

    FILE *fp;

    if((fp=fopen("struct stu.txt","w+")) == NULL)

    {

        printf("cannot open infile\n");

        getch();

        exit(1);

    }

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

    {

        fprintf(fp,"%s %s %d %d %d %d %d %5.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english,

              stu[i].computer,stu[i].chinese,stu[i].sum,stu[i].average);

    }

    fclose(fp);

}

void print()

{

    int i,size=SIZE;

    float sum=0,average=0;

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

    {

        scanf("%s %s %d %d %d %d",stu[i].num,stu[i].name,&stu[i].math,&stu[i].english,

              &stu[i].computer,&stu[i].chinese);

    }

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

    {

        stu[i].sum=stu[i].math+stu[i].english+stu[i].computer+stu[i].chinese;

        stu[i].average=stu[i].sum/4.0;

    }

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

    {

        printf("%s %s %d %d %d %d %d %8.2f\n",stu[i].num,stu[i].name,stu[i].math,stu[i].english,

              stu[i].computer,stu[i].chinese,stu[i].sum,stu[i].average);

    }

}

void  exchangeSort()

{

    int i,j,size=SIZE;

    int tmp;

    float temp,sum=0;

    char tmpstr[size];

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

    {

        scanf("%s %s %d %d",&stu[i].num,&stu[i].name,&stu[i].math,&stu[i].english);

    }

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

    {

        stu[i].sum=stu[i].math+stu[i].english;

    }

   for(i=0; i<size-1; i++)

   {

        for(j=i+1; j<size; j++)

        {

            if(stu[i].sum > stu[j].sum)

            {

              temp=stu[i].sum;stu[i].sum=stu[j].sum;stu[j].sum=temp;

              strcpy(tmpstr,stu[i].num);strcpy(stu[i].num,stu[j].num);strcpy(stu[j].num,tmpstr);

              strcpy(tmpstr,stu[i].name);strcpy(stu[i].name,stu[j].name);strcpy(stu[j].name,tmpstr);

              tmp=stu[i].math;stu[i].math=stu[j].math;stu[j].math=tmp;

              tmp=stu[i].english;stu[i].english=stu[j].english;stu[j].english=tmp;

           }

       }

    }

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

    {

        printf("%5s %10s",stu[i].num,stu[i].name);

        printf("%8.2f\n",stu[i].sum);

    }

}

void search()

{

        int i,j,size=SIZE;

    int flag=0;

    float sum,average;

    char num[10];

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

    {

        scanf("%s %s %d %d %d %d",&stu[i].num,&stu[i].name,&stu[i].math,&stu[i].english,

              &stu[i].computer,&stu[i].chinese);

    }

    scanf("%s",&num);

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

    {

        if(strcmp(num,stu[i].num) == 0)

        {

                printf("%5s %10s %d %d %d %d",stu[i].num,stu[i].name,stu[i].math,

                stu[i].english,stu[i].computer,stu[i].chinese);

                flag=1;

        }

    }

    if(!flag)printf("not found!\n");

}

第13题流程图

课程设计心得体会

通过这次实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。
    这次实训在实际操作过程中犯的一些错误让我受益颇多,发现了很多平时没注意到的细节,在以后的上机中应更加注意,从而对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。
     通过实际操作,学会 C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。

在此希望以后应多进行这样的实训,加长时间,培养学生独立思考问题的能力,提高实际操作水平。

参考的文献:《C程序设计第三版  谭浩强》

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:##组长:##同组成员:##目录一、目的....................…

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

C语言课程设计报告-图书管理系统

课程设计报告图书馆管理系统目录1题目与要求22系统总体设计要给出必要的文字说明及必要的图示321功能需求分析明确选题的功能需求322系统功能模块划分要给出系统功能模块图43详细设计431重要数据的数据结构设计即...

C语言课程设计报告_运动会分数统计系统

C语言课程设计报告_运动会分数统计系统一.需求分析1问题描述运动会分数统计系统参加运动会有n个系,系编号为1n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1m,女子m+1m+w。不同的项目取前五名或前…

C语言课程设计报告---学籍信息管理系统

中国地质大学本科生课程论文封面1课程设计评语注1无评阅人签名成绩无效2必须用钢笔或圆珠笔批阅用铅笔阅卷无效3如有平时成绩必须在上面评分表中标出并计算入总成绩2目录课程设计评语2目录31课程论文题目42程序设计思...

《C语言程序设计》课程设计报告格式 (2)

C语言程序设计课程设计报告20xx20xx学年第1学期专业软件工程软件测试服务班级1班姓名学号陈家汀指导教师谢小竹成绩计算机与信息工程学院20xx年1月12日目录一课程设计的目的与要求页码二方案实现与调试页码2...

C语言程序设计基础课程设计报告

程序设计基础课程设计报告课程名称课程设计题目程序设计基础课程设计学生信息管理系统姓名系专业年级学号指导教师职称计算机科学技术系计算机网络技术讲师20xx年1月1日一设计题目及要求1题目学生信息管理系统2要求1建...

c语言程序设计课程设计报告(34篇)