《C语言程序设计实训教程习题和实验解答.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计实训教程习题和实验解答.pdf(157页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C 语言程序设计实训教程习题和实验解答2.1 C 语言概述【习题解答】1 结构化程序有三大基本结构:顺序、分支和循环.2.算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。有穷性:一个算法应包含有限的操作步骤而不能是无限的。确定性:算法中每一个步骤应当是确定的,而不能应当是含糊的,有零个或多个输入输出,有一个或多个输出。有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果。对于程序设计人员,必须会设计算法,并根据算法写出程序。可以用自然语言、流程图、伪代码和计算机语言表示算法。3.C 语言的
2、主要特点有:语言简洁、紧凑,使用方便、灵活。ANSI C 一共只有32个关键字;控制语句丰富,程序书写自由,主要用小写字母表示,压缩了一切不必要的成分;运算符丰富,共有3 4 种;数据结构类型丰富;具有结构化的控制语句;语法限制不太严格,程序设计自由度大;c 语言允许直接访问物理地址,能进行位(b it)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此有人把它称为中级语言;生成目标代码质量高,程序执行效率高;与汇编语言相比,用 c 语言写的程序可移植性好。4.用传统流程图表达如下:2.2 数据类型与表达式【习题解答】一、选择题l.C 2.B 3.A 4.B 5.A 6.B 7.D
3、 8.B 9.D 10.C二、填空题1.整型、实型、字符型、枚举类型2.3.0000003.逗号运算符4.三,自右向左5.1,06.32767三、编程题1.已知球的半径为1.5cm,计算球的体积。#include void main()(float r=1.5,volume;volume=4.0/3*r*r*r;printf(1%fn,volume);)2.输入两个数a和b,求a除以b的商和余数?#include void main()int a,b,c,d;scanf(d,%d”,&a,&b);c=a/b;d=a%b;printf(d,%d”,c,d);)3.输入三个学生的成绩,求这三个学生
4、的总成绩和平均成绩。#include void main()(int a,b,c,sum;float average;printf(please input students score:);scanf(%d,%d,%d”,&a,&b,&c);sum=a+b+c;average=sum/3.0;printf(,sum=%d,average=%fn,sum,average);【实验解答】l.c=1 02.程序功能为输入两个数,求两数的差 c=1 03.#includevoid main()int a,b,c;a=b=5;c=a+b;printf(a+b=%d,c);4.运行结果 i=8,j=1
5、0,m=9,n=1 0,u=9,v=-1 0(回车)5.x=1 6,y=24,z=246.1 0 0 681 0 0 68d D1 0 0 68d D1 20 1 1 2Xp出错304 3210A7.编写一个C程序,输入a,b,c三个整数,求这三个数之和。具体要求:1)在Turbo C环境或其他编译环境下编辑该程序,然后进行编译连接。2)运行该程序,检查你所编写的程序是否正确。#include void main()(int a,b,c,sum;scanf(d,%d,%d”,&a,&b,&c);sum=a+b+c;printf(sum is:%dn”,sum);2.3顺序结构程序设计【习题解答
6、】一、选择题1.B 2.C 3.A 4.A 5.D 6.B二、填空题1.y=22.nn6nn6n6.00n6.00(表示空格)3.k=ll,k8=13,kl6=!ahpuahpunnnnnnnnnnn5.5,4,c=36.i=56,j=789.000000,x=12345.000000,y=a,c=72三、编程题1.已知 x=3.2,y=7,z=2,计算 y/3*x-2 的值。#includev o i d m a i n()f l o a t x=3.2;i n t y=7,z=2;p r i n t f(F ,y/3*x-2);)2.输入一个华氏温度,要求输出摄氏温度(结果保留2位)。公式
7、为 c=5/9*(f-3 2)o#i n c l u d e v o i d m a i n()(f l o a t f,c;s c a n f(%r,&f);c=5.0/9*(f-3 2);p r i n t f(c=%.2 f,c);)3.从键盘输入一个小写字母,用大写形式输出该字母。#include void main()(char a,b;printf(uplease input a little letter:);scanf(%c,&a);b=a-32;printf(%c,b);)4.把16进制数12a以10进制形式输出。#include void main()(int a=0 xl
8、2a;printf(%d,a);)5.输入两个整数,将其值交换。#include void main()int a,b,t;scanf(a=%d,b=%d,&a,&b);t=a;a=b;b=t;printf(a=%d,b=%d,a,b);)【实验解答】实验顺序结构程序设计1 .结果为0,因为a,b被定义为实型,而却以整型输入,类型不匹配。2.错误之处:s=3/(a+b)*(a+b);应改为:s=3.0/(a+b)*(a+b);3.运 行 结 果-1,1 77777,ffff,65535b=-24.编程并上机调试运行1)设圆半径为r=1.5,求圆周长、面积。要求用scanf函数输入数据,输出时取
9、小数点后两位。#include void main()(float r,l,s,v;scanf(%f,&r);l=2*3.14*r;s=3.14*r*r;printf(l=%.2f,s=%.2f,v=%.2f,l,s);)2)输入一个3位十进制整数,分别输出百位、的数。#include void main()(int a,b,c,d;scanf(%d,&a);b=a/100;c=a/10%10;d=a%10;printf(%d%d%d,b,c,d);十位以及个位上3)从键盘输入一个带2 位的实数,将其整数部分和小数部分分离后输出。例如:输 入 321.54,输 出 321.54=321+0.5
10、4。#include void main()(int a;float b,c;scanf(%f,&b);a=(int)b;c=b-a;printf(%.2f=%d+%.2f,b,a,c);)4)用 getchar函数读入两个字符,然后分别用putchar和 printf函数输出这两字符。#include void main()(char a,b;a=getchar();b=getchar();putchar(a);putchar(b);printf(n%c%c,a,b);)2.4选择结构程序设计【习题解答】一、选择题1.Ao 2.Do 3.Ao 4.Bo 5.Co 6.Ao二、填空题1.(x2
11、0&x30)llx-100o2.l,0,0o3.585858o4.20,0 o5.2o6.a=3,b=2o三、编程题1.要求输入三个数,输出其中最大值。#includevoid main()int a,b,c,max;scanf(%d%d%d,&a,&b,&c);max=a;if(maxb)max=b;if(maxc)max=c;printf(max is:%dn,max);)2.由键盘输入3个数,若输入的这3个数可以构成三角形,则计算以这3个数为边长的三角形周长;如果不能,则输出提示错误信息。#include void main()(float a,b,c,l;printf(please i
12、nput a,b,cn);scanf(%f,%f,%f,&a,&b,&c);if(a+b)c&(a+c)b&(b+c)a)(l=a+b+c;printf(l=%n,l);elseprintf(It is not triangle!n);)3.从键盘上输入一个整数判断其奇偶以及正负。#include stdio.hvoid main()(int a;scanf(%d,&a);if(a0)(if(a%2=0)printf(It is PLUS even number);elseprintf(It is PLUS odd number);)else if(a0)printf(2);else if(b
13、*b-4*a*c=0)printf(l);else printf(0);)5.从键盘输入表示年份的整数,判断是否为闰年。#include stdio.hvoid main()int year;scanf(%d,&year);if(year%400=0)ll(year%4=0&year%100!=0)printf(It is runnian);elseprintf(It is not runnian);)【实验解答】实验名称选择结构程序设计1.if(0=c&c=9)if(A=c&c=Z)ll(a=c&c=z)else2.编程并上机调试运行1)给出一个不多于4位的正整数,求它是几位数?#inclu
14、devoid main()int n;printf(Input a num(Onum 10000);scanf(%d,&n);if(n10)printf(ln);elseif(n100)printf(2n);elseif(n1000)printf(3n);elseprintf(4n);)2)给 出 一 个 百 分 制 成 绩,要 求 输 出 成 绩 等级A、B、C、D、E。90 分及以上为A,8089 为B,70-79为C,606 9为。,6 0以下为E。用switch语句来实现。#includevoid main()(int score;scanf(%d,&score);if(scorel
15、00)printf(Error!);else(score=score/10;switch(score)(case 10:case 9:printf(An);break;case 8:printf(Bn);break;case 7:printf(Cn);break;case 6:printf(Dn);break;default:printf(En);)3)输入四个数,要求按从大到小顺序输出。#includevoid main()int a,b,c,d,t;scanf(%d%d%d%d,&a,&b,&c,&d);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t
16、=a;a=d;d=t;if(bc)t=b;b=c;c=t;if(bd)t=b;b=d;d=t;if(cd)t=c;c=d;d=t;printf(%d,%d,%d,%dn,a,b,c,d);)4)输入3 个整数,将最大数与最小数输出。#include void main()(int a,b,c,t;int max,min;scanf(%d%d%d,&a,&b,&c);max=min=a;if(maxb)max=b;elsemin=b;if(max=0&a=9)a=a-O;printf(%d,a);elseprintf(%d,a);2.5循环结构程序设计【习题解答】一、选择题1.A 2,A 3.C
17、4.B 5.C 6.C二、填空题1.18 或 192.03.89214.3,45.356.4三、编程题1.设计程序计算并输出1+*+#include void main()int i;float s=0;for(i=l;i=99;i+=2)s=s+1.0/i;printf(us=%fn,1,s);)2.编写程序输出下面图形121321432154321#include void main()|int i,j;for(j=5;j=l;j-)for(i=l;i=g-l;i+)printfC();for(;i=5;i+)printf(“%d”,5-i+l);printf(n);)3.一球从100m高
18、度自由落下,每次落地后又反跳原高度的一半,再下落。求在第10次落地时,共经多少米?第10次反弹高度?#include void main()(float s=100,m=100,i;for(i=2;i=10;i+)(m=m/2;s=s+m*2;)printf(uNo.lO drops all distance is=%fn,s);printf(No.lO ups distance is=%f,m/2);4.输入两个整数求其最大公约数。#include void main()(int m,n,i,t;scanf(%d%d,&m,&n);if(mn)(t=n;n=m;m=t;)i=n;while(
19、m%i!=0)ll(n%i!=0)i=i-l;printf(%dn,i);5.输入一个正整数,将其逆序输出。#include stdio.hvoid main()int m,n;scanf(%d,&n);while(n!=0)(m=n%10;n=n/10;printf(%d,m);)【实验解答】实验一循环结构程序设计1.1)%ld s=0 i+=22)s=0 Id i=2*n-l i+=23)s=0,n,i=l i+=2 while(i=2*n-l);2.编程并上机调试运行1)编程求 1 !+2!+3!+.+10!#include void main()(long s=l,i,t=l;for(
20、i=2;i=10;i+)(t=t*i;s=s+t;)printf(%Id,s);)2)打印以下图案#include void main()(int i,j;for(i=l;i=4;i+)for(j=l;j4+i;j+)if(i+j5)printf();elseprintf(*);)printf(n);)for(i=l;i=3;i+)(for(j=l;j=j)printf();elseprintf(*);)printf(n);3)猴子吃桃。猴子第一天摘若干桃子,当即吃了一半,又加一个。第二天吃了剩下桃子一半又多一个。以后每天早上都吃前一天剩下的一半多一个。第十天,只剩一个。问第一天共摘多少个桃子
21、。#include void main()(int s=l,i;for(i=2;i=10;i+)s=(s+l)*2;printf(%d,s);)4)打印九九乘法表#include void main()(int i,j;for(i=l;i=9;i+)for(j=l;j=i;j+)printf(%d*%d=%dif(i=j)printf(n);)5)输出10-100之间的全部素数。#includevoid main()(inti,j;for(i=10;i=100;i+)(for(j=2;j=i;j+)(if(i%j=O)(if(i=j)printf(%d,i);break;实验二综合运用三种基本
22、结构进行程序设计1.百马百担。100匹马,驮100担,大马3担,中马2担,2个小马驮1担。问大、中、小马各多少?#include void main()(int i,j,k;for(i=0;i=3 3;i+)for(j=0;j=50;j+)(k=100-i-j;if(3*i+2*j+k/2.0=100)printf(,1Da=%d,Zhong=%d,Xiao=%dn,i,j,k);2.输入一行字符,分别统计其中英文字母、空格、数字和其它字符个数。#include void main()(char c;int Ietter=0,space=0,digtal=0,other=0;while(c=g
23、etchar()!=n)(if(c=A&c=a&c=0,&c=,9,)digtal+;elseother+;)printf(,letter=%d,space=%d,digtal=%d,other=%d,letter,space,digtal,other);)3.打印输出“水仙花数“。“水仙花数”是指一个3 位,其各位数字的立方和等于该数本身。例如:153。#include void main()int i,j,k;for(i=l;i=9;i-H-)for(j=0;j=9;j+)for(k=0;k=9;k+)if(i*100+j*10+k=i*i*i+j*j*j+k*k*k)printf(dn”
24、,i*100+j*10+k);4.将一 个 正 整 数 分 解 成 质 因 数 的 乘 积。例 如:输 入 9 0,打印90=2*3*3*5o#include void main()(int n,i=2;scanf(%d,&n);printf(%d=1,n);while(nl)(if(n%i=0)(printf(d*”,i);n=n/i;)else i+;printf(ub);5.利用循环语句编写程序:对一个正整数,将各位数字反序后的数组成一个整数输出。例如:输入12345,输出5432k#include void main()(long m,n,sum=0;scanf(%ld,&m);whi
25、le(m0)(n=m%10;m=m/10;sum=sum*10+n;)printf(%ld,sum);)6.一个素数加上1000以后是37的倍数,求满足这个条件的最小素数。#include void main()int n=l,i;while(l)(n+;for(i=2;in/2)&(n+1000)%37=0)(printf(u%d,n);break;)7.”完数”。找1000以内的所有完数。一个数如果恰好等于它的因子之和,这个数就称为“完数”。#include void main()int i,j,sum,m;for(i=2;i1000;i+)(sum=O;for(j=l;ji;j+)if(
26、i%j=O)sum+=j;if(sum=i)(printf(%d its factors arefor(m=2;mi;m+)if(i%m=0)printf(,%d,m);printf(n);)2.6 数组【习题解答】一、选择题1.A 2.D 3.A 4.D 5.B 6.B 7.C 8.D 9.C 10.D11.A 12.D二、填空题1.2 2.r 3.7 4.!dlrowolleh三、编程题1.从键盘输入n 个整数,统计所有下标为奇数且数组元素的值为偶数的个数。#includevoid main()int a100;int i,j,n,t,num=0;scanf(%d,&n);for(i=0;
27、in;i+)scanf(d”,&ai);for(i=0;in;i+)if(i%2=l&ai%2=0)num+;for(i=0;in;i+)printf(5d”,ai);printf(n%d,num);)2.将字符数组中的字母变换为其字母表顺序两位后的字母,如果是z或Z,则分别变为b或B,非字母字符不变。即a-c b-d#include#includevoid main()(char a50;int i,j,n,t,num=0;gets(a);n=strlen(a);for(i=0;in;i+)scanf(%d”,&ai);for(i=0;i=,a,&ai=,A,&ai=,X)ai=ai+2;e
28、lse if(ai=yll ai=zll ai=YII ai=Z)ai=ai-24;puts(a);3.判断任意整数n是否为回文数。(回文数指正读反读都一样的数,如:2112,121 等)#includevoid main()(long n;int i,j,m,d20;scanf(%ld,&n);m=0;while(n!=0)n=n/10;m+;for(i=0,j=m-l;ij;i+,j)if(di!=dj)break;if(ij)printfCNOT);else printf(YES);4.从键盘输入10个整数,检查整数5是否包含在这些数据中,若是的话,找出它是第几个被输入的。#includ
29、evoid main()(int a10,i;fbr(i=0;i10;i+)scanf(d”,&ai);for(i=0;i=10)printf(u5 is not in data.n);)5.任意输入2 0个正整数,找出其中的素数,将这些素数由小到大排序并输出。#includevoid main()(int a20,b20,i,j,k,m;for(i=0;i20;i+)scanf(d”,&ai);k=0;for(i=0;i20;i+)(for(j=2;j=ai-l)b k=a i;k+;)f o r(i=0;i k-l ;i+)f o r(j=i+l;j k;j+)i f(b U b i)m=
30、b i;b i=b 5;b j=m;)f o r(i=0;i k;i+)p r i n t f(5 d”,b i);p r i n t f(n );)6.将4*5矩阵每一行按由大到小排序。#i n c l u d e v o i d m a i n()int a45,i,j,k,m;for(i=0;i4;i+)for(j=0;j5;j+)scanf(%d”,&aijD;for(i=0;i4;i+)for(j=0;j5;j+)for(k=j+1 ;kaij)(m=aik;aijk=aiU;aij=m;)for(i=0;i4;i+)(for(j=0;j5;j+)printf(%5d”,aijD;p
31、rintfCXn);)【实验解答】实验一数组的定义及使用Il.&ai ai n-1 i+1 min=j ai amin2.编程并上机调试运行1)将一个数组中的值逆序存储,然后按顺序输出数组。如:原来数组存储为123,4,5的,按要求重新存为5,4,3,2,1。#includevoid main()(int i,j,t,n,a100J;scanf(%d,&n);for(i=0;in;i+)scanf(%d”,&ai);for(i=0,j=n-l;ij;i+,j-)t=aij;ai=aj;)for(i=0;in;i+)printf(5d”,ai);)2)打印出以下杨辉三角(要求打印8行)。11 1
32、1 2 11 3 3 11 4 6 4 11 5 10 10 5 1#includevoid main()(int i,j,a88;for(i=0;i8;i+)for(j=0;j8;j+)if(i=jllj=0)aiJUl=l;elseaij=ai-l|j-l+ai-lj;for(i=0;i8;i+)(for(j=0;j8;j+)printf(%5d”,ai 皿);printf(n);)3)求4*4方阵两对角线元素之和及其转置矩阵。#includevoid main()(int i,j,a44,b44,s=0;for(i=0;i4;i+)for(j=0;j4;j+)s c a n f(d”,&
33、a i JD;f o r(i=0;i 4;i+)f o r(j=0;j 4;j+)(b i U =a i j ;i f(i=司l i+J=3)s=s+a i j ;)f o r(i=0;i 4;i+)(f o r(j=0;j 4;j+)p r i n t f(%5d”,b i j );p r i n t f(n);)p r i n t f(%5d,s);)4)输出F i b o n a c c i数列的前2 0项。#i n c l u d e v o i d m a i n()long a20=lJ;int i;for(i=2;i20;i+)ai=ai-l+ai-2;for(i=0;i20;i
34、+)printf(ldt”,ai);5)按公式计算,求 A20的值。Al=l,A2=l;A3=3*A1+A2;A4=3*A2+A3;#includevoid main()(long a20=U;int i;for(i=2;i20;i+)ai=ai-l+3*ai-2;printf(%ldn,a19);)实验二数组的定义及使用IIl.i=l si!=lO sn=,O,2.编程并上机调试运行1)用冒泡法对10个整数排序。10个整数用scanf函数输入。#includevoid main()(int a10J;int i,j,t;for(i=0;i10;i+)scanf(d”,&ai);for(i=0
35、;in-l;i+)for(j=0;j n-1-i;j+)if(ajaj+l)t=aj;aj=alj+l;aj+l=t;for(i=0;i10;i+)printf(5d”,ai);)2)将两个字符串连接起来,不要用strcat函数。#include#includevoid main()(chara100,b50;intgets(a);gets(b);t=strlen(a);for(i=0;bi!=0,;i+,t+)at=bi;at=0;puts(a);)3)输入一行字符串,统计其中的单词个数,单词之间用空格隔开。如:输入lam a boy!其中单词的个数为4 个(不考虑大写字母。#include
36、#includevoid main()(char a100;int i,t;gets(a);t=0;for(i=0;ai!=0;i+)if(ai=,a,&ai=tz,&ai-l=1li=0)t+;printf(i,t=%dn,t);)4)找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点。#includevoid main()int a1010,i,j,k,ani,anj,max,flag;scanf(%d,%d,&m,&n);for(i=0;im;i+)for(j=0;jn;j+)scanf(u%d,&aij);for(i=0;imax)(max=aij;
37、anj=j;)for(k=0,flag=1 ;kak anj)flag=O;if(flag)ani=i;printf(ua%d%d=%dn,ani,anj,max);break;)if(!flag)printf(“没有鞍点)5)已有一个排序好的数组(从小到大排序),现输入一个数,要求按原来排序的规律将它插入数组中。#includevoid main()(int a50,n,x;int i;scanf(%d,&n);for(i=0;in;i+)scanf(%d,&ai);printf(Hinput x:);scanf(%d,&x);for(i=0;ix)break;if(i=n)ai=x;els
38、efor(j=n-l;j=i;j-)aU+l=a|j;ai=x;for(i=0;i=,a,&slk=,a,&s2k=,z,)s2=s2-32;k+;if(strcmp(s l,s2)!=0)printf(stl!=st2n);elseprintf(stl=st2n);2.7函数与预处理【习题解答】一、选择题l.B 2.C 3.C 4.A 5.C 6.B 7.D 8.A 9.B10.D ll.C 12.C 13.A 14.B 15.C二、填空题1.main函数2.main函数3.extern4.return5.void6.#undef7.#include8.349.910.15,23,5,241
39、1.double pow(float x,int n)pow(x,i)i=n1 2.t=1.0breakt*=x/i1 3.n1 0 J!=nnch-,O,+三、编程题1.写一个函数,求三个数的最大值。#include int max(int x,int y)(return xy?x:y;int max3(int x,int y,int z)(int t;t=max(x,y);return zt?z:t;void main()int a,b,c,t;printf(uinput three numbers:);scanf(%d%d%d,&a,&b,&c);t=max3(a,b,c);printf
40、(uThe max number is%d,t);2.写一个函数,对数歹U s=l*2*3+3*4*5+.+n(n+l)(n+2)求和。#include int sum(int n)(int i,s;s=0;for(i=l;i=n;i+=2)s=s+i*(i+l)*(i+2)return s;)void main()int n;printf(uinput n:);scanf(H%d,&n);printf(l*2*3+3*4*5+%d*(%d)*(%d)=%d”,n,n+l,n+2,sum(n);)3.写一个函数,当输入整数n,输出高度为n的等边三角形,当n=5时的等边三角形如下:*5 1 cK
41、|*#include void triangle(int n)(int i,j;for(i=0;in;i+)for(j=0;j=n-i;j+)putcharC);for(j=0;j=2*i;j+)putcharC*);putchar(ln);)void main()(int n;printf(enter n:);scanf(,%d,&n);printf(n);triangle(n);4.使用数组作为函数参数,实现数组中元素的逆序。#include#include void change(int b,int n)int len,i,j;int t;for(i=0,j=n-l;in/2;i+,j)
42、(t=bi;bi=bUl;bj=t;)void main()(int i,arr10=1,2,3,4,5,6,7,8,9,10);printfCBefore:);for(i=0;i10;i+)printf(%d,arri);printf(n);change(arr,10);printf(u After:);for(i=0;i10;i+)printf(u%d,arri);printf(n);)5.递归法求解l+2+3+.+n。#include#define N 100int sum(int a,int n)(int s;if(n=l)s=an-l;elses=sum(a,n-1 )+an-1 ;
43、return s;void main()int aN,n,i,k;scanf(%d,&n);for(i=0;in;i+)ai=i+l;k=sum(a,n);printf(dn”,k);)6.写一函数,输入4个数字字符,要求输出这4个数字字符时每两个数字间空一个空格。例如:输入2 0 1 2,应输入“2 0 1 2”。#include stdio.h#include string.hvoid input(char b10);void main()(char a10;int i;for(i=0;i4;i+)scanf(%c,&ai);input(a);for(i=0;i7;i+)printf(%c
44、,ai);)void input(char b10)(int i,j;for(i=0;ii+l)(bj=b|j-l;卜;)bj=;7.编写一个函数,计算c 5,)=3_。n(jn-ri)#include long fact(int x);void main()(int m,n;long cmn;printf(l,Input m,n:);scanf(l(%d,%d)1,&m,&n);cmn=fact(m)/(fact(n)*fact(m-n);printf(The combination is%ldn,cmn);)long fact(int x)(long y;for(y=l;x0;-x)y*=
45、x;return(y);【实验解答】实验一函数程序设计I1.n*f(n-l)x=f(i)2.power*=i m=n sum+=f 1 (m,k)3.1)运行结果:xl=5/*此处x为全局变量*/x2=3/*此处X为局部变量*/2)运行结果:xl=5/*此处X为全局变量*/x2=3/*此处X为局部变量*/x3=5/*此处X为引用外部变量*/3)此程序中x为静态变量,并且两个变量x所处的域不同运行结果:HELLOi=l x=10 y=5CPROGRAM1=18 x=20HELLO1=1 x=10 y=54.编程并上机调试运行1)求 方 程/+法+。=0的根,用三个函数分别求当从-4就大于0,等于
46、0和小于0时的根,并输出结果。从主函数输入a、b、c的值。#include#include double xl,x2,p,q,disc;void greater_than_zero(double a,double b)(xl=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);)void equal_to_zero(double a,double b)(xl=x2=-b/(2*a);)void smaller_than_zero(double a,double b)p=-b/(2*a);q=sqrt(-disc)/(2*a);void main()doub
47、le a,b,c;printf(Please input a,b,c:);scanf(u%lf,%lf,%ir,&a,&b,&c);disc=b*b-4*a*c;printfCrootAn);if(disc0)(greater_than_zero(a,b);printf(x I=%f,x2=%fn,xl,x2);)else if(disc=0)(eq u al_to_zero(a,b);printf(xl=x2=%fn,xl);)elsesmaller_than_zero(a,b);printfCx 1=%f+%fi,x2=%f-%finH,p,q,p,q);)2)写一个判断素数的函数,在主函
48、数输入一个整数,输出是否为素数的信息。#include int prime(int n)(int i;for(i=2;i=n)return 1;elsereturn 0;)void main()int n;printf(uInput a integer:);scanf(%d,&n);if(prime(n)printf(%d is a primen,n);elseprintf(%d is not a primen,n);)3)用递归法求n阶勒让德多项式的值,递归公式为:1 (=0)l)#includedouble p(int n,double x)(if(n=0)return 1;elseif(
49、n=l)return x;elsereturn(2*n-l)*x-p(n-l,x)-(n-l)*p(n-2,x)/n;void main()(int n;double x;printfCInput n and x:n);scanf(%d,%lf,&n,&x);printf(%f,p(n,x);实验二函数程序设计n1.此程序功能是将数组中元素按从大到小排序,本题运行结果是10 7 5 3-7 o2.此 程 序 考 查 的 是 带 参 数 的 宏 展 开,代 入 宏,展开得a/=k+m*k+m/k+m*k+m。代入值得程序运行结果是3。3.编程并上机调试运行1)编写一函数,由实参传递一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述结果。#include#include int letter=0,digit=0,space=0,other=0;void count(char s)int i=0while(si!=0)if(si=,A)&si=ta)&si=i0,&si=,9,)digit+;elseif(si=)space+;else other+;i+;)void main()(char s20;printf(lPIese input a string:);gets(s);count(s);printf(i,letter=%d,digit=