一、调试 (一)填空, 在___N___中填空。 35、将输入字符串s中所有的小写字符'c'删除。 #include <stdio.h> #include <____1____> void main() { char s[81];int i; gets(s); for(___2___;i<strlen(s);) if(s=='c') strcpy(____3____); ___4___ i++; puts(s); } 1、输入一个不超过80个字符的字符串,将其中的大写字符转换为小写字符;小写字符转换为大写字符;空格符转换为下划线,输出转换后的字符串。 #include <stdio.h> #include <____1_____> void main() { char s[81]; int i; _____2_____; for(i=0;____3_____;i++) { if(isupper(s)) s=s+32; else if(islower(s)) s=s-32; if(____4____) s='_'; } puts(s); } 30、输入4个整数,通过函数Dec2Bin的处理返回字符串,显示每个整数的机内码(二进制,补码)。 #include <stdio.h> void Dec2Bin(long m,char *s) { int i,k; for(i=0;i<32;i++) { k=m & 0x80000000; if(k!=0) s='1'; else ____1_____; ____2____; /* m 左移1位 */ } } void main() { char a[33]=""; long n; int i; for(i=1;i<=4;i++) { scanf("%ld",&n); _____3______; ____ 4_____; } } 6、调用函数f,当x=1.7时的值。 #include <stdio.h> float f(float*,float,int); void main() { float b[5]={1.1,2.2,3.3,4.4,5.5}; printf("%f\n",f(____1_____)); } float f( _______2________ ) { float y=___3___,t=1; int i; for(i=1;i<n;i++) { t=t*x ; y=y+a*t; } ____4____ } 25、数列的第1、2项均为1,此后各项值均为该项前二项之和。计算数列第24项的值。 #include <stdio.h> long f(int); void main() { printf("%ld\n",___1____); } _____2_____ { if( n==1 || n==2) ___3____; else return ____4_____; } p46.2、显示数据,要求:(1)在数组a中存在,而在数组b中不存在的数,以及(2)在数组b中存在,而在数组a中不存在的数。 #include <stdio.h> void main() { int a[6]={2,5,7,8,4,12},b[7]={3,4,5,6,7,8,9},i,j,k; for(i=0;i<6;i++) { for(j=0;j<7;j++) if(___1____) break; if(___2___) printf("%d ",a); } putchar('\n'); for(i=0;i<7;i++) { for(j=0;j<6;j++) if(b==a[j]) ___3___; if(j==6) printf("%d ",___4___); putchar('\n'); } 24、循环输入正整数n(直到输入负数或者0结束),计算并显示满足条件2^m≤n≤2^(m+1)的m值。 #include <stdio.h> #define F (t<=n && t*2>=n) void main() { int m,t,n; while(scanf("%d",&n),__1__){ m=0;___2___; while(___3___){ ___4___; m++; } printf("%d %d\n",n,m); } } (二)改错, 在/*********** n**************/下一行有错,请改正。 p46.8、输入n(小于10的正整数)输出如下形式的数组例如:输入n=5,数组为:1 0 0 0 0 2 1 0 0 0 3 2 1 0 0 4 3 2 1 0 5 4 3 2 1 输入n=6数组为:1 0 0 0 0 0 2 1 0 0 0 0 3 2 1 0 0 0 4 3 2 1 0 0 5 4 3 2 1 0 6 5 4 3 2 1 #include <stdio.h> void main() { int a[9][9]={{0}},i,j,n; /*********** 1 **************/ while(scanf("%d",n),n<1||n>9); for(i=0;i<n;i++) { /****** 2 ********/ for(j=0;j<i;j++) /******* 3 *********/ a[j]=i-j; } for(i=0;i<n;i++) { for(j=0;j<n;j++) /******** 4 *********/ printf("%3d",&a[j]); putchar('\n'); } } 33、输入两字符串s1,s2后,将它们首尾相连。 #include <stdio.h> void main() { char s1[80],s2[40]; int j; /***** 1 *****/ int i; printf("Input the first string:"); gets(s1); printf("Input the second string:"); gets(s2); /********** 2********/ while(s1!=0) i++; for(j=0;s2[j]!='\0';j++) /****** 3 ******/ s1[j]=s2[j]; /******* 4 *******/ s1[i+j]=\0; puts(s1); } 34、用选择法对10个整数按升序排序。 #include <stdio.h> #define N 10 void main() { int i,j,min,temp; int a[N]={5,4,3,2,1,9,8,7,6,0}; printf("排序前:"); /******** 1 *********/ for(i=0;i<n;i++) printf("%4d",a); putchar('\n'); for(i=0;i<N-1;i++) { /***** 2 ******/ min=0; for(j=i+1;j<N;j++) /****** 3 ******/ if(a[j]>a[min]) min=j; temp=a[min];a[min]=a;a=temp; } printf("排序后:"); for(i=0;i<N;i++)printf("%4d",a); /****** 4 ********/ putchar("\n"); } 5、输入x和正数eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于eps为止。 #include <stdio.h> #include <math.h> void main() { double x,eps,s=1,t=1; /******* 1 ********/ float i=1; /******* 2 **********/ scanf("%f%f",&x,&eps); do { i++; /***** 3 *****/ t=t*x/i; s+=t; /***** 4 *****/ } while(fabs(t)<eps); printf("%f\n",s); } 27、程序运行时输入整数n,则输出n的各位数字之和,例如:输入n=1380,则输出12;n=-3204,则输出9。 #include <stdio.h> void main() { /****** 1 ******/ int n,s; scanf("%d",&n); /****** 2 ******/ n<0?-n:n; /****** 3 ******/ while(n>=0){ /***** 4 *****/ s=s+n/10; n=n/10; } printf("%d\n",s); } 16、运行时若输入a、n分别为3、6,则输出下列表达式的值:3+33+333+3333+33333+333333 #include <stdio.h> void main() { int a,n,i; long s=0,t; /******* 1 ********/ scanf("%d%d",a,n); /******* 2 **********/ t=1; /******* 3 **********/ for(i=1;i<n;i++) { t=t*10+a; /******* 4 ********/ t=t+s; } printf("%ld\n",s); } p46.5、显示两个数组中,数值相同的元素。 #include <stdio.h> void main() { /******** 1 *******/ int i; int a[6]={1,3,5,7,9,11}; int b[7]={2,5,7,9,12,16,3}; /******* 2 *******/ for(i=0;i<=6;i++) { for(j=0;j<7;j++) /******** 3 *******/ if(a=b[j]) break; /******* 4 ********/ if(j>=7) printf("%d ",a); } printf("\n"); } p46.4、逐个显示字符串中各字符的机内码。提示:英文字符字母的机内码首位为0,汉字的每个字节首位为1。程序正确运行后,显示如下:a[0]的机内码为:0110001;a[1]的机内码为:00110010;a[2]的机内码为:10111010;a[3]的机内码为:10111010;a[4]的机内码为:11010111;a[5]的机内码为:11010110。 #include <stdio.h> void main() { /******** 1 *******/ char a[7]='a2汉字'; int i,j,k; /******** 2 *******/ for(i=0;i<strlen(a);i++) { printf("a[%d]的机内码为:",i); for(j=1;j<=8;j++) { k=a&0x80; if(k!=0) putchar('1'); /****** 3 *****/ else putchar(0); /****** 4 *****/ a=a>>1; } printf("\n"); } } 17、程序运行时输入n,输出n的所有质数因子,例如:输入n为60,则输出60=2*2*3*5。 #include <stdio.h> void main() { int n,i; /****** 1 ******/ scanf("%f",&n); printf("%d=",n); /****** 2 ******/ n=2; /****** 3 ******/ while(n>0) if(n%i==0) { printf("%d*",i); /****** 4 ******/ n=n*i; } else i++; printf("\b \n"); } p46.3、循环输入x,n,调用递归函数计算,显示x的n次方。当输入n小于0时,结束循环。 #include <stdio.h> float f(float x,int n) { /******* 1 ******/ if(n==1) return 1; else /****** 2 ******/ return f(x,n-1); } void main() { float y,z; int m; while(1) { scanf("%f%d",&y,&m); /****** 3 *******/ if(m>=0) break; /******* 4 ********/ z=f(m,y); printf("%f\n",z); } } 38、将十进制的整数,以十六进制的形式输出。 #include <stdio.h> /********** 1 *********/ int DtoH(int n) { int k=n & 0xf; if(n>>4!=0) DtoH(n>>4); /********** 2 *********/ if(k<=10) putchar(k+'0'); else /********** 3 *********/ putchar(k-10+a); } void main() { int a[4]={28,31,255,378},i; for(i=0;i<4;i++) { printf("%d-->",a); /******** 4 ********/ printf("%s",DtoH(a)); putchar('\n'); } } 26、输入n,再输入n个点的平面坐标,则输出那些距离坐标原点不超过5的点的坐标值。 #include <stdio.h> #include <math.h> #include <stdlib.h> void main() { int i,n; struct axy { float x,y;}; /***** 1 *****/ struct axy a; /***** 2 *****/ scanf("%d",n); a=(struct axy*) malloc(n*sizeof(struct axy)); for(i=0;i<n;i++) scanf("%f%f",&a.x,&a.y); /***** 3 ******/ for(i=1;i<=n;i++) if(sqrt(pow(a.x,2)+pow(a.y,2))<=5) { printf("%f,",a.x); /*************** 4 **************/ printf("%f\n",a+i->y); } } 19、运行时输入10个数,然后分别输出其中的最大值、最小值。 #include <stdio.h> void main() { float x,max,min; int i; /******** 1 *******/ for(i=0;i<=10;i++) { /****** 2 *******/ scanf("%f",x); /******* 3 ********/ if(i=1) { max=x;min=x;} else { if(x>max) max=x; if(x<min) min=x; } } /******* 4 ********/ printf("%f,%f\n",Max,Min); } 40、输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。 #include <stdio.h> #include <string.h> void main() { char str[81]; int i,flag; /******* 1 ******/ get(str); for(i=0;str!='\0';) { flag=tolower(str)>='a' && tolower(str)<='z'; /********* 2 *********/ flag=not flag; if(flag) { /******* 3 ********/ strcpy(str+i+1,str+i); /******* 4 ********/ break; } i++; } printf("%s\n",str); } p46.1、(1)输入一个整数mm作为密码,将字符串中每个字符与mm做一次按位异或操作进行加密,输出被加密后的字符串(密文),(2)再将密文的每个字符与mm做一次按位异或操作,输出解密后的字符串(明文)。 #include <stdio.h> void main() { char a[]="a2汉字"; int mm,i; /******** 1 *******/ printf(“请输入密码:”); /******** 2 *******/ scanf("%d",mm); for(i=0;a!='\0';i++) /*各字符与mm作一次按位异或*/ a=a^mm; puts(a); /*** 各字符与mm再作一次按位异或 ***/ /******** 3 *******/ for( ;a!='\0';i++) /****** 4 ******/ a=a^mm^mm; puts(a); } 二、设计 13、(2)函数f将二维数组每1行均除以该行上绝对值最大的元素。函数main调用f处理数组a后按行显示,测试函数f正确与否。 #include <stdio.h> #include <math.h> double f(double **x,int m,int n) { double max; int i,j; for(i=0;i<m;i++) { max=x[0]; for(j=1;j<n;j++) if(fabs(x[j])>fabs(max)) max=x[j]; for(j=0;j<n;j++) x[j]/=max; } } void main() { FILE *fp; double a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; double *c[3]={a[0],a[1],a[2]}; int i,j; /****考生在以下空白处写入执行语句******/ /****考生在以上空白处写入执行语句******/ fp=fopen("CD2.dat","wb"); fwrite(*a+8,8,1,fp); fclose(fp); } 24、累加a字符串中所有非大写英文字母字符的ASCII码,将累加和存入变量x并显示。 #include <stdio.h> void main() { FILE *fp; long x; int i; char a[]="Windows Office 2010"; /****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/ printf("%d\n",x); fp=fopen("CD2.dat","wb"); fwrite(&x,4,1,fp); fclose(fp); } 27、计算2的平方根、3的平方根、...、10的的平方根之和,要求将计算结果存入变量y中,且具有小数点后10位有效位数。 #include <stdio.h> #include <math.h> void main() { FILE *fp; int i; /****考生在以下空白处写入语句 ******/ /****考生在以上空白处写入语句 ******/ printf("%.10f\n",y); fp=fopen("CD1.dat","wb"); fwrite(&y,8,1,fp); fclose(fp); } 43、求斐波那契(Fibonacci)数列中其前40项之和,说明:斐波那契数列的前两项为1,此后各项为其前两项之和。 #include <stdio.h> void main() { FILE *fp; long i,a[40]={1,1},s=2; /****考生在以下空白处写入执行语句 ******/ /****考生在以上空白处写入执行语句 ******/ printf("%d\n",s); fp=fopen("CD1.dat","wb"); fwrite(&s,4,1,fp); fclose(fp); } 35、在数组a的10个数中求平均值v,将大于等于v的数组元素进行求和并存入变量s中。 #include <stdio.h> void main() { FILE *fp; double a[10]={1.7,2.3,1.2,4.5,-2.1,-3.2,5.6,8.2,0.5,3.3}; double v,s; int i; /****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/ printf("%f %f\n",v,s); fp=fopen("CD1.dat","wb"); fwrite(&s,8,1,fp); fclose(fp); } 34、x,y分别表示平面上一个点的坐标,累加10个点与点(1.0,1.0)的距离总和存入double类型变量s中。 #include <stdio.h> #include <math.h> void main() { FILE *fp; int i; double x[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; double y[10]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33}; /****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/ printf("%f\n",s); fp=fopen("CD1.dat","wb"); fwrite(&s,8,1,fp); fclose(fp); } 15、编制函数f计算下列表达式的值,函数main提供了一个测试用例。函数原型为double.f(double*,double,int) a0+a1sin(x)+a2sin(x^2)+a3sin(x^3)+……+an-1sin(x^n-1)。 #include <stdio.h> #include <math.h> /*****考生在以下空白处编写函数f ******/ /****考生在以上空白处编写函数f ******/ void main() { FILE *fp; int i; double y; double a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9}; y=f(a,2.345,10); printf("%f\n",y); fp=fopen("CD2.dat","wb"); fwrite(&y,8,1,fp); fclose(fp); } 12、若x、y取值为区间[1,6]的整数,显示使函数f(x,y)取最小值x1,y1。函数f的原型为double f(int,int) f (x,y)=(3.14*x-y)/(x+y) #include <stdio.h> /****考生在以下空白处声明函数f ******/ /****考生在以上空白处声明函数f ******/ void main() { FILE *fp; double min; int i,j,x1,y1; /****考生在以下空白处写入执行语句******/ /****考生在以上空白处写入执行语句******/ printf("%f %d %d\n",min,x1,y1); fp=fopen("CD2.dat","wb"); fwrite(&min,8,1,fp); fclose(fp); } p46.6、用for循环找出所有两个数乘积等于20的数据对。【提示:判断20能否被i整除的条件可以写作“20.0/i==(int) (20/i)”】 #include <stdio.h> void main() { FILE *fp; long i,n=0,x[10][2]; /****考生在以下空白处写入执行语句******/ /****考生在以上空白处写入执行语句******/ for(i=0;i<n;i++) printf("%ld %ld\n",x[0],x[1]); fp=fopen("CD1.dat","wb"); fwrite(&x,4,2*n,fp); fclose(fp); } 5、计算字符串s中每个字符的权重值并依次写入到数组a。权重值就是字符的位置值与该字符的ASCII码值的乘积。首字符位置值为1,最后一个字符的位置值为strlen(s)。 #include <stdio.h> #include <stdlib.h> #include <string.h> void main() { FILE *fp; long i,n,*a; char s[]="ABCabc$%^,.+-*/"; n=strlen(s); a=(long*)malloc(n*sizeof(long)); /****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/ fp=fopen("CD2.dat","wb"); fwrite(a,4,n,fp); fclose(fp); } 32、统计并显示500至800之间所有素数的点个数以及总和。 #include <stdio.h> #include <math.h> /****考生在以下空白处写入执行语句 编写函数f判断与形参相应的实参是否素数****/ /*****考生在以上空白处编写函数f *************/ #include <math.h> void main() { FILE *fp; int i; long s=0,k=0; /****考生在以下空白处写入执行语句******/ /****考生在以上空白处写入执行语句******/ printf("素数个数%d 素数总和%d\n",k,s); fp=fopen("CD2.dat","wb"); fwrite(&k,4,1,fp);fwrite(&s,4,1,fp); fclose(fp); } 20、数组元素x、y表示平面上某点坐标,计算并显示10个点中所有各点间最短距离。 #include <stdio.h> #include <math.h> #define len(x1,y1,x2,y2) sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)) void main() { FILE *fp; int i,j; double min,d; double x[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; double y[10]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33}; min=len(x[0],y[0],x[1],y[1]); /****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/ printf("%f\n",min); fp=fopen("CD2.dat","wb"); fwrite(&min,8,1,fp); fclose(fp); } 25、在数组x的10个数中求平均值v,找出与v相差最小的数组元素存入变量y,并显示v,y 。 #include <stdio.h> #include <math.h> void main() { FILE *fp; int i; double d,v,y; double x[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9}; /*****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/ printf("%f %f\n",v,y); fp=fopen("CD2.dat","wb"); fwrite(&y,8,1,fp); fclose(fp); } 19、在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数。 #include <stdio.h> void main() { FILE *fp; long i=1; /****考生在以下空白处写入执行语句 ******/ /****考生在以上空白处写入执行语句 ******/ printf("%d\n",i); fp=fopen("CD1.dat","wb"); fwrite(&i,4,1,fp); fclose(fp); } 33、求数列:2/1,3/2,5/3,8/5,13/8,21/13,……。前40项的和。 #include <stdio.h> void main() { FILE *fp; double y=2,f1=1,f2=2,f; int i; /****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/ printf("%f\n",y); fp=fopen("CD1.dat","wb"); fwrite(&y,8,1,fp); fclose(fp); } 13、编制函数f,用于在m行n列的二维数组中查找值最大的元素之行下标与列下标。函数mian提供了一个测试用例。 #include <stdio.h> void f(int **a,int m,int n,int *mm,int *nn) { int i,j,max=a[0][0]; /****考生在以下空白处写入语句 ******/ /****考生在以上空白处写入语句 ******/ } void main() { FILE *fp; int ii,jj; int b[3][3]={{1,3,4},{2,9,5},{3,7,6}}; int *c[3]={b[0],b[1],b[2]}; /****考生在以下空白处写入调用语句 ******/
/****考生在以上空白处写入调用语句 ******/ printf("最大值为%d,行号%d,列号%d\n",b[ii][jj],ii,jj); fp=fopen("CD2.dat","wb"); fwrite(&ii,4,1,fp); fwrite(&jj,4,1,fp); fclose(fp); } 14、在6至5000内找出所有的亲密数,并显示其数量。若a,b为1对亲密数,b,a也是1对亲密数,满足的条件是:a的因子和等于b,b的因子和不等于a,且a不等于b。关于因子和:6的因子和等于6即1+2+3,8的因子和等于6即1+2+3,8的因子和等于7即1+2+4,7的因子和就是7,……。 #include <stdio.h> long f(long x) { int i,j,y=1; for(i=2;i<=x/2;i++) if(x%i==0) y=y+i; return y; } void main() { FILE *fp; long a,b,c,k=0; /****考生在以下空白处写入执行语句******/ /****考生在以上空白处写入执行语句******/ printf("%d\n",k); fp=fopen("CD1.dat","wb"); fwrite(&k,4,1,fp); fclose(fp); } 9、x与函数值都取double类型,对1,1.5,2,2.5,……,9.5,10. 求函数f(x)的最大值。f(x)=x-10*cos(x)-5*sin(x) #include <stdio.h> #include <math.h> /****考生在以下空白处声明函数f ******/ /****考生在以上空白处声明函数f ******/ void main() { FILE *fp; double x,max; /****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/ printf("%f\n",max); fp=fopen("CD2.dat","wb"); fwrite(&max,8,1,fp); fclose(fp); } 18、数组元素x、y表示平面上某点坐标,统计10个点中哪些点、有几个点落在圆心为(1,-0.5),半径为5的圆内。 #include <stdio.h> #include <math.h> #define f(x,y) (x-1)*(x-1)+(y+0.5)*(y+0.5) void main() { FILE *fp; long i,k=0; float x[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; float y[10]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33}; /****考生在以下空白处写入执行语句 ******/
/****考生在以上空白处写入执行语句 ******/ printf("%d\n",k); fp=fopen("CD1.dat","wb"); fwrite(&k,4,1,fp); fclose(fp); } 7、统计满足条件x^2+y^2+z^2=2013的所有正整数解的个数。(若a,b,c是1个解,则a,c,b也是1个解)。 #include <stdio.h> void main() { FILE *fp; long x,y,z,k=0; /****考生在以下空白处写入执行语句******/ /****考生在以上空白处写入执行语句******/ printf("%ld\n",k); fp=fopen("CD1.dat","wb"); fwrite(&k,4,1,fp); fclose(fp); 41、编制函数f,函数原型为double f(double*,double,int),用于计算下列代数表达式的值。a0+a1x+a2x^2+a3x^3+……an-1x^(n-1),函数main提供了一个测试用例计算在x=1.5时一元九次代数多项式的值。 #include <stdio.h> #include <math.h> /****考生在以下空白处编写函数f******/ /****考生在以上空白处写入语句 ******/ void main() { FILE *fp; double y; double b[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; y=f(b,1.5,10); printf("%f\n",y); fp=fopen("CD2.dat","wb"); fwrite(&y,8,1,fp); fclose(fp); } 6、计算并显示表达式1+2!+3!+...+12!的值。 #include <stdio.h> void main() { FILE *fp; long i,y=1,jc=1; /****考生在以下空白处写入执行语句******/ /****考生在以上空白处写入执行语句******/ printf("%ld\n",y); fp=fopen("CD1.dat","wb"); fwrite(&y,4,1,fp); fclose(fp); } 30、编写函数,f判断与形参相应的实参是否回文数是则返回1 否则返回0。显示11至999之间的所有回文数(各位数字左右对称),并显示总个数。提示:先判断n是2位数还是3位数,再判断n是否回文数。 #include <stdio.h> /*****考生在以下空白处编写函数f ******/ /*****考生在以上空白处编写函数f ******/ #include <math.h> void main() { FILE *fp; int i; long k=0; for(i=11;i<1000;i++) if(f(i)) { printf("%5d",i);k++; if(k%10==0) putchar('\n');} putchar('\n'); printf("%d\n",k); fp=fopen("CD2.dat","wb"); fwrite(&k,4,1,fp); fclose(fp); } 17、数列第1项为81,此后各项均为它前1项的正平方根,统计该数列前30项之和。 #include <stdio.h> #include <math.h> void main() { FILE *fp; double sum,x; int i; /****考生在以下空白处写入执行语句******/ /****考生在以上空白处写入执行语句******/ printf("%f\n",sum); fp=fopen("CD1.dat","wb"); fwrite(&sum,8,1,fp); fclose(fp); } 1、计算并显示满足条件1.05^n<10^6<1.05^(n+1)的n值以及1.05^n。 #include <stdio.h> #include <math.h> void main() { FILE *fp; double a=1.05; long n=1; /****考生在以下空白处写入执行语句******/ /****考生在以上空白处写入执行语句******/ printf("%d %.4f\n",n,a); fp=fopen("CD1.dat","wb"); fwrite(&a,8,1,fp); fclose(fp); } 4、x,y为取值在区间[0 10]的整数,计算并显示函数f(x,y)在区间内取值最小点x1,y1。f(x,y)=3(x-5)x+x(y-6)+(y-7)y 。 #include <stdio.h> long f(long x,long y) { return 3*(x-5)*x+x*(y-6)+(y-7)*y; } void main() { FILE *fp; long min,x1,y1,x,y; /****考生在以下空白处写入执行语句******/ /****考生在以上空白处写入执行语句******/ printf("%d(%d,%d)\n",min,x1,y1); fp=fopen("CD2.dat","wb"); fwrite(&min,4,1,fp);fwrite(&x1,4,1,fp); fwrite(&y1,4,1,fp); fclose(fp); }} 11、计算1-1/3!+/5!-1/7!+……的和直到末项的绝对值小于10^(-10)时为止。 #include <stdio.h> #include <math.h> void main() { FILE *fp; double y,t=1;int i=1; /****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/ printf("%f\n",y); fp=fopen("CD1.dat","wb"); fwrite(&y,8,1,fp); fclose(fp); } 2、将数组a的每1行均除以该行上的主对角元素(说明第1行同除以a[0][0],第2行同除以a[1][1],...)。 #include <stdio.h> #include <math.h> void main() { FILE *fp; double c; int i,j; double a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; /****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/ for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%7.3f ",a[j]); putchar('\n'); } fp=fopen("CD2.dat","wb"); fwrite(*a+8,8,1,fp); fclose(fp); } 10、计算并显示平面上5点间距离总和,程序中x,y表示其中1个点得x,y坐标。要求用二重循环实现。 #include <stdio.h> #include <math.h> void main() { FILE *fp; double s,x[5]={-1.5,2.1,6.3,3.2,-0.7}; double y[5]={7,5.1,3.2,4.5,7.6}; int i,j; /****考生在以下空白处写入执行语句******/
/****考生在以上空白处写入执行语句******/ printf("%f\n",s); fp=fopen("CD1.dat","wb"); fwrite(&s,8,1,fp); fclose(fp); }
|