2015计算机二级考试c语言考试都有什么题型

Python029

2015计算机二级考试c语言考试都有什么题型,第1张

2015年全国计算机二级C语言考试大纲

基本要求

1. 熟悉Visual C++6. 0集成开发环境。

2. 掌握结构化程序设计的方法,具有良好的程序设计风格。

3. 掌握程序设计中简单的数据结构和算法并能阅读简单的程序。

4. 在Visual C++6. 0集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。

考试内容

一、C语言程序的结构

1. 程序的构成,main函数和其他函数。

2. 头文件,数据说明,函数的开始和结束标志以及程序中的注释。

3. 源程序的书写格式。

4. C语言的风格。

二、数据类型及其运算

1. C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。

2. C运算符的种类、运算优先级和结合性。

3. 不同类型数据间的转换与运算。

4. C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。二级各科考试的公共基础知识大纲及样题见高等教育出版社出版的《全国计算机等级考试二级教程——公共基础知识》的附录部分。

三、基本语句

1. 表达式语句,空语句,复合语句。

2. 输入输出函数的调用,正确输入数据并正确设计输出格式。

四、选择结构程序设计

1. 用if 语句实现选择结构。

2. 用switch语句实现多分支选择结构。

3. 选择结构的嵌套。

五、循环结构程序设计

1. for循环结构。

2. while和do-while循环结构。

3. continue语句和break语句。

4. 循环的嵌套。

六、数组的定义和引用

1. 一维数组和二维数组的定义、初始化和数组元素的引用。

2. 字符串与字符数组。

七、函数

1. 库函数的正确调用。

2. 函数的定义方法。

3. 函数的类型和返回值。

4. 形式参数与实在参数,参数值的传递。

5. 函数的正确调用,嵌套调用,递归调用。

6. 局部变量和全局变量。

7. 变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。

八、编译预处理

1. 宏定义和调用(不带参数的宏,带参数的宏)。

2. “文件包含冶处理。

九、指针

1. 地址与指针变量的概念,地址运算符与间址运算符。

2. 一维、二维数组和字符串的地址以及指向变量、数组、字符串、函数、结构体的指针变量的定义。通过指针引用以上各类型数据。

3. 用指针作函数参数。

4. 返回地址值的函数。

5. 指针数组,指向指针的指针。

十、结构体(即“结构冶)与共同体(即“联合冶)

1. 用typedef 说明一个新类型。

2. 结构体和共用体类型数据的定义和成员的引用。

3. 通过结构体构成链表,单向链表的建立,结点数据的输出、删除与插入。

十一、位运算

1. 位运算符的含义和使用。

2. 简单的位运算。

十二、文件操作

只要求缓冲文件系统(即高级磁盘I/ O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。

1. 文件类型指针(FILE类型指针)。

2. 文件的打开与关闭(fopen,fclose)。

3. 文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf 函数的应用),文件的定位(rewind,fseek函数的应用)。

考试方式

上机考试,考试时长120分钟,满分100分。

题型及分值

单项选择题40分(含公共基础知识部分10分)、操作题60分(包括填空题、改错题及编程题)。

考试环境

Visual C++6. 0

//输入任意一年,输入该年份日历。

//你运行一下看一下结果 不是三个月一行 你自己改一下吧 加一下换行就好

#include<stdio.h>

#include<windows.h>

#include<stdlib.h>

int runnian(int year)//判断是不是闰年

int longmonth (int year,int mouth)//判断每个月份的天数

int year_fristday (int year)//判断每年的元旦的第一天是星期几

//int month_fristday(int year,int month)//判断每月的第一天是周几

int main()

