北京石油化工学院C语言精选样卷

本试卷为北京石油化工学院C语言精选样卷,题目包括:单项选择题,填空题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,结构体,程序题。

C语言精选样卷

一、单项选择题 (共20题,每题2分,共计40分)

(  B  )
1、以下叙述中正确的是________。
A、预处理命令行必须位于c源程序的起始位置
B、在c语言中,预处理命令行都以“#”开头
C、每个c程序必须在开头包含预处理命令行:#include
D、C语言的预处理不能实现宏定义和条件编译的功能
(  D  )
2、三种基本结构中,能简化大量程序代码的是________。
A、顺序结构
B、分支结构
C、选择结构
D、重复结构
(  C  )
3、有以下程序段: int i,j,m=0;
for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4)m++;
printf("%d\n",m);
程序段的输出结果是________。
A、12
B、15
C、20
D、25
(  C  )
4、设有定义:"double x[10],*p=x; ",以下能给数组x下标为6的元素读人数据的正确语句是________。
A、scanf("%f",&x[6]);
B、scanf("%If",*(x+6));
C、scanf("%if",p+6);
D、scanf("%if",p[6]);
(  C  )
5、以下叙述中不正确的是________。
A、空字符串(即两个双引号连写)只占一个存储单元
B、字符型常量可以放在字符型变量中
C、字符型常量可以放在字符串变量中
D、字符型常量可以与整数混合运算,而字符串常量不可以
(  B  )
6、有以下程序
#include <stdlib.h>
struct node
{
int num;
struct node *next;
};
main( )
{
struct node *p,*q,*r;
int sum=0;
p=(struct node *)malloc(sizeof(struct node));
q=(struct node *)malloc(sizeof(struct node));
r=(struct node *)malloc(sizeof(struct node));
p->num=1;
q->num=2;
r->num=3;
p->next=q;
q->next=r;
r->next=null;
sum+=q->next->num;
sum+=p->num;
printf("%d\n",sum);
}
执行后的输出结果是________。
A、3
B、4
C、5
D、6
(  C  )
7、若有以下说明语句:
struct date
{
int year;
int month;
int day;
} brithday;
则下面的叙述不正确的是_____.
A、struct是声明结构体类型时用的关键字
B、struct date 是用户定义的结构体类型名
C、brithday是用户定义的结构体类型名
D、year,day 都是结构体成员名
(  B  )
8、对于while、do…while循环结构,正确的说法是________。
A、只是表达形式不同
B、do…while 结构中的语句至少执行一次
C、while 结构中的语句至少执行一次
D、条件成立时,它们有可能一次也不执行
(  A  )
9、假设有语句sizeof(double),则它是________。
A、一个整型表达式
B、一个双精度浮点型表达式
C、一种函数调用
D、一种函数定义
(  D  )
10、设有以下定义: int a[3][3]= { 1,2,3,4,5,6,7,8,9 }; int(*ptr)[3]=a; 则下列能正确表示数组元素a[1][2]的表达式是______。
A、*((*ptr+1)[2])
B、a[2][3]
C、(*ptr+1)+2
D、*(*(a+1)+2)
(  C  )
11、下列关于变量作用域的描述中,不正确的是________。
A、变量属性是用来描述变量作用域的
B、局部变量作用域只能是它所在方法的代码段
C、类变量能在类的方法中声明
D、类变量的作用域是整个类
(  B  )
12、设宏定义#define PI 3.1415926,用宏名PI替换的是________。
A、算术表达式
B、字符串
C、单精度实型数
D、双精度实型数
(  B  )
13、数值型数据包括( )两种。
A、整型和长整型
B、整型和浮点型
C、单精度型和双精度型
D、整型实型和货币型
(  D  )
14、设int f (int); 和int g(int); 是函数f和g的原形,以下将f作为语句调用的是______ 。
A、g(f(3))
B、f(g(3));
C、g(f(3)+2);
D、p=f(g (3)+1);
(  B  )
15、以下选项中与if(a==1)a++; else a=b; 语句功能不同的语句是________。
A、switch(a)
ease 0:a=b;break;
default:a++;
B、switch(a==1)
case 0:a++:
default:a=b;
C、switch(a)
default:a=b;break;
case 1:a++;
D、a=(a==1)(a++):b
(  D  )
16、设x,y均为int型变量,且x=10,y=3,则printf("%d,%d\n",x-,-y);
语句的输出结果是______。
A、10,3
B、9,3
C、9,2
D、10,2
(  B  )
17、有如下程序段int *p,a=5,b=1; p=&a; a=*p+b; 执行该程序段后,a的值为______。
A、5
B、6
C、7
D、编译出错
(  B  )
18、定义file *fp; 则文件指针fp 指向的是________。
A、文件在磁盘上的读写位置
B、文件在缓冲区上的读写位置
C、整个磁盘文件
D、文件类型结构体
(  D  )
19、下列运算符中是c语言关系运算符的是________。
A、~
B、!
C、&
D、!=
(  C  )
20、在以下定义中,标识符p________。 int (*p)[3];
A、定义不合法
B、是一个指针数组名,每个元素是一个指向整数变量的指针
C、是一个指针,它指向一个具有三个元素的一维数组
D、是一个指向整型变量的指针

二、填空题 (共10题,每题2分,共计20分)

1、程序的结果是:
#include<stdio.h>
void main()
{
int i,j,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<=3;j++)
{
if(j%2) continue;
x++;
}
x++;
}
printf("x=%d",x);
}
2、在c语言中,假使x为字符变量,如果我们采用printf("格式控制",x)格式输出x,那么"格式控制"具体表示为"( )"。
3、下列程序段的运行结果是________。
main()
{
int i=1,s=0;
for( ; ; )
{
s=s+i ;
i++;
if(i>4) break ;
}
printf("%d\n",s);
}
4、下列程序段的运行结果是_____。
#define sub(x , y) x-y
main( )
{
int a , b , s;
A=5, b=6;
S=sub(a,b);
printf("s=%d\n" , s);
}
5、写出下列程序的运行结果。
#include "stdio.h"
main()
{
int a[]={1,2,3,-4,5};
int m,n,*p;
p=&a[0];
m=*(p+1);
n=*(p+4);
printf("%d %d %d ",*p,m,n);
}
6、在c语言中,可以用/*…*/对c程序中的任何部分作______。
7、int a,b;与a*=5-b;等价的赋值语句是________。
8、定义一个指针p,它指向一个有6个整型元素的一维数组,定义语句为 ______。
9、有如下函数头: int max(int i,int j),则此函数有______个参数。
10、C语言中的每条基本语句以______作为结束符,每条复合语句以}作为结束符。

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:字符串排序。如下:
请输入3个字符串,每个字符串以回车结束!:
b
a
t
排序后的结果为:
a
b
t
2、说明一个枚举类型enummonth它的枚举元素为Jan、Feb、…、Dec。编写能显示上个月名称的函数last_month。例如,输入Jan时能显示Dec。再编写另一个函数printmon用于打印枚举变量的值枚举元素。最后编写主函数调用上述函数生成一张12个月份及其前一个月份的对照表,使用结构体实现
3、编写程序,求在10~1000之间所有能被4除余3,被7除余4,被9除余4的数之和。
相关标签:
  • C语言
  • 北京石油化工学院
  • 精选样卷