视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
浙江省高等学校计算机二级C语言上机操作题
2025-09-29 00:23:40 责编:小OO
文档
第二部份   C程序设计上机操作题    2

一、数列求和    2

二、最大公约数、最小公倍数    6

三、排序算法    7

四、数组    8

五、求整数n的各位数字及各数字之和    11

六、平面上各点之间的距离    13

七、数制转换    16

八、字符串处理    17

九、最大值与最小值    23

十、斐波那契(Fibonacci)数列    26

十一、水仙花、完数、回文数与亲密数    27

十二、方程求根    29

十三、回文数、因子、质因子、素数    32

十三、其他算法    33

第二部份   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("%f%f",&x,&eps);

  do {

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

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

    s+=t;

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

} while(fabs(t)=

  printf("%f\\n",s);

}

试题二

该程序功能:运行时若输入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("%d%d",&a,&n);

for(i=1;i<=n;i++) {

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

     t=t*10+i;                 //i-1

     s=s+t;

    }

    s=s*a;

    printf("%ld\\n",s);

}

2、程序填空题

试题一

程序功能:调用函数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)+……的值,并将其值以格式"%.6f"写入到考生目录中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!+...的值,并将其以格式"%f"写到考生目录中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;

}

fprintf(p,"%f",y);

fclose(p);

}

试题三

设计程序:计算表达式1+2!+3!+...+12!的值,并将计算结果以格式"%ld" 写入到考生目录中Paper子目录下的新建文件design.dat中  

#include

void main()

