• / 41
  • 下载费用:15 金币  

《C语言程序设计.》实验报告(实验部分1-12).doc

关 键 词:
C语言程序设计. 语言程序设计 实验 报告 部分 12
资源描述:
''《C语言程序设计》 实验报告 2013~2014学年第二学期 班 级姓 名学 号指导教师''实验一实验项目名称:C程序的运行环境和运行C程序的方法所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序;2.通过运行简单的C程序,初步了解C源程序的特点。二、预习内容:教材《C语言程序设计教程》第1章。三、实验内容:1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include int main( ){ printf("This is a C program.\n"); return 0; } 2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序无语法错误,然后运行程序,并观察分析运行结果。 #include int main( ){ int a,b,sum a=3; b=4; sun=a+b;print(“%d+%d=%d\n”,a,b,sum); return 0; }四、实验结果: 1. 运行结果(或截图):This is a C program.Press any key to continue2. (1) 改正后的源程序:#include int main( ){ int a,b,sum; a=3; b=4; sum=a+b; printf("%d+%d=%d\n",a,b,sum); return 0; } (2) 运行结果(或截图):3+4=7五、思考题: 1. 一个C程序上机的步骤有哪些? 答:上级输入与编辑源程序 — 对原程序进行编译 – 与库函数链接 – 运行可执行的目标程序。 2. 组成C程序的基本单位是函数,一个函数包括哪几个部分? 答:一个函数包括两部分:分别为函数头或函数首部 和 函数体。成绩 指导教师签名 实验二实验项目名称:数据类型、运算符和表达式所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.掌握整型、实型与字符型这三种基本类型的概念;2.掌握常量及变量的使用方法;3. 掌握基本算术运算符及其表达式的使用方法;4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。二、预习内容:教材《C语言程序设计教程》第2章。三、实验内容: 1. 在Visual C++ 6.0环境下输入下面的程序,编译、连接、调试该程序。 main( ){ char m,n; m=280;n=320;printf(“%d\t%d\n”,m,n);printf(“%c\t%c\n”,m,n);}2. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。 #include int main( ){ int a=3,b=4,c=8; float d,e; d=a+b/c; e=a+(float)b/c; //请将此处d改为bprintf("d=%f,e=%f\n",d,e); }3. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。 #include main( ){ int a,b,c,d,i,j,m,n; a=b=c=d=3; i=a++; j=++b; m=c--; n=--d;printf("a=%d,b=%d,c=%d,d=%d,i=%d,j=%d,m=%d,n=%d\n",a,b,c,d,i,j,m,n);}4. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析运行结果。 #include main( ){ int a=4; a+=a-=a*a+a;printf("a=%d\n",a); }四、实验结果: 1. 运行结果(或截图):24 64 @ 2. 运行结果(或截图):d=3.000000,e=3.500000d=3.000000,e=3.3750003. 运行结果(或截图):a=4,b=4,c=2,d=2,i=3,j=4,m=3,n=24. 运行结果(或截图):a=-32五、思考题: 1. 给变量命名应该注意哪些问题? 答:每个变量必须进行数据类型说明; 2. 程序2的运行结果中,d和e的值为什么不同? 答:d的赋值语句中,除法是两个整型数字的运算,其结果没有小数位;而e中对b进行了强制转换为实型,所以其除法运算结果有小数位。3. 程序3的运行结果中,i和j的值为什么不同?m和n的值为什么不同?//改为程序3 答:i(m)是通过后自增(后自减)实现的,而后自增(后自减)是先参与其他运算,后对变量递增(递减);而j(n)是通过前自增(前自减)实现的,其是先对变量递增(递减),后再参与其他运算。 4. 请分析表达式a+=a-=a*a+a的运算过程(写出运算步骤)。 答:先将a -(a*a+a)赋值给a,再将a+a 赋值给a 。成绩 指导教师签名 实验三实验项目名称:简单的输入输出及顺序程序设计所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1. 掌握整型、实型与字符型数据的正确输入方法(scanf函数的使用);2. 掌握整型、实型与字符型数据的正确输出方法(printf函数的使用);3. 掌握编写顺序程序的方法。二、预习内容:教材《C语言程序设计教程》第3章。三、实验内容:1. 编写C程序,按下列公式计算并输出S的值,其中a和b的值有键盘输入。main(){ int a,b;float s;scanf(“%d,%d”,&a,&b);s=2.0*a*b/(a+b) /(a+b);printf(“s=%f\n”,s);}①输入并调试。②将scanf函数改为scanf(“%d%d”,&a,&b);再编译,运行。③观察结果。2. 在Visual C++ 6.0环境下输入并运行下面的程序,观察分析程序运行过程及结果。 #include int main( ){ int a,b,sum; printf("请输入第一个整数:"); scanf("%d",&a);printf("请输入第二个整数:"); scanf("%d",&b); sum=a+b;printf("%d+%d=%d\n",a,b,sum); }3. 设圆半径r=1.5,编写程序求圆周长、圆面积和圆球的体积。要求用scanf语句输入半径,输出时取小数点后两位。四、实验结果: 1. 输入数据4,5输入修改后的数据4 54↙5↙运行结果s=0.493827运行结果s=0.493827s=0.493827原因字符控制串中有“,”,所以输入时必须有“,”原因字符控制串中没有除说明符以外的其他字符,所以输入时可以通过空格分隔字符控制串中没有除说明符以外的其他字符,所以输入时可以通过回车分隔 2. 运行结果(或截图):请输入第一个整数:1请输入第二个整数:21+2=3 3. (1) 程序中用到的变量(类型)单精度浮点数(2) 算法(用伪代码描述或自然语言)c = 2 * pi * r;s = pi * r * r;v = 4 * (pi * r * r * r)/3;(3) 源程序清单#include int main( )# define pi 3.14{float r, c, s, v;printf("请输入圆的半径:");scanf("%f", &r);c = 2 * pi * r;s = pi * r * r;v = 4 * (pi * r * r * r)/3.0;printf("c = %.2f,s = %.2f,v = %.2f\n", c, s, v); }(4) 运行结果(或截图)请输入圆的半径:1.5c = 9.42,s = 7.07,v = 14.13五、思考题: scanf(“%d,%d”,&a,&b)与scanf(“%d%d”,&a,&b)输入数据的方式有什么不同?从两种输入方式的对比中你得到什么启发? 答:第一种输入方式用户必须以“,”分隔,而第二者可用空格、回车分隔,用户在不知情的情况下,很难知道用“,”分隔输入的数据。所以编程人员可以在scanf()语句前用printf()语句进行注释,让用户知道用什么来分隔输入的数据。成绩 指导教师签名 实验四实验项目名称:选择结构程序设计所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1. 正确使用关系运算符和关系表达式;2. 正确使用逻辑运算符和逻辑表达式;3. 熟练使用if语句实现选择结构程序;2. 熟练使用switch语句实现多分支选择结构程序。二、预习内容:教材《C语言程序设计教程》第4章。三、实验内容:1. 下面程序的功能是:输入学生成绩,若成绩在90分以上,输出“Excellent!”;若成绩在60—89分之间,输出“Pass!”;若成绩在60分以下,输出“Fail!”。请将程序补充完整,并上机运行程序。 #include int main( ) { int score; printf("请输入分数(0--100):"); scanf("%d", &score); if(score>100 || score<0) printf("Input Error!\n");else if( score>=90 ) printf("Excellent!\n"); else if( score>=60 ) printf("Pass!\n"); else printf("Fail!\n"); } 运行该程序4次,分别输入4个不同的数据,对应4种不同的情况,记录运行结果:输入数据206199111运行结果Fail!Pass!Excellent!Input Error!2. 有如下分段函数:请输入x的值,求解对应的y值。3. 给出一个百分制成绩,要求输出成绩等级’A’、 ’B’、 ’C’、 ’D’、 ’E’。90-100为’A’,80-89为’B’,70-79为’C’,60-69为’D’,60分以下为’E’。用switch语句写。四、程序中所用的变量及其类型:2.变量:x、y;数据类型:都为单精度浮点数3.变量:score数据类型:整型五、算法(用伪代码或自然语言描述):2. if ( x>=10 )printf(" y = %f\n", 3*x-11);else if ( x>=1 )printf(" y = %f\n", 2*x-1);elseprintf(" y = %f\n", x); 3. switch (score/10){case 10:printf("A\n");break;case 9:printf("A\n");break;case 8:printf("B\n");break;case 7:printf("C\n");break;case 6:printf("D\n");break;default:printf("E\n");}六、源程序清单: 2.# include int main (void){float x, y;printf("请输入一个x:");scanf("%f", &x);if ( x>=10 )printf(" y = %f\n", 3*x-11);else if ( x>=1 )printf(" y = %f\n", 2*x-1);elseprintf(" y = %f\n", x);return 0;} 3.# include int main (void){int score;printf("请输入一个成绩:");scanf("%d", &score);switch (score/10){case 10:printf("A\n");break;case 9:printf("A\n");break;case 8:printf("B\n");break;case 7:printf("C\n");break;case 6:printf("D\n");break;default:printf("E\n");}return 0;}七、实验结果: 2. 运行结果(执行程序3次,分别输入不同的3个数,对应3种不同的情况):输入数据211-5运行结果3.00000022.000000-5.0000003. 运行结果(执行程序5次,分别输入5组不同的数据,对应5种不同的情况):输入数据9980706259运行结果ABCDE成绩 指导教师签名 实验五实验项目名称:简单循环程序设计所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1. 掌握循环程序的基本结构;2. 熟练掌握while、do—while及for语句,并会用来编写循环结构程序。二、预习内容:教材《C语言程序设计教程》第4章。三、实验内容:1.编写一个程序,计算并输出数列:1,3,5,…,2n-1,…的前几项之和,其中n由键盘输入。要求分别用3种循环语句实现。方法1:用for语句实现。main(){ long s,n,k,i; scanf(“ %ld “,&n);k=2*n-1; s=0 ; for(i=1;i<=k; i+=2 ) s+=i;printf(“1+3+…+%ld=%ld\n”,k,s);}方法2:用while语句实现。main(){long s=0 ,n,i=1; scanf(“%ld”,&n);while( i<=(2*n-1) ){s+=i; i+=2 ;}printf(“1+3+…+%ld=%ld\n”,2*n-1,s); }方法3:用do-while语句实现。main(){long s=0,n,i=1; scanf(“%ld”,&n);do{s+=i; i=i+2;} while( i<=(2*n)-1 );printf(“1+3+…+%ld=%ld\n”,2*n-1,s); }填上所缺的空,运行程序,写出结果。2.输入两个正整数,求其中最大公约数和最小公倍数。四、程序中所用的变量(类型及其初值):2. 变量i, k, j, m, least, greatest均为整型变量,没有对其赋予初值。五、算法(用伪代码描述):2. for (j=i; j<=i||j>=1; j--)//此处for循环为求最大公约数{if( i%j == 0)greatest = j;else ;if( k % greatest == 0){printf("%d和%d的最大公约数为%d!\n", i, k, greatest);break;}else;}least = i * k / greatest;printf("%d和%d最小公倍数为%d!\n", i, k, least);六、源程序清单: 2.# include int main (void){int i, k, j, m, least, greatest;// i, k存储的是两个正整数, least为最小公倍数,greatest为最大公约数printf("请输入两个正整数(中间以空格分隔):");scanf("%d %d", &i, &k);for (j=i; j<=i||j>=1; j--)//此处for循环为求最大公约数{if( i%j == 0)greatest = j;else ;if( k % greatest == 0){printf("%d和%d的最大公约数为%d!\n", i, k, greatest);break;}else;}least = i * k / greatest;printf("%d和%d最小公倍数为%d!\n", i, k, least);return 0;}七、实验结果: 1. 在下表中写出输入的数据及其运行结果:方法1方法2方法3输入数据121212运行结果1+3+…+23=1441+3+…+23=1441+3+…+23=1442. 运行结果(或截图):请输入两个正整数(中间以空格分隔):36 1236和12的最大公约数为12!36和12最小公倍数为36!成绩 指导教师签名 实验六实验项目名称:多层循环程序设计及break、continue语句在循环程序中的应用所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1. 掌握多层循环程序的执行过程及设计方法;2. 掌握break及continue语句在循环程序中的使用方法。二、预习内容:教材《C语言程序设计教程》第4章。三、实验内容:1. 百马百担问题。有100匹马,驮100担。大马驮3担,中马驮2担,两个小马驮1担。问大、中、小马各多少?(考虑适当减少循环次数)2. 编程输出100以内的所有素数。3. 编程输出所有水仙花数(所谓“水仙花数”,是指一个3位数,其各位数字的立方和等于该数本身,例如,153=13+53+33,所以153是一个水仙花数)。四、程序中所用的变量(类型及其初值):1. 变量x, y, z均为整型变量,均未赋予初值 2. 整型变量x,y,均未赋予初值3.整型变量i,m,n, n初值为0,m、n未赋予初值五、算法(用伪代码或自然语言描述):1. for ( x=0; x<=20; x++){for ( y=0; y<=33; y++){z = 100 - x - y;if( z%2==0 && 3*x + 2*y + z/2 ==100)printf("大马有%d匹,中马有%d匹,小马有%d匹!\n", x, y, z);}}2. for ( i = 1; i <= 100; i += 1){for ( j = 2; j <= i; ++j){if ( i%j == 0 ){if ( i == j)printf ("%-5d",i);elsebreak;}}}3.for(i=100;i<=999;++i){int m, n = 0;m = i % 10;n += m * m * m;m = (i/10) % 10;n += m * m * m;m = (i/100) % 10;n += m * m * m;if ( n == i)printf("%d\n", i);else;}六、源程序清单: 1.# include int main (void){int x, y, z;for ( x=0; x<=20; x++){for ( y=0; y<=33; y++){z = 100 - x - y;if( z%2==0 && 3*x + 2*y + z/2 ==100)printf("大马有%d匹,中马有%d匹,小马有%d匹!\n", x, y, z);}}return 0;} 2.# include int main (void){int i, j;for ( i = 1; i <= 100; i += 1){for ( j = 2; j <= i; ++j){if ( i%j == 0 ){if ( i == j)printf ("%-5d",i);elsebreak;}}}return 0;} 3.# include int main (void){int i;for(i=100;i<=999;++i){int m, n = 0;m = i % 10;n += m * m * m;m = (i/10) % 10;n += m * m * m;m = (i/100) % 10;n += m * m * m;if ( n == i)printf("%d\n", i);else;}return 0;}七、实验结果: 1. 运行结果(或截图):大马有2匹,中马有30匹,小马有68匹!大马有5匹,中马有25匹,小马有70匹!大马有8匹,中马有20匹,小马有72匹!大马有11匹,中马有15匹,小马有74匹!大马有14匹,中马有10匹,小马有76匹!大马有17匹,中马有5匹,小马有78匹!大马有20匹,中马有0匹,小马有80匹!2. 运行结果(或截图):2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 5359 61 67 71 73 79 83 89 97 3. 运行结果(或截图):153370371407成绩 指导教师签名 实验七实验项目名称:一维、二维和字符数组程序设计所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1. 掌握一维数组和二维数组的定义、赋值和输入输出的方法;2. 掌握字符数组的使用。二、预习内容:教材《C语言程序设计教程》第5章。三、实验内容:1. 从键盘输入一个整数n(n<=10)和n个整数,存入数组a中,先依次输入各个数组元素的值,然后对数组a的所有元素值从小到大的顺序重新排列后,再依次输出。main(){int a[10],n,i,j,min,ax; printf(“input n=”);scanf(“%d”,&n);printf(“input array[0]a[1]…a[%d]:\n”,n-1);for(i=0;ivoid main(){int a[10][10]={{1}},j,i;for (i=0;i<10;i++){for (j=0;j<=i;j++){if(j==0){a[i][j]=1;printf("%-5d",a[i][j]);}elseprintf("%-5d",a[i][j]=a[i-1][j-1]+a[i-1][j]);}printf("\n");}}3.# include void main(){char s1[80],s2[40];int i=0,j=0;printf("请输入数组s1:");gets(s1);printf("请输入数组s2:");gets(s2);while(s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]='\0';printf("%s\n",s1);}七、实验结果: 1. 运行结果(执行程序3次,分别输入不同的n,对应3种不同的情况):输入整数n输入n个元素排序后结果54 9 5 3 1 1 3 4 5 9 49 5 1 6 1 5 6 9 74 9 5 6 1 3 2 1 2 3 4 5 6 9 2. 运行结果(或截图):11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 11 9 36 84 126 126 84 36 9 13. 运行结果(或截图): 成绩 指导教师签名 实验八实验项目名称:函数调用和参数传递所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1. 掌握定义函数的方法;2. 掌握函数实参与形参的对应关系。二、预习内容:教材《C语言程序设计教程》第6章6.1~6.4节。三、实验内容:1. 求2~100间的素数。int prime(int);/* prime函数声明*/main( ){ int m,flag; for(m=2;m<=100;m+=1){ flag=prime(m);if( m==flag ) printf(“%4d”,m); }} int prime( int a ){ int i,flag; for(i=2;imain( ){ int a[10],i,jmax; for(i=0;i<10;++i) scanf(“%d”,&a[i]);jmax=fmax( ,10);printf(“%d”,jmax);} fmax(int b[],int t){ int i,imax; imax=b[0];for(i=1;iimax) ;return ;}2.用“冒泡法”对输入的10个字符排序后按从小到大的次序输出。 #define N 10 char str[N]; sort( ) { int i,j; char t; for(j=1;j ) { t=str[i]; _____ ______; ______ ______; } } main() { int i; for(i=0;i<10;i++) scanf("%c",&str[i]); sort( ); for(i=0;imain(){char ch[2][5]={"1213","8421"},*p[2];int i,j,s=0;for(i=0;i<2;i++) p[i]= ;for(i=0;i<2;i++) for(j=0;p[i][j]>'\0'&& p[i][j]<='9';j+=2) s= ;printf("%d",s);}四.重要变量用途说明:1.2.3.4.5.五、源程序补充后完整清单:1.2.3.4.5.六、实验结果(写出典型测试数据输入和输出) 1. 运行结果:2. 运行结果:3. 运行结果:4. 运行结果:5. 运行结果:成绩 指导教师签名 实验十一实验项目名称:结构体与共用体所使用的工具软件及环境:Visual C++ 6.0一、实验目的:1.掌握结构体的概念;2.学会通过结构体成员来使用结构体;3.正确使用结构体数组;4.学会共用体成员值的输出。二、预习内容:教材《C语言程序设计教程》第8章。三、实验内容:1. 读懂并输入程序,完成填空后输出结果。建立学习成绩单结构,并建立一个同学王林(wanglin)的记录。#include main() {struct grade /* 定义结构体类型 */ {int number; char name[10]; int math; int english; }; struct wanglin; /* 结构体变量 */ printf("Please input the number, name, math, english:\n"); scanf("%d%s%d%d",& , wanglin.name, ,&wanglin.english);//输入数据 printf("wangling grade is: %d%s%d%d\n", wanglin.number,wanglin.name,wanglin.math, wanglin.english); }2.编写一个程序,处理5个学生的信息,每个学生的信息包括:学号、姓名、三门成绩。要求输出成绩表(包括每个学生的学号、姓名、三门成绩及平均分数),并输出平均分在前3名的学生的姓名及平均分。处理5个学生的信息的参考程序:#include "stdio.h"struct STU{ int sn; char name[20]; int score[3]; float average;} students[5]={ {1,"A",81,80, 80,0}, {2,"B",51,80, 80,0}, {3,"C",61,80, 80,0}, {4,"D",71,80, 80,0}, {5,"E",41,80, 80,0} }; //5个学生数据初始化void main(){ int i, j; struct STU t; for(i=0; i<5; i++) { for(j=0; j<3; j++) students[i].average += students[i].score[j]; //三门课成绩和 students[i].average /= 3.0; //三门课成绩平均 }for(i=0; i <4; i++) for(j=0; j<4-i; j++) if(students[j].average#includevoid main(){FILE *fp;int i,a,b,t;fp=fopen("d:\\a.txt","w");for(i=1;i<=10;i++) { a=rand()%100;b=rand()%100; // rand()是随机数函数 if(b<2) b=b+2; fprintf(fp,"\t%2d+%2d= ",a,b); a=rand()%100;b=rand()%100; if(a
展开阅读全文
  语墨文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:《C语言程序设计.》实验报告(实验部分1-12).doc
链接地址:http://www.wenku38.com/p-140576.html

                                            站长QQ:1002732220      手机号:18710392703    


                                                          copyright@ 2008-2020 语墨网站版权所有

                                                             经营许可证编号:蜀ICP备18034126号

网站客服微信
收起
展开