1、实验10C语言运行环境实验1-0C语言运行环境演示程序2:# includeint main()int a,b,sum;a=123;b=456;sum=a+b;printf(sum is %dn,sum);return 0;演示程序3:#include int max( int x , int y) int z ; if( xy) z=x; else z=y; return(z); int main( ) int a , b , c ; scanf( %d,%d, &a , &b ); c=max(a , b ); printf(max=%dn,c); return 0;程序4:求整数10、2
2、0和35的平均值。演示程序 4:# includeint main()int a,b,c,sum;double average;a=10;b=20;c=35;sum=a+b+c;average=sum/3.0;printf(average=%fn,average);return 0;1输入下面的程序:#include void main( ) char c1, c2; c1 = a; c2 = b; printf (“%c %cn”, c1, c2);(1)运行此程序;(2)在程序的最后增加语句“printf(“%d%dn”,c1,c2);”再运行,并分析结果;(3)将程序的第4行“char
3、c1, c2;”改为“int c1, c2;”后再运行,并分析结果;(4)将程序的第5、6行改为:c1 = a; /* 不用单撇号*/c2 = b;再运行,并分析结果;运行出现一个错误。因为a,b是常量字符,将它赋值给一个变量字符,不能运行。(5)再将程序的第5、6行改为:c1 =” a”; /*用双撇号*/c2 =” b”;再运行,并分析结果;(6)再将程序的第5、6行改为:c1 =300; /*用大于255的整数*/c2 =400;再运行,并分析结果。2输入以下程序:#include void main( ) char c1 = a, c2 = b, c3 = c, c4 = 101, c
4、5 = 116; printf (“a%c b%ctc%ctabcn”,c1, c2, c3); printf(“tb%c%c”, c4, c5);先用人工分析程序,写出应得结果,再与运行结果比较。应输出:aa bb cc abc AN 3输入并运行下面的程序#include void main() int a,b;unsigned c,d;long e,f;a = 100;b = -100;e = 50000;f = 32767;c = a;d = b;printf(“%d,%dn”, a, b);printf(“%u,%un”, a, b);printf(“%u,%un”, c, b);c
5、 = a = e;d = b = f;printf(“%d,%dn”, a, b);printf(“%u,%un”, c, d);请对照程序和运行结果分析:(1)将一个负整数赋给一个无符号的变量,会得到什么结果;原样输出。(2)将一个大于32767的长整数赋给整型变量,会得到什么结果;原样输出。(3)将一个长整型数赋给无符号变量,会得到什么结果(分别考虑该长整数的值大于或等于65535 以及小于65535 的情况)。大于或等于65535时:原样输出;小于65535时:原样输出。同学们可以改变程序中各变量的值,以便比较。例如: a = 65580, b = -40000, e = 65535,
6、f = 65580。4输入以下程序:#include void main() int i,j,m,n;i = 8;j = 10;m = +i;n = j+;printf(“%d,%d,%d,%dn”, i, j, m, n);(1)运行程序,分析变量:i、j、m、n 的值(2)将第7、8行改为:m = i+;n = +j;再运行并分析结果;(3)将程序改为:#include void main() int i,j;i = 8;j = 10;printf(“%d,%dn”, i+, j+);运行并分析结果;(4)在(3)的基础上,将printf 语句改为:printf(“%d,%d”, +i,
7、+j);运行并分析结果;(5)再将printf 语句改为:printf(“%d,%d,%d,%d”, i, j, i+, j+);运行并分析结果;(6)将程序改为:#include void main() int i, j, m=0, n=0;i = 8;j = 10;m+= i+; n-= -j;printf(“i=%d,j=%d,m=%d,n=%dn”, i, j, m, n); 最后,对这次实验作一个简要的总结。1阅读下面的程序,说明其功能,然后运行并观察分析结果。程序一:#include void main( ) int x,y;printf(“Enter integer x and
8、y :n”);scanf(“%d%d”,&x, &y);printf(“x= %d, y =%dn”,x,y);if(xy) printf(“x=%dn”,x);if(yx) printf(“y=%dn”,y);if(x=y) printf(“x=y=%dn”,x);功能:判断两个数的大小,然后分别输出相应的值;分析:无论xy或yx,都分别输出x和 y的值,若x=y,则输出x。程序二:#include void main( ) int a,b,c,t;printf(“input integer a, b,c :n”);scanf(“%d%d%d”,&a, &b,&c);printf(“a= %
9、d, b =%d, c =%d n”,a,b,c);if(ab) t=a; a=b; b=t;if(ac) t=a; a=c; c=t;if(bc) t=b; b=c; c=t;printf(“%d, %d; %dn”,a,b,c);功能:将a,b,c按小到大的顺序排列。分析:若if句成立,则运行后面花括号的结果。程序三:#include void main( ) int n;printf(“Enter integer n : ”);scanf(“%d”,&n);if(n%2) printf(“n=%d is odd.n”,n);elseprintf(“n=%d is even.n”,n);功
10、能:判断输出n的值为奇数还是偶数。分析:若输入n的值为奇数,则输出“n=11 is odd”,若输入n的值为偶数,则输出“n=12 is even”。程序四:#include void main( ) int n;printf(“Enter integer n : ”);scanf(“%d”,&n);printf(“n= %d n”,n);if(n=90) printf(“An”);else if(n=80)printf(“Bn”);else if(n=70)printf(“Cn”);else if(n=60)printf(“Dn”);elseprintf(“En”);功能:通过判断输入的成绩
11、,输出相应的等级。分析:若n=90,为A等,若n=80,为B等,若n=70,为C等,若n=60,为D等,其余为E等。程序五:#include void main( ) int a=3,b=4,c=5,d=0; if(ab)d=a; elseif(cb)d=c;elsed=b; printf(d=%dn,d);功能:判断最大值。分析:判断定义的a,b,c,d,找出最大值,然后附值给d,然后输出d。程序六:#include void main( ) int c; scanf(%d,&c); if(0=c&c=9) /*条件表达式*/ c=c-0; printf(c=%dn,c); else pri
12、ntf(data error!n); 功能:根据条件,得出结果。分析: 若满足条件,则运行c=c-0。并输出相应的值。 2对于如下函数: 编写程序,用scanf函数输入x的值,求y值。程序:#include int main() int x,y; printf(输入x:); scanf(%d,&x); if(x1) y=x; printf(x=%3d, y=x=%dn ,x,y); else if(x10) y=2*x-1; printf(x=%d, y=2*x-1=%dn,x,y); else y=3*x-11; printf(x=%d, y=3*x-11=%dn,x,y); return
13、0;运行程序,输入x的值(分别为x1、1x10、x10三种情况,如0.5、8、15),检查输出的y值是否正确。x=0.5不正确,因为x,y已经被定义为整型。x=8正确x=15正确3将第1题的程序四中的if语句改用switch 语句实现,写出程序并运行。程序:#include int main() float score; char grade; printf(请输入学生成绩:); scanf(%f,&score); while (score100|score0) printf(n 输入有误,请重输); scanf(%f,&score); switch(int)(score/10) case 1
14、0: case 9: grade=A;break; case 8: grade=B;break; case 7: grade=C;break; case 6: grade=D;break; case 5: case 4: case 3: case 2: case 1: case 0: grade=E; printf(成绩是 %5.1f,相应的等级是%cn ,score,grade); return 0;5编写程序,用 scanf 函数输入一个年份 year,计算这一年 2 月份的天数 days,然后用输出函数 printf 输出 days。实验步骤与要求: (1)有变量定义为整型。(2)输入前
15、要加提示语句。(3)输出结果前要有必要的文字说明。说明:(1)闰年的条件是:year 能被 4 整除但不能被 100 整除,或者 year 能被 400 整除。 (2)如果 year 是闰年,则 2 月份的天数为 29 天,不是闰年则为 28 天。最后,对这次实验作一个简要的总结。程序:#include int main() int year; int r; printf(请输入年份:); scanf(%d, &year); r = year % 400 = 0 | year % 100 != 0 & year % 4 = 0; printf(这一年二月有%dn天, 28 + r); retu
16、rn 1;总结:平常多看书,才做得快。1编写输入m和n(其中,mn),求 m+(m+1)+n的和的程序程序:#include int main( ) int i,s=0,m,n; scanf(%d,%d,&m,&n); for(i=m;i=n;i+) s=s+i;printf(%dn,s);return 0;结果:2下面程序的功能是计算n!。#include int main( ) int i,n,s=1; printf(Please enter n:); scanf(%d,&n); for(i=1;i=n;i+) s=s*i; printf(%d! = %dn,n,s);return 0;首
17、次运行先输入n=4,输出结果为4!=24,这时是正确的。为了检验程序的正确性,再输入n=10,输出为10!=24320,这显然是错误的。为了找到程序的错误,可以通过单步执行来观察变量的变化。分析产生这种现象的原因,把程序改正过来,再用n=20进行实验,分析所得到的结果。程序: #include int main( ) int i,n; double s=1; printf(Please enter n:); scanf(%d,&n); for(i=1;i=n;i+) s=s*i; printf(%d! = %fn,n,s);return 0;结果:3下列程序用于输出 fibnocci 数列的前
18、 20 项,每行输出 5 个。请补充完整后运行。/* fibnocci 数列的前两项均为,以后各项等于其前两项之和。*/#include int main( ) int i,f1,f2,f3,n; f1=1;f2=1; printf(n%5d %5d ,f1,f2); n=2; for(i=1; i=20 ;i+) if( n%d=0 ) printf(n); f3=f2+f1 ; printf(%5d ,f3);n+;f1=f2;f2=f3; return 0;4编写程序,输出 100 以内能被 7 整除的数。提示:对 7100 的每一个数进行测试,如该数不能被 7 整除,即模运算不为 0,
19、则由continue语句转去下一次循环。只有模运算为0时,才能执行后面的printf语句,输出能被 7 整除的数。程序:#include int main( ) int i,n;scanf(%d,&n);for(i=7;i=n;i+) if(i%7=0) printf(%dn,i);5.编写程序打印图形 1 1 2 1 1 2 3 2 1 1 2 3 4 3 2 1 1 2 3 4 5 4 3 2 1 1 2 3 4 3 2 1 1 2 3 2 1 1 2 1 1 提示:分别使用递增循环和递减循环完成,先把图形分成两部分来看待,前五行一个规律,后四行一个规律。每一部分利用双重 for 循环,外
20、循环控制行,内循环控制列。内循环又有两个并列的 for 循环,一个控制空格的输出,一个控制数据的输出。程序:#includeint main() int i,j; for(i=1;i=5;i+) for(j=1;j=5-i;j+) printf( ); for(j=1;j=1;j-) printf(%2d,j); printf(n); for(i=4;i=1;i-) for(j=1;j=5-i;j+) printf( ); for(j=1;j=1;j-) printf(%2d,j); printf(n); return 0;结果:用 公式求 PI 的近似值,直到发现某一项的绝对值小于10-6
21、为止(该项不累计加)。程序:#include#includemath.hint main() int sign=1; double pi=0.0,n=1.0,term=1.0; while(fabs(term)=1e-6) pi=pi+term; n=n+2; sign=-sign; term=sign/n; pi=pi*4; printf(pi=%10.8fn,pi); return 0;结果:1调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出这些整数,最后输出10个整数的平均值。#include int main() int i,n,a10,av;for(i=0;in;i+
22、)scanf(%d,ai);for(i=0;in;i+) printf(%d,ai);if(i%3=0)printf(n);for(i=0;i!=n;i+)av+=ai;printf(av=%fn,av);return 0;上面给出的程序是完全可以运行的,但是运行结果是完全错误的。调试时请注意变量的初值问题、输出格式问题等。程序:#include int main() int i,n,a10;float av,sum=0;for(i=0;i10;i+)scanf(%5d,&ai);for(i=0;i10;i+) printf(%5d,ai);if(i+1)%3=0)printf(n);for(
23、i=0;i10;i+)sum=sum+ai;av=sum/10;printf(nav=%5fn,av);return 0;结果:6.编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。程序:#includevoid main()int i,j,m,n,a10;printf(请输入10个整数:n);for(i=0; i10; i+)scanf(%d,&ai);for(i=0; i9; i+)m=i;for(j=m+1; j10; j+)if(amaj) m=j; n=ai; ai=am; am=n; printf(从大到
24、小排好顺序输出:n);for(i=0; i10; i+) printf(%4d,ai); printf(n);7.输入两个字符串,找出其中较大者。程序:# include# includeint main()char str210;char string10;int i;for(i=0;i0)strcpy(string,str0);elsestrcpy(string,str1);printf(nthe largest string is:n%sn,string);return 0;结果:8.将一个数组中的值按逆序重新存放。例如:原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。程序:#
25、include int reverse(int a, int n)int p=a+n-1;int t;while(ap)t=p, p=a, a=t;int main()int a5=8,6,5,4,1;int i;reverse(a,5);for(i=0; i5; i+)printf(%d , ai);printf(n);return 0;5.输入4名学生的姓名及三门课成绩,打印学生成绩表。(姓名、三门课成绩、平均分)。程序:# include void main() char name430; double score44 = 0.0; int i = 0,j; printf(*请输入4名学生的名字和三门成绩*n); for(i = 0; i 4; +i) printf(姓名:); scanf(%s, namei); for(j = 0; j3;j+) printf(第%d门成绩:, j+1); scanf(%lf, &scoreij); scorei3 += scoreij; /输出各科成绩和平均成绩 for(i = 0; i 4; +i) printf(%sn, namei); for(j = 0; j 3; j+) printf(第%d门成绩:%lfn, j+1, scoreij
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1