浙江财经大学计算机C语言样卷

本试卷为浙江财经大学计算机C语言样卷,题目包括:单项选择题,填空题,编程题。

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

计算机C语言样卷

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

(  C  )
1、能正确表示"当x的取值在[1,10]和[100,11o]范围内为真,否则为假"的表达式是________。
A、(x>=1)&&(x<=10)&&(x>=100)&&(X<=110)
B、(x>=1)&&(x<=10)||(x>=100)||(x<=110)
C、(x>=1)&&(x<=10)||(x>=100)&&(x<=110)
D、(x>=1)||(x<=10)&&(x>=100)||(x<=110)
(  C  )
2、若ch为char型变量,k为int型变量(已知字符a的ascil码是97),则执行下列语句后输出的结果为( )。
ch='b'; k=10;
printf("%x,%0,",ch,ch,k);
printf("k=%%d\n",k);
A、因变量类型与格式描述符的类型不匹配,输出无定值
B、输出项与格式描述符个数不符,输出为0或不定值
C、62,142,k=%d
D、62,142,k=%10
(  A  )
3、若有定义:"int a[2][3];",则对a数组的第i行第j列元素的正确引用为( )。
A、*(*(a+i)+j)
B、(a+i)[j]
C、*(a+j+j)
D、*(a+i)+j
(  D  )
4、下列选项中不是字符常量的是________。
A、'\v'
B、'\x2a'
C、'a'
D、"\0"
(  B  )
5、有以下程序
main( )
{
int x=0,y=5,z=3;
while(z-->0&&++x<5) y=y-1;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果是________。
A、3,2,0
B、3,2,-1
C、4,3,-1
D、5,-2,-5
(  A  )
6、若有下面的说明和定义:
struct test
{
int ml;
char m2;
float m3;
union uu
{
char ul[5];
int u2[2];
}
ua;
}
myaa;
则sizeof(struct test )的值是________。
A、12
B、16
C、14
D、9
(  B  )
7、字符串 "\\\"abc\"\\" 的长度是______。
A、11
B、7
C、5
D、3
(  D  )
8、程序段如下:则以下说法中正确的是:
int k=5;
do
{
k--;
}
while(k<=0);
A、循环执行 5 次
B、循环是无限循环
C、循环体语句一次也不执行
D、循环体语句执行一次
(  B  )
9、下面程序输出数组中的最大值,由 s 指针指向该元素 .
void main ()
{
int a[10]={6 , 7 , 2 , 9 , 1 , 10 , 5 , 8 , 4 , 3 , } , *p , *s ;
for ( p=a , s=a ; p-a<10 ; p++ )
if (________) s=p ;
printf ( "the max : %d" , *s ):
}
则在 if 语句中的判断表达式应该是______。
A、p>s
B、*p>*s
C、a[p]>a[s]
D、p-a>p-s
(  A  )
10、表达式10 mod 2的值为________。
A、0
B、1
C、2
D、5
(  B  )
11、二维数组m[i,j]的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i范围从0到4,列下标,i的范围从0到5。m按行存储时元素m[3,5]的起始地址与m按列存储时元素( )的起始地址相同。
A、M[2,4)
B、M[3,4)
C、M[3,5]
D、M[4,4)
(  A  )
12、下列描述说明正确的是________。
A、定义结构体时,它的每个成员的数据类型可以不同
B、不同结构体的成员名不能相同
C、结构体定义时,其成员的数据类型不能是结构体本身
D、结构体定义时各成员项之间可用分号也可用逗号隔开
(  D  )
13、下面有关for循环的正确描述是________。
A、for循环只能用于循环次数已经确定的情况
B、for循环是先执行循环体语句,后判断表达式
C、在for循环中,不能用break语句跳出循环体
D、在for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来
(  D  )
14、以下叙述不正确的是________。
A、一个C源程序可由一个或多个函数组成
B、一个C源程序必须包含一个main函数
C、C程序的基本组成单位是函数
D、在C程序中,注释说明只能位于一条语句的后面
(  A  )
15、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=4,b=3,c=2,d=1;
printf("%d",a<b?a:d<c?d:b);
}
A、1
B、3
C、2
D、4
(  A  )
16、以下选项中合法的c语言字符常量是________。
A、'\t'
B、"A"
C、67
D、A
(  A  )
17、执行下列程序段后输出的结果是________
{
int x,y,z=1;
for(x=1,y=-1;x<y;x++,y--) z++;
printf("%d\n",z);
}
A、1
B、2
C、5
D、6
(  D  )
18、下列能正确定义字符串的语句是________。
A、char str[]='\64';
B、char str="kx43";
C、char str=";
D、char str[]="\0";
(  B  )
19、有如下程序段int *p,a=6,b=2; p=&a; a=*p+b; 执行该程序段后,a的值为______。
A、6
B、8
C、7
D、编译出错
(  B  )
20、以下选项中,能定义m为合法的结构体变量的是______。
A、typedef struct abc {
double a;char b;} m;
B、struct {
double a;char b;}m;
C、struct ABC {
double a;char b;} ABC m;
D、typedef ABC{
double a;char b; } ABC m;

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

1、以下程序输出x,y,z三个数中的最小值,请填空使程序完整___________。
main ()
{
int x=4,y=5,z=8 ;
int u,v;
u = x < y ?_______;
v = u < z ?_______;
printf ("%d",v);
}
2、已有定义:double *p;
,请写出完整的语句,利用malloc函数使p指向一个双精度型 的动态存储单元 ________ 。
3、有以下程序
#include<stdio.h>
main() {
int n[2],i,j;
for(i=0;i<2;i++) n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++) n[j]=n[i]+1;
printf("%d\n",n[1]);
} 程序运行后的输出结果是________。
4、若有定义语句:int a=5;,则表达式a++的值是 ________ 。
5、下列程序段的运行结果是_____。
main()
{
int m=1,t=1;
for(;;)
{
m=m*t;
t++;
if(t>4)break;
}
printf("%d\n",m);
}
6、局部变量的作用域是从定义的位置起,到( )结束止。
7、int w=1, x=2, y=3, z=4;
则条件表达式w>x?w:y<z?y:z的结果为________。
8、在c语言中,函数的返回值是由___________语句传递的。
9、执行下列的程序段后,正确的结果是_____________。
int i=5;
while( i = 1)i -- ;
printf("%d", i );
10、定义一个指针p,它指向一个有6个整型元素的一维数组,定义语句为 ______。

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

1、题⽬描述,定义⼀个包括年、⽉、⽇的结构体变量,读⼊年、⽉、⽇,计算该⽇在当年中是第⼏天。注意闰年问题。
输⼊
三个整数,分别表⽰年、⽉、⽇。保证输⼊是实际存在的⽇期,且年份在1000⾄3000之间(包含1000和3000)。输出
输出该⽇期是⼀年中的第⼏天。
请注意⾏尾输出换⾏。
样例输⼊
2012 12 21
样例输出
356
2、编程序输出1--1000内的所有素数。所谓素数是指除了能被1和它本身之外不能被其它数整除的数。
3、编写程序:字符串反转,如将字符串 "abc-123-xyz" 反转为 "zyx-321-cba"。