南京财经大学历年C语言专升本模拟考试

本试卷为南京财经大学历年C语言专升本模拟考试,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言专升本模拟考试

一、单项选择题 (共50题,每题2分,共计100分)

(  D  )
1、设有定义:int x=2; ,以下表达式中,值不为6的是________。
A、x*=x+1
B、x++,2*x
C、x*=(1+x)
D、2*x,x+=2
(  C  )
2、以下叙述中正确的是________。
A、C 程序的基本组成单位是语句
B、C 程序中的每一行只能写一条语句
C、简单C 语句必须以分号结束
D、C 语句必须在一行内写完
(  A  )
3、设int x=7,则~x的值是________。
A、-8
B、7
C、-1
D、1
(  C  )
4、若有定义"float a=25,b,*p=&b;",则下列对赋值语句"*p=a;"和"p=&a;"的正确解释为( )。
A、两个语句都是将变量a的值赋予变量P
B、*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
C、*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
D、两个语句都是使P指向变量a
(  A  )
5、若变量a、b、x、i都已正确定义并赋值,则以下符合c语言语法的表达式是________。
A、a+=a-=(b=4)*(a=3)
B、x%(-3);
C、a=a*3=2
D、v=float(i)
(  C  )
6、计算机内部运算使用的数是________。
A、十进制数
B、十六进制数
C、二进制数
D、八进制数
(  B  )
7、以下能正确定义且赋初值的语句是________。
A、int n1:=n2:=10;
B、char c=32;
C、float f=f+1.1;
D、double x=12.3E2.5;
(  D  )
8、在下列选项中,没有构成死循环的程序段是________。
A、int i=100;
while (1)
{
i=i%100+1;
if (i>100) break;
}
B、for( ; ; );
C、int k=1000;
do {++k;} while (k>=1000);
D、int s=36;
while (s) --s;
(  C  )
9、运行以下程序后,如果从键盘上输入china#<回车>, 则输出结果为
#include <stdio.h>
main( )
{
int v1=0,v2=0;
char ch;
while ((ch=getchar( ))!='#') switch(ch)
{
case 'a': case 'h': default: v1++;
case 'o': v2++;
}
printf("%d,%d\n",v1,v2);
}
A、2,0
B、5,0
C、5,5
D、2,5
(  A  )
10、有以下程序
struct stu
{
char name[10];
int num;
};
void f(char *name, int num)
{
struct stu s[2]={{"sundan",20044},{"penghua",20045}};
num = s[0].num;
strcpy(name, s[0].name);
}
main()
{
struct stu s[2]={{"yangsan",20041},{"lisiguo",20042}},*p;
p=&s[1];
f(p->name, p->num);
printf("%s %d\n", p->name, p->num);
}
程序运行后的输出结果是________。
A、SunDan 20042
B、SunDan 20044
C、LiSiGuo 20042
D、YangSan 20041
(  B  )
11、以下数组定义中错误的是________。
A、int x[][3]={0};
B、int x[2][3]={{l,2},{3,4},{5,6}};
C、int x[][3]={{l,2,3},{4,5,6}};
D、int x[2][3]={l,2,3,4,5,6};
(  D  )
12、设有定义:int n=0,*p=&n,**q=&p; 则以下选项中,正确的赋值语句是________。
A、p=1;
B、*q=2;
C、q=p;
D、*p=5;
(  D  )
13、有以下程序
main()
{
int x=3, y=2, z=1;
printf("%d\n",x/y&~z);
}
程序运行后的输出结果是________。
A、3
B、2
C、1
D、0
(  B  )
14、在一个应用程序中有如下定义:int a[]= {1,2,3,4,5,6,7,8,9,10 },为了打印输出数组a的最后一个元素,下面正确的代码是________。
A、printf("%d",a[10];)
B、printf("%d",a[9]);
C、printf("%d",a[a.length]);
D、printf("%d",a[8]);
(  D  )
15、设char str[100]; int i=5; 则引用数组元素的错误形式的是________。
A、str[I+10]
B、*(srr+
C、(str+I-1)
D、*(&(str++)+
(  B  )
16、定义如下一维数组:int a[5],*p; 则下列描述错误的是________。
A、表达式p=p+l是合法的
B、表达式a=a+l是合法的
C、表达式p-a是合法的
D、表达式a+2是合法的
(  C  )
17、若有定义:int a=4,b=5; float x=3.4,y=2.1; 则下列表达式的值为________。 (float)(a+b) /2+(int)x%(int)y
A、5.5
B、55
C、5.500000
D、55.00000
(  C  )
18、若变量c为char类型,则能正确判断出c为大写字母的表达式是________。
A、(c>= ’A’)||(c
B、’A’
C、(c>= ’A’)&&(c
D、(’A’=c)
(  A  )
19、若在以下定义和赋值语句,则才s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为 int s[2][3]=0,( *p)[3]; p=s;
A、*(*(p+i)+j)
B、*(p[i]+j)
C、(p+i)+j
D、(*(p+i))[j]
(  C  )
20、下列各项关于变量的描述中正确的是________。
A、变量名不是标识符
B、变量名的字符是不区分大小写的
C、变量名的定义必须符合标识符的定义规则
D、变量属性分为基本类型和复合类型
(  A  )
21、下列各循环语句中,不是死循环的是________。
A、int i=100;
while(i) {
i=i%100+1;
if(i==20)
break;
}
B、int i,sum=0;
for(i=1;;i++)
sum=sum+1;
C、int k=0;
do
++k;
while(k>=0);
D、int s=3379;
while(s++%2+3%2)
s++;
(  A  )
22、下列是用户自定义标识符的是________。
A、_w1
B、3_xy
C、int
D、LINE-3
(  B  )
23、以下叙述中正确的是________。
A、在函数中必须要有return语句
B、在函数中可以有多个return语句,但只执行其中的一个
C、return语句中必须要有一个表达式
D、函数值并不总是通过return语句传回调用处
(  C  )
24、计算斐波那契数列第n项的函数定义如下: int fib(int n)
{
if(n==0) return1;
else if(n==1)
return 2;
else
return fib(n-1)+fib(n-2);
}
若执行函数调用表达式fib(2),函数fib被调用的次数是________。
A、1
B、2
C、3
D、4
(  C  )
25、设有如下说明
typedef struct st
{
long a;
int b;
char c[2];
}
new;
则下面叙述中正确的是______。
A、以上的说明形式非法
B、ST 是一个结构体类型
C、NEW 是一个结构体类型
D、NEW 是一个结构体变量
(  A  )
26、设有声明语句:char a='\72'; 则变量a________。
A、包含1个字符
B、包含2个字符
C、包含3个字符
D、声明不合法
(  C  )
27、以下选项中,非法的字符常量是________。
A、'\t'
B、'\17'
C、"\n"
D、'\xaa'
(  C  )
28、语句"printf("a\bre"\'hi\'y\\\bou\n"); "的输出结果是________。
A、a\bre\'hi\'y'\\\bou
B、a\bre\'hi\\y\bou
C、re'hi'you
D、abre'hi'y\bou
(  A  )
29、已知有数组定义 char a[3][4]; 下列表达式中错误的是________。
A、a[2]="WIN"
B、strcpy(a[2],"WIN")
C、a[2][3]='W'
D、a[0][1]=a[0][1]
(  A  )
30、以下叙述中正确的是______。
A、不能用字符串常量对字符数组名进行整体赋值操作
B、字符串常量"Hello"会被隐含处理成一个无名字符型数组,它有5个元素
C、char str[7]="string!";在语法上是合法的,运行也是安全的
D、char *str;str="Hello";与char str[];str="Hello";效果是一样的
(  D  )
31、以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空:
#include<stdio.h> findmax(int*s,int t,int*k)
{
int p;
for(p=0,*k=p;p<t;p++) if(s[p]>s[*k])________;
}
main()
{
int a[10],i,k;
for(i=0;i<10;i++)scanf("%d",&a[i]);
findmax(a,10,&k);
printf("%d,%d\n",k,a[k]);
}
A、k=p
B、*k=p-s
C、k=p-s
D、*k=p
(  A  )
32、以下程序的输出结果是 _______ 。
main()
{
int x=1,y=0,a=0,b=0;
switch(x)
{
case 1:switch(y)
{
case 0:a++;
break;
case 1:b++;
break;
}
case 2:a++;
b++;
break;
}
printf("%d,%d\n",a,b);
}
A、2,1
B、2,2
C、1,1
D、2 1
(  C  )
33、请读程序片段(字符串内没有空格字符):printf("%d\n",strlen("ats\n012\1\\") );
上面程序片段的输出结果是______。
A、11
B、10
C、9
D、8
(  D  )
34、若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段是______。
A、int *i=NULL;scanf("%d",i);
B、float *f=NULL;*f=10.5;
C、char t='m',*c=&t;*c=&t;
D、long *L;L='\0';
(  A  )
35、以下能正确定义二维数组的是______。
A、int a[][3]={1,2,3,4,5,6};
B、int a[][3]={2*3};
C、int a[][3]={};
D、int a[2][3]={{1},{2},{3,4}};
(  C  )
36、有以下程序
#include <stdio.h>
main()
{
char a=4;
printf("%d\n",a=a<<1);
}
程序的运行结果是______。
A、40
B、16
C、8
D、4
(  B  )
37、已知:int a[2][3]; 则对数组元素的非法引用是________。
A、*(a[0]+2)
B、.a[1][3]
C、a[1][0]
D、*(*(a+1)+2)
(  D  )
38、利用函数fseek可实现的操作是________。
A、改变文件指针fp的值
B、文件的顺序读写
C、文件的随机读写
D、以上答案均正确
(  A  )
39、设有以下代码其中,循环体 a 与循环体 b 相同,以下叙述正确的是________。
A、循环体 A 与循环体 B 的执行次数相同
B、循环体 A 比循环体 B 的执行次数多一次
C、循环体 A 比循环体 B 的执行次数少一次
D、循环体 A 与循环体 B 的执行次数不确定
(  B  )
40、若变量已正确定义:for(x=0,y=0;(y!=99&&x<4);x++) 则以上 for 循环()
A、执行 3 次
B、执行 4 次
C、执行无限次
D、执行次数不定
(  D  )
41、下面说法正确的是________。
A、只要程序使用基本结构编写,运行时就不会出错
B、MAIN()函数是每一个 C 语言程序必须定义的
C、任何函数只能有一种基本结构
D、任何复杂问题都可以只使用三种基本结构来解决
(  C  )
42、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
A、if(x++);
B、if(x>y && y!=0);
C、if(x>0) x--
D、if(y<0) {;}
(  C  )
43、static struct
{
int a1;
float a2;
char a3;
}
a[10]={1,3.5,'a'};
说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存 储方式,其中被初始化的下标变量是________。
A、a[1]
B、a[-1]
C、a[0]
D、a[10]
(  D  )
44、下列叙述中正确的是________。
A、C语言编译时不检查语法
B、C语言的子程序有过程和函数两种
C、C语言的函数可以嵌套定义
D、C语言所有函数都是外部函数
(  D  )
45、下列标识符中不合法的是________。
A、s_name
B、_e
C、fox
D、3DS
(  A  )
46、以下程序的输出结果为________。
#include  <stdio.h>
int main( )
{
int i=1,j=1;
printf("%d  %d\n",i,j++);
}
A、1 1
B、1 2
C、2 1
D、2 2
(  A  )
47、下面程序的功能是将字符串s 中所有的字符'c'删除。
#include "stdio.h"
main()
{
char s[80];
int i,j;
gets(s);
for (i=j=0;s[i]!='\0';i++)if (s[i]!='c') ;
s[j]='\0';
puts(s);
}
A、s[j++]=s[i]
B、s[++j]=s[i]
C、s[j]=s[i];j++
D、s[j]=s[i]
(  C  )
48、判断两个字符串是否相等,正确的表达方式是
A、s1==s2
B、s1=s2
C、strcmp(s1,s2)==0
D、strcmp(s1,s2)=0
(  C  )
49、以下选项中合法的实型常数是()。
A、5E2.0
B、E-3
C、2.00E-01
D、1.3E
(  A  )
50、下列变量定义中合法的是()。
A、short _a=1-.1e-1;
B、double b=1+5e2.5;
C、long do=0xfdaL;
D、float 2_and=1-e-3;
相关标签:
  • C语言
  • 南京财经大学
  • 专升本模拟考试