西安美术学院往年C语言预测卷
本试卷为西安美术学院往年C语言预测卷,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言预测卷
一、理论基础 (共20题,每题1分,共计10分)
(  B  ) 
1、以下叙述中正确的是________。
(  A  ) 
2、有定义:"int a=2,b=3,c=4;",则下列选项中值为0的表达式是________。
(  A  ) 
3、若有定义:int x,*pb;则正确的赋值表达式是________。
(  D  ) 
4、若变量c为char类型,能正确判断出c为小写字母的表达式是________。
(  C  ) 
5、设有int x=11;则表达式(x+1/3)的值是________。
(  B  ) 
6、若有定义int a=2; 则执行完语句a/=a*a; 后,a的值是________。
(  B  ) 
7、若需要利用形参直接访问实参,则应把形参变量说明为( )参数。
(  A  ) 
8、已知char a; int b; float c; double d; 则表达式a*b+c-d的结果为________。
(  C  ) 
9、以下叙述中不正确的是________。
(  A  ) 
10、已知:int n=10; 在下列定义引用的语句中,正确的是________。
(  A  ) 
11、以下选项中,与 n=i++ 完全等价的表达式是________。
(  A  ) 
12、以下非法的字符常量是________。
(  D  ) 
13、下列关于表达式的描述中,错误的是________。
(  D  ) 
14、已知字符 'a' 的ascii码为 97,执行下列语句的输出是____。
(  C  ) 
15、执行语句for(i=1;i<4;i++ ); 后变量i的值是________。
(  C  ) 
16、如下程序段运行输出的结果为________。 int a=5,b=6,c; c=++a+b--; printf("%d,%d,%d%\n",a,b,c);
(  C  ) 
17、下列关于指针变量的描述,不正确的是________。
(  D  ) 
18、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为__________。
(  C  ) 
19、下列语句的输出结果是()。
printf("%d\n",(int)(2.5+3.0)/3);
(  C  ) 
20、能将高级语言编写的源程序转换为目标程序的是()。
二、控制结构 (共10题,每题1分,共计10分)
(  B  ) 
1、下列表达式为关系表达式的为_________。(其中a为一整型变量)
(  D  ) 
2、下列描述正确的是________。
(  A  ) 
3、在c程序中,判断逻辑值时,分别用( )表示逻辑值"真"、"假"。
(  A  ) 
4、if语句的基本形式为:if(表达式)语句,其中"表达式"________。
(  C  ) 
5、下列程序的输出结果是______。
#include<stdio.h>
main()
{
int a=0,b=1,c=2;
if(++a>0 || ++b>0) ++c;
printf("%d,%d,%d",a,b,c);
}
(  A  ) 
6、选择出合法的if语句(设int x,a,b,c;)________。
(  B  ) 
7、能正确表示a≥10或a≤0的关系表达式是________。
(  D  ) 
8、以下叙述中正确的是________。
(  D  ) 
9、在c语言中,if语句后的一对原括号中,用以决定分支的流程的表 达式________。
(  D  ) 
10、选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达 式,但其值只能被判断为“真”或“假”。哪个数作为逻辑“假”值()。
三、循环结构 (共10题,每题1分,共计10分)
(  B  ) 
1、若i、j已定义成int型,则下列程序段中内循环体的总执行次数是________。
for(i=6;i>0;i--) for(j=0;j<4;j++)
{
…
}
(  D  ) 
2、下面程序的输出结果是 ____________.
main( )
{
int i,k=0, a=0, b=0;
for(i=1;i<=4;i++)
{
k++;
if (k%2==0)
{
a=a+k;
continue;
}
b=b+k;
a=a+k;
}
printf("k=%d a=%d b=%d\n",k,a,b);
}
(  B  ) 
3、程序语言一般都提供多种循环语句,例如实现先判断循环条件再执行循环体的while语句和先执行循环体再判断循环条件的do-while语句。关于这两种循环结构,在不改变循环体的条件下, (17) 是正确的。
(  D  ) 
4、现有以下语句: i=1; for (;i<=100;i++) sum+=i;
(  C  ) 
5、在下列叙述中,正确的一条是______。
(  C  ) 
6、有以下程序
main()
{
int i;
for(i=1;i<=40;i++)
{
if(i++%5==0) if(++i%8==0) pfintf("%d",i);
}
printf("\n");
}
执行后的输出结果是________。
(  D  ) 
7、分析下列程序,其最终执行结果是______。
main()
{
int n[3],i,j,k;
for(i=0;i<3;i++)n[i]=o;
k=2;
for(i=0;i<k;i++) for(j=0;j<k;j++) n[j]=n[i]-1;
printf("%d\n",n[0]);
}
(  A  ) 
8、若变量已正确定义,对以下while循环结束条件的准确描述是________。
(  B  ) 
9、以下有关switch语句的正确说法是________。
(  C  ) 
10、以下描述正确的是________。
四、数组/指针数组 (共10题,每题1分,共计10分)
(  C  ) 
1、若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是________。 int t[3][3], *pt[3],k; for(k=0;k<3;k++) pt[k]= &t[k][0];
(  D  ) 
2、若有定义:int a[10],则对数组a元素的正确引用是________。
(  C  ) 
3、若有定义:int aa[ 8]; 则以下表达式中不能代表数组元aa[1]的地址的是________。
(  D  ) 
4、以下函数findmax拟实现在数组中查找最大值并作为函数值返回, 但程序中有错导致不能实现预定功能
#define MIN -2147463647
int findmax(int x[],int n)
{
int i,max;
for(i=0;i<n;i++)
{
max=MIN;
if(max<x[i]) max=x[i];
}
return max;
}
造成错误的原因是________。
(  A  ) 
5、设有如下程序段 char s[20]= "bejing",*p; p=s; 则执行p=s; 语句后,以下叙述正确的是________。
(  D  ) 
6、已知3个字符为:a、x和5,按它们的ascii码值升序排序,结果是________。
(  A  ) 
7、在数制的转换中,正确的叙述是______。
(  A  ) 
8、有以下程序:
main()
{
int a[]={1,2,3,4,5,6,7,8,9,0},*p;
for(p=a;p<a+10,p++)printf("%d,",*p);
}
程序运行后的输出结果是________。
(  C  ) 
9、下面程序段的运行结果是 char a[ ]="lanuage",*p; p=a; while(*p!='u') printf("%c",*p-32); p++;
(  B  ) 
10、关于数组和指针,以下说法错误的是________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
(  C  ) 
1、下列能正确进行字符串赋值的是________。
(  D  ) 
2、以下关于字符串的叙述中正确的是________。
(  C  ) 
3、以下不能将s所指字符串正确复制到t所指存储空间的是________。
(  D  ) 
4、以下能正确定义字符串的语句是________。
(  C  ) 
5、null是指 ________。
(  B  ) 
6、下列关于串的叙述中,哪一条是正确的( )
(  B  ) 
7、下列选项中c语言中不合法的字符串常量的是________。
(  D  ) 
8、有以下程序:
#include<string.h>
main()
{
char *p="abcde\0ghjik\0";
printf("%d\n",strlen(p) );
}
程序运行后的输出结果是________。
(  C  ) 
9、下列选项中,表示字符串末尾的结束标志是________。
(  B  ) 
10、下面选项中合法的字符常量是________。
六、函数/函数指针 (共10题,每题1分,共计10分)
(  C  ) 
1、在函数中默认存储类型说明符的变量应该是________存储类型。
(  A  ) 
2、c语言中函数返回值的类型是由 决定的.
(  D  ) 
3、分析下面函数,以下说法正确的是______。
swap(int *p1,int *p2)
{
int *p;
*p=*p1;
*p1=*p2;
*p2=*p;
}
(  C  ) 
4、下面函数的功能是
char* fun(char* strl,char* str2) {
while((*strl)&&(*str2++=*strl++));
return str2;
}
(  B  ) 
5、以下叙述中正确的是________。
(  C  ) 
6、以下关于局部变量和全局变量的叙述错误的是________。
(  C  ) 
7、printf 函数中用到格式符%5s ,其中数字5 表示输出的字符串占用5 列。如果字符串长度小于5,则输出按方式。
(  D  ) 
8、以下叙述中正确的是________。
(  C  ) 
9、关于return语句,下列正确的说法是________。
(  B  ) 
10、C语言函数内定义的局部变量的隐含存储类别是
七、指针 (共10题,每题1分,共计10分)
(  D  ) 
1、若有如下定义,则________是对数组元素的正确的引用 int a[10], *p ; p=a;
(  D  ) 
2、若有如下定义语句: int a[10]= { 1,2,3,4,5,6,7,8,9,10 } ; 则对数组正确的引用是________。
(  A  ) 
3、若程序中定义了以下函数 double myadd(double a,double b)
{
return (a+b);
}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是________。
(  D  ) 
4、若有以下定义和语句: double r=99 , *p=&r ; *p=r ; 则以下正确的叙述是______。
(  D  ) 
5、若有以下定义: int a[]= {1,2,3,4,5,6,7 }; char c1='b',c2='2'; 则数值不为2的表达式是________。
(  B  ) 
6、有以下程序: fun(int x,int y)
{
static int m=0, i=2;
i+=m+1;
m=i+x+y;
return m;
}
main()
{
int j=1,m=1,k;
k=fun(j,m);
printf("%d,"k);
k=fun(j,m);
printf("%d\n",k);
}
执行后的输出结果是________。
(  A  ) 
7、有以下程序:
main()
{
int x[]={1,3,5,7,2,4,6,0},i,j,k;
for(i=0;i<3;i++) for(j=2;j>=i;j--) if(x[j+1]>x[j])
{
k=x[j];
x[j]=x[j+1];
x[j+1]=k;
}
for(i=0;i<3;i++) for(j=4;j<7-i;j++) if(x[j]>x[j+1])
{
k=x[j];
x[j]=x[j+1];
x[j+1]=k;
}
for(i=0;i<8;i++) printf("%d",x[i]);
printf("\n");
}
程序运行后的输出结果是________。
(  D  ) 
8、c语言中函数能否嵌套调用和递归调用?( )
(  C  ) 
9、下面正确的字符串常量是________。
(  C  ) 
10、char a[10]; 不能将字符串"abc"存储在数组中的是________。
八、结构体 (共10题,每题1分,共计10分)
(  A  ) 
1、c语言结构体类型变量在程序执行期间,________。
(  D  ) 
2、有以下程序
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);
}
程序运行后的输出结果是________。
(  D  ) 
3、若有以下说明语句:
struct student
{
int num;
char name[ ];
float score;
} stu;
则下面的叙述不正确的是: ( )
(  D  ) 
4、若有以下定义的语句
struct student
{
int age;
int num;
};
struct student stu[3]={{1001,20},{1002,19},{1003,21}};
main()
{
struct student *p;
p=stu;
…
}则以下不正确的引用是________。
(  C  ) 
5、以下程序的输出结果是
#include<stdio.h>
struct st
{
int x;
int *y;
}
*p;
int dt[4]= {10,20,30,40 };
struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],};
main()
{
p=aa;
printf("%d\n",++(p->x));
}
(  A  ) 
6、c 语言中的基本数据类型包括
(  D  ) 
7、有如下定义: struct student
{
char name[10];
int age;
char gender;
}
std[3], *p=std;
则以下各输入语句中错误的是________。
(  B  ) 
8、下面赋值表达式不正确的是__________________.
struct student
{
long num;
char name[20];
} st1, st2={101, "tom"}, *p=&st1;
(  C  ) 
9、static struct
{
int a1;
float a2;
char a3;
}
a[10]={1,3.5,'a'};
说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存 储方式,其中被初始化的下标变量是________。
(  C  ) 
10、有以下程序
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;
int i;
float sum=0;
p=s+2;
for(i=0;i<3;i++)sum=sum+p->score[i];
printf("%6.2f\n",sum);
}
程序运行后的输出结果是________。
九、程序题 (共10题,每题1分,共计10分)
(  C  ) 
1、若有以下程序:
void
fun (float *a, float *b)
{
float w;
*a = *a + *a;
w = *a;
*a = *b;
*b = w;
}
main ()
{
float x = 2, y = 3, *px = &x, *py = &y;
fun (px, py);
printf ("%2.0f,%2.0f\n", x, y);
}
程序的输出结果是________。
(  A  ) 
2、执行下列程序段后的输出结果是 ___________. int x=1,y=1,z=1; x+=y+=z; printf("%d\n",x<y?y:x);
(  A  ) 
3、若运行下面程序时 , 给变量 a 输入 15, 则输出结果是 ________.
#include <stdio.h>
void main( )
{
int a,b;
scanf("%d",&a);
b=a>15?a+10:a-10;
printf("%d\n",b) ;
}
(  D  ) 
4、以下程序输出的结果是 ___________.
#include <stdio.h>
void main( )
{
char str[ ]=" 1a 2b 3c ";
int i;
for(i=0;str[i]!='\0';i++) if(str[i]>='0'&&str[i]<='9')
printf("%c",str[i]);
printf("\n");
}
(  C  ) 
5、以下程序输出的结果是 __________.
#include <stdio.h>
void main( )
{
int a[ ]={5,4,3,2,1},i,j;
long s=0;
for(i=0;i<5;i++) s=s*10+a[i];
printf("s=%ld\n",s);
}
(  B  ) 
6、下面程序段执行结果是________。 int i=5,k;
k=(++i)+(++i)+(i++);
printf("%d,%d",k,i);
(  B  ) 
7、下面程序的输出结果是______。
main( )
{
int b[]={1,2,3,4,5,6,7,8,9,0},*q;
q=b;
printf("%d\n",*(q+0));
}
(  B  ) 
8、如下程序,要想输出结果为ab,那么输入应该为
void main()
{
char a;
char b;
scanf("%c%c",&a,&b);
printf("%c%c",a,b);
}
(  C  ) 
9、下列语句输出结果是________。 long a=0xffff; int b=a; printf( "%d",b);
(  C  ) 
10、以下程序段的执行结果是________。 double x; x=218.82631; printf("%-6.2e\n",x);
相关标签:
- C语言
 - 西安美术学院
 - 预测卷