辽宁石油化工大学往年C语言程序设计专升本

本试卷为辽宁石油化工大学往年C语言程序设计专升本,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计专升本

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

(  C  )
1、设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d)y=0; else y=1; 该语句所表示的含义是________。
A、y=0,a
y=1,a≥b
B、y=0,a
y=1,a≥b且c≠d
C、y=0,a
y=1,a<B且C≠D
D、y=0,a
y=1,c≠d
(  D  )
2、若有如下定义语句: int a[10]= { 1,2,3,4,5,6,7,8,9,10 } ; 则对数组正确的引用是________。
A、a[10]
B、a[a[3]5]
C、a[a[9]]
D、a[a[4]+4]
(  D  )
3、有以下程序
struct stu
{
int num;
float totalscore;
};
void f(struct stu p)
{
struct stu s[2]= {{20044,550}, {20045,537}};
p.num = s[1].num;
p.totalscore = s[1].totalscore;
}
main()
{
struct stu s[2]= {{20041,703} ,{20042,580}};
f(s[0]);
printf("%d %3.0f\n", s[0].num, s[0].totalscore);
}
程序运行后的输出结果是________。
A、20045 537
B、20044 550
C、20042 580
D、20041 703
(  A  )
4、有定义语句:int x, y; 若要通过scanf("%d,%d",&x,&y); 语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是________。
A、11 12<回车>
B、11, 12<回车>
C、11,12<回车>
D、11,<回车>
12<回车>
(  B  )
5、有以下程序
struct s
{
int x,y;
}
data[2]={ 10,100,20,200 };
main()
{
struct s *p=data;
printf("%d\n",++(p->x));
}
程序运行后的输出结果是________。
A、10
B、11
C、20
D、21
(  C  )
6、已知int a[3][4]; 则对数组元素引用正确的是____
A、a[2][4]
B、a[1,3]
C、a[2][0]
D、a(2)(1)
(  A  )
7、对于 c 语言的函数,下列叙述中正确的是 ______ __.
A、函数的定义不能嵌套,但函数调用可以嵌套
B、函数的定义可以嵌套,但函数调用不能嵌套
C、函数的定义和调用都不能嵌套
D、函数的定义和调用都可以嵌套
(  B  )
8、设有以下语句char ch1,ch2, scanf("%c%c",&ch1,&ch2);
若要为变量ch1和ch2分别输入字符a和b,正确的输入形式应该是________。
A、A和B之间用逗号间隔
B、A和B之间不能有任何间隔符
C、A和B之间可以用回车间隔
D、A和B之间用空格间隔
(  A  )
9、C源程序中的命令 #include与#define是在______阶段被处理的。
A、预处理
B、编译
C、连接
D、执行
(  B  )
10、有下列程序:
#include<stdio.h>
main()
{
int a=6,b=7,m=1;
switch(a%2)
{
case 0:m++;
break;
case 1:m++;
switch(b%2)
{
defaut:m++;
case0:m++;
break;
}
}
printf("%d\n",m);
}
程序运行后的输出结果是________。
A、1
B、2
C、3
D、4
(  B  )
11、设i是int型变量,f是float型变量,用下面的语句给这2个变量输入值。为了将,100和765.12分别赋给i和f,则正确的输入为______。 scanf("i=%d,f=%f",&i,&f);
A、100<空格>765.12<回车>
B、i=100,f=765.12<回车>
C、100<回车>765.12<回车>
D、x=100<回车>y=765.12<回车>
(  A  )
12、以下不正确的定义语句是________。
A、unsigned int a= -100u;
B、long b=0L;
C、short c2=0123;
D、int d=0x0;
(  D  )
13、若有定义:int x,y;
char a,b,c;
并有以下输入数据(此处\u代表空格):1\u2\ua\ub\uc,那么能给x赋整数1,给y赋整数2,给a赋字符a,给b赋字符b,给c赋字符c的正确程序段是________。
A、scanf("x=%d y=%d",&x,&y);a=getchar();b=getchar();c=getchar();
B、scanf("%d %d",&x,&y);a=getchar();b=getchar();c=getchar();
C、scanf("%d%d%c%c%c,&x,&y,&a,&b,&c);
D、scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);
(  D  )
14、下面程序的输出结果是_______。
m1(int x)
{
int y;
y=x+x;
return(y);
}
m2(int a ,int b)
{
int z;
z=m1(a*b);
return(z);
}
main( )
{
int a=3,b=6,c;
c=m2(a ,b);
printf("%d",c);
}
A、26
B、18
C、9
D、36
(  A  )
15、有以下程序:
main()
{
int k=5;
while(--k)printf(”%d”,k-=3);
printf(”n”);
}
执行后的输出结果是________。
A、1
B、2
C、4
D、死循环
(  D  )
16、"现有程序:main()
{
int *ptr,*p[5],i;
if((ptr=malloc(100*sizeof(int)))!=null)
{
p[0]=ptr;
for(i=1;i<5;i++) p[i]=p[i-1]+7;
for(i=0;i<100;i++) *ptr++=i;
for(i=0;i<5;i++) printf(""%3d"",*p[i]);
}
}
其输出结果是________。"
A、1 7 14 27 28
B、0 7 14 22 28
C、0 7 13 22 28
D、0 7 14 21 28
(  D  )
17、宏定义是最常用的预处理功能之一,它用于将一个标识符定义为一个______
A、单精度数
B、双精度数
C、常量
D、字符串
(  B  )
18、若有下列定义,则对a数组元素地址的正确引用是________。 int a[5],*p=a;
A、&a[5]
B、p+2
C、a++
D、&a
(  B  )
19、下列关于函数之间数据传递的叙述正确的是________。
A、当函数实参是指针类型时,被称为传值调用
B、利用函数的返回值传递数据时只能传递一个数据
C、参数的传址调用是一种双向数据传递方式
D、参数的传值调用方式中,形参与实参具有相同的存储空间
(  D  )
20、static char str[10]="China";数组元素个数为()。
A、5
B、6
C、9
D、10

