实验一进制转换一、实验要求采用模块化程序设计完成进制转换。
由键盘输入一个十进制正整数,然后将该数转换成指定的进制数(二、八、十六) 形式输出。
指定的进制由用户输入。
二、实验目的1、熟悉C 环境的安装、使用。
2、承上启下,复习《C 程序设计》等基础课程的知识。
3、掌握C 语言编程的方法。
三、预备知识1、VC6.0的安装与使用。
2、C 程序设计基础知识。
四、实验内容采用模块化程序设计完成进制转换。
五、程序框图六、程序清单1. 编写主函数:输入需转换的数与转换的进制2. 编写子函数(1)函数转换为除16进制以外的进制转换算数编程,使用while 循环实现计算进制的转换,并输出转换后的数字;(2)函数转换为16进制,用while 函数实现16进制转换的计算并输出16进制转换后的数据;3. 编写数组,关于16进制的一系列字符4. 编写主函数加入do while 使函数可以循环。
七、实验步骤#include <stdio.h>char num[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; void fun(int n, int m){int i=-1, a[100];if(m!=16){while(n){a[i++]=n%m;n=n/m;}while(i!=-1)printf("%d",a[--i]);printf("\n");}else{while(n){a[++i]=num[n%16];n/=16;}while(i!=-1)printf("%c",a[i--]);printf("\n");}}int main(){int a, c;char cIn = 0;do{printf("\n输入正整数,转换的进制:");scanf("%d %d",&a,&c);fun(a,c);printf("Go on? (Y/N):");cIn = getchar( );if(cIn == 'N' || cIn == 'n')return 0;}while(1);fun(a,c);printf("Go on? (Y/N):"); cIn = getchar( );if(cIn == 'N' || cIn == 'n') return 0;}while(1);}3、调试。
八、实验结果实验二学生班级成绩统计一、实验要求设计一个统计班级学生成绩的程序。
统计一个班(最多有35人) 的学生成绩,要求能实现如下四个功能:(1) 由键盘输入每个学生的学号和四门课程的成绩。
(2) 计算每个学生的平均成绩和总成绩。
(3) 按总成绩从高到低排名,并按名次输出每个学生的情况,包括:学号,各科成绩,平均成绩,总成绩,排名(4) 根据要求输出某门课程(由键盘输入课程号) 成绩在90分(含90分) 以上且总分在前5名的学生情况(请采用结构体数据类型,并采用模块化结构实现) 。
二、实验目的1、进一步熟悉C 环境的安装、使用。
2、进一步复习《C 程序设计》等基础课程的知识。
3、进一步掌握C 语言编程的方法。
三、预备知识1、VC6.0的安装与使用。
2、C 程序设计基础知识。
3、软件实现基本流程。
四、实验内容设计一个统计班级学生成绩的程序。
六、程序清单1、先编写主函数,将所需要用到的子函数编写,2、子函数1:输入数据,将所需要的数据存到数组中并计算平均值和总分,3、子函数2:根据子函数1计算所得值进行排序,4、子函数3:输出排序完的数据,5、子函数4:编写查询程序,输入查询的科目缩写,并排名后输出。
七、实验步骤1、可行性分析2、需求分析3、概要设计与详细设计(含绘制流程图)。
4、编码实现#include <stdio.h>int order[35];double addsum[35];double addaver[35];int b= 0;typedef struct student{int id;char name[35];double math;double english;double chinese;double computer;} student;student stu[35];void shuru(){b= 0;while( b < 35 ){printf( "输入学号(输入0退出输入):" );scanf( "%d", &stu[b].id );fflush( stdin );if ( stu[b].id <= 0 )break;printf("输入名字:");scanf("%s",&stu[b].name);printf( "输入4门成绩(数学英语语文计算机):" );scanf( "%lf %lf %lf %lf", &stu[b].math, &stu[b].english,&stu[b].chinese, &stu[b].computer );fflush( stdin );addsum[b] = stu[b].math + stu[b].english +stu[b].chinese, stu[b].computer; addaver[b] = addsum[b] / 4.0;order[b] = stu[b].id;b++;}}int query( int id ){int i = 0;for( i=0; i<b; i++ ){if ( stu[i].id == id )return i;}return -1;}void paiming(){int i,j;for( i=0; i<b; i++ ){for( j=i+1; j<b; j++ ){if ( addsum[i] - addsum[j] < 0.001 ){int temp_id = order[i];order[i] = order[j];order[j] = temp_id;}}}}void output(){int i;printf( "名次学号姓名数学英语语文for( i=0; i<b; i++ ){int j = query( order[i] );if ( j<0 ) 计算机总分平均\n" );6/21页printf( "order[%d]= %d error\n", i+1, order[i] );continue;}printf( "%02d %5.d %s %4.2f %4.2f %4.2f %6.2f %4.2f %4.2f\n", i+1, stu[j].id,stu[j].name,stu[j].math, stu[j].english, stu[j].chinese, stu[j].computer,addsum[j], addaver[j] );}}void chaxun(){char a[1];int i;printf("输入你所想要查询的课程代号:");scanf("%c",&a[1]);printf( "名次学号姓名数学英语语文计算机总分平均\n" ); if(a[1]=='m') {for(i=0;i<b;i++){if(stu[i].math>90 && order[i]< 5){printf( "%02d %5.d %s %4.2f %4.2f %4.2f %6.2f %4.2f %4.2f\n", i+1, stu[i].id,stu[i].name,stu[i].math, stu[i].english, stu[i].chinese, stu[i].computer,addsum[i], addaver[i] );}}}else if(a[1]=='e'){for(i=0;i<b;i++){if(stu[i].english>90 && order[i]< 5){printf( "%02d %5.d %s %4.2f %4.2f %4.2f %6.2f %4.2f %4.2f\n", i+1, stu[i].id,stu[i].name,stu[i].math, stu[i].english, stu[i].chinese, stu[i].computer,addsum[i], addaver[i] );}}}else if (a[1]=='c'){for(i=0;i<b;i++)if(stu[i].chinese>90 && order[i]< 5){printf( "%02d %5.d %s %4.2f %4.2f %4.2f %6.2f %4.2f %4.2f\n", i+1, stu[i].id,stu[i].name,stu[i].math, stu[i].english, stu[i].chinese, stu[i].computer,addsum[i], addaver[i] );}}}else{for(i=0;i<b;i++){if(stu[i].computer>90 && order[i]< 5){printf( "%02d %5.d %s %4.2f %4.2f %4.2f %6.2f %4.2f %4.2f\n", i+1, stu[i].id,stu[i].name,stu[i].math, stu[i].english, stu[i].chinese, stu[i].computer,addsum[i], addaver[i] );}}}}void main(){shuru(); paiming(); output(); chaxun();}5、调试。