西安美术学院计算机C语言冲刺卷

本试卷为西安美术学院计算机C语言冲刺卷,题目包括:单项选择题,填空题,编程题。

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

计算机C语言冲刺卷

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

(  C  )
1、在嵌套使用if语句时,c语言规定else总是________。
A、和之前与其具有相同缩进位置的if配对
B、和之前与其最近的if配对
C、和之前与其最近的且不带else的if配对
D、和之前的第一个if配对
(  B  )
2、有以下程序
main()
{
int s=0,a=1,n;
scanf("%d",&n);
do
{
s+=1;
a=a-2;
}
while(a!=n);
printf("%d\n",s);
}
若要使程序的输出值为2,则应该从键盘给n输入的值是________。
A、-1
B、-3
C、-5
D、0
(  D  )
3、有以下程序
#include <stdio.h>
struct tt
{
int x;
struct tt*y;
}
*p;
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{
int i;
p=a;
for(i=1;i<=2,i++)
{
printf("%d,",p->x);
p=p->y;
}
}
程序的运行结果是________。
A、20,30,
B、30,17
C、15,30,
D、20,15
(  D  )
4、在下列选项中 , 不正确的赋值语句是 __________.
A、++t;
B、n1=(n2=(n3=0));
C、k=i=j;
D、a=b+c=1;
(  A  )
5、一个c程序由函数a( ),b( ),c( )和函数p( )构成,在函数a( )中分别调用了函数b( )和函数c ( ),在函数b( )中调用了函数a( ),且在函数p( )中也调用了函数a( ),则可以说
A、函数B( )中调用的函数A( )是函数A( )的间接递归调用
B、函数A( )被函数B( )调用是直接递归调用
C、函数P( )直接递归调用了函数A( )
D、函数P( )中调用的函数A( )是函数P( )的嵌套
(  A  )
6、以下选项中,不合法的整型常数是________。
A、32768
B、-56
C、03
D、0Xaf
(  A  )
7、下列选项中不属于c语言的数据类型是________。
A、复数型
B、逻辑型
C、双精度型
D、集合型
(  B  )
8、以下选项中与if(a==1)a++; else a=b; 语句功能不同的语句是________。
A、switch(a)
ease 0:a=b;break;
default:a++;
B、switch(a==1)
case 0:a++:
default:a=b;
C、switch(a)
default:a=b;break;
case 1:a++;
D、a=(a==1)(a++):b
(  A  )
9、以下程序的运行结果是
#include"stdio.h"
main()
{
struct date {
int year, month, day ;
} today;
printf("%d\n",sizeof(struct date));
}
A、6
B、8
C、10
D、12
(  C  )
10、下列关于c语言字符数组描述正确的是________。
A、字符数组可以存放字符串
B、字符数组的下标是从0开始的
C、字符数组不能输出字符串
D、字符数组可以没有'\0'
(  C  )
11、下面程序段的运行结果是________。
char * format="%s,a=%d,b=%d\n";
int a=11,b=10;
a+=b;
printf(format,"a+=b",a,b);
A、for,"a+=b",ab
B、format,"a+=b"
C、a+=b,a=21,b=10
D、以上结果都不对
(  D  )
12、下列关于表达式的描述中,错误的是________。
A、常量和变量都是表达式
B、运算符类型对应表达式的类型
C、每一个表达式都有自己的值
D、表达式必须以分号结尾
(  B  )
13、数组a[10]的下标从( )开始。
A、1
B、0
C、10
D、不确定
(  D  )
14、有以下程序:
main()
{
int x=10,y;
if(x<20) y=100;
if(x>4) y=55/x;
else y=10;
printf("%d\n",y);
}
则输出结果是________。
A、100
B、5)5
C、10
D、5
(  D  )
15、假设a和b为int型变量,则执行以下语句后b的值为___________。
a=1;b=10:
do
{
b-=a;a++;
}
while(b--<O)
A、9
B、-2
C、-1
D、8
(  A  )
16、下列字符数组长度为5的是________。
A、char a[]={'h', 'a', 'b', 'c', 'd'};
B、char b[]= {'h', 'a', 'b', 'c', 'd', '\0'};
C、char c[10]= {'h', 'a', 'b', 'c', 'd'};
D、char d[6]= {'h', 'a', 'b', 'c', '\0' };
(  B  )
17、为了避免在嵌套的条件语句if-else 中产生二义性,c 语言规定: else子句总是与配对________。
A、缩排位臵相同的if
B、其之前最近的没有else配对的if
C、其之后最近的if
D、同一行上的if
(  D  )
18、若有char s1[]="abc",s2[20],*t=s2;gets(t);则下列语句中能够实现当字符串 s1 大于字符串 s2 时,输出 s2 的语句是()。
A、if(strcmp(s1,s1)>0)puts(s2);
B、if(strcmp(s2,s1)>0)puts(s2);
C、if(strcmp(s2,t)>0)puts(s2);
D、if(strcmp(s1,t)>0)puts(s2);
(  A  )
19、函数 rewind 的作用是()。
A、使位置指针重新返回文件的开头
B、将位置指针指向文件中所要求的特定位置
C、使位置指针指向文件的末尾
D、使位置指针自动移至下一个字符位置
(  B  )
20、以下程序段的输出结果为()。
for(i=4;i>1;i--)
for(j=1;j
A、无
B、######
C、#
D、###

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

1、定义4行3列的整型二维数组a的语句是________。
2、字符读写函数____________是用于从磁盘文件中读出一个字符。
3、c语言约定用____________作为字符串的结束标志。
4、表达式7+10>2 && 25 %5的结果是 ________ 。
5、有以下程序
#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]);
} 程序运行后的输出结果是________。
6、局部变量的作用域是从______的位置起,到函数结束止。
7、下列程序段的运行结果是________。
main()
{
int i=1,s=0;
for( ; ; )
{
s=s+i ;
i++;
if(i>4) break ;
}
printf("%d\n",s);
}
8、下面程序的运行结果是________。
main()
{
int a[2][3]={{1,2,3},{4,5,6}}, int b[3][2],i,j;
printf("array a:\n");
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("array b:\n");
for(i=0;i<=2;i++)
{
for(j=0;j<=1;j++)printf("%5d",b[i][j]);
printf("\n");
}
}
9、以下程序对输入两个整数,按从大到小的顺序输出。请在____内填入正确的内容。
void main()
{
int x,y,z;
scanf("%d,%d",&x,&y);
if(_________)
{
z=x;
_________
}
printf("%d,%d",x,y);
}
10、C语言函数是由函数首部和函数体两部分组成。其中,函数首部包括 函数类型、函数名和______。

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

1、编写程序:计算字符串中子串出现的次数 。请输入两个字符串,以回车隔开,母先串在前,子串在后,比如:
abca
a
2
2、若有以下银行卡信息:
struct card{
int id;//银行卡号
int bonus; //金额
};
请编写程序,从键盘输入5条银行卡记录,使用结构体数组存
储这些数据,并按金额升序排序,输出排序后的结果。
【输入形式】5条银行卡记录分行输入,每行数据用空格间隔
【输出形式】分5行输出数据,每行数据均使用空格间隔
【输入样例】
1001 20
1002 80
1003 50
1004 10
1006 40
【输出样例】
1004 10
1001 20
1006 40
1003 50
1002 80
3、从键盘输入10个数,统计非负数的个数,并计算非负数的和。