中国美术学院C语言

本试卷为中国美术学院C语言,题目包括:单项选择题,判断题,编程题。

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

C语言

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

(  B  )
1、c语言中的简单数据类型有( )。
A、整型、实型、逻辑型
B、整型、实型、字符型
C、整型、字符型、逻辑型
D、整型、实型、逻辑型、字符型
(  C  )
2、下列能正确进行字符串赋值的是________。
A、char s[5]={¨ABCDE”);
B、char s[5]={'A','B','C','D','E'};
C、char*s;s=”ABCDE”;
D、char*s;printf(”%S”,s);
(  B  )
3、与"y=(x>0?1:x<0?-1:0)";的功能相同的if语句是________。
A、if(x>0)y=1;
B、if(x)
else if(x>0)y=1;
else y=0; else if(x%0)y=-1;
else y=0;
C、y=-1
D、y=0;
if(x) if(x>=0)
if(x>O)y=1; if(xi>=O)y=1;
else if(x==0)y=0; else y=-1;
else y=-1;
(  C  )
4、有以下程序:
main()
{
int s=0.n;
for(n=0;n <3;n++)
{
switch(s)
{
case 0;
case1:s+=1;
case 2:s+=2;
break;
case 3:s+=3;
default:s+=4;
}
printf("%d,"s);
}
}
程序运行后的输出结果是________。
A、1,2,4,
B、1,3,6,
C、3,10,14,
D、3,6,10,
(  A  )
5、下列四组常数中,均是合法整型常量的一组是________。
A、160 0xffff 011
B、-0xcdf 01a 0xe
C、-01 986,012 0668
D、-0x48a 2e5 0x
(  C  )
6、以下选项中,能用作用户标识符的是________。
A、void
B、8_8
C、_0_
D、unsigned
(  B  )
7、以下描述错误的是_________。
A、break语句可用于switch语句和循环语句
B、break语句和continue语句的作用是一样的,都是提前结束整个循环
C、在循环语句中使用break语句是为了跳出循环,提前结束循环
D、在循环语句中使用continue语句是为了结束本次循环,而不终止整个循环
(  D  )
8、以下函数返回a所指数组中最小的值所在的下标值:
fun(int *a,int n)
{
int i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p]) ______,
return(p);
}
在横线处应填入的是______。
A、i=p
B、a[p]=a[i]
C、p=j
D、p=i
(  A  )
9、若变量x、y已正确定义并赋值,以下符合c语言语法的表达式是________。
A、++X,Y=X--
B、X+1=Y
C、X=X+10=X+Y
D、double(X)/10
(  A  )
10、下列定义数组的语句中,正确的是______。
A、#define N 10
int x[N];
B、int N=10;
int x[N];
C、int x[0...10];
D、int x[];
(  C  )
11、在标准ascii码表中,已知英文字母a的十进制码值是65,英文字母a的十进制码值是________。
A、95
B、96
C、97
D、91
(  B  )
12、有以下程序:
struct stu
{
char num[10];
float score[3];
};
main()
{
struct stu s[3]={{"20021",90,95,85}, {"20022",95,80,75}, {"20023",100,95,90}},*p=s;
int i;
float sum=0;
for(i=0;i<3;i++ ){
sum=sum+p->score[i];
}
printf("%6.2f\n",sum);
}
程序运行后的输出结果是________。
A、260
B、270
C、280
D、285
(  C  )
13、若有"double a; ",则正确的输入语句是________。
A、scanf("%lf",a);
B、scanf("%f",&a);
C、scanf("%lf",&a)
D、scanf("%le",a);
(  C  )
14、有以下程序
main( )
{
int m=0256,n=256;
printf("%o %o\n",m,n);
}
程序运行后的输出结果是________。
A、0256 0400
B、0256 256
C、256 400
D、400 400
(  D  )
15、下列二维数组的说明中,不正确的是________。
A、float a[][4]=0,1,8,5,9;
B、int a[3][4]
C、#define N 5
float a[N][3]
D、int a[2][9.5];
(  D  )
16、如果要求在if后的判断条件是a不等于0,则下列选项中能正确表达这一关系的是________。
A、a<>0
B、!a
C、a=0
D、a
(  D  )
17、c语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为________。
A、该数组的长度
B、该数组的元素个数
C、该数组中各元素的值
D、该数组的首地址
(  A  )
18、有以下程序
struct s
{
int n;
int a[20];
}
;
void f(int *a, int n)
{
int i;
for(i=0;i<n-1;i++) a[i]+=i;
}
main()
{
int i;
struct s s={10,
{
2,3,1,6,8,7,5,4,10,9}};
f(s.a,s.n);
for(i=0;i<s.n;i++) printf("%d,",s.a[i]);
}
程序运行后的输出结果是______。
A、2,4,3,9,12,12,11,11,18,9,
B、3,4,2,7,9,8,6,5,11,10,
C、2,3,1,6,8,7,5,4,10,9,
D、1,2,3,6,8,7,5,4,10,9,
(  A  )
19、以下程序的输出结果是______。
#include <string.h>
main()
{
char *a="abcdefghi";
fun(a);
puts(a);
}
fun(char *s)
{
int x,y;
char c;
for (x=0,y=strlen(s)-1; x<y; x++,y--)
{
c=s[y];
s[y]=s[x];
s[x]=c;
}
}
A、ihgfedcba
B、abcdefghi
C、abcdedcba
D、ihgfefghi
(  C  )
20、在c语言的函数中,下列正确的说法是________。
A、必须有形参
B、形参必须是变量名
C、可以有也可以没有形参
D、数组名不能作形参

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

(   T  )
1、c语言中,当输入数据时,必须指明变量的地址,如: scanf("%f",&f);
( ) 
(   T  )
2、c语言中输入与输出操作都是由库函数来实现的。 
(   T  )
3、用strcat(字符串1,字符串2)连接两个字符串函数时,字符串1的存储空间必须足够大。 
(   T  )
4、以下程序段中,当i大于10或者s大于20时,循环结束。 
(   F  )
5、c语言在函数调用时,若形参实参都是普通变量,实参和形参可以共用存储单元。 
(   T  )
6、在c语言中,使用"r"方式可以打开文件 
(   T  )
7、编译后的函数其代码存储在连成一片的内存单元中,这些代码的第一个代码所在的内存地址,称为函数的入口地址,而函数名就代表了函数的入口地址。 
(   T  )
8、一个c程序可以有若干个c源程序组成,而c源程序可以由若干个函数和预处理组成。() 
(   T  )
9、c语言中的数组默认的下标值是从 0 开始的。( ) 
(   F  )
10、在标准c中,逻辑表达式中只允许出现逻辑型数据。 

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

1、编写程序:判断输入字符的字母的个数,以*结束输出。
2、编写程序:从键盘输入 n (n<10)个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,按成绩从低到高排序并输出排序后的学生信息。
输入输出示例:括号内为说明,无需输入输出
输入样例:
3 (n=3)
1000 85
1001 90
1002 75
输出样例:
1002 75
1000 85
1001 90
3、编写程序,使用循环结构输出下列图形: