江苏省高校计算机等级考试命题研究院 江苏省高校计算机等级考试辅导
2012秋江苏省计算机二级C上机真题1

2012秋江苏省计算机高校计算机二级

 C语言上机试卷01

一、改错题

【程序功能】

  函数fun的功能是将str所指向的一行包含若干单词的文本(单词之间用空格隔开)依次拆分成长度不超过20个字符的若干文本行,单词不跨行,且使拆分出的行数最少,再将拆分出的每行字符以字符串的形式存储到page指向的二维数组的一行中,函数返回拆分出的行数

  【测试数据与运行结果】

  测试数据:A  great discovery  solves a  greate problem.

  屏幕输出:

          A great disconvery

          solves a great

          problem

【含有错误的源程序】

  以下源程序已保存在Tmyf1.c文件内,考生可直接打开该文件调试程序

#include <string.h>

#include <stdio.h>

#include <conio.h>

int fun(char str[],char pag[][])

{int i,k=0,j,flag=1;

 while(*str && flag)

 {if(strlen(str)<20)

   {pag[k]=str;

    flag=0;   

   }

   else

   {i=20;

    while(str[i]!=' ') i--;

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

        pag[k][j]=str[i];

    pag[k][i]='\0';

    strcpy(str,str+i+1);

   }

    k++;

  }

  return k;

}

 

 

int main()

{char str[80]={A great discovery solves a great problem.};

 char pag[40][21];

 int i,k;

 k=fun(str,pag);

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

  puts(pag[i]);

 getch();

 return 0;

}

【要求】

    1.打开T盘中myf1.c文件或将上述程序录入到myf1.c文件中,根据题目要求及程序中

语句之间的逻辑关系对程序中的错误进行修改。

    2.改错时,可以修改语句中的一部分内容,调整语句次序,增加少量的变量说明或编译预

处理命令,但不能增加其他语句,也不能删去整条语句。

    3.将改正后的源程序(文件名myf1.c)保存在T盘中供阅卷使用,否则不予评分。

二、编程题(24)

    【程序功能】

  寻找所有水仙花数(水仙花数是指一个三位数中各位数字的立方之和等于该三位数自身。例如,153=1 +5 +3 ,因此153是水仙花数),并生成每个水仙花数的反序数

  【编程要求】

  1.编写函数int sxh(int a[ ],int b[ ]),函数的功能是:将所有水仙花数保存到a指向的数组,将所有水仙花数的反序数保存到b指向的数组,函数返回水仙花数的个数

  2.编写main函数,函数的功能:声明数组ab,ab作实参调用sxh函数,ab数组中全部数据输出到屏幕myf2.out,最后将考生本人的准考证号字符串输出到文件myf2.out

  【测试数据与运行结果】

  屏幕输出:

     Three daffodil number: 153  370  371  407

     Three inverse number:351  73  173  704

【要求】

1.源程序文件名为myf2.c,输出结果文件名为myf2.out

2.数据文件的打开、使用、关闭均用C语言标准库中的文件操作函数实现。

3.源程序文件和运行结果文件均需保存在T盘中供阅卷使用。

4.不要复制扩展名为objexe的文件到T盘中。

 

 

改错题:

(1)   char  pag[][]   改为    char pag[][21]

(2)  pag[k]=str;      改为    strcpy(pag[k],str)

(3)  pag[k][j]=str[i]   修改为  pag[k][j]=str[j]

(4)  char str[80]={A great discovery solves a great problem.};   修改为

                             char str[80]={“A great discovery solves a great problem.”};

 

#include <stdio.h>

#include <conio.h>

 

int sxh(int a[],int b[])

{ int n1,n2,n3,count=0,i;

  for(i=100;i<=999;i++)

  {

       n1=i/100;

    n2=i/10%10;

       n3=i%10;

       if((n1*n1*n1+n2*n2*n2+n3*n3*n3)==i)

       {     a[count]=i;

           b[count++]=n3*100+n2*10+n1;

       }

  }

       return count;

}

 

int main()

{  int a[100],b[100],i,count=0;

   FILE *fp;

   fp=fopen("myf2.out","w");

   count=sxh(a,b);

   printf("Three daffodil number:");

   fprintf(fp,"Three daffodil number:");

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

   { printf("%5d",a[i]);

     fprintf(fp,"%5d",a[i]);

   }

   printf("\n");

   fprintf(fp,"\n");

   printf("Three inverse number:");

   fprintf(fp,"Three inverse number:");

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

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

    fprintf(fp,"%5d",b[i]);

   }

   printf("\n");

   fprintf(fp,"\n My exam number is:0112400123");

   fclose(fp);

   getch();

   return 0;

}