分段线性插值c语言程序_2015年真题上海市计算机等级二级C语言

       各位报名2019年上海市高校计算机等级考试二级C语言程序设计的同学,10月26日就要考试了,你准备好了吗?

       虽然好多同学很认真准备了,但是没见过考试题型到底长啥样,又没有往年的真题可以参考下,心里还是没底。前几天发了去年的一套真题,今天在这里,再给大家一套2015年的考试真题练练手。同样没有答案,不会的自己好好思考一下,翻书查资料再巩固下自己的知识。加油!祝大家考试顺利!

2015上海市高等学校计算机等级考试试卷

二级 C语言程序设计 ( C  场)

(本试卷考试时间  120  分钟)

一、单选题 ( 本大题 10 道小题 ,每小题 1.5 分,共15 分),从下面题目给出的A、B、C、D四个可供选择的答案中选择一个正确答案。

1.下面标识符中,可以作为合法变量名的是(    )。

A.m@q

B.Mo_day

C.mn/5

D.char

2.设有如下语句:

   int s,num;

   s=1005;num=2;

则表达式(float)s/num的值是()。

A.502.000000

B.502

C.502.500000

D.503.000000

3.设有如下定义语句:

    chara[10]="ABC";

则printf("%s" , a+1);的输出结果为(    )。

A.ABC

B.C

C.AB

D.BC

4.下列语句的输出结果是(   )。

   inta=0123,b=0456;

  printf("%o\n",b-a);

A.0456

B.0123

C.333

D.579

5.以下的for语句循环执行的次数是()。 

for(x=0,y=0;(y!=20&&(x<20));x++);

A.无限次

B.不确定

C.20次

D.19次

6.关于局部变量,下列说法正确的是(  )。

A.定义该变量的程序文件中的函数都可以访问

B.定义处以下的任何语句都可以访问

C.形式参数也是一种局部变量,可用于函数之间传递数据

D.定义在复合语句中的局部变量,允许在该复合语句外访问

7.有如下语句:

   chars[20]="welcome";

   char*ps=s;

则不能引用字母c的表达式是(  )。

A.ps+3

B.s[3]

C.ps[3]

D.ps+=3,*ps

8.设有如下语句:

int x,*p=&x;

则*&x相当于(  )。

A.x

B.p

C.&x

D.&*p

9.若在fopen函数中使用文件的方式是"ab",该方式的含义是(   )。

A.为读/写打开一个文件

B.向二进制文件尾增加数据

C.为输出打开一个文本文件

D.为读/写建立一个新的二进制文件

10.建立了如下图所示的链表结构,p,q为指向结点的指针。p指向当前数据为M的结点,以下(    )语句段能够输出p所指结点的直接后继结点的数据项。

A.printf("%c",p->next);

B.printf("%c",p->data);

C.q=p->next; printf("%c",q);

D.p = p->next;

printf("%c",p->data);

二、程序填空题 ( 本大题 2 道小题 ,每空 2.5 分,共20 分)。

1.程序功能:从键盘输入一个整数,查找是否在数组中有相同的数值,如果有,则输出该值在数组中的位置,如果没有,则输出“not find”,结果请输出到文件out2.txt中。

#include

int main(void)

{

    inta[10]={12,-5,0,45,100,-89,33,260,-1,92},i,x;

    FILE *fp;

   fp=fopen("out2.txt",_____(1)_____);  

   printf("input  x:");

   scanf("%d",_____(2)_____);  

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

        if(x==a[i])

           _____(3)_____;     

   if(i<10)

       fprintf(fp,"the pos of x is:%d\n",i);

    else

       fprintf(fp,"no find \n");

   _____(4)_____;    /*  关闭文件  */     

    return 0;

}

2.程序功能:输入一个包含数字的字符串,把字符串中的数字字符转换成数字,存放到数组中并输出。例如:输入aBcD123e45XYZ682,输出结果为:12345682。 

#include

int fun(char s[],int arr[],int num)

