上海市计算机等级考试(二级C)真题一套

程序设计及计算机基础学习空间2020-02-15 06:55:56

===Tips:点击上方 蓝字 查看历史消息===


一、单选题(共15分,每小题1.5分)


1、下述标识符中,合法的C语言用户自定义标识符是(        )。 

A.return   

Bx#y

C23ab

D_sum


2、设x为char型变量,且初值为 'f',则执行printf("%c\n", 'A'+(x-'a'-2))后的输出结果是(      )。  

A.A    

Ba

CF     

DD


3、能正确表示逻辑关系:“a≥10或a≤0”的 C语言表达式是(     )。

A.a >= 10 or a <= 0   

Ba >= 0 | a <= 10

Ca >= 10 && a <= 0   

Da >= 10 || a <= 0   


4、执行以下代码段后,a的值为(      )。

int a=3,b=2,c=1;

if(a>b) a=b;

if(a>c) a=c;

A.1     

B2

C3     

D不确定   


5、设有定义:int i, a[10]; 能正确输入a数组各元素的语句是(     )。

A.for(i=0; i<=9; i++)  scanf("%d", a+i);

Bfor(i=0; i<10; i++)  scanf("%d", a[i]);

Cfor(i=0; i<10; i++)  scanf("%d", &a);

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


6、若有定义:int a[2][3]; 以下选项中对  a 数组元素正确引用的是(     )。

A.a[2][0]

Ba[2][3]

Ca[0][3]

Da[1>2][1]


7、"设有下列变量说明与函数说明,则合法的函数调用语句是(      )。

int func( int a[], int n ); int a[10], n, x;"  

A.x = func( a, n );   

Bfunc( a, n ) = x;   

Cx = func( a[], n ); 

Dx = func( a[10], n );   


8、"设有变量定义:

    char  st[]="computer";

    char *s=st;

    int i;

与st[i]等价的表达式是(      )。" 

A.st+i     

B.s+i     

Cs[i]

D*st+i     


9、根据下面的定义,

struct person

  char name[10];

  int age; 

} c[10] ={ "John", 17, "Paul", 19, "Mary", 18, "Adam", 16 };

能打印出字母 M 的语句是(   )。

A. printf("%c", c[3].name);

B. printf("%c", c[3].name[1]); 

C. printf("%c", c[2].name[0]); 

D. printf("%c", c[2].name[1]); 


10、设有定义FILE *fp;下列将整数n以文本方式写到fp指向的文件的语句是(       )。

Afp = fopen( "file.txt", "w" );  

Bfprintf( fp, "%d", n ); 

Cfwrite( &n, sizeof(int), 1, fp );   

Dfclose(fp); 


二、程序填空题20每空2.5


1.以下程序的功能是:输入任意整数n0<n<10),输出n行由大写字母A开始构成的三角形字符阵列图形,例如,输入整数6时,程序运行结果如下:

请填空完成该程序。

#include <stdio.h>

int main()

{

int i,j,n;

char     (1)   

printf("Please input n:");

scanf("%d",&n);

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

{

for(j=1;     (2)    ;j++)  

{  printf("%2c",ch);

      (3)    ;

}

    (4)     ;

}

}


2.以下程序的功能是:从一个字符串中截取前面给定长度的子字符串。其中,str1指向原字符串,截取后的字符存放在str2所指的字符数组中,n中存放需截取的字符个数。例如,str1="ABCDEF"n=4,截取后的字符数组str2="ABCD"。请填空完成该程序。

#include <stdio.h>

#include <conio.h>

#define LEN 80

int main()

{

  char str1[LEN],str2[LEN];

  int n,i;

 printf("输入字符串:\n");

 gets(str1);

 printf("输入子字符串的长度:");

     scanf( "%d",    (1)    );

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

          (2)    ;

 str2[i]=      (3)    ;

 printf("子字符串是:%s\n",    (4)    );

 return 0;

}