{

    int year

    int j,month=1,i,c=0,day,weekday,d=0,a

system("color 3E")

    printf("please input year.\n")

Sleep(1000)

printf("例如,2015\n")

    scanf("%d",&year)

    printf("   \n\n\n                      %d年\n\n",year)

system("cls")

    weekday=year_fristday(year)

d=weekday

//  printf("%d",weekday)(检测元函数是否正确)

    for(i=1i<13i++)

    {

   printf("                        %d月份\n",i)

   printf("    ---------------------------------------------\n")

   printf("    SUN    MON    TUE    WED    THU    FRI    SAT\n")

       printf("    ---------------------------------------------\n")

//    printf("%d",day)

    if(month==1)

    for(j=0j<weekdayj++)

    printf("       ")

   else

   {

d=(d+day)%7

//   d=d+weekday

if(d<7)

    for(j=0j<dj++)

printf("       ")

else

{

d=d-7

for(j=0j<dj++)

    printf("       ")

}

}

a=d+1

    day=longmonth(year,month)

   for(c=1c<(day+1)c++,a++)

   {

   printf("     %2d",c)

   if(a%7==0)

   printf("\n")

   }

   printf("\n\n")

   month++

//    Sleep(1000)

   }

getchar()

getchar()

return 0

}

int longmonth (int year,int month)

{

int month_day,a

a=runnian(year)

if(a==1)

{

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

        month_day=31

if(month==2||month==4||month==6||month==9||month==11)

month_day=30

if(month==2)

        month_day=29

}

    else

{

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

        month_day=31

if(month==2||month==4||month==6||month==9||month==11)

month_day=30

if(month==2)

        month_day=28

}

return month_day

}

int year_fristday (int year)

{

int n,b

n=year-1900

    n=n/4+n+1

    b=n%7

return b

}

int runnian(int year)

{

int n

if(year%100==0)

    {

if(year%400==0)

n=1

else

    n=0

}

else

{

if(year%4==0)

n=1

    else

        n=0

}

return n

}

//@author zjb

一、判断题(每小题1分,共15分)

1.标准C中,只有数值型数据才能进行4则混合运算。

2.标准C中,_a是合法的自定义标识符。

3.有定义:float f表达式f+=(int)3.6%2”不符合C语言语法。

4.标准C中,逻辑运算的结果只有是1表示满足条件,而结果是0表示不满足条件。

6.以下运算符排列顺序满足按照优先级从高到低的排列:‘&&’、‘!’、‘==’、‘-’。

7.语句for()是非法的。

8.在C语言程序中可以由多个源文件构成,每个源文件都可以有自己的main()函数。

9.while和do-while的主要区别是后者至少无条件执行一次。

10.数组名代表数组的首地址是常量,所以将实参数组名表示地址传给形参数组名是错误的。

11.当函数没有返回值类型时,表示函数类型为void。

12.C语言中,指针变量作函数参数时,它们不是采取单向值传递的方式。

13.一个函数中只允许有一条return语句。

14.在C语言中,如果没有说明变量的存储类型是auto类型的。

15.由于指针中所存放的地址都是整数,所以整型指针和浮点型指针可以相互赋值。

二、填空题(每空1分,共15分)

1. 若a=4b=5,c=6则表达式c==(b=-a)中c的值是 (1) 。

2. 计算表达式的值:

4&&-4的值: (2) ;

设int a=3,b=4,c=5,则表达式a||b+c&&b==c的值: (3) ;

设x=2.5, a=7, y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值: (4) ;

设a=12,则表达式a*=a/5的值: (5) ;

3. 若int x = 4,y = 6,z = 0;有循环while(x = y) {z ++;y--;}

则循环语句执行完后,z值为 (6) 。

4. 变量的指针就是指该变量的 (7) 。

5. 若有定义int (*p)[4],则标识符p是 (8) ;若有定义int *p[4],则标识符p是 (9) ;

6. 已有定义:char *p[ ]={“France”,“Chinese”,“Russia”,“America”};则语句printf(“%s”,p[2]);printf(“%c”,*(p[1]+2));printf(“%c”,*(*(p+1)+1));

的输出结果分别为: (10) 、 (11) 、 (12) 。

7. 已有定义: int x=65若格式化输出结果为“A, 65”,则对应的格式化输出语句为printf(“ (13) , (14) ”, x, x)。