{

    inti,n=0;

   for(i=0;i

    {

        if(_____(1)_____ )         

        {

           arr[n] = _____(2)_____; 

           n++;

        }

    }

    return n;

}

int main(void)

{

    charstr[80];

    int arr[80];

    intnum=0,n,i;

   printf("Enter a string:\n");

    gets(_____(3)_____ );     

   while(str[num]!='\0')

       num++;

    n = fun(_____(4)_____ );  

   for(i=0;i

       printf("%d",arr[i]);

    return 0;

}

三、操作题

(一)程序调试题(3小题,第1、2小题各3处错,第3小题4处错,每错误点3分,共30分)

1. 程序调试题1

调试要求:下列程序(C:\KS\C_2_1.c)包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将程序结果(包括C_2_1.c文件和C_2_1.EXE文件)保存到目录C:\KS\中。

功能说明:输入某用户某一个月的用电度数,计算并输出该月份他应缴的电费。电费实施阶梯电价分段计算方法,具体为:月用电量不超过100度(含100度,以下同),单价为0.6元/度;月用电量超过100度但不超过200度的,超过部分的单价为0.7元/度;月用电量在200度以上的部分,单价为0.9元/度。

运行示例:

输入:请输入月用电量: 280

输出:电费为: 202.00

说明:月用电量280度中100度单价为0.6元,100度单价为0.7元,80度单价为0.9元。

含错误源程序:

#include

int main(void)

{

   float quantity;money;

   printf("请输入月用电量: ");

   scanf("%f", &quantity);

   if (quantity<=100)       money=quantity*0.6;

   else if (quantity<=200)  money=100*0.6+(quantity-100) 0.7;

   else money=100*0.6+ (quantity-200)*0.9;

   printf("电费为: %.2f\n", money);

   return 0;

}

2. 程序调试题2

调试要求:下列程序(C:\KS\C_2_2.c)包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将程序结果(包括C_2_2.c文件和C_2_2.EXE文件)保存到目录C:\KS\中。

功能说明:自定义一个表示平面中点的结构体类型,在主函数中输入两个点的坐标,通过调用函数计算两个点的中点坐标,最后在主函数中输出计算的结果。

运行示例:

c37a9cb05a0e1969737aa295e08f1009.png

含错误源程序:

#include

struct

{  float x;

   float y;

};

struct point  mid( struct point a,struct point b)

{  struct point c;

   c.x=(a.x+b.x)/2;

   c.y=(a.y+b.y)/2;

   return c;

 }

int main(void)

{  struct point p1,p2,p0(0,0);

   printf("请输入第一个点坐标:");

  scanf("%f,%f",&p1.x,&p1.y);

   printf("请输入第二个点坐标:");

   scanf("%f,%f",&p2.x,&p2.y);

   p0=mid(p1,p2);

   printf("中点坐标为:(%6.1f,%6.1f)\n ", p0);

   return 0;

}

3. 程序调试题3

调试要求:下列程序(C:\KS\C_2_3.c)包含4个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。将程序结果(包括C_2_3.c文件和C_2_3.EXE文件)保存到目录C:\KS\中。

功能说明:输入两个由整型数构成的集合(元素个数均为5)分别放到数组A和B中,求这两个集合的并集(并集的元素由两个集合中的所有元素构成,但重复的元素只取一个),最后输出并集中的元素。

运行示例:

ffbb91a94d2755b89d5672eee630af5f.png

含错误源程序:

#include

int join(int s1[],int s2[],ints3[])

int main(void)

{

   int a[5],b[5],c[10];

   int i,n;

   printf ("请输入第一个集合内容,5个整型数\n");

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

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

   printf ("请输入第二个集合内容,5个整型数\n");

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

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

   n=join(a,b,c);

   printf ("A,B并集元素为:\n");

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

      printf("%4d", &c[i]);

   printf("\n");

   return 0;

}

int join(int s1[],int s2[],ints3[])

{  int i ,j ,k=5;

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

   {

     s3[i]=s1[i];

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

        if (s2[i]==s1[j])  return ;

     if(j>=5) s3[k++]=s2[i] ;

   }

   return k;

}

(二)编程题(2小题,共35,其中第1小题15分,第2小题20)

1.编程题1

编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将程序结果(包括C_4_1.c文件和C_4_1.EXE文件)保存到目录C:\KS\中。

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

(1)   输入10个整数(存入数组a),再输入整数x。

(2)   数组元素向左偏移x个位置后循环输出。

运行示例:

输入:22  55  66 99  44  33  77  11 0  88   3

输出:99 44 33 77 11 0 88 22 55 66

说明:输入x=3,先输出a[3]至a[9],再输出a[0]至a[2]

2.编程题2

编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将程序结果(包括C_4_2.c文件和C_4_2.EXE文件)保存到目录C:\KS\中。

程序功能:按示例格式完成以下要求(验证西西弗斯串数学黑洞:任意一个数字串,连续进行特定运算,经有限步骤后,都无法逃逸123这个黑洞)。

(1)   输入整数n,如果n为零、负数或超过9位数,输出"Error"并结束运行。

(2)   拆分整数n的各个位数,统计各位数中的偶数位数、奇数位数和总位数,按"偶数位数-奇数位数-总位数"顺序组成一个新的整数(仍存为n),输出生成的新数。

(3)   如果生成的新数等于123,则结束运行,否则重复步骤(2)与(3)。

运行示例1:

输入:1507

输出:[1507] {1}134 {2}123

说明:原始数字为1507,第1次生成的数为134,第2次生成的数为123。示例中{1}与{2}为生成的次数标记,[]、{}与间隔空格都必须保留。

运行示例2:

输入:0

输出:Error

说明:输入为0、负数或超过9位数,输出"Error"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值