全国计算机等级考试C程序设计上机操试题及答案
更新时间:2024-04-17 23:54:01 阅读量: 综合文库 文档下载
第二部份 C程序设计上机操作题
一、数列求和 1、程序调试题
试题一
该程序功能:输入x和正数eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于eps为止。 #include
{ float x,eps,s=1,t=1,i=1; scanf(\ do {
/***** 1 *****/
t=-t*x/++i; //++i--?i++ s+=t;
/***** 2 *****/
} while(fabs(t)
试题二
该程序功能:运行时若输入a、n分别为3、6,则输出下列表达式的值: 3+33+333+3333+33333+333333 #include
{ int i,a,n; long t=0;
/********* 1 *******/
s=0; //s=0--?long s=0 scanf(\ for(i=1;i<=n;i++) {
/******* 2 ******/
t=t*10+i; //i-?1 s=s+t; } s=s*a;
printf(\}
试题三
该程序功能:输入x和正数eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值
小于eps为止。 #include
{ float x,eps,s=1,t=1,i=1; scanf(\ do {
/***** 1 *****/
t=-t*x/++i; //++i----?i++ s+=t;
/***** 2 *****/
} while(fabs(t)
2、程序填空题
试题一
在考生目录下,有Modify.c程序,该程序中“ N ”是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。该程序功能:调用函数f计算代数多项式1.1+2.2*x+3.3*x*x+4.4*x*x*x+5.5*x*x*x*x当x=1.7时的值。 #include
{ float b[5]={1.1,2.2,3.3,4.4,5.5};
printf(“%f\\n”,f(1.7,b,5));
}
float f( 1 ) // float f( float x, float a[ ], int n) { float y=a[0],t=1; int i;
for(i=1;i 2 ; // return y } 3、程序设计题 试题一 设计程序:计算多项式a0+a1*sin(x)+a2*sin(x*x)+a3*sin(x*x*x)+??的值,并将其值以格式\写入到考生目录中Paper子目录下的新建文件design.dat中。 #include FILE *p; int i; float x=2.345,t=1.0,y=0.0; float a[10]={1.2,-1.4,-4.0,1.1,2.1,-1.1,3.0,-5.3,6.5,-0.9}; //* 考生在这里添加代码 p=fopen(“design.dat”,”w”); y=a[0]; for(i=1;i<10;i++) { t=t*x; y=y+a[i]*sin(t); } fprintf(p,”%.6f”,y); fclose(p); } 试题二 计程序:计算多项式a0-a1*x+a2*x*x/2!-a3*x*x*x/3!+...的值,并将其以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 #include #include { FILE *p; int I; float x=1.279,t,y; float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; /* 考生在这里添加代码 p=fopen(“design.dat”,”w”); t=1; y==a[0]; for(I=1;I<10;I++) {t=t*x/I; y=y+a[I]*t; } fprinf(p,”%f”,y); fclose(p); } 试题三 设计程序:计算表达式1+2!+3!+...+12!的值,并将计算结果以格式\写入到考生目录中Paper子目录下的新建文件design.dat中 #include { FILE *p; long s=1,k=1; int i; //考生在这里添加代码 p=fopen(\ for(i=2;i<13;i++) {k=i*k; s=s+k; } fprintf(p,\ fclose(p); } 试题四 设计程序:计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...的值,并将其值以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 #include void main() { FILE *p; int i; float x=1.279,t=1,y=0; float a[10]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; // 考生在这里添加代码 p=fopen(\ for(i=1;i<10;i++) { y=y+t*a[i]; t=t*x; } fprintf(p,\ fclose(p); } 试题五 设计程序:计算2的平方根、3的平方根、...、10的的平方根之和,要求计算结果具有小数点后10位有效位数,并以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 #include { FILE *p; //考生在这里添加代码 int i; float s=0; p=fopen(\ for(i=2;i<=10;i++) s=s+sqrt(i); fprintf(p,\ fclose(p); } 试题六 设计程序:数列第1项为81,此后各项均为它前1项的正平方根,统计该 数列前30项之和,并以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 #include { FILE *p; float s=0,a=81,i; //考生在这里添加代码 p=fopen(\ for(i=1;i<=30;i++) {s=s+a; a=sqrt(a);} fprintf(p,\ fclose(p); } 试题七 在数组a的10个数中求平均值v,将大于等于v的数组元素进行求和,并将结果以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 #include float a[10]={7.23,1.5,5.24,2.1,2.45,6.3,5,3.2,0.7,9.81},sum,v=0; //考生在这里添加代码 p=fopen(\ for(i=0;i<10;i++) v=v+a[i]/10; sum=0; for(i=0;i<10;i++) if(a[i]>v) sum=sum+a[i]; fprintf(p,\ fclose(p); } 试题八 设计程序: 利用公式π/4≈1-1/3+1/5-1/7+??公式计算π的近似值,直到某一项的绝对值小于1e-6为止。 (π/4的结果不包含此项)将结果以格式\写入到考生目录中Paper子目录下的新建文件design.dat中。 #include FILE *fp; float n=1,t=1,pi=0; int i; //考生在这里添加代码 p=fopen(\ while(1.0/t>=1e-6) {pi=pi+n*1.0/t; t=t+2; n=-n; } pi=pi*4; fprintf(p,\fclose(p); } 二、最大公约数、最小公倍数 1、程序调试题 试题一 该程序功能:输入m、n(要求输入数均大于0,且m>=n),输出它们的最小公倍数。 #include /******** 1 *********/ while(scanf(\ // m<0 && n<0-?!(m>0&&n>0&&m>=n) for(k=m; k%n!=0;) /******** 2 ********/ k=k+n; //k=k+m或k=k+n printf(\} 2、程序填空题 试题一 该程序功能:输入m、n(要求输入数均大于0),输出它们的最大公约数。 #include { int m,n,k; while(scanf(\ //!(n>0&&m>0) for( ____2____; n%k!=0||m%k!=0; k--); //k=m或k=n printf(\} 三、排序算法 1、程序调试题 试题一 该程序功能:用选择法对10个整数按升序排序。 #include int i,j,min,temp; int a[N]={5,4,3,2,1,9,8,7,6,0}; printf(\ /* 输出数组元素 */ for (i=0;i printf(\ for (i=0;i min = i; for (j=i+1; j if (a[min]<=a[j]) min =j; //<=----? > /****** 2 ******/ temp=a[min]; a[min]=a[j]; a[j]=temp; /* 数据交换 */ } //j--?i printf(\ /* 输出排序结果 */ for (i=0;i printf(\ printf(\} 2、程序设计题 该程序功能:用冒泡法对10个整数按升序排序。 #include int i,j,min,temp; int a[N]={5,4,3,2,1,9,8,7,6,0}; printf(\ /* 输出数组元素 */ for (i=0;i // for (i=0;i { for (j=0; j if (a[min]<=a[j]) { temp=a[min]; a[min]=a[j]; a[j]=temp;} /* 数据交换 */ } printf(\ /* 输出排序结果 */ for (i=0;i 四、数组 1、程序填空题 试题一 该程序功能:输入数组x[7],调用函数f,去除数组中的负数,输出结果为:1 3 4 6 #include for(i=0;i<*m;i++) if(a[i]<0) { for(j=i--;j<*m-1;j++) a[j]=a[j+1]; _____1_____; //*m-- } } void main() { int i,n=7,x[7]={1,-2,3,4,-5,6,-7}; _______2_______; //f(x,&n) for(i=0;i 试题二 该程序功能:函数f将数组循环左移k个元素,数组x[7]调用函数f后的输出结果为:4 5 6 7 1 2 3 #include for(i=0;i ___1___; //t=a[0] for( _______2________ ) a[j-1]=a[j]; //j=1;j } } void main() { int i,x[7]={1,2,3,4,5,6,7}; f(x,7,3); for(i=0;i<7;i++) printf(\ printf(\} 试题三 该程序功能:调用函数f,求二维数组a中全体元素之和。 #include float f( _______1_______) //int x[],int m,int n { float y=0; int i,j; for(i=0;i void main() { float a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}},*b[3]; int i; for(i=0;i<3;i++) b[i]=___2___; //a+i printf(\} 2、程序设计题 试题一 设计程序:将数组a的每1行均除以该行上的主对角元素(第1行同除以a[0][0],第2行同除以a[1][1],...),然后将a数组写入到考生目录中Paper子目录下的新建文件design.dat中新建的文件design.dat中。 #include { float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; FILE *p; /****以下要求考生写的代码****/ p=fopen(“design.dat”,”w”); for(i=0;i<3;i++) { for(j=0;j<3;j++) fprintf(p,\ fprintf(p,\ } fclose(p); } 试题二 设计程序:将数组a的每1行均除以该行上绝对值最大的元素,然后将a数组写入到考生目 录中Paper子目录下的新建文件design.dat中。 #include { float a[3][3]={{1.3,2.7,3.6},{2,3,4.7},{3,4,1.27}}; FILE *p; float x; int i,j; //考生在这里添加代码 for(i=0;i<3;i++) { x=0; for(j=0;j<3;j++) if(fabs(a[i][x]) x=j; x=a[i][x]; for(j=0;j<3;j++) a[i][j]=a[i][j]/x; } p=fopen(\ for(i=0;i<3;i++) { for(j=0;j<3;j++) fprintf(p,\ fprintf(p,\ } fclose(p); } 五、求整数n的各位数字及各数字之和 1、程序调试题 试题一 该程序功能:运行时输入整数n,输出n各位数字之和(如n=1308则输出12,n=-3204则输出9)。 #include scanf(\ n=fabs(n); /******** 1 *******/ while(n>1) { //n或n>0或n!=0 s=s+n; /******** 2 ******/ n=n; //%--?/ } printf(\} 2、程序填空题 试题一 该程序功能:求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。 #include int n,s=0; scanf(\ ______ 1 ______ //n=fabs(n); while(n!=0) { ______ 2 ______ //s=s+n n=n/10; } printf(\ } 试题二 该程序功能:输入1个整数后,输出该数的位数(若输入3214则输出4,输入-23156 则输出5)。 #include { int n,k=0; scanf(\ while( _____1_____ ){ //n或n!=0 k++; _____2_____; //n=n/10 } printf(\} 试题三 该程序功能:调用函数f,将1个整数首尾倒置,若程序输入12345,则输出54321; 若程序输入-34567,则输出-76543。 #include { long m,y=0; m=fabs(n); while(m!=0) { y=y*10+m; ____1____ //m=m/10; } if(n>=0) return y; else _____2_____ // return -y; } void main() { printf(\ printf(\} 3、程序设计题 试题一 设计程序:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cnt及这些数字的和sum到考生目录中Paper子目录下的新建文件design.dat中。 #include FILE *p; int cnt,sum; /* 考生在这里添加代码 int I,q,b,s,g; cnt=0;sum=0; p=fopen(“design.dat”,”w”); for(I=1000;I<5000;I++) {g=I;s=I0/10;b=I00/100;q=i/1000; if(q+b==s+g && q+b==(g-q)*10) {cnt++;sum=sum+q+b+s+g;} } fprintf(p,\ fclose(p); } 六、平面上各点之间的距离 1、程序调试题 试题一 该程序功能:输入n,再输入n个点的平面坐标,然后输出那些距离坐标原点不超过5的点的坐标值。 #include { int i,n; /***** 1 *****/ struct axy { float x,y; } a; //a--?a[100] scanf(\ a=(float*) malloc(n*2*sizeof(float)); for(i=0;i /***** 2 *****/ scanf(\ // a[i].x-----.&a[i].x a[i].y-----.&a[i].y for(i=0;i if(sqrt(a[i].x*a[i].x+a[i].y*a[i].y)<=5) printf(\} 2、程序填空题 试题一 在考生目录下,有Modify.c程序,该程序中“ N ”是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负) 该程序功能:输入n和平面上n个点的坐标,计算各点间距离的总和。 #include #define f(x1,y1,x2,y2) sqrt(pow(x2-x1,2)+pow(y2-y1,2) 1 // #include { float *x,*y,s=0; int i,j,n; scanf(“%d”,&n); x=(float*)malloc(sizeof(float)n*2); y=x+ 2 ; //(float*)malloc(sizeof(float)n*2); for(i=0;i for(j=0;j s+=f(x[i],y[i],x[j],y[j]); printf(“%.2f\\n”,s); } 3、程序设计题 试题一 设计程序:x[i],y[i]分别表示平面上一个点的坐标,求下列10个点与点(1.0,1.0)的距离的总和,并将结果以格式\写入到考生目录中Paper子目录下的新建文件design.dat中。 #include FILE *p; int i; float x[10]={-1.5,2.1,6.3,3.2,-0.7,7.0,5.1,3.2,4.5,7.6}; float y[10]={3.5,7.6,8.1,4.5,6.0,1.1,1.2,2.1,3.3,4.4}; float s=0.0; /****以下要求考生写的代码****/ p=fopen(“design.dat”,”w”); //以写方式打开文件 for(i=0;i<10;i++) s=s+sqrt((x[i]-1)*(x[i]-1)+(y[i]-1)*(y[i]-1)); //求与点(1.0,1.0)的距离之和 fprintf(p,”%.6f”,s); //以%.6f的格式将和写到文件 fclose(p); } 试题二 设计程序:数组元素x[i]、y[i]表示平面上某点坐标,统计所有各点间最短距离,并将其值以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 #include #include #define len(x1,y1,x2,y2) sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) void main() { FILE *p; int i,j; float c,minc; float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33}; minc=len(x[0],y[0],x[1],y[1]); /****以下要求考生写的代码****/ p=fopen(“design.dat”,”w”); for(i=0;i<10;i++) for(j=i+1;j<10;j++) {c=len(x[i],y[i],x[j],y[j]); if(c fprintf(p,”%f”,minc); fclose(p); } 试题三 设计程序:数组元素x[i]、y[i]表示平面上某点坐标,统计10个点中处在圆 (x-1)*(x-1)+(y+0.5)*(y+0.5)=25内的点数k,并将变量k的值 以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 #include { FILE *p; int i,k=0; float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33}; //考生在这里添加代码 p=fopen(\ for(i=0;i<10;i++) if((x[i]-1)* (x[i]-1)+ (y[i]-1)* (y[i]-1)<25) k++; fprintf(p,\ fclose(p); } 试题四 程序设计题:考生目录下有Design.c程序,请完成以下功能:x[i],y[i]表示点d(i)的平面坐标,求d(0)至d(1)、d(1)至d(2)、??d(4)至d(0)的连线所构成的边形面积,并将所求面积以格式“%.4f”写到考生目录下新建文件design.dat。 #include void main( ) { FILE 8p; int i; float s,a,b,c,sdim=0; float x[5]={-4.5,0.5,4.2,2.7,-3}; float y[5]={2.3,4.7,1.3,-2.5,-3.3}; p=fopen(“design.dat”, “w”); // 此处起要求考生自己编制程序 for(i=1;i<4;i++) { a=sqrt((x[0]-x[i])*(x[0]-x[i])+(y[0]-y[i]*(y[0]-y[i])); b=sqrt((x[i]-x[i+1]) *(x[i]-x[i+1])+(y[i]-y[i+1]*(y[i]-y[i+1])); c= sqrt((x[0]-x[i+1]) *(x[0]-x[i+1])+(y[0]-y[i+1]*(y[0]-y[i+1])); s=(a+b+c)/2; sdim+=sqrt(s*(s-a)*(s-b)*(s-c)); } fprintf(p, “%.4f”, sdim); fclose(p); } 七、数制转换 1、程序调试题 试题一 将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符串形式输出。例如:输入十进制数79,将输出十六进制4f。 # include if(x<10) return '0'+x; /********1********/ else return 'a'+x; //?a?+x---??a?+x-10 } int DtoH(int n,char *str) { int i=0; while(n!=0) { str[i]=trans(n); /********2********/ n%=16; //%-----?/ i++;} return i-1; } void main() { int i,k,n; char *str; scanf(\k=DtoH(n,str); for (i=0;i<=k;i++) printf(\} 2、程序填空题 试题一 该程序功能:将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。 #include int bin[32],j; for(j=0;m!=0;j++) { bin[j]= ______1______; //m%2 m=m/2; } for(;j!=0;j--) printf(\ //bin[j-1] } void main() { int n; scanf(\ Dec2Bin(n); } 八、字符串处理 1、程序调试题 试题一 该程序功能: 输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。 例如:输入\,应输出\。 #include char str[256]; int i,j,k=0,n; gets(str); n=strlen(str); for(i=0;i /********1********/ if (tolower(str[i])<'a' || tolower(str[i])>'z') //=?a? >?z?--?<=?z? { /********2********/ str[n]=str[i]; n++; //n--?k } str[k]='\\0'; printf(\} 试题二 该程序功能:输入1个字符串,按字母首次出现次序输出其中所出现过的大写英文字母。 *如运行时输入字符串\,应输出\ M E I L\。 #include void main() { char x[80],y[26]; int i,j,ny=0; gets(x); for(i=0;x[i]!='\\0';i++) if(x[i]>='A'&&x[i]<='Z') { for(j=0;j if(y[i]==x[j]) continue; //i ?-?j continue--?break if(j==ny) { y[ny]=x[i]; ny++; } } /***** 2 *****/ for(i=0;i<26;i++) //26---?ny printf(\ printf(\} 试题三 该程序功能:将两个字符串连接起来。 #include char s1[80],s2[40]; int i=0,j=0; printf(\ scanf(\ printf(\ scanf(\ while (s1[i] !='\\0') /****** 1 ******/ i+1; //i+1----?i++ while (s2[j] !='\\0') /****** 2 ******/ s1[++i]=s2[++j]; /* 拼接字符到s1 */ i+1----?i++ ++j---?j++ s1[i] ='\\0'; printf(\} 试题四 该程序功能:用递归法将一个六位整数n转换成字符串,例如输入123456,应输出字符串\。 #include void itoa(long i,char *s) { if(i==0) return; /****** 1 ******/ *s = '1'+i; //?1?---??0? itoa(i/10,s-1); } void main() { long n; char str[7]=\ scanf(\ /****** 2 ******/ itoa(n,str+6); //str+6--?str+5 printf(\ } 试题五 该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。 #include { char a[81]; int n[5]={0},i; gets(a); for(i=0; a[i]!='\\0'; i++) /***** 1 *****/ switch(toupper(a[i])) { //toupper---?tolower case 'a': n[0]++; break; case 'e': n[1]++; break; case 'i': n[2]++; break; case 'o': n[3]++; break; /***** 2 *****/ case 'U': n[4]++; //U--?u } for(i=0;i<5;i++) printf(\ } 试题六 该程序功能: 输入一个字符串,将组成字符串的所有字符先按顺序存放到字符串t中,再将字符串中的字符按逆序连接到字符串t * 后面。 例如:输入\,则字符串t为\。 # include int i,sl; sl=strlen(s); for(i=0;i /********1********/ t[sl+i]=s[sl-i]; // sl+i-1 /********2********/ t[sl]=\ //\? '0' } void main() { char s[100],t[100]; scanf(\ fun(s,t); printf(\ } 试题七 /*该程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母,输出该字符串。*/ #include /***** 1 *****/ char str; // char str;---?char *str; scanf(\ str=(char*)malloc(n); gets(str); /***** 2 *****/ for(i=1;i 2、程序填空题 试题一 该程序功能:分别统计字符串中英文字母、数字和其他字符出现的次数。 #include { char a[80]; int n[3]={0},i; gets(a); ________1________ //for(i=0;i //(a[i]>='0' && a[i]<='9)' n[1]++; else n[2]++; } for(i=0;i<3;i++) printf(\ } 试题二 该程序功能:调用函数f,从字符串中删除所有的数字字符。 #include void f(char *s) { int i=0; while(s[i]!='\\0') if(isdigit(s[i])) ____1____(s+i,s+i+1); //strcpy ___2___ i++; //else } void main() { char str[80]; gets(str); f(str); puts(str); } 试题三 该程序功能:调用函数f,将字符串中的所有字符逆序存放,然后输出。例如,输入字 //符串为\,则程序的输出结果为\。 #include { char s[60],*f(char*); gets(s); printf(\} ___1__ f(char* x) //char * { char t; int i,n; _______2______ //n=strlen(x); for(i=0;i 试题四 在考生目录下,有Modify.c程序,该程序中“ N ”是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。 该程序功能:调用函数f,将字符串中的所有字符逆序存放,然后输出。例如, 输入字符串为“123456”,则程序的输出结果为“654321”。 #include { char s[60],*f(char*); gets(s);printf(“%s\\n”,f(s)); } 1 f(char *x) // char* { char t; int i,n; 2 // n=strlen(x); for(i=0;i return x; } 试题五 在考生目录下,有Modify.c程序,该程序中“ N ”是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。 该程序功能:调用函数f,从字符串中删除所有的数字字符。 #include while(s[i]!= ?\\0?) if(isdigit(s[I])) 1 (s+i,s+i+1); // strcpy else 2 ; // i++ } void main( ) { char str[80]; gets(str); f(str); puts(str); } 3、程序设计题 试题一 设计程序:计算字符串s中每个字符的权重值,所谓权重值就是字符在字符串中的位置值与该字符的ASCII码值的乘积。位置值从1开始依此递增。将每个字符的权重值,以格式\\写入到考生目录中Paper子目录下的新建文件design.dat中。 #include { FILE *p; int i,w; char *s=\ //这里添加代码 p=fopen(“design.dat”,”w”); i=0; while(s[i]) {w=s[i]*(I+1); fprintf(p, \} fclose(p); } 试题二 设计程序:累加a字符串中各个字符的ASCII码值,然后将累加和以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 #include void main() { FILE *p; int s=0,i=0; char *a=\ //考生在这里添加代码 p=fopen(\ for(;a[i];i++) s=s+ a[i]; fprintf(p,\fclose(p); } 九、最大值与最小值 1、程序调试题 试题一 该程序功能:运行时输入10个数,然后分别输出其中的最大值、最小值。 #include /******* 2 ********/ if(i= =1) { max=x;min=x;} if(x>max) max=x; if(x printf(\} 2、程序填空题 试题一 该程序功能:对x=1,2,...,10,求f(x)=x*x-5*x+sin(x)的最大值。 #include #define f(x) x*x-5*x+sin(x) void main() { int x; float max; ______1______ //max=f(1); for(x=2;x<=10;x++) ______2______ //if(max } 试题二 在考生目录下,有Modify.c程序,该程序中“ N ”是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。 该程序功能:调用函数f,求a数组中最大值与b数组中最小值之差。 #include float f(float x, int n, int flag) { float y; int I; 1 // y=x[0] for(I=1;I return y; } void main( ) { float a[6]={3,5,9,4,2.5,1},b[5]={3,-2,6,9,1}; printf(“%.2f\\n”,f(a,6,1), 2 )); // printf(“%.2f\\n”,f(a,b,1)-f(a,b,-1)); } 3、程序设计题 试题一 设计程序:z=f(x,y)=(3.14*x-y)/(x+y),若x、y取值为区间[1,6]的整数,找出使z取最小值的x1、y1,并将x1、y1以格式\写入到考生目录中Paper子目录下的新建文件design.dat中。 #include { FILE *p; float f(float x,float y),min; int x,y,x1,y1; /****以下要求考生写的代码****/ p=fopen(“design.dat”,”w”); //以写方式打开文件 min=f(1,1); for(x=1;x<=6;x++) //求区间[1,6]中的最小值 for(y=1;y<=6;y++) if(min>f(x,y)) min=f(x,y); fprintf(p,”%d,%d”,x,y); //将最小值以%d,%d的格式写到文件 fclose(p); } float f(float u,float v) { return (3.14*u-v)/(u+v); } 试题二 程序设计题:考生目录下有Design.c程序,请完成以下功能:对x=1,2,?,10,求函数f(x)=x-10*cos(x)-5*sin(x)的最大值,并将该数以格式“%.3f”写到考生目录下新建文件design.dat。 #include #include void main( ) { FILE *p; float f(float),max,x; // 此处起要求考生自己编制程序 p=fopen(“design.dat”, “w”); max=f(1); for(x=2;x<=10;x++) if(max max=f(x); fprintf(p, “%.3f”, max); fclose(p); } float f(float y) { y=y-10*cos(y)-5*sin(y); return(y); } 试题三 /*设计程序:z=f(x,y)=10*cos(x-4)+5*sin(y-2),若x,y取值区间为[0,10]的整数,找出 使z取最小值的x1,y1,并将x1,y1以格式“%d,%d”写到考生目录中Paper下目录下的新建文件design.dat中*/ #include void main() { FILE *p; int x,y,x1,y1; float z,z1; /*考生在这里添加程序*/ p=fopen(\ z1=0; for(x=0;x<=10;x++) for(y=0;y<=10;y++) { z=10*cos(x-4)+5*sin(y-2); if(z {z1=z;x1=x;y1=y;} } fprintf(p,\fclose(p); } 十、斐波那契(Fibonacci)数列 1、程序调试题 2、程序填空题 试题一 /*该程序功能:数组的第1,2项均为1,此后各项值均为该项前二项之和。计算数组第30项的值。*/ #include __ //long f(int n); void main() { printf(\} long f(int n) { if( _____ ) // n<2 return 1; else return f(n-1)+f(n-2); } 3、程序设计题 试题一 设计程序:求斐波那契(Fibonacci)数列中大于t的最小的一个数,结果由函数JSValue返回,其中斐波那契数列F(n)的定义为: * F(0)=0,F(1)=1 * F(n)=F(N-1)+F(n-2) *分别计算当t=1000和t=3000时的结果,将计算结果输出到考生目录中Paper子目录下的新建文件design.dat中。 #include { /****以下要求考生写的代码****/ int f1=1,f2=1,f; f=f1+f2; while(f<=t) { f1=f2; f2=f; f=f1+f2; } return f; } void main() { FILE *p; p=fopen(\ fprintf(p,\alue(1000),JSValue(3000)); fclose(p); } 试题二 设计程序:数列各项为1,1,2,3,5,8,13,21,...,求其前40项之和, 并将求和的结果以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 #include { FILE *p; long s=0,i,a[40]; // 考生在这里添加代码 p=fopen(“design.dat”,”w”); a[0]=a[1]=1; for(i=2;i<40;i++) a[i]=a[i-1]+a[i-2]; for(i=0;i<40;i++) s=s+ a[i]; fprintf(p;”%d”,s); fclose(p); } 十一、水仙花、完数、回文数与亲密数 1、程序填空题 试题一 该程序功能:找出100~999之间所有的Armstrong数。所谓Armstrong数是指这个3位数各位上数字的立方和等于自身。例如:371=3*3*3+7*7*7+1*1*1,那么371就是Armstrong数。 #include int i,a,b,c; for(i=100;i<=999;i++) { a=i/100; _______1_______ //b=i0/10或i/10 c=i; if (________2________) //i==a*a*a+b*b*b+c*c*c //或i=pow(a,3)+pow(b,3)+pow(c,3) printf(\} } 试题二 该程序功能:输出6~1000之间的完数(1个数的因子和等于其自身的数:6=1+2+3、28=1+2+4+7+14,则6、28都是完数)。 #include for(i=6;i<=1000;i++) { _____1_____ //s=1; for(j=2;____2_____;j++) if(i%j==0) s+=j; //j 2、程序设计题 试题一 设计程序:在6至5000内找出所有的亲密数对,并将每对亲密数用语句fprintf(p,\”写到考生目录中Paper子目录下的新建文件design.dat中。说明:若a、b为1对亲密数,则a的因子和等于b、b的因子和等于a、且a不等于b。如:220、284是1对亲密数,284、220也是1对亲密数。 #include void main() { FILE *p; int a,b,c,k; p=fopen(\ * 考生在这里添加代码 for(c=6;c<=5000;c++) { a=c; b=1; for(k=2;k for(k=2;k if(c==a&& a!=b) fprintf(p,\ } } 试题二 /*设计程序:寻找并输出11到999之间的数m,它满足m,m*m,m*m*m均为回文数。所谓回文数是指各位数字左右对称,例如121,676,94249等。满足上述条件的数如m=11,m^2=121,m^3=1331皆为回文数。请编制函数int JSValue(long m)实现此功能,如果是 回文数,则函数返回为1,反之则返回0。*/ #include { /* 考生在这里添加程序*/ int a[10],i=0,n; while(m) { a[i]=m; m=m/10; i++;} for(--i,n=i;i>n/2;i--) if(a[i]!=a[n-i]) return 0; return 1; } void main() { FILE *p;long m; p=fopen(\ for(m=11;m<1000;m++) { if(JSValue(m)&&JSValue(m*m)&&JSValue(m*m*m)) fprintf(p,\ } fclose(p); } 十二、方程求根 1、程序填空题 试题一 在考生目录下,有Modify.c程序,该程序中“ N ”是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句,否则后果自负)。 该程序功能:调用函数f用以求1元2次方程x*x+5*x-2=0的实根。 #include int f(float a, float b, float c, float*x1, float*x2) { if(b*b-4*a*c<0) 1 ; // return 1; *x1=(-b+sqrt(b*b-4*a*c))/2/a; *x2=(-b-sqrt(b*b-4*a*c))/2/a; return 0; } void main( ) { float u1,u2; float a=1,b=5,c=-2; if( 2 ) printf(“实数范围内无解\\n”); // f(a,b,c,&u1,&ua) else printf(“%.2f %.2f\\n”,u1,u2); } 试题二 该程序功能:输入整数n(n>0),求m使得 2的m次方小于或等于n、2的m+1次方大于或等于n。 #include while( _____ 1 ________); //scanf(\ while(!(t<=n&&t*2>=n)){ _____ 2 _____ //t=t*2; m++; } printf(\} 2、程序设计题 试题一 /* 设计程序:统计满足条件x*x+y*y+z*z==2000的所有解的个数,并将统计结果以格式\写入到考生目录中Paper子目录下的新建文件design.dat中说明:若a、b、c是1个解,则a、c、b也是1个解,等等。 #include { FILE *p; int x,y,z,k=0; //* 考生在这里添加代码 p=fopen(\ for(a=-45;a<=45;a++) for(b=-45;b<=45;b++) for(c=-45;c<=45;c++) if(a*a+b*b+c*c==2000) k++; } fprintf(p,\ fclose(p); 试题二 设计程序: a、b、c为区间[1,100]的整数,统计使等式 c/(a*a+b*b)=1成立的所有解的个数,并将统计数以格式\写入到考生目录中Paper子目录下的新建文件design.dat中 (若a=1、b=3、c=10是1个解,则a=3、b=1、c=10 也是解)。 #include void main() { FILE *p; int n=0,a,b,c; //考生在这里添加代码 p=fopen(\ for(a=1;a<=100;a++) for(b=1;b<=100;b++) for(c=1;c<=100;c++) if(c/(a*a+b*b)==1&&c%(a*a+b*b)==0) n++; fprintf(p,\ fclose(p); } 试题三 程序设计题:函数root返回满足条件f(a)*f(b)<0的方程在[a,b]区间内的 1个实根,用区间对分法求解,限差为0.00001。将方程 x*x-5sin(x)-4=0的根以格式\写入到考生目录下新建的文件design.dat。 #include { return x*x-5*sin(x)-4; } float root(float a,float b,float eps,float(*f)(float)) { float c; while(c=(a+b)/2,fabs(f(c))>=eps&&fabs(b-a)>=eps) if(f(a)*f(c)<0) b=c; else a=c; return c; } void main() { FILE *p; float a,b,x; scanf(“%f,%f”,&a,&b); p=fopen(“design.dat”,”w”); x= root(a,b,0.00001,g); fprintf(p,”%9.6f”,x); fclose(p); } 十三、回文数、因子、质因子、素数 1、程序调试题 试题一 /*程序功能:输入n,输出n的所有质数因子,(如n=13860,输出2、2、3、3、5、7、11)。*/ #include void main() { int n,i; scanf(“%d”,&n); /******** 1 *******/ i=1; // i=1;-----?i=2; while(n>1) if(n%i==0){ printf(“%d\\t”,i); n/=i; } else /******* 2 ********/ } n--; // n--;-----?i++; 2、程序设计题 试题一 设计程序:计算500~800区间内素数的个数cnt和素数和sum。请编写函数JSValue()实现程序的要求。最后把cnt和sum写入到考生目录中Paper子目 录下的新建文件design.dat中 #include int i,j,half; //考生在这里添加代码 for(i=500;i<=800;i++) {for(j=2,j=i/2) {cnt++; sum=sum+I; } } void main() { FILE *p; p=fopen(\ JSValue(); fprintf(p,\ fclose(p); } 试题二 程序设计题:考生目录下有Design.c程序,请完成以下功能:在1000至1100内找出所有的 素数,并顺序将每个素数用语句“fprintf(p, “]”, i)” 写入到考生目录下新建的文件design.dat。说明:素数是自然数中除了1以外只能被1和其自身整除的数。 #include #include { FILE *p; int i, j; // 此处起要求考生自己编制程序 int prime (int n); if((p=fopen(“Tsign.dat”, “w”))==NULL) { printf(“can not open in FILE”); exit (0); } for(j=1000; j<=1100; j++) if(prime(j)==1) fprintf(p, “]”, j); fclose (p); } int prime (int n) { int t; for(I=2; I if(n%I==0) retunrn 0; return 1; } 十三、其他算法 1、程序调试题 试题一 该程序功能:将一个char型数的高4位和低4位分离,分别输出,如22(二进制:00010110)输出为1和6。 #include char a,b1,b2,c; scanf(\ /****** 1 ******/ b1=a<<4; /*b1存放高4位*/ << ---? >> c=~(~0<<4); /****** 2 ******/ b2=a|c; /*b2存放低4位*/ |---?& printf(\} 试题二 在考生目录下,有Modify.c程序,该程序中“/******N******/”的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。 程序功能:输入n(0 1 222 33333 4444444 #include /*****1******/ scanf(“%d”,n); // scanf(“%d”,&n); for(i=1;i<=n;i++){ for(j=1;j<=n+1-i;j++) putchar(? ?); for(j=1;j<=2*I-1;j++) putchar((char)(i+48)); /****2****/ putchar(\\n); } // putchar( ?\\n?); } 试题三 2、程序填空题 试题一 该程序功能:输入三个整数,按由小到大的顺序输出这三个数。 #include void swap(______1______) //int *pa,int *pb { /*交换两个数的位置*/ int temp; temp = *pa; *pa = *pb; *pb = temp; } void main() { int a,b,c,temp; scanf(\ if(a>b) swap(&a,&b); if(b>c) swap(&b,&c); if(______2______) //a>b swap(&a,&b); printf(\} 试题二 该程序功能:该程序计算四位学生的平均成绩,保存在结构中,然后列表输出这些学生的信息。 #include char name[16]; int math; int english; int computer; int average; }; void GetAverage(struct STUDENT *pst) /* 计算平均成绩 */ { int sum=0; sum = ______1______; //sum+pst->math+ pst->english+ pst->computer pst->average = sum/3; } void main() { int i; struct STUDENT st[4]={{\ {\ for(i=0;i<4;i++) { GetAverage(______2______); //&st[i] } printf(\verage\\n\ for(i=0;i<4;i++) { printf(\ st[i].computer,st[i].average); } } 试题三 在考生目录下,有Modify.c程序,该程序中“ N ”是根据程序功能需要填充部分,请完成程序填充(注意:不得加行、减行、加句、减句),否则后果自负) 该程序功能:运行时输出下列结果。 abcdefg abcde abc a #include { int i,j; char k; for(i=0;i<=4;i++){ for(j=1;j 1 ; // k= ?a?; for(j=9-2*i;j>0;j--){ k=(char)k++; printf(“%c”, 2 ); //k-1 } putchar(?\\n?); } } 3、程序设计题 试题一 设计程序:某公司1999年年产量11.5万件,生产能力每年提高9.8%,求出产量能超过x万件的年份,结果由函数Year返回。计算当x=20和x=30时的结果,将计算结果输出到考生目录中Paper子目录下的新建文件design.dat中。 #include { float p=11.5,y=1999; /*以下代码由考生添加 while(p<=x) { y++; p=p*(1+0.098); } return y; } void main() { FILE *p; p=fopen(\ fprintf(p,\ear(20),Year(30)); fclose(p); } 试题二 设计程序:在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数,将该数以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 #include { * 考生在这里添加代码 FILE *p; int m=17; p=fopen(\ for(;;m++) if(m%3==1&&m%5==3&&m%7==5&&m%9==7)break; fprintf(p,\ fclose(p); } 试题三 设计程序:计算27的小于1.00001的2n次方根(27的2(n-1)次方根不小于1.00001), 将n以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 */ #include #include { FILE *p; float x=27; int n=0; //考生在这里添加代码 n++; p=fopen(\ while(!(pow(x,1.0/(2*n))<1.00001&&pow(x,1.0/(2*n-1))>=1.00001))n++; fprintf(p,\fclose(p); } 试题三 设计程序:将满足条件pow(1.05,n)<1e6 { float y=1.05; int n=1; FILE *p; //考生在这里添加代码 p=fopen(\ while(!pow(1.05,n)<1e6&& pow(1.05,n+1)>1e6) n++; fprintf(p,\ fclose(p); } 试题四 该程序功能:输入整数n(n>0),求m使得 2的m次方小于或等于n、2的m+1次方大于或等于n。 #include void main() { int m=0,t=1,n; while( _____ 1 ________); //scnaf(“%d”,&n),n<=0 while(!(t<=n&&t*2>=n)){ _____ 2 _____ //t=t*2; m++; } printf(\}
正在阅读:
小学六年级质量监测分析报告04-21
材料员习题集07-03
聚乙烯醇水凝胶的发展现状及研究方向11-15
大安镇中心小学家长开放日活动方案10-07
杨柳作文200字07-06
E3JK-DN13光电开关04-17
金融学专业本科毕业论文06-01
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 上机
- 等级考试
- 程序设计
- 试题
- 答案
- 计算机
- 全国
- 液氨特征与质量流量计的选用浅析
- 2016 年 会计继续教育 真题 财政支出绩效评价
- 2019届高考新高考语文语言文字运用题复习—全国通用
- 65万吨年催化重整工艺设计(初稿)
- 患者监护系统需求分析报告
- 新世纪大学英语综合教程第二册课后作业及答案
- 浅析当前我国城市道路交通现状及问题
- 2018年中国酱油市场分析及发展研究报告目录
- 外贴岩棉板薄抹灰施工方案 - 图文
- NS2400电子海图详细手册
- 史上最全PKPM SATWE参数设置介绍 - 图文
- 内循环流化床冷渣器内颗粒混合特性数值模拟 - 图文
- 园林绿化工程(讲义) - 图文
- 四川省宜宾市高2018届高三第三次诊断考试化学试题 含解析
- 机械工程材料学
- 格力的6σ管理
- 快乐英语六年级下册全部英语单词
- 中小学生转学手续该如何办理 - 图文
- 猫道设计与施工方案(修改)
- 2013年潍坊市学业水平考试数学试卷分析