二、判断题 (共10题,每题2分,共计20分)

(   F  )
1、c程序的执行是从程序文件的第一个函数开始,到最后一个函数结束。( ) 
(   T  )
2、字符数组定义后,不能用赋值语句将一字符串常量或字符数组直接赋给一个字符数组。 
(   T  )
3、在c程序运行过程中,其值不能被改变的量称为常量,其值可以改变的量称为变量。 
(   T  )
4、宏定义是用宏名来表示一个字符串,在宏代换时以该字符串取代宏名。 
(   T  )
5、c语言程序可以有多个文件。 
(   F  )
6、while循环语句的循环体至少执行一次. 
(   T  )
7、在c 中,浮点型数据在内存中一般占4 个字节。( ) 
(   T  )
8、设有变量定义char s[]= "hello ", 则数组中有6 个元素。() 
(   F  )
9、在标准c语言中,函数的定义和调用一样都是不可以嵌套的。 
(   T  )
10、在c语言中,当一个逻辑表达式的值为"假"时,该表达式的值一定是 0 ( ) 

三、填空题 (共5题,每题4分,共计20分)

1、在c语言中,二维数组元素在内存的存放顺序是________.
2、在c语言中,以________开头的常量代表的是十六进制数。
3、开发一个c程序要经过编辑、编译、()和运行4个步骤、
4、字符读写函数( )是用于把一个字符写入磁盘文件。
5、以下程序的输出结果是 ________ 。
#include <stdio.h>
main()
{
int k=1,s=0;
do
{
if((k%2)!=0) continue;
s+=k;
k++;
}
while(k>10);
printf("s=%d\n",s);
}

四、程序分析题 (共4题,每题5分,共计20分)

1、有以下程序
#include <stdio.h>
main()
{
char a[20]="how are you?",b[20];
scanf("%s",b);
printf("%s %s\n",a,b);
}
程序运行时从键盘输入: how are you?<回车> 则输出结果为 ________。
2、表达式7+10>2 && 25 %5的结果是 ________ 。
3、执行以下程序后,输出'#'号的个数是 ________ 。
#include <stdio.h>
main()
{
int i,j;
for(i=1; i<5; i++)
for(j=2; j<=i; j++) putchar('#');
}
4、#include <stdio.h>
void main()
{
int num[10]={1,0,0,0,0,0,0,0,0,0};
int i,j;
for (j=0;j<10;++j)
for (i=0;i<j;++i) num[j]=num[j]+num[i];
for (j=0;j<10;j++) printf("%d ",num[j]);
}

五、编程题 (共3题,每题0分,共计50分)

1、编写程序:计算字符串中子串出现的次数 。请输入两个字符串,以回车隔开,母先串在前,子串在后,比如:
abca
a
2
2、给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。
输入格式:
输入第一行给出正整数n(<10),随后给出n本书的信息。每本书在一行中给出书名,即长度不超过30的字符串,随后一行中给出正实数价格。题目保证没有同样价格的书。
输出格式:
在一行中按照“价格, 书名”的格式先后输出价格最高和最低的书。价格保留2位小数。
输入样例:
3
Programming in C
21.5
Programming in VB
18.5
Programming in Delphi
25.0
输出样例:
25.00, Programming in Delphi
18.50, Programming in VB
3、求3行3列矩阵a[3][3]={1,2,3,4,5,6,7,8,9}非对角线上元素之和。