{ FILE *p; long s=1,k=1; int i;

 //考生在这里添加代码

   p=fopen("design.dat

for(i=2;i<=12;i++)

      {k=i*k;

       s=s+k;

       }

      fprintf(p,"%ld",s);

     fclose(p);

}

试题四

设计程序:计算多项式a0+a1*x+a2*x*x+a3*x*x*x+...的值,并将其值以格式"%f"写到考生目录中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("design.dat

for(i=0;i<10;i++)

{ y=y+t*a[i];

 t=t*x;

}

   fprintf(p,"%f",y);

   fclose(p);

}

试题五

设计程序:计算2的平方根、3的平方根、...、10的的平方根之和,要求计算结果具有小数点后10位有效位数,并以格式"%.10f\\n"写到考生目录中Paper子目录下的新建文件design.dat中。 

#include

#include

void main()

{  FILE *p;

  //考生在这里添加代码

   int i;

   float s=0;

   p=fopen("design.dat

for(i=2;i<=10;i++)

    s=s+sqrt(i);

    fprintf(p,"%.10f",s);

    fclose(p);

}

试题六

设计程序:数列第1项为81,此后各项均为它前1项的正平方根,统计该 数列前30项之和,并以格式"%.3f"写到考生目录中Paper子目录下的新建文件design.dat中。

#include

#include

void main()

{ FILE *p; float s=0,a=81,i;

  //考生在这里添加代码

   p=fopen("design.dat

for(i=1;i<=30;i++)

{s=s+a;

a=sqrt(a);

}

    fprintf(p,"%.3f",s);

    fclose(p);

}

试题七

在数组a的10个数中求平均值v,将大于等于v的数组元素进行求和,并将结果以格式"%.5f"写到考生目录中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("design.dat

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,"%.5f",sum);

    fclose(p);

 }

试题八

设计程序: 利用公式π/4≈1-1/3+1/5-1/7+……公式计算π的近似值,直到某一项的绝对值小于1e-6为止。 (π/4的结果不包含此项)将结果以格式"%.6f"写入到考生目录中Paper子目录下的新建文件design.dat中。

#include

#include

void main()

{

 FILE *fp;

 float n=1,t=1,pi=0;

 int i;

  //考生在这里添加代码

  fp=fopen("design.dat

while(1.0/t>=1e-6)

   {pi=pi+n*1.0/t;

t=t+2;

n=-n;

}

pi=pi*4;

fprintf(fp,"%.6f",pi);

fclose(fp);

}

试题九

计算数列1,-1/3!,1/5!,-1/7!的和至某项的绝对值小于1e-5为止(该项不累加),将结果以格式"%.6f"写入到考生目录中Paper子目录下的新建文件design1.dat中。

#include

#include

void main()

{ FILE *p; float s=1,t=1,i=3;

  // 考生在这里添加代码

  p=fopen("d:\\\\design1.txt

  t=-t*(i-1)*i;

while(fabs(1/t)>=1e-5)

  {s+=1/t;

   i=i+2;

   t=-t*(i-1)*i;

  }

 fprintf(p,"%.6",s);

 fclose(p);

}

二、最大公约数、最小公倍数

1、程序调试题

试题一

该程序功能:输入m、n(要求输入数均大于0,且m>=n),输出它们的最小公倍数。

#include

void main()

{   int m,n,k;

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

while(scanf("%d%d",&m,&n),m<0 && n<0);

// m<0 && n<0-!(m>0&&n>0&&m>=n)

    for(k=m; k%n!=0;)

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

    k=k+n;                                //改为:k=k+m

    printf("%d\\n",k);

}

2、程序填空题

试题一

该程序功能:输入m、n(要求输入数均大于0),输出它们的最大公约数。

#include

void main()

{   int m,n,k;

    while(scanf("%d%d",&m,&n), _______1______ );    //!(n>0&&m>0)

    for( ____2____; n%k!=0||m%k!=0; k--);            //k=m或k=n

    printf("%d\\n",k);

}

三、排序算法

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("\\nThe array is:\\n");                   /* 输出数组元素 */

for (i=0;i        printf("%5d",a[i]);

for (i=0;i    {

        min = i;

for (j=i+1; j            /****** 1 ******/

if (a[min]<=a[j]) min =j; //<=---- >

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

        temp=a[min]; a[min]=a[j]; a[j]=temp;     /* 数据交换 */

    }                                      //j--i

    printf("\\nThe sorted numbers: \\n");           /* 输出排序结果 */

for (i=0;i        printf("%5d",a[i]);

    printf("\\n");

}

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("\\nThe array is:\\n");                   /* 输出数组元素 */

for (i=0;i        printf("%5d",a[i]);

//

for (i=0;i    {

        

for (j=0; jif (a[j]>a[j+1]) {

                temp=a[j]; a[j]=a[j+1]; a[j+1]=temp;}     /* 数据交换 */

}                           

    printf("\\nThe sorted numbers: \\n");                /* 输出排序结果 */

for (i=0;i        printf("%5d",a[i]);

    printf("\\n");

}

四、数组

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  printf("\\n");

}

试题二

该程序功能:函数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     a[n-1]=t;

  }

}

void main()

{ int i,x[7]={1,2,3,4,5,6,7};

  f(x,7,3); 

for(i=0;i<7;i++) printf("%5d",x[i]); printf("\\n");

}

试题三

该程序功能:调用函数f,求二维数组a中全体元素之和。

#include

float f( _______1_______)                       //float *x[],int m,int n

{ float y=0; int i,j;

for(i=0;i  return y;

}

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("%.2f\\n",f(b,3,4));

}

试题四

求出数组a中相邻两个元素的和,并将这些和存放在数组a中,按每一行3个元素的形式输出。(例如:b[1]=a[0]+a[1],b[2]=a[1]+a[2]……,b[9]=a[8]+a[9])

#include

void main()

{

    int a[10],b[10],i;

    printf("\\nInput 10 numbers:  ");

for (i=0; i<10;i++) /* 数组输入 */

        scanf("%d", &a[i]);

for (i=1; i<10; i++)

        b[i]=_ a[i-1]+a[i]_;               /* 计算b数组中的元素 */

for (i=1; i<10; i++)

    {

        printf("%3d",b[i]);

        if (_i%3==0_)  printf("\\n");      /* 每行打印3个数据 */

    }

}

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;

/****以下要求考生写的代码****/

   float temp;

   int i,j;

p=fopen(“design.dat”,”w”);

for(i=0;i<3;i++)

{temp=a[i][i[;

for(j=0;j<3;j++)

fprintf(p,"%5.1f",a[i][j]/temp);

       fprintf(p,"\\n");

      }

  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=a[i][0];

for(j=0;j<3;j++)

if(fabs(x)             x=a[i][j];

for(j=0;j<3;j++)

         a[i][j]=a[i][j]/x;

     }

  p=fopen("design.dat

for(i=0;i<3;i++) {

for(j=0;j<3;j++) fprintf(p,"%10.6f",a[i][j]);

    fprintf(p,"\\n");

  }

  fclose(p);

}

试题三

在整数数组a中找出偶数放到数b中,对数组b按从小到大的顺序排序后发格式“%3d”每行3个数写入考生文件夹中paper子文件夹下的新建文件design1.dat。

#include

 void main()

 { FILE *p;

   int i,j,temp,n=0;

   int a[10]={7,6,20,3,14,88,53,62,10,29},b[10];

   //考生在这里添加代码

   p=fopen("design1

for(i=0;i<10;i++)

     if(a[i]%2==0)b[n++]=a[i];

for(i=0;ifor(j=0;j< n-1-i;j++)

if(b[j]>b[j+1])

        {temp=b[j];

         b[j]=b[j+1];

         b[j+1]=temp;

        }

for(i=1;i<=n;i++)

      if(i%3==0) fprintf(p,"%3d\\n",b[i-1]);

      else fprintf(p,"%3d",b[i-1]);

      fclose(p);

 }

五、求整数n的各位数字及各数字之和

1、程序调试题

试题一

该程序功能:运行时输入整数n,输出n各位数字之和(如n=1308则输出12,n=-3204则输出9)。

#include

#include

void main()

{   int n,s=0;

    scanf("%d",&n);

    n=fabs(n);

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

while(n>1) { //n或n>0或n!=0

        s=s+n%10;

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

        n=n%10;                       //%--/

    }

    printf("%d\\n",s);

}

2、程序填空题

试题一

该程序功能:求输入的整数各位数字之和,如输入234则输出9,输入-312则输出6。

#include

#include

  void main()

 {

   int n,s=0;

   scanf("%d",&n);

   ______ 1 ______     //n=fabs(n);

   while(n!=0) {

     ______ 2 ______  //s=s+n%10

     n=n/10;

   }

   printf("%d\\n",s);

 }

试题二

该程序功能:输入1个整数后,输出该数的位数(若输入3214则输出4,输入-23156

则输出5)。

#include

void main()

{   int n,k=0;

    scanf("%d",&n);

    while( _____1_____ ){            //n或n!=0

        k++;

        _____2_____;               //n=n/10

    }

    printf("%d\\n",k);

}

试题三

该程序功能:调用函数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%10; 

     ____1____                         //m=m/10;

   }

if(n>=0) return y;

   else _____2_____                     // return -y;

}

void main()

{

    printf("%ld\",f(12345));  printf("%ld\\n",f(-34567));

}

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%10;s=i%100/10;b=i%1000/100;q=i/1000;

 if(q+b==s+g && q+b==(g-q)*10)

    {cnt++;sum=sum+q+b+s+g;}

}

    fprintf(p,"%d,%d",cnt,sum);

    fclose(p);

}

六、平面上各点之间的距离

1、程序调试题

试题一

该程序功能:输入n,再输入n个点的平面坐标,然后输出那些距离坐标原点不超过5的点的坐标值。

#include

#include

#include

void main()

{

   int i,n;

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

   struct axy { float x,y; } a;                  //a--*a

   scanf("%d",&n);

   a=(float*) malloc(n*2*sizeof(float));         //a=(struct axy*) malloc(n*2*sizeof(float));

for(i=0;i     /***** 2 *****/

     scanf("%f%f",a[i].x,a[i].y);             // a[i].x-----.&a[i].x a[i].y-----.&a[i].y

for(i=0;iif(sqrt(a[i].x*a[i].x+a[i].y*a[i].y)<=5)

       printf("%f,%f\\n",a[i].x,a[i].y);

}

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  ;                      //sizeof(float)*n*2;

for(i=0;ifor(i=0;ifor(j=0;js+=f(x[i],y[i],x[j],y[j]);

printf(“%.2f\\n”,s);

}

3、程序设计题

试题一

设计程序:x[i],y[i]分别表示平面上一个点的坐标,求下列10个点与点(1.0,1.0)的距离的总和,并将结果以格式"%.6f"写入到考生目录中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]表示平面上某点坐标,统计所有各点间最短距离,并将其值以格式"%f"写到考生目录中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            minc=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的值 以格式"%d"写到考生目录中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("design.dat

for(i=0;i<10;i++)

if((x[i]-1)* (x[i]-1)+ (y[i]-0.5)* (y[i]-0.5)<25)

   k++;

    fprintf(p,"%d",k);

    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%16); 

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

n%=16;                        //%-----/

i++;}

return i-1;

}

void main()

{

int i,k,n;

char *str;

scanf("%d",&n);

k=DtoH(n,str);

for (i=0;i<=k;i++) printf("%c",str[k-i]);

}

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("%d", ______2______ );   //bin[j-1]

}

void main()

{

    int n;

    scanf("%d",&n);

    Dec2Bin(n);

}

八、字符串处理

1、程序调试题

试题一

该程序功能: 输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。

  例如:输入"abc123+xyz.5",应输出"abcxyz"。

#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’->=’a’ >’z’<=’z’ ||-〉&&

    {

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

         str[n]=str[i]; n++;                      //n--k

     }

  str[k]='\\0';

  printf("%s\\n",str);

}

试题二

该程序功能:输入1个字符串,按字母首次出现次序输出其中所出现过的大写英文字母。

 *如运行时输入字符串"FONTNAME and FILENAME",应输出"F O N T A 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            /***** 1 *****/

            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("%c ",y[i]);

    printf("\\n");

}

试题三

该程序功能:将两个字符串连接起来。

#include

void main()

{

    char s1[80],s2[40];

    int i=0,j=0;

    printf("\\nInput the first string:");

    scanf("%s",s1);

    printf("\\nInput the second string:");

    scanf("%s",s2);

    while (s1[i] !='\\0')

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

        i+1;                      //i+1----i++

    while (s2[j] !='\\0')

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

        s1[++i]=s2[++j];           /* 拼接字符到s1  */ ++i----i++   ++j---j++

    s1[i] ='\\0';

    printf("\\nNew string: %s",s1);

}

试题四

该程序功能:用递归法将一个六位整数n转换成字符串,例如输入123456,应输出字符串"123456"。

#include

void itoa(long i,char *s)

{

    if(i==0)

        return;

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

    *s = '1'+i%10;                 //’1’---’0’

    itoa(i/10,s-1);

}

void main()

{

    long n;

    char str[7]="";

    scanf("%ld",&n);

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

    itoa(n,str+6);                //str+6--str+5

    printf("%s",str);

}

试题五

该程序功能:分别统计字符串中所有英文字母中的各元音字母个数。

#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("%d\\n",n[i]);

 }

试题六

该程序功能: 输入一个字符串,将组成字符串的所有字符先按顺序存放到字符串t中,再将字符串中的字符按逆序连接到字符串t * 后面。 例如:输入"ABCD",则字符串t为"ABCDDCBA"。

# include

# include

void fun(char *s,char *t)

{

  int i,sl;

  sl=strlen(s);

for(i=0;i     t[i]=s[i];

for(i=0;i     /********1********/

     t[sl+i]=s[sl-i];                      // t[sl+i]=s[sl-i];改为t[sl+i]=s[sl-i-1];

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

  t[sl]="\\0";                            // t[sl]="\\0"; 改为t[sl+sl]='\\0';

}

void main()

{

  char s[100],t[100];

  scanf("%s",s);

  fun(s,t);

  printf("%s",t);

}

试题七

/*该程序功能:输入n以及小于n个字符的字符串,将字符串中所有小写字母改为相应的大写字母,输出该字符串。*/

#include

#include

#include

void main()

{  int n,i;

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

   char str;                            // char str;---char *str;

   scanf("%d\\n",&n);  str=(char*)malloc(n); gets(str);

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

for(i=1;iif(str[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{if (tolower(a[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("%d\\n",n[i]);

 }

试题二

该程序功能:调用函数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,将字符串中的所有字符逆序存放,然后输出。例如,输入字

//符串为"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开始依此递增。将每个字符的权重值,以格式"%d "写入到考生目录中Paper子目录下的新建文件design.dat中。

#include

#include

void main()

{

    FILE *p;  int i,w;

    char *s="we45*&y3r#$1";

//这里添加代码

p=fopen(“design.dat”,”w”);

i=0;

while(s[i])

{w=s[i]*(i+1);

 fprintf(p, "%d ",w);

i++;

}

fclose(p);

}

试题二

设计程序:累加a字符串中各个字符的ASCII码值,然后将累加和以格式"%d"写到考生目录中Paper子目录下的新建文件design.dat中。

#include

void main()

{ FILE *p; int s=0,i=0;

  char *a="r235%^%34cdDW,.";

  //考生在这里添加代码

   p=fopen("design.dat

   for(;a[i];i++)

s=s+ a[i];

fprintf(p,"%d",s);

fclose(p);

}

九、最大值与最小值

1、程序调试题

试题一

该程序功能:运行时输入10个数,然后分别输出其中的最大值、最小值。

#include

void main()

{   float x,max,min;

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

      for(int i=1;i<=10;i++) {

        scanf("%f",&x);

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

        if(i==1) { max=x;min=x;}

if(x>max) max=x;

if(x      }

      printf("%f,%f\\n",max,min);

}

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    printf("%f\\n",max);

}

试题二

该程序功能:调用函数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,6,1)-f(b,5,-1));

}

3、程序设计题

试题一

设计程序:z=f(x,y)=(3.14*x-y)/(x+y),若x、y取值为区间[1,6]的整数,找出使z取最小值的x1、y1,并将x1、y1以格式"%d,%d"写入到考生目录中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);x1=1;y1=1;

for(x=1;x<=6;x++) //求区间[1,6]中的最小值

for(y=1;y<=6;y++)

if(min>f(x,y))

      {min=f(x,y);x1=x;y1=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(maxmax=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("design.dat

     z1=10*cos(0-4)+5*sin(0-2);

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,"%d,%d",x1,y1);

fclose(p);

}

十、斐波那契(Fibonacci)数列

1、程序调试题

2、程序填空题

试题一

/*该程序功能:数组的第1,2项均为1,此后各项值均为该项前二项之和。计算数组第30项的值。*/

#include

__                                       //long f(int n);

void main()

{

    printf("%ld\\n",f(30));

}

long f(int n)

{

    if( _____    )                      // n<2 或n==0||n==1

        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("design.dat

    fprintf(p,"%d,%d",JSValue(1000),JSValue(3000));

    fclose(p);

}

试题二

设计程序:数列各项为1,1,2,3,5,8,13,21,...,求其前40项之和, 并将求和的结果以格式"%d"写到考生目录中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);

.0fclose(p);

}  

试题三

设计程序:求斐波那契数列中的前40项之和(斐波那契数列的定义为后一项为前两项之和),并将求和的结果以格式“%d“写入到考生文件夹中子文件夹下新建文件desigen2.dat

#include

void main()

{ FILE *p; long s=0,i,a[40];

  /*

   * 考生在这里添加代码  //程序同上

   */

}

十一、水仙花、完数、回文数与亲密数

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=i%100/10或i/10%10

    c=i%10;

    if (________2________)             //i==a*a*a+b*b*b+c*c*c

//或i==pow(a,3)+pow(b,3)+pow(c,3)

    printf("%d is a Armstrong number!\\n",i);

    }

}

试题二

该程序功能:输出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<=i/2或j        if(s==i) printf("%d\\n",s);

    }

}

2、程序设计题

试题一

设计程序:在6至5000内找出所有的亲密数对,并将每对亲密数用语句fprintf(p,"%6d,%6d\\n",a,b);”写到考生目录中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("design.dat

  * 考生在这里添加代码

for(c=6;c<=5000;c++)

     { a=c;

      b=1;

for(k=2;k       if(a%k==0)

    b=b+k;

      a=1;

for(k=2;k       if(b%k==0)

     a=a+k;

   if(c==a&& a!=b)

      fprintf(p,"%6d,%6d\\n",a,b);

}

}

试题二

/*设计程序:寻找并输出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%10;

       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("design.dat

for(m=11;m<1000;m++)

    {

        if(JSValue(m)&&JSValue(m*m)&&JSValue(m*m*m))

            fprintf(p,"%ld ",m);

    }

    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,&u2)

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("%d",&n),n<=0

while(!(t<=n&&t*2>=n)){

        _____ 2 _____                //t=t*2;

        m++;

    }

    printf("%d\\n",m);

}

2、程序设计题

试题一

设计程序:统计满足条件x*x+y*y+z*z==2000的所有解的个数,并将统计结果以格式"%d"写入到考生目录中Paper子目录下的新建文件design.dat中说明:若a、b、c是1个解,则a、c、b也是1个解,等等。

#include

void main()

{ FILE *p; int x,y,z,k=0;

  //* 考生在这里添加代码

   p=fopen("design.dat

for(x=-45;x<=45;x++)

for(y=-45;y<=45;y++)

for(z=-45;z<=45;z++)

          if(x*x+y*y+z*z==2000)

             k++;

     fprintf(p,"%d ",k);

     fclose(p);

}

试题二

设计程序: a、b、c为区间[1,100]的整数,统计使等式 c/(a*a+b*b)=1成立的所有解的个数,并将统计数以格式"%d"写入到考生目录中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("design.dat

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,"%d",n);

      fclose(p);

}

试题三

程序设计题:函数root返回满足条件f(a)*f(b)<0的方程在[a,b]区间内的 1个实根,用区间对分法求解,限差为0.00001。将方程 x*x-5sin(x)-4=0的根以格式"%9.6f"写入到考生目录下新建的文件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\”,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      if(i%j==0) break;

if(j>=i/2)

      {cnt++;

       sum=sum+i;

       }

     }

}

void main()

{

    FILE *p;

    p=fopen("design.dat

    JSValue();

    fprintf(p,"%d,%d",cnt,sum);

    fclose(p);

}

试题二

程序设计题:考生目录下有Design.c程序,请完成以下功能:在1000至1100内找出所有的素数,并顺序将每个素数用语句“fprintf(p, “%5d”, i)” 写入到考生目录下新建的文件design.dat。说明:素数是自然数中除了1以外只能被1和其自身整除的数。

#include

#include

void main ( )

{  FILE *p; int i, j;

   // 此处起要求考生自己编制程序

int prime (int n);

if((p=fopen(“%design.dat”, “w”))==NULL)

{ printf(“can not open in FILE”); exit (0); }

for(j=1000; j<=1100; j++)

       if(prime(j)==1)

         fprintf(p, “%5d”, j);

     fclose (p);

  }

   int prime (int n)

   {  int t;

for(t=2; tif(n%T\==0)  return 0;

return 1;

}

十三、其他算法

1、程序调试题

试题一

该程序功能:将一个char型数的高4位和低4位分离,分别输出,如22(二进制:00010110)输出为1和6。

#include

void main()

{

    char a,b1,b2,c;

    scanf("%d",&a);

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

b1=a<<4; /*b1存放高4位*/  << --- >>

c=~(~0<<4);

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

    b2=a|c;          /*b2存放低4位*/  |---&

    printf("%d,%d",b1,b2);

}

试题二

在考生目录下,有Modify.c程序,该程序中“/******N******/”的下一行中有错误,请改正(注意:不得加行、减行、加句、减句,否则后果自负)。

程序功能:输入n(01

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("%d%d%d",&a,&b,&c);

if(a>b)

        swap(&a,&b);

if(b>c)

        swap(&b,&c);

    if(______2______)                 //a>b

        swap(&a,&b);

    printf("%d,%d,%d",a,b,c);

}

试题二

该程序功能:该程序计算四位学生的平均成绩,保存在结构中,然后列表输出这些学生的信息。

#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]={{"Jessica",98,95,90},{"Mike",80,80,90},

                          {"Linda",87,76,70},{"Peter",90,100,99}};

for(i=0;i<4;i++)

    {

        GetAverage(______2______);    //&st[i]

    }

    printf("Name\Math\English\Compu\Average\\n");

for(i=0;i<4;i++)

    {

        printf("%s\%d\%d\%d\%d\\n",st[i].name,st[i].math,st[i].english,

                                    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’);  }

}

试题四

输入一个小写字母,将字母循环后移5个位置后输出。(例如:’a’变成‘f’,’w’变成’b’)

#include

void main()

{

    char c;

    c=getchar();

    if(______1______)                 //c>='a'&&c<'v'

        c=c+5;

    else

if (c>='v' && c<='z')

            ______2______           //c=(c+5)-'z'+'a'-1;或c=(c+5)%'z'+'a'-1;

    putchar(c);

}

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("design.dat

    fprintf(p,"%d,%d",Year(20),Year(30));

    fclose(p);

}

试题二

设计程序:在正整数中找出1个最小的、被3、5、7、9除余数分别为1、3、5、7的数,将该数以格式"%d"写到考生目录中Paper子目录下的新建文件design.dat中。

#include

#include

void main()

{

  

   * 考生在这里添加代码

   FILE *p;

 int  m=17;

 p=fopen("design.dat

 for(;;m++)

 if(m%3==1&&m%5==3&&m%7==5&&m%9==7)break;

 fprintf(p,"%d",m);

 fclose(p);

 

}

试题三

设计程序:计算27的小于1.00001的2n次方根(27的2(n-1)次方根不小于1.00001), 将n以格式"%d"写到考生目录中Paper子目录下的新建文件design.dat中。      */

#include

#include

void main()

{ FILE *p; float x=27; int n=0;

 //考生在这里添加代码

 n++;

 p=fopen("design.txt

while(!(pow(x,1.0/(2*n))<1.00001&&pow(x,1.0/(2*n-1))>=1.00001))n++;

 fprintf(p,"%d",n);

 fclose(p);

 }

试题三

设计程序:将满足条件pow(1.05,n)<1e6#include

#include

void main()

{ float y=1.05; int n=1;  FILE *p;

 //考生在这里添加代码

  p=fopen("design.dat

  while(!(pow(1.05,n)<1e6&& pow(1.05,n+1)>1e6))

    n++;

  fprintf(p,"%d,%.0f",n,pow(1.05,n));

  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("%d\\n",m);

}

试题五

已知公鸡每只5元,母鸡每只3元,小鸡每3只1元,求出用100元买100只鸡的解。将得到的解按公鸡、母鸡、小鸡的只数发“%d,%d,%d\\n”的格式写入考生文件夹中的paper子文件夹下的新建文件designed.dat中。

#include

void main()

{ FILE *p;

  int cock,hen,chick;

 //考生在这里添加代码

   p=fopen("desinged.dat

for(cock=0;cock<=100/5;cock++)

for(hen=0;hen<= 100/3;hen++)

for(chick=0;chick<=100;chick++)

         if((5*cock+3*hen+chick/3==100)&&(cock+hen+chick==100)&&(chick%3==0))

           fprintf(p,"%d,%d,%d\\n",cock,hen,chick);

   fclose(p);

}

或者:

p=fopen("d:\\\\desinged.txt

for(cock=0;cock<=100/5;cock++)

for(hen=0;hen<= 100/3;hen++)

          if((5*cock+3*hen+(100-cock-hen)/3==100)&&((100-cock-hen)%3==0))

           fprintf(p,"%d,%d,%d\\n",cock,hen,100-cock-hen);

   fclose(p);下载本文

显示全文
专题