全国计算机等级考试C程序设计上机操试题及答案

更新时间:2024-04-17 23:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第二部份 C程序设计上机操作题

一、数列求和 1、程序调试题

试题一

该程序功能:输入x和正数eps,计算多项式1-x+x*x/2!-x*x*x/3!+...的和直到末项的绝对值小于eps为止。 #include #include void main()

{ float x,eps,s=1,t=1,i=1; scanf(\ do {

/***** 1 *****/

t=-t*x/++i; //++i--?i++ s+=t;

/***** 2 *****/

} while(fabs(t)= printf(\}

试题二

该程序功能:运行时若输入a、n分别为3、6,则输出下列表达式的值: 3+33+333+3333+33333+333333 #include void main()

{ 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 #include void main()

{ float x,eps,s=1,t=1,i=1; scanf(\ do {

/***** 1 *****/

t=-t*x/++i; //++i----?i++ s+=t;

/***** 2 *****/

} while(fabs(t)= printf(\}

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 f(float, float*,int); void main( )

{ 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 #include void main() {

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 void main()

{ 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 void main()

{ 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 #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 #include void main()

{ 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 #include void main()

{ 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 void main() { FILE *p; int i;

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 #include void main() {

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 void main() { int m,n,k;

/******** 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 void main()

{ 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 #define N 10 void main() {

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 #define N 10 void main() {

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 void f(int *a,int *m) { int i,j;

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 void f(int *a,int n,int k) { int i,j,t;

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 void main()

{ 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 #include void main()

{ 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 #include void main() { int n,s=0;

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 #include void main() {

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 void main()

{ int n,k=0;

scanf(\

while( _____1_____ ){ //n或n!=0 k++;

_____2_____; //n=n/10 }

printf(\}

试题三

该程序功能:调用函数f,将1个整数首尾倒置,若程序输入12345,则输出54321; 若程序输入-34567,则输出-76543。 #include #include long f(long n)

{ 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 void main() {

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 #include #include void main()

{

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 #include

#define f(x1,y1,x2,y2) sqrt(pow(x2-x1,2)+pow(y2-y1,2)

1 // #include 或#include void main( )

{ 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 #include void main() {

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 #include void main()

{ 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 #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 # include char trans(int x) {

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 void Dec2Bin(int m) {

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 #include void main() {

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 void main() {

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 #include void main()

{ 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 # include void fun(char *s,char *t) {

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 #include #include void main() { int n,i;

/***** 1 *****/

char str; // char str;---?char *str; scanf(\ str=(char*)malloc(n); gets(str); /***** 2 *****/

for(i=1;i='a'&& str[i]<='z') str[i]=str[i]-('a'-'A'); puts(str); }

2、程序填空题

试题一

该程序功能:分别统计字符串中英文字母、数字和其他字符出现的次数。 #include #include void main()

{ char a[80]; int n[3]={0},i; gets(a);

________1________ //for(i=0;i='a' && tolower(a[i])<='z') //*统计字母个数*/ n[0]++; else if (________2________) //*统计数字个数*//

//(a[i]>='0' && a[i]<='9)'

n[1]++; else

n[2]++;

}

for(i=0;i<3;i++) printf(\ }

试题二

该程序功能:调用函数f,从字符串中删除所有的数字字符。 #include #include #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 #include void main()

{ 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 #include void main( )

{ 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 #include #include void f(char *s) { int i=0;

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 #include void main()

{

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 void main() { float x,max,min; /******** 1 *******/ for(i=1;i<=10;i++) { scanf(\

/******* 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 #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;Iflag*y) y=x[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 void main()

{ 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 #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 JSValue(int t)

{

/****以下要求考生写的代码****/ 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 void main()

{ 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 #include void main() {

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 void main() { int i,j,s;

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 #include #include int JSValue(long m)

{

/* 考生在这里添加程序*/ 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 # 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 void main() { int m=0,t=1,n;

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 void main()

{ 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 #include float g(float x)

{ 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 cnt,sum; void JSValue() {

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 void main ( )

{ 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 void main() {

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 void main( ) { int i,j,n;

/*****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 struct STUDENT {

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 void main( )

{ 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 int Year(int x)

{

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 #include void main()

{

* 考生在这里添加代码 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 void main()

{ 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 #include void main()

{ 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(\}

本文来源:https://www.bwwdw.com/article/0xip.html

Top