C程序实验报告2012新.doc_第1页
C程序实验报告2012新.doc_第2页
C程序实验报告2012新.doc_第3页
C程序实验报告2012新.doc_第4页
C程序实验报告2012新.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一 C语言程序初步 一、实验目的1. 熟悉Turbo C与Visual C+程序运行环境。2. 初步了解C源程序的特点。3. 掌握如何编辑、编译、链接和运行一个C程序。4. 掌握语言程序的书写格式和语言程序的结构。5. 了解C语言中数据类型的含义。6. 掌握C语言中常用的运算符。7. 掌握C语言表达式的运算规则。8. 理解C语言中输出输入使用方法。9. 熟练掌握C语言中输入输出格式控制符。10. 熟悉C语言顺序结构程序设计方法。11. 掌握顺序程序设计流程。 二、实验要求1. 分析整理运行结果,完成实验报告,要求报告书写字迹清晰,格式规范。2. 实验报告中应包含运行结果及结果分析。3. 最后给出实验总结及体会三、实验学时:6学时 四、实验内容与步骤(一)认识C语言程序1读下面程序,写出运行结果,并对结果进行分析。(1)#includevoid main()printf(“*n”);printf(“This is a c program. n”);运行结果:*This is a c program将程序中的n去掉后,运行结果为:*This is a c program _(2)#includevoid main( )printf(“*”);printf(“n”);printf(“ very good! ”);printf(“n”);printf(“*”); 运行结果*very good! *(3)#includevoid main( )int a,b,sum;a=12;b=45;sum=a+b;printf(“sum is %dn”,sum);a=10;b=34;sum=a*b;printf(“sum is %dn”,sum); 运行结果:sum=340(4)#includevoid main( ) int a,b,c;scanf(“%d,%d”,&a,&b); if(ab) c=a; else c=b; printf(“max=%d”,c); 运行结果:输入:5,6 输出:max=6(5)#includevoid main( )char c1,c2;c1=97;c2=98;printf(“%c %cn”,c1,c2);printf(“%d %dn” ,c1,c2); 运行结果:a b 97 98(6)#define PRICE 30#includevoid main( )int num,total1,total2;num=10;total1=num*PRICE;total2=num*30;printf(“total1=%dn”,total1);printf(“total2=%dn”,total2); 运行结果:total1=340 total2=340(7)#includevoid main( )int a,b;a=2147483647;b=a+1;printf(“a=%d,b=%d”,a,b); 运行结果:a=2147483647,b=-2147483648(8)#includevoid main( )float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i); 运行结果:x=3.6,i=3(9)#includevoid main( )int i,j,m,n=2;i=8;j=10;m=+i;n+=j+;printf(“%d,%d,%d,%dn”,i,j,m,n); 运行结果及结果分析:9,11,9,122. 上机输入下面程序(1)main( )int a,b;float c; scanf(“%d%d%f”,&a,&b,&c); printf(“a=%-4d,b=%4d,c=%f,c=%.2fn”,a,b,c);1) 要使a=3,b=4,c=12.3456,在键盘上应如何输入?中间用空格区分2) 若将输入函数改为scanf(“%d, %d ,%f”,&a,&b,&c);应该如何输入数据?输入的数据之间用逗号分隔(二)数据类型与输入输出1运行下面程序给出输出的结果。(1)#include stdio.h void main() int a,b; float x,y; char c1,c2; scanf(“a=%d,b=%d”,&a,&b); scanf(“%f, %f”,&x,&y); scanf(“%c%c”,&c1,&c2); printf(“a=%d,b=%d,x=%f,y=%4.2f,c1=%c,c2=%cn”,a,b,x,y,c1,c2); 运行结果:输入:a=5,b=6 6.7,7.8ab 输出:a=5,b=6,x=6.700000,y= 7.80,c1=a,c2=b(2)#includevoid main( ) int x = 10,y; y = 5 + (x + + , x + 8) ;printf ( %d , %d , x ,y ) ;运行结果:11,24(3) main() int x=1,y=2,z,a,b,c,d; z=+x|+y; printf(“x=%d,”,x); printf(“y=%d,”,y); a=-1; b=-2 ; c=+a&b+; printf(“a=%d,”,a); printf(“b=%d,”,b); x=-8; y=0=x=10;printf(“y=%dn”,y); 运行结果:x=2,y=2,a=0,b=-2,y=1;(4)main( )int a=10,b=0 ; if(a=12) a=a+1; b=b+1 ; else a=a+4;b=b+4; printf(“%d,%dn”,a,b); 运行结果14,4(5)main()int x=40,y=4,z=4; x=y=z;printf(“%d,”,x); x=x=(y=z);printf(“%dn”,x);运行结果1,02. 输入以下程序 main( )int a; float b; char c; scanf(“%d%f%c”,&a,&b,&c); printf(“a=%d,a=%o,a=%x,b=%8.3f,b=%4.0f,c=%cn”,a,a,a,b,b,c);要使a=77,b=4.56,c= A,在键盘上应如何输入?57 77.111a3. 程序改错上机调试下面的程序,记录系统给出的出错信息,改正后写在对应错误代码行后面。下面的程序企图计算由键盘输入的任意两个整数的平均值:#includevoid main( ) int x,y,a;/将a定义为浮点类型float a; scanf(“%x,%y”,&x,&y);/格式改为%d%d a=(x+y)/2;/2改为2.0 printf(“The average is:%dn”,a);/%d改为%.2f运行结果:输入3,6,输出4.504. 程序改错。上机调试下面的程序,记录系统给出的出错信息,改正后写在对应错误代码行后面。(1)输入三角形三边长,求三角形面积。 #include “math.h” void main() float a,b,c,area; /声明s为浮点类型scanf(“%f ,%f,%f”,a,b,c); /上行代码:scanf(“%f ,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c);/c后面加一个右小括号 printf(“area=%d”,area);/%d改为%f(2)下面的C程序,目的是想计算由键盘输入的任意两个整数的积。#include (stdio.h);/一对小括号改为一对尖括号void main();/多一个分号/缺少左大括号/在输入之前缺少变量声明int x,y,c; scanf(“%x,%y”,&x,%y) /改为:scanf(“%d,%d”,&x,&y);int c/去掉这行c=x*yprintf(“c=%f”,c) /改为:printf( “c=%d”,c);运行结果:输入3,5,输出15(3) 顺序程序设计1. 程序填空任意输入一个有五位数字的正整数x,分别输出每一数位上的数字(由高到低分别用b5,b4,b3,b2,b1表示)。#includevoid main( ) int b1,b2,b3,b4,b5;int x;scanf( “ %d ”,&x);b5= x/10000 ;b4=(x/1000)%10;b3= (x/100)%10; ;b2=(x/10)%10;b1= x/%10; ;printf(“the number is %dn”,x);printf(“its bit is:%d,%d,%d,%d,%dn”,b5,b4,b3,b2,b1); 运行结果:2. 程序设计(1)编写程序,用getchar函数读入两个字符c1、c2,然后分别用putchar函数和printf函数输出这两个字符。比较用printf和putchar函数输出字符的特点。int main(int argc, char* argv) char c1,c2; scanf(%c,&c2); c1=getchar(); printf(%c,c2); putchar(c1);(2)编程实现:输入一个摄氏温度c ,要求输出华氏温度。公式为f=5/9*c+32。main() float c,f; scanf(“%f”,&c); f=5/9.0*c+32; printf(“%.2f”,f);(3)编程实现:任意输入一个大写字母,以小写字母输出。int main(int argc, char* argv) char c1,c2; scanf(%c,&c2); c1=c2+32; putchar(c1);(4)鸡兔同笼。已知鸡兔总头数为h(设为30),总脚数为f(设为90),求鸡兔各有多少只? int main(int argc, char* argv)int h,f,j,t; scanf(%d%d,&h,&f);j=(4*h-f)/2;t=h-j;printf(ji=%d,tu=%dn,j,t);return 0;(5)编写一个程序,输入一个三位正整数,然后反向输出对应的数,如输入123,则输出321。#includevoid main( ) int b1,b2,b3;int x,y;scanf( “ %d ”,&x);b3= x/100; ;b2=(x/10)%10;b1= x/%10;y=b1*100+b2*10+b3; ;printf(“the number is %dn”,y); (6)编写程序,已知三角形的底边和高,求三角形的面积。int main(int argc, char* argv)int h,a;float s; scanf(%d%d,&h,&a);s=1/2.0*a*h;printf(s=%.2fn,s);return 0;(7)编写程序,已知矩形的两条边,求矩形的面积和周长。int main(int argc, char* argv)int h,a;float s,len; scanf(%d%d,&h,&a);s=a*h; len=2*a+2*hprintf(s=%d,len=%dn,s,len);(8)编写程序,已知圆的半径,圆周率为3.14,求圆的周长和圆的面积。int main(int argc, char* argv)float s,r,len; scanf(%f,&r);s=3.14*r*r; len=2*3.14*rprintf(s=%d,len=%dn,s,len);(四)、选做题1. 编写程序,已经一个球的半径,求球的表面积和体积。2. 编写一个程序,从键盘输入圆锥体的半径r和高度h,计算其体积。3. 试编程,已知圆柱的底面半径和高,求圆柱体的体积和表面积。成绩 指导教师日期评语实验二 选择结构程序设计一、实验目的1. 了解条件与程序流程的关系。2. 掌握if语句的用法3. 熟练掌握if语句嵌套4. 掌握条件运算符的使用方法5. 熟练掌握if语句嵌套、switch语句及条件运算符的使用方法二、实验要求1. 分析整理运行结果,完成实验报告,要求报告书写字迹清晰,格式规范。2. 实验报告中应包含运行结果及结果分析。3. 最后给出实验总结及体会。3、 实验学时:6学时四、实验内容与步骤(一)逻辑运算符与if语句1读下面程序,写出运行结果,并对结果进行分析。(1)#includevoid main( )int s,a=3,b=4; s=a; if(ab) s=b; s*=s; printf(“%dn”,s); 运行结果:16(2)#includevoid main( ) int a=0,b=0,c=0;if(+a0|+b0) +c;printf(“na=%d,b=%d,c=%d”,a,b,c);运行结果:a=1,b=0,c=1(3)#includemain()int a,b,c,u,v,w; u=v=w=0;a=-1,b=3,c=3;if(c0) u=a+b;if(a0) if(c0) v=a-b;else w=c;printf(“output:u=%d,v=%d,w=%d”,u,v,w);运行结果:output:u=2,v=0,w=02程序填空1、输入任一字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。#includevoid main( )char ch;printf(“Please input ch:”);scanf(“%c”,&ch);if(ch=A&ch=a&chy) z=x; else z=y; printf(%.2fn,z);(2) 输入两个实数,按代数值又小到大的顺序输出这两个数。int main(int argc, char* argv) float x,y,z; scanf(%f%f,&x,&y); if(xy) z=x; x=y;y=z; printf(%f %fn,x,y);(3)编写程序,输入a、b、c三个数,输出最大者。int main(int argc, char* argv) float x,y,z,a; scanf(%f%f,&x,&y);if(xy)a=x;else a=y;if(za) a=z;printf(%fn,a);(4)编写一个程序,将输入的三个数从小到大排列出来。int main(int argc, char* argv) float x,y,z,a; scanf(%f%f%f,&x,&y,&z); if(xy) a=x; x=y;y=a;if(xz) a=x; x=z;z=a;if(yz) a=z; z=y;y=a; printf(%f %f%fn,x,y,z);(5)由键盘输入三个数,计算以这三个数为边长的三角形面积。(对满足三角形条件进行判断)#includemath.hint main(int argc, char* argv) float x,y,z,t,s; scanf(%f%f%f,&x,&y,&z); if(x+yz&y+zx&x+zy) t=(x+y+z)/2; s=sqrt(t*(t-x)*(t-y)*(t-z); printf(%.2fn,s);(2) if语句嵌套1. 由键盘输入三个整数a、b、c,输出其中最大的数。(用2种方法实现)方法1:int main(int argc, char* argv) float x,y,z,a; scanf(%f%f,&x,&y);a=x;if(ya) a=y;if(za) a=z;printf(%fn,a);方法2:int main(int argc, char* argv) float x,y,z,a,t; scanf(%f%f,&x,&y);a=xy?x:y;t=az?a:z;printf(%fn,t);2. 编写一个程序,将输入的三个数从小到大排列出来。(用2种方法实现)int main(int argc, char* argv) float x,y,z,a; scanf(%f%f%f,&x,&y,&z); if(xy) a=x; x=y;y=a;if(xz) a=x; x=z;z=a;if(yz) a=z; z=y;y=a; printf(%f %f%fn,x,y,z);3. 试着用多种方法实现计算函数 方法1:int main(int argc, char* argv) float x,y; scanf(%f ,&x);if(x=1)if(x=10)y=3*x-11;else y=2*x-1; else y=x;printf(%fn,y);方法2:int main(int argc, char* argv) float x,y; scanf(%f ,&x);if(x=10)y=3*x-11;else if(x20000) y=x*0.75; else if(x10000) y=x*0.8; else if(x2000) y=x*0.85; else if(x100) y=x*0.9; else y=x; printf(应付钱数:%fn,y)2. 写一程序,判断某一年是否是闰年。int main(int argc, char* argv) int t; scanf(%d,&t); if((t%4=0&t%100!=0)|t%400=0) printf(%d是闰年n,t);else printf(%d不是闰年n,t);成绩 指导教师日期评语实验三 循环程序设计一、实验目的1. 掌握while循环、do-while循环和for循环实现循环嵌套的程序设计方法。2. 较灵活地运用do-while循环和for循环实现循环算法的程序设计。3. 熟练掌握continue语句和break语句的用法。二、实验要求1. 分析整理运行结果,完成实验报告,要求报告书写字迹清晰,格式规范。2. 实验报告中应包含运行结果及结果分析。3. 最后给出实验总结及体会三、实验学时:8学时 四、实验内容与步骤(一)简单的循环结构程序设计1. 读下面程序,写出运行结果,并对结果进行分析。(1)main()int n=1,s=0;while(n10) s=s+n;n+;printf(“s=%d,n=%dn”,s,n);运行结果:s=45,n=10(2)main() int sum=0,i=11; do sum=sum+i; i+; while(i0;y-) if(y%3=0)printf(%dn,y);运行结果:9 6 3(4) main( ) int k=1,s=0;do k=k*k+(k+1)/2; s=k+s;while(s%2=0);printf(“%dn”,s);运行结果:k=72.程序改错上机调试下面的程序,记录系统给出的出错信息,改正后写在对应错误代码行后面。下述程序按公式:求 main() float s=0; int k; for(k=1;k=10;k+;)/去掉k+后“;”s+=1/k;/改为1.0/k printf(“sum=%fn”,s);运行结果:2.928968结果分析:1/k,当k大于1时,结果均为0,因为整数与整数运算,结果取整,因此1/k改为1.0/k3程序设计(1)分别用dowhile循环和for循环编程序计算方法1:int main(int argc, char* argv)int i,n,s;scanf(%d,&n);s=0; i=1dos=s+i;i+; while(i=n);printf(%dn,s);return 0;方法2:#include stdafx.hint main(int argc, char* argv)int i,n,s;scanf(%d,&n);s=0; i=1for(i=1;i=n;i+) s=s+i;printf(%dn,s);return 0;(2)分别用dowhile循环和for循环编程计算n!方法1:int main(int argc, char* argv)int i,n,s;scanf(%d,&n);s=1; i=1dos=s*i;i+; while(i=n);printf(%dn,s);return 0;方法2:#include stdafx.hint main(int argc, char* argv)int i,n,s;scanf(%d,&n);s=1; i=1for(i=1;i=n;i+) s=s*i;printf(%dn,s);return 0;(3)运用while循环编程打印出所有的“水仙花数” 。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153=13+53+33,则153是水仙花数。#include stdafx.hint n,g,s,b;for(n=100;n=1000;n+) g=n%10; s=n/10%10; b=n/100; if(n= =g*g*g+s*s*s+b*b*b) print(%d是水仙花数n,n);return 0;(4) 分别用dowhile循环和for循环编程求1!+2!+n!方法1:#include stdafx.hint main(int argc, char* argv)int i,f,n,s;scanf(%d,&n);s=0; f=1;i=1dof=f*i; s=s+f;i+; while(i=m);printf(%dn,s);return 0;方法2:#include stdafx.hint main(int argc, char* argv)int f,m,n,s;scanf(%d,&n);s=0; f=1;m=1for(m=1;m=n;m+) f=f*m; s=s+f;printf(%dn,s);return 0;(5).分别用while循环、dowhile循环和for循环编程有一分数序列:求这个数列的前20项之和。#include stdafx.hint main(int argc, char* argv)float a,b,s,t;int i;a=2;b=1;s=a/b;for(i=2;i=20;i+) t=a; a=a+b; b=t; s=s+a/b; printf(%.2fn,s);return 0;(2) 循环嵌套1. 采用循环嵌套方法求1!+2!+n!#include stdafx.hint main(int argc, char* argv)int i,f,m,n,s;scanf(%d,&n);s=0;for(m=1;m=n;m+) f=1;for(i=1;i=m;i+)f=f*i;s=s+f;printf(%dn,s);return 0;2. 试编程判断某数是否是完数的程序,完数是指这个数等于它的所有因子之和,例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。main()int x,i,n=0;scanf(%d,&x);for(i=1;i=x/2.0;i+)if(x%i=0)n=n+i;if(x=n)printf(是完数); elseprintf(不是完数);3. 编程求1000以内所有完数。main()int x,i,n;for(x=1;x=1000;x+)n=0; for(i=1;i=x/2;i+) if(x%i=0)n=n+i; if(x=n) printf(%d ,x);4. 编程求1000以内所有完数之和。main()int x,i,n,s=0;for(x=1;x=1000;x+)n=0; for(i=1;i=x/2;i+) if(x%i=0)n=n+i; if(x=n) s=s+x;printf(%d ,s);(三)break语句和continue语句1.读程序,写结果(1)main() int i,j,k,x=0;for(i=0;i2;i+) x+;for(j=0;j3;j+) if(j%2) continue; x+;x+;k=i+j;printf(k=%d,x=%dn,k,x);运行结果:k=5,x=8(2) main() int x,y;for(y=1,x=1;y=10) break;if(x%2=1)x=x+5;continue;x=x-3; printf(“x=%d,y=%dn”,x,y); 运行结果:x=10,y=62. 程序填空(1)下面程序的功能是:输出100以内同时能被3和7整除的所有整数,请填空。#include main() int i, j; for ( i=1;i=100; i+ ) if (i%3!=0|i%7!=0) continue;printf ( %dt,i );运行结果:21 42 63 84(2)判断m是否素数 main() int m,i,k; scanf(“%d”,&m); for(i=2;i=m)printf(“%d是一个素数n”,m); elseprintf(“%d不是一个素数n”,m);运行结果:输入5,输出5是一个素数3. 程序设计(1)编程求100以内的所有素数#include stdafx.h#includemath.hint main(int argc, char* argv)int x,i;for(x=2;x=100;x+)for(i=2;isqrt(x)printf(%d ,x); return 0;(2)编程求1000以内的所有素数和#include stdafx.h#includemath.hint main(int argc, char* argv)int x,i,s;s=0;for(x=2;x=100;x+)for(i=2;isqrt(x)s=s+x; printf(所有素数和是%dn,s);return 0;(4) 综合程序设计1.百马百担问题,有100匹马,驼100担货,大马驼3担,中马驼2担,两批小马驼1担,问有大中小马各多少?#include stdafx.h#includemath.hint main(int argc, char* argv)int x,y,z;for(x=1;x=33;x+) for(y=1;y=50;y+) z=100-x-y; if(6*x+4*y+z=200) printf(%d %d %dn,x,y,z); return 0;2.程序填空(选作)下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。#include main() int a, b, c, i;c=0;a=0;for ( i=0;i=10;i=i+2 ) a=a+i; b=ix)t=y;y=x;x=t;z=x*y;while(x%y!=0)m=x%y;x=y;y=m;n=z/m;printf(%d %d,m,n);return 0;4.编程输出以下图案int main(int argc, char* argv) int i,j,k; for(j=1;j=4;j+) for(k=1;k=4-j;k+) printf( ); for(i=1;i=j;i+) printf(*); printf(n); return 0;int main(int argc, char* argv) int i,j; for(j=1;j=4;j+) for(i=1;i=5-j;i+) printf(*); printf(n); return 0;main()int i,j,k;for(j=1;j=4;j+)for(i=1;i=5-j;i+)printf(*);printf(n);main()int i,j,k; for(i=1;i=4;i+)for(j=1;j=i-1;j+)printf( );for(k=1;k=9-2*i;k+)printf(*);printf(n);* * * * * * * * * * * * * 成绩 指导教师日期评语 * * * * * * * * * * * * * * * * * * *实验四 数组一、实验目的1. 掌握一维数组、的定义,赋值和输入输出的方法。2. 掌握排序算法3. 掌握二维数组的定义,赋值和输入输出的方法。4. 掌握二维数组相关的基本算法5. 掌握字符数组的定义和使用方法。6. 掌握字符数组的基本算法。二、实验要求1. 分析整理运行结果,完成实验报告,要求报告书写字迹清晰,格式规范。2. 实验报告中应包含运行结果及结果分析。3. 最后给出实验总结及体会三、实验学时:6学时四、实验内容与步骤(一)一维数组1.读程序写结果#include void main() int num5=1,2,3,4,5;int i;for(i=0;i5;i+) printf(“%4d”,numi); 运行结果:1 2 3 4 52. 程序设计(1)定义一个数组长度的整型数组,例:int a10。1)使用循环分别为数组元素赋初值2)实现数组元素初始值的输入3)分别对数组元素静态初始化。4)实现数组元素值的输出int main(int argc, char* argv)int a10=1,2,3,4,23,2,32,32,32,33;int b5,c3,i;for(i=0;i5;i+)bi=2*i;for(i=0;i3;i+)scanf(%d,c+i);printf(na:); for(i=0;i10;i+)printf(%d ,ai); printf(nb:);for(i=0;i5;i+)printf(%d ,bi);printf(nc:);for(i=0;i3;i+)printf(%d ,*(c+i);return 0;(2)求出10个数的平均数和最大数。int main(int argc, char* argv)int a10,i,s,max;float v;for(i=0;i10;i+)scanf(%d,a+i);s=a0;max=a0;for(i=1;imax) max=ai;v=s/10.0;printf(max=%d ,average=%.2fn,max,v);return 0;(3)从键盘中输入十个数,按照由小到大的顺序排序,并输出结果。(分别采用冒泡排序和选择排序方法)方法1(选择排序):int main(int argc, char* argv)int a10,i,j,t;float v;for(i=0;i10;i+)scanf(%d,a+i);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论