三、程序调试题(共30分,每处错3分


1. 功能说明:程序的功能是输入一个正整数,判断该数从高位到低位各位数字是否按值从小到大排列并输出相应提示。例如,输入12234,则输出各位数字是从小到大排列。又如,输入12354,则输出各位数字不是从小到大排列。程序中有3行错。


带错误原程序:


#include <stdio.h>

int main()

{     int n,k,a;

      printf("请输入一个正整数: ");

       scanf("%d", n);

       k=1;

      do {

             a=n%10;

             n=n/10;

            if ( n%10 <= a ) k=0;

       }while ( n!=0 );

    if ( k = 1 )

       printf("各位数字是从小到大排列\n");

   else

        printf("各位数字不是从小到大排列\n");

   return 0;

}


2. 功能说明:输入一个以回车符结束的字符串(少于30个字符),若其中的第偶数个字符是小写英文字母,则转换成对应的大写英文字母,最后输出处理后的字符串。例如输入:jdk-7u25-win7<回车>,则输出:jDk-7U25-WiN7 。程序中有3行错。


带错误原程序:


#include <stdio.h>

#include <string.h>

int main()

{     char str[30];

       int i, n;

      printf("请输入一个字符串:");

       gets(&str);

       n = strlen(str);

       for (i=0; i<n; i+=2)

         if ( str[i]>='a' && str[i]<='z' )

             str[i] = str[i] + ('a' - 'A');

       puts(str);

      return 0;

}


3.功能说明:以下程序的数组t中存放了某城市7月15日到8月15日共32天每一天的日最高气温,程序的功能是统计并输出最高温度达到40℃或以上的超高温天的天数,以及最高温度在35℃或以上的连续高温天最多有多少天。针对程序中给出的原始数据,程序应输出:

最高温度达到40℃或以上的超高温天有6天;

最高温度在35℃或以上的连续高温天最多有12天。程序中有4行错。


带错误原程序:


#include <stdio.h>

int fun(int a[], int n, int *p)

{   int i, c = d40 = d = 0;


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

    {   if ( a[i]>=35 )

        {   c++;

            if ( c>d ) d=c;

            if ( a[i]>=40 ) d40++;

        }

        else c=0;

    }

    p = d;

    return d40;

}


int main()

   int t[32]={40,36,34,35,36,37,36,37,38,40,39,

             38,37,36,34,36,37,38,36,34,36,

             37,38,39,40,40,41,40,39,38,37,36};

   int d40,d;

   d40=fun(t, 32, d);

  printf("最高温度达到40℃或以上的超高温天有%d天\n", d40);

  printf("最高温度在35℃或以上的连续高温天最多有%d天\n", d);

  return 0;

}


四、编程题35其中第1小题152小题20


1.程序功能:输入整数n(设1000≤n≤9999),将n按十进制位分解为各乘式的累加和,格式参见示例,不输出系数为0的乘式。


运行示例1:

输入:1234

输出:1234=1*1000+2*100+3*10+4*1


运行示例2:

输入:2030

输出:2030=2*1000+3*10


2程序功能按示例格式完成以下要求。

(1)输入10个整数,保存在数组中。

(2)计算并输出10个整数的最小值(注:数组中可能存在多个最小值)。(3)输出数组中每个最小值的下一个元素及其下标(如果数组的最后一个元素正好为最小值,不输出该元素的下一个元素)。

(4)计算并输出上述元素的平均值(保留小数点后一位小数,如果数组只有一个最小值且正好是最后一个元素,不输出平均值)


运行示例1

输入:9  0  2  0  0  1  0  3  6  1

输出:min=0,a[2]=2,a[4]=0,a[5]=1,a[7]=3,ave=1.5

说明10个元素的最小值为0,共出现4次,元素0的下一个元素依次为2、0、1、3,这4个元素的平均值为1.5。


运行示例2:

输入:60  39  81  90  60  39  90  70  78  39

输出:min=39,a[2]=81,a[6]=90,ave=85.5

说明10个元素的最小值为39,共出现3次,元素39的下一个元素依次为81、90(最后一个39不存在下一个元素),81与90的平均值为85.5。


运行示例3:

输入:9  0  2  0  0  1  0  3  6  -1

输出:min=-1

说明:最小值为-1,是最后一个元素且只出现一次,不存在下一个元素,也没有平均值。




回复关键词“参考答案01”,获取参考解答。


Copyright © 北京英语四六级培训联盟@2017