1、太原理工大学13级c语言实验指导书参考答案理工大学13级c语言实验指导书参考答案实验一 顺序1-3.温度*/编写程序,输入华氏温度(F),按下列公式计算并输出对应的摄氏温度(C)。 C = 5/9(F 32)#includevoid main()float c,f;scanf(%f,&f);c=5.0/9.0*(f-32);printf(%5.2fn,c);/*1-4.三角形面积*/编写程序,从键盘输入一个三角形的三条边长a、b、c(要求任何两条边的边长之和均大于第三条边的边长),求该三角形的面积。求三角形的面积公式是: 其中: #include stdio.h#include math.hv
2、oid main()float a,b,c,s,area;scanf(%f,%f,%f,&a,&b,&c);s=1.0/2.0*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(area=%fn,area);/*1-5两数合并*/编写程序,将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上, b数的十位和个位数依次放在c数的个位和百位上。例如,当a45,b=12,运行结果为:c=5241。#include void main()int a,b,c;printf(Input a,b :);sca
3、nf(%d,%d,&a,&b);c=(b/10*1);c+=(a/10*10);c+=(b%10*100);c+=(a%10*1000);printf(The result is:%dn,c);实验二 选择必做题2.1编一程序,使用单分支的if语句形式,求a,b,c三个整数的中间值。例如:a、b、c的值分别为3、4、5,则输出4。#include void main() int a,b,c,t; printf(Input a,b,c:); scanf(%d,%d,%d,&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;
4、c=t; printf(中间数 = %dn, b);2.2有一函数 x (x1) y =2x 1 (1x10)3x 11 (x10)用scanf函数输入x的值(分别取x1、110、10三种情况),求y值。#include void main() int x,y; printf(Input x:); scanf(%d,&x); if(x1)y=x; else if(x10) y=2*x-1; else y=3*x-11; printf(x= %d,y=%dn, x,y);2.3编写程序,输入一位学生的生日(年:y0、月:m0、日:d0)数据,再输入当前的日期(年:y1、月:m1、日:d1)数据,
5、计算并输出该学生的实足年龄。#include void main() int y0,m0,d0,y1,m1,d1,nl; printf(Input 生日(年,月,日):); scanf(%d,%d,%d,&y0,&m0,&d0); printf(Input 当前日期(年,月,日):); scanf(%d,%d,%d,&y1,&m1,&d1); if(m1m0|m1= =m0&d1=d0)nl=y1-y0; else nl=y1-y0-1; printf(年龄 = %dn, nl);2.4编写程序,定义四个字符变量c1,c2,c3和c4,分别用getchar()函数任意输入四个字母,分别输出其中
6、的最大值和最小值。#include void main() char c1,c2,c3,c4,max,min; printf(Input 四个字符 :); c1=getchar();c2=getchar();c3=getchar();c4=getchar(); max=min=c1; if(c2max)max=c2; if(c3max)max=c3; if(c4max)max=c4; min=c2min?c2:min; min=c3min?c3:min; min=c4min?c4:min; printf(max=%c,min=%cn,max,min);2.5设整型变量a的值为正数,请将以下C源
7、程序中的if语句形式改写成switch语句形式。#include main() int a; printf(”a = ”);scanf(”%d”, &a); if(a30) m = 1; else if(a 40) m = 2; else if(a 50) m = 3;else if(a 60) m = 4;else m = 6;printf(”m = %dn”, m); #include void main() int a,t,m; printf(Input a=); scanf(%d,&a); if(a0) t=a/10; switch(t) case 0:case 1:case 2:m=
8、1;break; case 3:m=2;break; case 4:m=3;break; case 5:m=4;break; default:m=6; printf(m=%dn,m); else printf(a为非正数n);实验三 循环必做题3.1编写程序,计算并输出正整数n的所有因子(1和n除外)之和。#include void main() int n,i,s=0,m=0; printf(Input n:); scanf(%d,&n); for(i=2;in;i+) if(n%i= =0) printf(%5d,i);s+=i;m+; if(m%10= =0)printf(n); pri
9、ntf(ns= %dn, s);3.2编写程序,利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。迭代步骤如下: ()取x1初值为0.0; ()x0=x1,把x1的值赋给x0; ()x1=cos(x0),求出一个新的x1; ()若x0-x1的绝对值小于0.000001,执行步骤(),否则执行步骤(); ()所求x1就是方程cos(x)-x=0的一个实根。#include #include void main() double x0,x1=0.0; do x0=x1; x1=cos(x0); while(fabs(x1-x0)=1e-6); printf(nx1= %.2fn,
10、x1);3.3编写程序,输入一行字符,分别统计出其中的大写字母、小写字母、空格和数字的个数。提示:用以下循环格式处理输入的一行字符。 while(c = getchar()!=n) /* 若输入的c不是回车符时继续 */ 循环体或者:c = getchar();while(c !=n) /* 若c不是回车符时继续 */ 循环体 c = getchar(); #include #include void main() char c; int n1,n2,n3,n4; n1=n2=n3=n4=0; printf(请输入一行字符,以换行结束:); while(c=getchar()!=n) if(i
11、supper(c)n1+; else if(islower(c)n2+; else if(isdigit(c)n3+; else if( c= )n4+; printf(n大写=:%d,小写: %d,数字: %d,空格: %d,n, n1,n2,n3,n4);3.4编写程序,在屏幕上输出辉三角形。 11 11 2 11 3 3 11 4 6 4 11 5 10 10 1 #include stdio.h#define N 20void main()int i,j,arrayNN=0,n;printf(请输入n行:n);scanf(%d,&n);for(i=0;in;i+)arrayi0=1;a
12、rrayii=1;for(i=2;in;i+) for(j=1;ji;j+) arrayij=arrayi-1j-1+arrayi-1j;printf(辉三角形:n);for(i=0;in;i+) for(j=0;j=i;j+) printf(%4d ,arrayij); printf(n);printf(n);选做题3.1#include#includevoid main() float x,t,sum=1.0,i=1.0,m=1.0; int s=1; printf(请输入x:); scanf(%f,&x); t=x; while(fabs(t)1e-6) sum+=t; s=-s; i+
13、; m*=i; t=s*1.0*pow(x,i)/m; printf(nx=%f,f(x)=%fn, x,sum);3.2#include #include main() int i,m,n,k=0,j; double s; printf(请输入正整数m,n(mn):); scanf(%d,%d,&m,&n); for(i=m+1;in;i+) s=sqrt(i); for(j=2;js)printf(%6d,i);k+; if(k%8=0)printf(n); printf(n);3.3#include void main() int i,m=2,j,n; double s=0.0,k=1.
14、0,t; printf(请输入正整数n:); scanf(%d,&n); for(i=1;i=n;i+) t=m/k; s+=t; j=m; m=m+k; k=j; printf(n和为:%lfn,s); 3.4#include stdio.hvoid main()int i;double h=100.0,h1,s=100.0;for(i=2;i=10;i+) h1=h/2; h=h1; s+=2*h; printf(s=%lf,h=%lfn,s,h);实验四 数组必做题4.1编写程序,将3n之间的所有非素数存入数组array中,然后输出该数组元素。例如:若n=20,则输出 4,6,8,9,1
15、0,12,14,15,16,18,20。#include #include #define N 20void main()int i,arrayN,j,m,k=0;for(i=3;i=N;i+) m=sqrt(i); for(j=2;j=m;j+) if(i%j=0)arrayk+=i;break; for(i=0;i=k-1;i+) printf(%d ,arrayi);printf(n); 4.2 编写程序,将字符数组str中的字符串逆置后输出。例如:若str字符串为“This is a C programe.”,则输出为“.emargorp C a si sihT”。#include #
16、include #define N 80void main()int i,k;char strN,t;gets(str);k=strlen(str);for(i=0;ik/2;i+)t=stri;stri=strk-1-i;strk-1-i=t;printf(n%sn,str); 4.3从键盘输入10个整数,选择一种排序算法,将这些数按从大到小的顺序排列输出。#include#define N 10void main()int i,j,arrayN,m,t;printf(请输入10个整数:);for(i=0;iN;i+) scanf(%d,&arrayi);for(i=0;iN-1;i+) m
17、=i; for(j=i+1;jarraym)m=j; if(m!=i) t=arraym;arraym=arrayi;arrayi=t; for(i=0;iN;i+) printf(%d ,arrayi);printf(n); 4.4计算55矩阵的主对角线元素和此对角线元素之和。若有下列矩阵,则输出的值应该是130。1 2 3 4 56 7 8 9 1011 12 13 14 1516 17 18 19 2021 22 23 24 25#include #define N 5void main()int i,j,arrayNN,s=0;printf(请输入55个整数:);for(i=0;iN;
18、i+) for(j=0;jN;j+) scanf(%d,&arrayij);for(i=0;iN;i+) for(j=0;jN;j+) if(i=j|i+j=N-1)s+=arrayij; if(i=j&i+j=N-1)s+=arrayij;for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d ,arrayij); printf(n);printf(s=%dn,s);选做题4.1#include stdio.h#include string.h#define M 5void main()int i,j,aM,k,x;char strM80,tM;printf(请输入
19、5个字符串:);for(i=0;iM;i+)gets(stri);ai=strlen(stri);for(i=0;iM-1;i+)k=i; for(j=i+1;jak)k=j; if(k!=i)strcpy(t,stri);strcpy(stri,strk);strcpy(strk,t); x=ak;ak=ai;ai=x; for(i=0;iM;i+) puts(stri); printf(n);4.2#include stdio.h#include string.h#define M 80void main()int i,j=0,k=0,a;char sM,tM,wM;printf(请输入1
20、个字符串:n);gets(s);a=strlen(s);for(i=0;i=0&si=9)tj+=si; else wk+=si;tj=0;wk=0;strcat(t,w);strcpy(s,t); puts(s); printf(n);4.3#include stdio.h#define N 6void main()int i,arrayN,t,k;printf(请输入N个整数:n);for(i=0;iN;i+) scanf(%d,&arrayi);k=N%2?N/2+1:N/2;for(i=0;iN/2;i+)t=arrayi;arrayi=arrayk+i;arrayk+i=t; for
21、(i=0;iN;i+) printf(%d ,arrayi);printf(n); 4.4#include stdio.h#define N 4void main()int i,j,arrayNN,t;printf(请输入44个整数:n);for(i=0;iN;i+) for(j=0;jN;j+) scanf(%d,&arrayij);printf(移动前矩阵:n);for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d ,arrayij); printf(n);printf(n);for(i=0;iN;i+) for(j=0;j2;j+) if(j=0)t=arra
22、yij;arrayij=arrayi2-j;arrayi2-j=t; else t=arrayij;arrayij=arrayi4-j;arrayi4-j=t;printf(移动后矩阵:n);for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d ,arrayij); printf(n);printf(n);实验五 函数必做题5.1编写一个判断素数的函数 int Isprime(int m)。在主函数中输入一个整数n,然后调用Isprime,如果n是素数,则输出:n is prime! 否则输出:n isnt prime!#include void main() in
23、t n; printf(请输入正整数n:n); scanf(%d,&n); if(Isprime(n)printf(%d is prime!n,n); else printf(%d isnt prime!n,n); printf(n); int Isprime(int m)int j;for(j=2;jm/2)return 1;else return 0;5.2编写两个函数,分别求两个整数的最小公倍数和最大公约数并返回给主函数,两个整数由主函数输入。#include #include int Lowest_common_multiple(int m,int n,int h);int Greatest_common_divisor(int m,int n);void main() int m,n,t,p,k; prin
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1