程序是在VC6.0下编译的,所以头文件和TC的不太一样! 4-8
#include float r,h,rl,ra,ss,sv,cv; printf(\"输入圆的半径和圆柱的高\\n\\n\"); scanf(\"%f%f\ rl=2*pi*r; ra=pi*r*r; ss=4*pi*r*r; sv=4*pi*r*r*r/3; cv=ra*h; printf(\"圆周长为:%f\\n\\n圆面积为:%f\\n\\n圆球表面积为:%f\\n\\n圆球体积为:%f\\n\\n圆柱体积为:%f\\n\\n\} 4-9 #include float F,c; printf(\"输入一个华氏温度\\n\\n\"); scanf(\"%f\ c=5*(F-32)/9; printf(\"摄氏温度为:%.2f\\n\\n\} 第五章 5-4 #include int a,b,c,max; printf(\"输入三个整数a,b,c\\n\\n\"); scanf(\"%d%d%d\ if(a>b) max=a; else max=b; if(max #include float x,y; printf(\"输入x\\n\\n\"); scanf(\"%f\ if(x<1) y=x; else if(x<10) y=2*x-1; else y=3*x-11; printf(\"y=%f\\n\\n\} 5-6 #include float m; int n; printf(\"输入成绩\\n\\n\"); scanf(\"%f\ n=m/10; switch(n) { case 0: case 1: case 2: case 3: case 4: case 5:printf(\"E\\n\\n\");break; case 6:printf(\"D\\n\\n\");break; case 7:printf(\"C\\n\\n\");break; case 8:printf(\"B\\n\\n\");break; case 9: case 10:printf(\"A\\n\\n\");break; } } 5-7 #include int a,b,c,i,j,n; printf(\"输入五位正整数\\n\\n\"); scanf(\"%d\ printf(\"\\n\\n\"); c=a; for(i=1;;i++) { b=c%10; c=c/10; printf(\"%d\ if(c==0) { printf(\"\\n\\n\"); printf(\"正整数为%d位数\\n\\n\ } } c=a; for(j=i-1;j>=0;j--) { n=pow(10,j); b=c/n; c=c%n; printf(\"%d\\n\ } } 5-8 if语句: #include printf(\"输入当月利润I\\n\\n\"); scanf(\"%d\ if(I<=100000) bonus=I/10; else if(I<=200000) bonus=10000+(I-100000)*7.5/100; else if(I<=400000) bonus=10000+7500+(I-200000)*5/100; else if(I<=600000) bonus=10000+7500+10000+(I-400000)*3/100; else if(I<=1000000) bonus=10000+7500+10000+6000+(I-600000)*1.5/100; else bonus=10000+7500+10000+6000+6000+(I-1000000)*1/100; printf(\"应发奖金数为:%f\\n\\n\} switch语句: #include int I,n; float bonus; printf(\"输入当月利润I\\n\\n\"); scanf(\"%d\ if(I>1000000) n=10; else n=I/100000; switch(n) { case 0:bonus=I/10;break; case 1:bonus=10000+(I-100000)*7.5/100;break; case 2: case 3:bonus=10000+7500+(I-200000)*5/100;break; case 4: case 5:bonus=10000+7500+10000+(I-400000)*3/100;break; case 6: case 7: case 8: case 9:bonus=10000+7500+10000+6000+(I-600000)*1.5/100;break; case 10:bonus=10000+7500+10000+6000+6000+(I-1000000)*1/100;break; } printf(\"应发奖金数为:%f\\n\\n\} 5-9 #include int a,b,c,d,temp,min; printf(\"输入四个数a,b,c,d\\n\\n\"); scanf(\"%d%d%d%d\ if(a>b) { temp=a; a=b; b=temp; } if(a>c) { temp=a; a=c; c=temp; } if(a>d) { temp=a; a=d; d=temp; } printf(\"由小到大排列为:\\n\\n\"); printf(\"%d \ if(b>c) { temp=b; b=c; c=temp; } if(b>d) { temp=b; b=d; d=temp; } printf(\"%d \ if(c>d) { temp=c; c=d; d=temp; } printf(\"%d \ printf(\"%d\} 5-10 #include float x,y,a,b,c,d; printf(\"输入点的坐标\\n\\n\"); scanf(\"%f%f\ a=sqrt((2-x)*(2-x)+(2-y)*(2-y)); b=sqrt((2-x)*(2-x)+(-2-y)*(-2-y)); c=sqrt((-2-x)*(-2-x)+(-2-y)*(-2-y)); d=sqrt((-2-x)*(-2-x)+(2-y)*(2-y)); if(a<=1||b<=1||c<=1||d<=1) printf(\"该点建筑高度为:10m\"); else printf(\"该点建筑高度为:0m\"); } 第六章: 6-1 #include int m,n,max,min,i,k; printf(\"输入两个正整数\\n\\n\"); scanf(\"%d%d\ if(m>n) k=n; else k=m; for(i=1;i<=k;i++) { if((m%i==0)&&(n%i==0)) max=i; } printf(\"最大公约数为:%d\\n\\n\ if(m>n) k=m; else k=n; for(i=k;;i++) { if((i%m==0)&&(i%n==0)) { min=i; break; } } printf(\"最小公倍数为:%d\\n\\n\} 6-2 #include int l=0,b=0,n=0,e=0; printf(\"输入一行字符\\n\\n\"); while((c=getchar())!='\\n') { if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) l+=1; else if(c==' ') b+=1; else if(c>=48&&c<=57) n+=1; else e+=1; } printf(\"英文字母个数为:%d\\n\\n空格个数为:%d\\n\\n数字个数为:%d\\n\\n其他字符个数为:%d\\n\\n\} 6-3 #include int n,k,i; float a,s=0; printf(\"输入n和a\\n\\n\"); scanf(\"%d%f\ for(i=0;i printf(\"和s=%f\\n\\n\} 6-4 #include int n,s,S=0,i,j; printf(\"输入n\\n\\n\"); scanf(\"%d\ for(i=1;j<=n;i++) { s=1; for(j=1;j<=i;j++) { s=s*j; } S+=s; } printf(\"和S=%d\\n\\n\} 6-5 #include void main() { int i,m,n,t; int s1=0,s2=0; float s3=0,s,l; printf(\"输入m,n,t的值\\n\\n\"); scanf(\"%d%d%d\ for(i=1;i<=m;i++) { s1+=i; } for(i=1;i<=n;i++) { s2+=i*i; } for(i=1;i<=t;i++) { l=1.0/i; s3+=l; } s=s1+s2+s3; printf(\"和s=%f\} 6-6 #include int m,n,k,i,j; printf(\"水仙花数为:\\n\"); for(i=100;i<=999;i++) { j=i; m=j%10; j=j/10; n=j%10; k=j/10; if(i==m*m*m+n*n*n+k*k*k) printf(\"%d \ } } 6-7 #include int i,j,k,s; for(i=1;i<=1000;i++) { s=0; for(j=1;jif(i%j==0) s+=j; } if(s==i) { printf(\"\\n\\n\"); printf(\"%d its factors are \ for(j=1;jif(i%j==0) printf(\"%d \ } } } } 6-8 #include int n,i; float f1,f2,s,temp; printf(\"输入n\\n\\n\"); scanf(\"%d\ f1=2.0;f2=3.0;s=f1; for(i=1;i<=n-1;i++) { s+=f2/f1; temp=f2; f2=f1+f2; f1=temp; } printf(\"前%d项和为%f\} 6-9 #include int i,n,l=100; float m,s=0; printf(\"输入n\\n\\n\"); scanf(\"%d\ m=l; for(i=1;i<=n;i++) { s+=2*m; m=m*0.5; } printf(\"第%d次落地时经过%f米\\n\\n\ printf(\"第%d次落地后反弹%f米\\n\\n\} 6-10 #include int m=1,n,i; printf(\"输入n\\n\\n\"); scanf(\"%d\ for(i=1;i printf(\"一共摘了%d个桃子\\n\\n\} 6-11 #include float a,x1,x2; printf(\"输入a\\n\\n\"); scanf(\"%f\ x1=a/2; loop:x2=(x1+a/x1)/2; if(fabs(x1-x2)>1e-5) { x1=x2; goto loop; } else printf(\"\\n\\na的平方根为%f\\n\\n\} 6-12 #include float f(float); float xpoint(float,float); float root(float,float); float x,x1,x2,f1,f2; do { printf(\"输入x1,x2\\n\\n\"); scanf(\"%f%f\ f1=f(x1); f2=f(x2); }while(f1*f2>0); x=root(x1,x2); printf(\"方程在1.5附近的根为:%f\\n\\n\} float f(float x) { float y; y=2*x*x*x-4*x*x+3*x-6; return(y); } float xpoint(float x1,float x2) { float y; y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); return(y); } float root(float x1,float x2) { float x,y,y1; y1=f(x1); do { x=xpoint(x1,x2); y=f(x); if(y*y1>0) { y1=y; x1=x; } else x2=x; }while(fabs(y)>1e-4); return(x); } 6-13 #include float f(float); float root(float,float); float x,x1,x2,f1,f2; do { printf(\"输入x1,x2\\n\\n\"); scanf(\"%f%f\ f1=f(x1); f2=f(x2); }while(f1*f2>0); x=root(x1,x2); printf(\"方程的根为:%f\\n\\n\} float f(float x) { float y; y=2*x*x*x-4*x*x+3*x-6; return(y); } float root(float x1,float x2) { float x,y; do { y=f((x1+x2)/2); if(y<-1e-4) { x1=(x1+x2)/2; } else if(y>1e-4) { x2=(x1+x2)/2; } else x=(x1+x2)/2; }while(fabs(y)>1e-4); return(x); } 6-14 #include int i,j,k; for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++) { printf(\" \"); } for(k=0;k<=2*i;k++) { printf(\"*\"); } printf(\"\\n\"); } for(i=0;i<=2;i++) { for(j=0;j<=i;j++) { printf(\" \"); } for(k=0;k<=4-2*i;k++) { printf(\"*\"); } printf(\"\\n\"); } } 6-15 #include char i,j,k; for(i='X';i<='Z';i++) for(j='X';j<='Z';j++) { if(i!=j) for(k='X';k<='Z';k++) { if(i!=k&&j!=k) { if(i!='X'&&k!='X'&&k!='Z') printf(\"\\nA--%c\\nB--%c\\nC--%c\\n\ } } } } 第七章 7-1 #include int i,j; int a[101]; printf(\"素数为:\\n\\n\"); for(i=1;i<=100;i++) { a[i]=i; } for(i=3;i<=100;i++) { for(j=2;j<=sqrt(a[i]);j++) { if(a[i]%j==0) { a[i]=0; break; } } } for(i=2;i<=100;i++) { if(a[i]!=0) printf(\"%d \ } } 7-2 #include int a[10],i,j,temp; printf(\"输入10个整数\\n\\n\"); for(i=0;i<10;i++) { scanf(\"%d\ } for(i=0;i<10;i++) { for(j=i+1;j<10;j++) { if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } } printf(\"排序后的输出为:\\n\\n\"); for(i=0;i<10;i++) { printf(\"%d \ } printf(\"\\n\\n\"); } 7-3 #include int a[9],i,s=0; printf(\"输入一个3*3整型矩阵\\n\\n\"); for(i=0;i<9;i++) { scanf(\"%d\ } for(i=0;i<9;i+=4) { s+=a[i]; } printf(\"对角线元素之和为:%d\\n\\n\} 7-4 #include int a[11]={1,2,3,4,5,6,7,8,9,10}; int i,j,n,temp1,temp2; printf(\"输入一个数n\\n\\n\"); scanf(\"%d\ if((a[0]-a[9])>0) { if(n<=a[9]) { a[10]=n; } else { for(i=0;i<10;i++) { if(a[i] for(j=i+1;j<11;j++) { temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } } if((a[9]-a[0])>0) { if(n>=a[9]) { a[10]=n; } else { for(i=0;i<10;i++) { if(a[i]>n) { temp1=a[i]; a[i]=n; for(j=i+1;j<11;j++) { temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } } for(i=0;i<11;i++) { printf(\"%d \ } } 7-5 #include int a[N]; int i,temp; printf(\"输入5个个数\\n\\n\"); for(i=0;i for(i=0;i<=N/2;i++) { temp=a[i]; a[i]=a[N-i-1]; a[N-i-1]=temp; } for(i=0;i printf(\"\\n\\n\"); } 7-6 #include int a[10][10]={1}; int i,j; for(i=1;i<10;i++) { for(j=0;j<=i;j++) { a[i][0]=a[i-1][0]; a[i][j]=a[i-1][j-1]+a[i-1][j]; } } for(i=0;i<10;i++) { for(j=0;j<=i;j++) { printf(\"%4d\ } printf(\"\\n\\n\"); } } 7-7 #include #define N 7 void main() { int a[N][N]={0}; int i,j,k; i=0; j=(N-1)/2; a[i][j]=1; for(k=2;k<=N*N;k++) { i=i-1; j=j+1; if((i<0)&&(j>N-1)) { i=i+2; j=j-1; } else { if(i<0) i=N-1; if(j>N-1) j=0; } if(a[i][j]==0) { a[i][j]=k; } else { i=i+2; j=j-1; a[i][j]=k; } } for(i=0;i printf(\"\\n\\n\"); } } 7-8 #include int a[4][4],i,j,max,min,k1,k2,flag; printf(\"输入一个4*4的数组\\n\\n\"); for(i=0;i<4;i++) { for(j=0;j<4;j++) { scanf(\"%d\ } } printf(\"鞍点为:\\n\\n\"); for(i=0;i<4;i++) { max=a[i][0]; for(j=0;j<4;j++) { if(max<=a[i][j]) { max=a[i][j]; k1=j; } } min=a[0][k1]; for(j=0;j<4;j++) { if(min>=a[j][k1]) { min=a[j][k1]; k2=j; } } if((max!=min)) flag=0; else { flag=1; printf(\"%d\\n\ break; } } if(flag==0) printf(\"不存在\\n\\n\"); } 7-9 #include float a[15]={100,98,65,55,34,23,23,12,11,9,7,6,4,3,2},n; int i,low,high,mid; printf(\"原数组为:\\n\\n\"); for(i=0;i<15;i++) { printf(\"%6.2f\ } printf(\"\\n\\n输入一个数n\\n\\n\"); scanf(\"%f\ low=0; high=14; i=0; while(low<=high) { mid=(low+high)/2; if(a[mid]==n) { printf(\"该数是数组中第%d个元素\\n\\n\ i++; break; } else if(a[mid] #include char a[3][80]; int i,j,upon=0,low=0,num=0,spa=0,oth=0; for(i=0;i<3;i++) { printf(\"输入第%d行文字\\n\\n\ gets(a[i]); for(j=0;j<80&&a[i][j]!='\\0';j++) { if(a[i][j]>='A'&&a[i][j]<='Z') upon+=1; else if(a[i][j]>='a'&&a[i][j]<='z') low+=1; else if(a[i][j]>=48&&a[i][j]<=57) num+=1; else if(a[i][j]==' ') spa+=1; else oth+=1; } } printf(\"英文大写字母:%d个\\n\\n\ printf(\"英文小写字母:%d个\\n\\n\ printf(\"数字: %d个\\n\\n\ printf(\"空格: %d个\\n\\n\ printf(\"其他字符: %d个\\n\\n\} 7-11 #include int i,j; for(i=0;i<5;i++) { for(j=0;j<=i;j++) { printf(\" \"); } for(j=i;jprintf(\"* \"); } printf(\"\\n\"); } } 7-12 #include char a[80],b[80]; int i,j; printf(\"输入密码\\n\\n\"); gets(a); for(i=0;i<80&&a[i]!='\\0';i++) { if((a[i]>='A')&&(a[i]<='Z')) { b[i]=155-a[i]; } else if((a[i]>='a')&&(a[i]<='z')) { b[i]=219-a[i]; } else b[i]=a[i]; } b[i]='\\0'; printf(\"密文为:\\n\\n\"); puts(a); printf(\"原文为:\\n\\n\"); puts(b); } 7-13 #include char a[80],b[80]; int i,j,k; printf(\"输入第1个字符串\\n\\n\"); gets(a); printf(\"输入第2个字符串\\n\\n\"); gets(b); for(i=0;i<80;i++) { if(a[i]=='\\0') { k=i; for(j=0;j<80&&b[j]!='\\0';j++) { a[k]=b[j]; k++; } a[k]='\\0'; break; } } printf(\"连接后字符串为:\\n\\n\"); puts(a); } 7-14 #include char a[80],b[80]; int i,j,k; printf(\"输入第1个字符串\\n\\n\"); gets(a); printf(\"输入第2个字符串\\n\\n\"); gets(b); for(i=0;(i<80)&&(a[i]!='\\0')&&(b[i]!='\\0');i++) { k=a[i]-b[i]; if(k>0) { printf(\"\\n\\n字符串a大于字符串b:%4d\\n\\n\ break; } else if(k<0) { printf(\"\\n\\n字符串a小于字符串b:%4d\\n\\n\ break; } else k=0; } if(k==0) printf(\"\\n\\n字符串a等于字符串b:%4d\\n\\n\} 7-15 #include char s1[80],s2[80]; int i,j; printf(\"输入数组s1\\n\\n\"); gets(s1); printf(\"输入数组s2\\n\\n\"); gets(s2); for(i=0;i<80&&s2[i]!='\\0';i++) { s1[i]=s2[i]; } s1[i]='\\0'; printf(\"\\n\\n复制后的数组为:\\n\\n\"); puts(s1); } 第八章 8-1 #include int max_div(int,int); int min_mul(int,int); int m,n; printf(\"输入两个整数\\n\\n\"); scanf(\"%d%d\ if(max_div(m,n)==0) printf(\"\\n\\n无最大公约数为\\n\\n\"); else printf(\"\\n\\n最大公倍数为:%d\\n\\n\ printf(\"\\n\\n最大公倍数为:%d\\n\\n\} int max_div(int k1,int k2) { int min(int,int); int i,k,flag; k=min(k1,k2); for(i=k;i>1;i--) { if((k1%i==0)&&(k2%i==0)) { return(i); flag=1; break; } else flag=0; } if(flag==0) return(0); } int min_mul(int k1,int k2) { int max(int,int); int i,k; k=max(k1,k2); for(i=k;;i++) { if((i%k1==0)&&(i%k2==0)) { return(i); break; } } } int min(int k1,int k2) { int min; min=k1; if(k1>k2) min=k2; return(min); } int max(int k1,int k2) { int max; max=k1; if(k1 void root1(float,float,float); void root2(float,float,float); void root3(float,float,float); float a,b,c,k; printf(\"输入a,b,c的值\\n\\n\"); scanf(\"%f%f%f\ k=b*b-4*a*c; if(k>0) root1(a,b,c); else if(k==0) root2(a,b,c); else root3(a,b,c); } void root1(float a,float b,float c) { float p,q; p=-b/(2*a); q=sqrt(b*b-4*a*c)/(2*a); printf(\"\\n\\n方程的两个根为:x1=%6.2f,x2=%6.2f\\n\\n\} void root2(float a,float b,float c) { float p; p=-b/(2*a); printf(\"\\n\\n方程的两个根为:x1=x2=%6.2f\\n\\n\} void root3(float a,float b,float c) { float p,q; p=-b/(2*a); q=sqrt(-b*b+4*a*c)/(2*a); printf(\"\\n\\n方程的两个根为:x1=%6.2f+%6.2fi,x2=%6.2f-%6.2fi\\n\\n\} 8-3 #include int prime(int); int x; printf(\"输入一个正整数\\n\\n\"); scanf(\"%d\ if(prime(x)==0) printf(\"\\n\\n此数为素数\\n\\n\"); else printf(\"\\n\\n此数不是素数\\n\\n\"); } int prime(int x) { int i,flag; for(i=2;i flag=1; break; } else flag=0; } return(flag); } 8-4 #include void exchange(int a[3][3]); int a[3][3],i,j; printf(\"输入一个3*3的矩阵\\n\\n\"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { scanf(\"%d\ } } exchange(a); printf(\"\\n\\n转置后的矩阵为:\\n\\n\"); for(i=0;i<3;i++) { for(j=0;j<3;j++) { printf(\"%d \ } printf(\"\\n\"); } } 8-5 #include void exchange(char str[]); char str[80]; printf(\"输入一个字符串\\n\\n\"); gets(str); exchange(str); printf(\"\\n\\n反序字符串为:\\n\\n\"); puts(str); } void exchange(char str[]) { int i,j,k; char temp; for(i=0;;i++) { if(str[i]=='\\0') break; } k=i/2; for(j=0;j<=k;j++) { temp=str[j]; str[j]=str[i-1-j]; str[i-1-j]=temp; } str[i]='\\0'; } 8-6 #include void strcat(char str1[],char str2[]); char str1[80],str2[80]; printf(\"输入str1\\n\\n\"); gets(str1); printf(\"\\n\\n输入str2\\n\\n\"); gets(str2); strcat(str1,str2); printf(\"\\n\\n连接后的字符串为:\\n\\n\"); puts(str1); } void strcat(char str1[],char str2[]) { int i,j; for(i=0;;i++) { if(str1[i]=='\\0') { for(j=0;str2[j]!='\\0';j++) { str1[i]=str2[j]; i+=1; } break; } } str1[i]='\\0'; } 8-7 #include void strcpy(char str1[],char str2[]); char str1[80],str2[80]; printf(\"输入str2\\n\\n\"); gets(str2); strcpy(str1,str2); printf(\"\\n\\n复制后的字符串为:\\n\\n\"); puts(str1); } void strcpy(char str1[],char str2[]) { int i,j=0; for(i=0;str2[i]!='\\0';i++) { if((str2[i]=='a')||(str2[i]=='e')||(str2[i]=='i')||(str2[i]=='o')||(str2[i]=='u')) { str1[j]=str2[i]; j++; } } str1[j]='\\0'; } 8-8 #include void stradd(char str[]); char str[80]; printf(\"输入一串数字\\n\\n\"); gets(str); stradd(str); printf(\"\\n\\n加空格后的字符串\\n\\n\"); puts(str); } void stradd(char str[]) { char a[80]; int i=0,j; for(j=0;str[j]!='\\0';j++) { a[i]=str[j]; a[i+1]=' '; i+=2; } a[i]='\\0'; for(i=0;a[i]!='\\0';i++) { str[i]=a[i]; } str[i]='\\0'; } 8-9 #include void num(char str[],int a[]); char str[80]; int a[4]={0}; printf(\"输入一个字符串\\n\\n\"); gets(str); num(str,a); printf(\"字母个数为: %d\\n\ printf(\"数字个数为: %d\\n\ printf(\"空格个数为: %d\\n\ printf(\"其它字符个数为:%d\\n\} void num(char str[],int a[]) { int i,word=0,num=0,span=0,oth=0; for(i=0;str[i]!='\\0';i++) { if((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')) word+=1; else if(str[i]>=48&&str[i]<=57) num+=1; else if(str[i]==' ') span+=1; else oth+=1; } a[0]=word; a[1]=num; a[2]=span; a[3]=oth; } 8-10 #include int word(char c); int longest(char str[]); int i; char str[80]; printf(\"输入一行字符串\\n\\n\"); gets(str); printf(\"\\n\\n最长的单词为:\\n\\n\"); for(i=longest(str);word(str[i]);i++) printf(\"%c\ printf(\"\\n\"); } int word(char c) { if((c>='a'&&c<='z')||(c>='A'&&c<='Z')) return 1; else return 0; } int longest(char str[]) { int i,flag=1,len=0,point,max_len=0,max_point; for(i=0;i<=strlen(str);i++) { if(word(str[i])) { if(flag==1) { point=i; flag=0; } else len++; } else { flag=1; if(len>max_len) { max_len=len; max_point=point; } len=0; } } return (max_point); } 8-11 #include void main() { char str[80]; void sort(char str[]); printf(\"输入一个字符串\\n\\n\"); gets(str); sort(str); printf(\"\\n\\n字符由小到大排序为:\\n\\n\"); puts(str); } void sort(char str[]) { int i,j; char temp; for(i=0;i temp=str[j]; str[j]=str[j+1]; str[j+1]=temp; } } } } 8-12 #include int a,b,c,d; float root(int a,int b,int c,int d); printf(\"输入a,b,c,d\\n\\n\"); scanf(\"%d%d%d%d\ printf(\"\\n\\n在1附近的根为:%f\\n\\n\} float root(int a,int b,int c,int d) { float x=1,x1,f,f1; do { x1=x; f=((a*x1+b)*x1+c)*x1+d; f1=(a*x1+b)*x1+c; x=x1-f/f1; }while(fabs(x-x1)>=1e-5); return(x); } 8-13 #include float p(int,float); int n; float x; printf(\"输入n和x\\n\\n\"); scanf(\"%d%f\ printf(\"\\n\\n%d阶勒德让多项式的值为:%f\\n\\n\} float p(int n,float x) { if(n==0) return 1; else if(n==1) return x; else return ((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n; } 8-14 #include float a_stu[n1],a_cou[n2]; void main() { void input(float a[][n2]); void stu_aver(float a[][n2]); void cou_aver(float a[][n2]); int hightest(int *s,int *c,float a[][n2]); float d(float a[][n2]); int i,j,s=0,c=0; float score[n1][n2],h; input(score); stu_aver(score); cou_aver(score); printf(\"\\n\\n 序号 课程 1 2 3 4 5 平均成绩\\n\\n\"); for(i=0;i printf(\"%8.2f\\n\\n\ } printf(\"课程平均\"); for(i=0;i h=hightest(&s,&c,score); printf(\"\\n\\n最高成绩为:%f 是第%d号学生,第%d门课的成绩\\n\\n\ printf(\"平均方差为:%f\\n\\n\} void input(float a[][n2]) { int i,j; for(i=0;i void stu_aver(float a[][n2]) { int i,j; float s; for(i=0;i a_stu[i]=s/n2; } } void cou_aver(float a[][n2]) { int i,j; float s; for(i=0;i a_cou[i]=s/n1; } } int hightest(int *s,int *c,float a[][n2]) { float hightest=0; int i,j; for(i=0;i hightest=a[i][j]; *s=i+1; *c=j+1; } } } return(hightest); } float d(float a[][n2]) { int i; float x=0,y=0; for(i=0;i return(x/n1-(y/n1)*(y/n1)); } 8-15 #include void input(int num[],char name[N][8]); void sort(int num[],char name[N][8]); void search(int num[],char name[N][8],int n); int flag,n,num[N]; char c,name[N][8]; input(num,name); sort(num,name); for(flag=1;flag;) { printf(\"输入要查找的职工号\\n\\n\"); scanf(\"%d\ search(num,name,n); printf(\"是否继续查找?Y/N ?\\n\\n\"); c=getchar(); if(c=='N'||c=='n') flag=0; } } void input(int num[],char name[N][8]) { int i; for(i=0;i printf(\"输入职工姓名\\n\\n\"); getchar(); gets(name[i]); } } void sort(int num[],char name[N][8]) { int i,j,min,temp1; char temp2[8]; for(i=0;i for(j=i;j temp1=num[i]; strcpy(temp2,name[i]); num[i]=num[min]; strcpy(name[i],name[min]); num[min]=temp1; strcpy(name[min],temp2); } printf(\"排序结果如下:\\n\\n\"); for(i=0;i void search(int num[],char name[N][8],int n) { int low,high,mid,flag; flag=0; low=0; high=N-1; if((n mid=(low+high)/2; if(n==num[mid]) { flag=mid+1; printf(\"第%4d号职工的名字为:%8s\\n\\n\ break; } else if(n #include { int exchange(char a[]); int i=0,flag=0,flag1=1; char c,a[N1]; printf(\"输入一个十六进制数\\n\\n\"); while(((c=getchar())!='\\0')&&(i a[i++]=c; flag=1; } else if(flag==1) { a[i]='\\0'; printf(\"对应的十进制数为:%d\\n\\n\ printf(\"是否继续?Y/N ?\\n\\n\"); c=getchar(); if(c=='N'||c=='n') flag1=0; else { flag=0; i=0; printf(\"输入一个十六进制数\\n\\n\"); } } } } int exchange(char a[]) { int i,n=0; for(i=0;a[i]!='\\0';i++) { if((a[i]>='0')&&(a[i]<='9')) n=n*16+a[i]-'0'; if((a[i]>='a')&&(a[i]<='f')) n=n*16+a[i]-'a'+10; if((a[i]>='A')&&(a[i]<='F')) n=n*16+a[i]-'A'+10; } return(n); } 8-17 #include void exchange(int n); int n; printf(\"输入一个整数\\n\\n\"); scanf(\"%d\ printf(\"输出是:\\n\\n\"); if(n<0) { putchar('-'); n=-n; } exchange(n); printf(\"\\n\\n\"); } void exchange(int n) { int i; if((i=n/10)!=0) exchange(i); putchar(n%10+'0'); } 8-18 #include int day_num(int year,int mon,int day); int year,mon,day; printf(\"输入年、月、日\\n\\n\"); scanf(\"%d%d%d\ printf(\"\\n\\n输入的日期是当年的第%d天\\n\\n\} int date[]={31,28,31,30,31,30,31,31,30,31,30,31}; int day_num(int year,int mon,int day) { int i,days=0; for(i=0;i days+=day; if((year%4==0)&&((year%100)!=0)||(year%400==0)) days+=1; return days; } 第九章 9-1 #include #define exchange(x,y) t=x;x=y;y=t void main() { int x,y,t; printf(\"输入x,y\\n\\n\"); scanf(\"%d%d\ exchange(x,y); printf(\"\\n\\n交换后x=%d,y=%d\\n\\n\} 9-2 #include int x,y; printf(\"输入x,y\\n\\n\"); scanf(\"%d%d\ printf(\"\\n\\n余数为%d\\n\\n\} 9-3 #include #define s(a,b,c) ((a+b+c)/2) #define area(a,b,c,s) sqrt(s*(s-a)*(s-b)*(s-c)) void main() { float a,b,c,s,area; char m; int flag=1; while(flag==1) { printf(\"输入a,b,c\\n\\n\"); scanf(\"%f%f%f\ if(a>0&&b>0&&c>0&&(a+b>c||a+c>b||b+c>a)&&(fabs(a-b) printf(\"\\n\\n面积area= %8f\\n\\n\ } else { printf(\"\\n\\n输入有误!!!是否重新输入?Y/N?\\n\\n\"); getchar(); m=getchar(); if(m=='Y'||m=='y') flag=1; else flag=0; } } } 9-4 #include #define LEAP_YEAR(y) ((y%4==0)&&(y%100)!=0||(y%400)==0) void main() { int y; printf(\"输入年份\\n\\n\"); scanf(\"%d\ if(LEAP_YEAR(y)) printf(\"\\n\\n%d年是闰年\\n\\n\ else printf(\"\\n\\n%d年不是闰年\\n\\n\} 9-6 #include float x=1; PR(D1,x); PR(D2,x,x); PR(D3,x,x,x); } 9-7 #include int x=1; float y=2; char z[]=\"I love you\"; PR(D1,x); PR(F1,y); PR(S1,z); } 9-8 #include float x,y,z,t; printf(\"输入三个数x,y,z\\n\\n\"); scanf(\"%f%f%f\ t=(x>y)?x:y; t=(t>z)?t:z; printf(\"\\n\\n三个数中最大的为:%f\\n\\n\} #include #define MAX(a,b) ((a)>(b)?(a):(b)) void main() { float x,y,z; printf(\"输入三个数x,y,z:\\n\\n\"); scanf(\"%f%f%f\ printf(\"\\n\\n其中最大的数为:%f\\n\\n\} 9-10 #include char str[N]; int i; printf(\"输入一行字符串\\n\\n\"); gets(str); #if CHANGE for(i=0;i if((str[i]=='z')||(str[i]=='Z')) str[i]=str[i]-25; else str[i]=str[i]+1; } } str[i]='\\0'; puts(str); #else puts(str); #endif } 第十章 10.1 #include void swap(int *p,int *q); int x,y,z; int *p1,*p2,*p3; printf(\"输入三个整数\\n\\n\"); scanf(\"%d%d%d\ p1=&x; p2=&y; p3=&z; if(x>y) swap(p1,p2); if(x>z) swap(p1,p3); if(y>z) swap(p2,p3); printf(\"\\n\\n三个数由小到达输出为:%d %d %d\\n\\n\} void swap(int *p,int *q) { int temp; temp=*p; *p=*q; *q=temp; } 10.2 #include void swap(char *p,char *q); char str1[N],str2[N],str3[N]; printf(\"请输入三个字符串\\n\\n\"); scanf(\"%s\ scanf(\"%s\ scanf(\"%s\ if(strcmp(str1,str2)>0) swap(str1,str2); if(strcmp(str1,str3)>0) swap(str1,str3); if(strcmp(str2,str3)>0) swap(str2,str3); printf(\"\\n\\n三个字符串由小到大排列,分别为:\\n\\n%s\\n%s\\n%s\\n\} void swap(char *p,char *q) { char str[N]; strcpy(str,p); strcpy(p,q); strcpy(q,str); } 10.3 #include void input(int num[N]); void swap(int *p,int *q); void exchange(int num[N]); void output(int num[N]); int num[N]; input(num); exchange(num); output(num); } void input(int num[N]) { int i; printf(\"输入十个整数\\n\\n\"); for(i=0;i #include void move(int num[N],int n,int m); int num[N]; int i; printf(\"输入%d个整数\\n\\n\ for(i=0;i move(num,N,M); printf(\"\\n\\n调整后的%d个整数为:\\n\\n\ for(i=0;i printf(\"\\n\\n\"); } void swap(int *p,int *q) { int temp; temp=*p; *p=*q; *q=temp; } void move(int num[N],int n,int m) { int *p,*num_end; int temp; num_end=num+n; temp=*(num_end-1); for(p=num_end-1;p>=num;p--) *p=*(p-1); *num=temp; m--; if(m>0) move(num,n,m); } 10.5 #include void leave(int num[N]); int num[N]; int i,*p; p=num; for(i=0;i printf(\"最后留下的是第%d个人\\n\\n\} void leave(int num[N]) { int *p; int i=0,k=0,m=0; p=num; while(m *(p+i)=0; k=0; m++; } i++; if(i==N) i=0; } } 10.6 #include int count(char str[N]); int i; char str[N]; printf(\"输入一个字符串\\n\\n\"); gets(str); printf(\"\\n\\n字符串长度为:%d\\n\\n\} int count(char str[N]) { char *p; int i=0; p=str; while(*p!='\\0') { i++; p++; } return(i); } 10.7 #include void copy(char str1[N],char str2[N]); char str1[N],str2[N]; printf(\"输入字符串str1\\n\\n\"); gets(str1); printf(\"\\n\\n输入字符串str2\\n\\n\"); gets(str2); copy(str1,str2); printf(\"\\n\\n整合之后的字符串为:\\n\\n\"); puts(str1); } void copy(char str1[N],char str2[N]) { char *p1,*p2; int i; p1=str1; p2=str2; for(i=0;i void count(char str[N],int *cap,int *low,int *space,int *num,int *oth); char str[N]; int a=0,b=0,c=0,d=0,e=0; int *cap,*low,*space,*num,*oth; cap=&a; low=&b; space=&c; num=&d; oth=&e; printf(\"输入一个字符串\\n\\n\"); gets(str); count(str,cap,low,space,num,oth); printf(\"\\n\\n大写字母个数为:%d\\n\\n小写字母个数为:%d\\n\\n空格个数位:%d\\n\\n数字个数为:%d\\n\\n其他字符个数为:%d\\n\\n\} void count(char str[N],int *cap,int *low,int *space,int *num,int *oth) { int i; for(i=0;str[i]!='\\0';i++) { if(str[i]>='A'&&str[i]<='Z') (*cap)++; else if(str[i]>='a'&&str[i]<='z') (*low)++; else if(str[i]==' ') (*space)++; else if(str[i]>='0'&&str[i]<='9') (*num)++; else (*oth)++; } } 10.9 #include void move(int *p); int a[N][N]; int *p,i,j; printf(\"输入一个%d*%d的矩阵\\n\\n\ for(i=0;i for(i=0;i printf(\"\\n\"); } } void move(int *p) { int i,j,temp; for(i=0;i *(p+i*N+j)=*(p+j*N+i); *(p+j*N+i)=temp; } } 10.10 #include void swap(int *p,int *q); void sort(int *p); int arr[N][N]; int i,j,*p; printf(\"输入一个%d*%d的矩阵\\n\\n\ for(i=0;i