1、选择作业:1、输入两个运算量和一个运算符,完成加、减、乘、除、取余运算,输出运算结果。#include“stdio.h“main( )int x,y,z; char ch;printf(“Enter an operator(+,-,*,/,%):n“);ch=getchar();printf(“Enter two numbers:“);scanf(“%d%d“,switch(ch)case +:z=x+y;printf(“%d+%d=%d“,x,y,z);break;case -:z=x-y;printf(“%d-%d=%d“,x,y,z);break;case *:z=x*y;printf(
2、“%d*%d=%d“,x,y,z);break;case /: if (y=0)printf(“division by zeron“);else z=x/y; printf(“%d/%d=%d“,x,y,z);break;case %: if (y=0)printf(“division by zeron“);else z=x%y; printf(“%d%d=%d“,x,y,z);break;default:printf(“The error operator“);2. 用公式 f=p*w*s*(1-d)计算运输费。要求运费和路程从# include void main( )float f,p,
3、w,s,d;int c;printf(“please input how much mony/T:“); scanf(“%f“,printf(“please input how weight:“); scanf(“%f“,printf(“please input how loog:“); scanf(“%f“,if(s=3000) c=12;else c=s/250;switch( c)case 0: d=0;break;case 1: d=0.02;break;case 2: case 3: d=0.05;break;case 4: case 5: case 6: case 7: d=0.0
4、8;break;case 8: case 9: case 10: case 11: d=0.10;break;case 12: d=0.15; break; f=p*w*s*(1-d);printf(“f=%.2fn“,f);3.区分键盘上的字母、数字、空格和回车字符。# include void main( ) char c;printf(“Please input a character:n“);c = getchar();if(c= | c=n)printf(“This is a blank or enter“); else if(c=0 printf(“please input n1,
5、n2,n3:“);scanf(“%f%f%f“,max=n1;if(max=10 输入输出示例:input x: -2.5f(-2.500000)=-2.5源程序:#includevoid main()float x,y;printf(“please input x:“);scanf(“%f“,if(x=1int y;printf(“please input score:“);scanf(“%f“,y=(int)(score/10);switch(y)case 0:case 1:case 2:case 3:case 4:case 5:printf(“%f 的等级为 En“,score); br
6、eak;case 6:printf(“%f 的等级为 Dn“,score); break;case 7:printf(“%f 的等级为 Cn“,score); break;case 8:printf(“%f 的等级为 Bn“,score); break;case 9:case 10:printf(“%f 的等级为 An“,score); break;第一次运行结果:please input score:100APress any key to continue第二次运行结果:please input score:8686.0 的等级为 BPress any key to continue第三次
7、运行结果:please input score:5050 的等级为 EPress any key to continue四、编程,输入 2005 年的任一个月,输出这个月的天数,要求使用 switch 语句。输入输出示例:Input month of 2005: 10 2005 年 10 月有 31 天源程序:#includevoid main( )int month;printf(“please input a month;“);scanf(“%d“,switch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:printf(
8、“2005 年%d 月有 31 天n“,month); break;case 2:printf(“2005 年%d 月有 28 天n“,month); break;case 4:case 6:case 9:case 11:printf(“2005 年%d 月有 30 天n“,month); break;default:printf(“input another month pleasen3“);运行结果:please input a month;12005 年 1 月有 31 天Press any key to continue五、改错,对 2 个整数进行乘、除和求余运算。 源程序(有错误的程
9、序)#includevoid main() char sign;int x,y;prnitf(“输入 x 运算符 y: ”);scanf(“%d%c%d”,if(sign=*)printf(“%d * %d = %dn”,x,y,x*y);else if(sign=/)printf(“%d / %d = %dn”,x,y,x/y);else if(sign=%)printf(“%d % %d = %dn”,x,y,x%y);elseprintf(“运算符输入错误 ”);实验四:1调试示例:输入 2 个正整数 m,n,输出它们的最小公倍数和最大公约数。修改后的程序:#includevoid ma
10、in() int m,n,j,k;printf(“input m n:n“);while(scanf(“%d%d“,printf(“请输入一批整数:n“);while(scanf(“%d“,else sum2+=x;sub=sum1-sum2;printf(“sum1=%dnsum2=%dnsub=%dn“,sum1,sum2,sub);运行结果为:请输入一批整数:1 2 3 4 Ctrl+Zsum1=6sum2=4sub=2编程,输入个正实数 eps,计算并输出下式的值,直到最后一项的绝对值小于 eps源程序如下;#include void main() float f=0,eps,t=1.
11、0;int i=1,sign=1;printf(“请输入正实数 eps 的值:“);scanf(“输入一个正实数%f“,while(abs(t)eps)t=1.0/i*sign;f+=t;sign=-sign;i+=4;printf(“f=%f n“,f);运行结果为:请输入正实数 eps 的值:0.000001f=0.8785764 编程,输入一个整数,求它的各位数字之和及位数。例如 123 的各位数字之和是 6,位数是 3.源程序如下:#includevoid main()int i=0,n,sum=0;scanf(“%d“,if(n0)sum+=n%10;n=n/10;i+;printf
12、(“位数 =%d,各位数之和=%dn“,i,sum);运行结果:134位数=3;各位数之和=85、改错,输入 2 个整数,分别将其逆向输出。输入输出示例:修改后的程序:#includeint fun(int n) int m,y;y=0;if(n0)m=n;elsem=-n;while (m0) y=y*10+m%10;m=m/10;if(n=0) return y;else return -y;void main() int n,m;scanf(“%d%d“,printf(“%d 的逆向是%dt“,n,fun(n);printf(“%d 的逆向是%dt“,m,fun(m);运行结果:234
13、-234234 的逆向是 432-234 的逆向是-4326 调试示例,输入正整数的个数 n,再输入 n 个正整数,判断它们是否为素数。素数就是只能被 1 和自身整除的正整数,1 不是素数,2 是素数修改后的程序:#include#includevoid main() int i,j,k,m,n;printf(“输入正整数的个数 n:“);scanf(“%d“,printf(“输入 %d 个正整数n“,n);k=n;for(j=0;jn)printf(“%d 是一个素数!n“,m);elseprintf(“%d 不是一个素数!n“,m);运行结果:输入正整数的个数 n:3输入 3 个正整数:2
14、 5 92 不是一个素数;5 是一个素数;9 不是一个素数;7编程,输出 101115 之间不能被 3 整除的数,每行输出 5 个。要求使用 continue 语句。源程序:#includevoid main() int n,count=0;for(n=101;nvoid main() int day,total,sum=1;for(day=1;dayvoid main() int day,x; day=9; x=1; while(day0) x=(x+1)*2;day-; printf(“the total is %dn“,x); 9在 1001500 内找出所有的亲密数对,并输出每对亲密数
15、对。输入输出示例:(220,284) (284,220) (1184,1210) (1210,1184)源程序:# includeint yun(int x);void main() int a,b;for (a=100;a=100char c10,temp;scanf(“%d“,while(x!=0)ci=x%10+0;x=x/10;i+;ci=0;for(j=0;j=0,n=0, Ack(m,n)定义为Ack(0,n)=n+1Ack(m,0)= Ack(m-1,1)Ack(m,n)= Ack(m-1,Ack(m,n-1), m0, n0源程序: #includeint ack(int m,
16、int n)if(m=0)return (n+1);else if(n=0)return ack(m-1,1); elsereturn ack(m-1,ack(m,n-1);void main()int m,n;printf(“input m,n(m=0,n=0):“);scanf(“%d%d“,printf(“ack(%d,%d)=%dn“,m,n,ack(m,n);4.6 分别写出 Hermite 多项式 Hn(x)之值的递推和递归函数, Hn(x)定义如下:H0(x)=1H1(x)=2*x;Hn(x)=2*x* Hn-1(x)-2*(n-1) Hn-2(x), x1源程序:#includ
17、eint hermite(int n,int x)if(n=0)return 1;if(n=1)return (2*x);if(x1)return (2*x*hermite(n-1,x)-2*(n-1)*hermite(n-2,x);void main()int n,x;printf(“input n,x:“);scanf(“%d%d“,printf(“hermite(%d,%d)=%dn“,n,x,hermite(n,x);运行结果:input n,x:5 5hermite(5,5)=80600Press any key to continue实验五:1.某数列为 K(n)的定义为:求该数列
18、的第六项 k(6)。k(n)=1 n=1k(n-1)2 n 为偶数k(n-1)3 n 为奇数 源程序:#includefloat k(int n) int m;if(n=1) m=1;else if(n%2=0) m=k(n-1)*2;else m=k(n-1)*3;return (m);void main( ) int i;int j;printf(“input a integer number:“);scanf(“%d“,if(i#include int p(int n);void main()int n,x,t=0; while(scanf(“%d“,if(x=1) printf(“ %
19、3d “, n);t+;if(t%10=0) printf(“n“);int p(int n)int i,k;k=sqrt(n);for(i=2;i int gcd(int n, int m) int r,t;if(m2f(2)=f(1)=1 当 n=1 或 n=2 源程序:#includeint f(int n) int m;if(n=1|n=2) m=1;else m=f(n-2)+f(n-1);return m;void main( ) int i;int n;printf(“input a integer number:“);scanf(“%d“,if(nvoid main()int
20、i,j,n,x,a10,t;printf(“输入数据的个数 n:“);scanf(“%d“,printf(“输入 %d 个整数:“,n);for(i=0;iai) continue;j=n-1;while(j=i)aj+1=aj;j-; ai=x;break;if(i=n) an=x;for(i=0;ivoid main()int i,n,index,temp,a10,min,max;printf(“请输入整数个数 n(nmax)max=ai;index=i;temp=an-1;an-1=aindex;aindex=temp;printf(“交换后的 %个整数为: “,n);for(i=0;i
21、#includevoid main()int i,index,temp,n,j,a10;printf(“Input a number please: “);scanf(“%d“,printf(“Input %d numbers:“,n);for(i=0;i#includevoid main()int i,temp,n,j,a10;printf(“Input a number please: “);scanf(“%d“,printf(“Input %d numbers:“,n);for(i=0;iabs(ai+1) temp=ai;ai=ai+1;ai+1=temp;printf(“exchan
22、ged %d numbers:“,n);for(i=0;i#includefloat fun(float x0,float x1,float y0,float y1)float y;y=sqrt(pow(x0-x1),2)+pow(y0-y1),2);return y;void main()float x5,y5;int i,j;float max=0.0,t=0.0;printf(“please input 5 numbers:“);printf(“横坐标 :“);for(i=0;i#includevoid main( ) float a202,b2020,x,y;int n,i,j,row
23、,cel;printf(“输入点数: “); scanf(“%d“,printf(“输入 %d 点的坐标:“,n);for (i=0;ibrowcel) row=i;cel=j;printf(“n 第%d 点到第%d 点距离最大是%.2fn“ ,row+1,cel+1,browcel);5编程,输入一个 n 行 m 列(nvoid main()int n,m,i,j,a44,min,max,min_row,min_col,max_row,max_col;printf(“输入行数 “);scanf(“%d“,printf(“输入列数 “);scanf(“%d“,for(i=0;imax)max=
24、aij;max_row=i; max_col=j;printf(“最大值是 :a%d%d=%d,最小值是:a%d %d=%dn“,max_row,max_col,max,min_row,min_col,min);运行结果输入行数 3输入列数 21 2 3 4 5 61 23 45 6最大值是:a21=6,最小值是:a0 0=1Press any key to continue6.编程输出以下的杨辉三角形(输出前 10 行) 源程序:#includevoid main()int i,j,a1010;for(i=0;i#includevoid sort(char array20,int n);vo
25、id main()char str1020;int i,j,k,n;printf(“input n(n0)k=j;if(k!=i)strcpy(temp,arrayi);strcpy(arrayi,arrayk);strcpy(arrayk,temp);运行结果:input n(n#include#define N 5void main()char *strN=“boy“,“student“,“teacher“,“doctor“,“girl“;int i,j,k; char *temp;for(i=0;i0)k=j;temp=stri;stri=strk;strk=temp;for(i=0;i
26、void swap(int *p1,int *p2)int temp;temp=*p1;*p1=*p2;*p2=temp;void main()int a=2,b=5;swap(printf(“%d,%d“,a,b);运行结果;5,2Press any key to continue3,输入 n 个学生姓名,数学成绩,英语成绩,并按这两门成绩的平均分从小到大输出。源程序:#includestruct studentchar name5;float math,eng;float aver;void main()struct student stu5,temp;int i,sub,k;float
27、aver=0;for(i=0;i5;i+)scanf(“%s%f%f“,stui.name,stui.aver=(stui.math+stui.eng)/2.0;for(i=0;i4;i+)sub=i;for(k=i+1;k5;k+)if(stuk.averstusub.aver)sub=k;if(sub!=i)temp=stui;stui=stusub;stusub=temp;for(i=0;i5;i+)printf(“%s%.1f %.1f“,stui.name,stui.math,stui.eng);printf(“n“);运行结果;输入:zs 50 90ls 60 60wr 80 80zh 70 50qr 65 65输出:ls60.0 60.0zh70.0 50.0qr65.0 65.0zs50.0 90.0wr80.0 80.0Press any key to continue