8. 已定义:int a[][2]={1, 2, 3, 4, 2, 6, 7, 2};则a[3][0]= (15) 。

三、简答题(每题4分,共12分)

1、简述选择语句if和else语句对与switch语句的区别。

2、简述在循环语句中,break和continue的区别。

3、若int a[5],*p=a;简述*p++和(*p)++的区别。

四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4分,共16分)

五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)

六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)

七、编程题(8分)

编译程序,其功能是比较字符串的大小( 不允许 用系统提供的字符串比较函数strcmp)。要求是:

(1) 通过主函数调用一个函数strcompare来实现。

(2) 要求函数strcompare实现两个字符的比较:如第一个字符小于第二个字符则返回一个负值;如两个字符相等则返回0值;如第一个字符大于第二个字符则返回一个正值。

(3) 并输出两个字符串中相同部分的子串。

《C语言程序设计基础》试卷参考答案

一、判断题(每小题1分,共15分)

1~5 ; 6~10 ; 11~15

二、填空题(每空1分,共15分)

(1) 6 (2) 1 (3) 1 (4) 2.5 (5) 24 (6) 6

(7)地址 (8) 行指针,指向有四个元素的一维数组

(9)指针数组名,该数组有四个元素,每个元素都是指针

(10)Russia (11)i (12)h (13) %c (14) %d (15)7

三、简答题(每题4分,共12分)

1、if总是判断其后面的表达式的值是否为非零值,如是非零值则执行其后面的语句或由{}括起来的复合语句,否则执行else后面的语句。而switch语句则根据其后面表达式的可数值来判断,执行switch语句体内与其中的一个case:常量值相等语句后面的语句。执行break语句后,跳出switch语句体。

2、break是终止整个循环过程;continue是终止本次循环。

3、*p++首先取a[0]的值,然后p指向a[1];(*p)++使得a[0]的值自增1,但p保持不变。

四、下列各程序中每个程序各有2个错误,指出错误语句,写出对应正确语句(每小题4 分,共16分)

1、 (1)缺#include ; (2)scanf(“%f”,a)改为 scanf(“%f”,&a)

2、 (1)缺sum=0(2)for(i=1i<=3i++) 改为for(i=0i<3i++)

3、 (1)p1=p2 改为 *p1=*p2 (2)swap(&a, *p) 改为swap(&a, p)

4、 (1)在if(m<0)语句后添加else if(m==0) a=1(2) 添加 return(a)

五、程序填空题:下列程序中缺少若干条语句,在对应的下划线上填上合适的语句,每一个下划线只填一条语句(每小题6分,共24分)

1、 (1)x=0(2)if(n==x) (3)s++或s=s+1

2、 (4)&num[i] (5)max<num[i]? (6)num[i]!=0

3、 (7)n-i-1 (8)a[j]>a[j+1] (9)a[j+1]=temp

4、 (10)count=0(11)n%10 (12)n>0或n!=0或n

六、阅读下列程序,写出运行结果(第一小题4分,第二小题6分,共10分)

1、 #*#*#*

2、 main i=1 j=2 k=2

sub i=1 j=2 k=1 x=2

sub i=1 j=2 k=1 x=3

七、编程题(8分)

#include

main()

{

int i,j, flag=0

char str1[90],str2[90]

gets(str1)

gets(str2)

i=0

do{

flag=strcompare(str1[i],str2[i])

i++

}while(str1[i]!=’’ &&str2[i]!=’’ &&flag=0)

if(flag<0)printf(“%s小于%s ”,str1,str2)

else if(flag==0) printf(“%s 等于%s ”,str1,str2)

else printf(“%s大于%s ”,str1,str2)

printf(“两个字符串中相同的字串为:”)

j=0

i--后3句可用str1[i]=’’printf(“%s”,str1)代替//用str2也可以。

while(j<i){printf(“%c”,str1[i])j++} span=""></i){printf(“%c”,str1[i])j++}>

}

int strcompare(char c1,char c2)

{

int v

v=c1-c2

return v

}