南昌航空大学C语言程序设计冲刺卷
本试卷为南昌航空大学C语言程序设计冲刺卷,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言程序设计冲刺卷
一、理论基础 (共20题,每题1分,共计10分)
( D )
1、设变量已正确定义,则以下能正确计算f=n!的程序是________。
( C )
2、设x=015,则x=x^017的值是________。
( A )
3、c语言中,合法的字符型常数是________。
( D )
4、若有运算符:>、一、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为________。
( D )
5、下列选项中不是字符常量的是________。
( A )
6、在执行 int a[][3]={ 1,2,3,4,5,6};语句后, a[1][0] 的值是______。
( C )
7、当说明一个共用体变量时系统分配给它的内存是______。
( C )
8、执行下列语句后,i和n的值为________。 int i=10; int n=i++%5;
( A )
9、设有int x=11; 则表达式(x++*1/3)的值是________。
( A )
10、已知英文字母m的ascii码值为109,那么英文字母p的ascii码值是________。
( B )
11、下列选项中非法的字符常量是________。
( A )
12、已知:int n=10; 在下列定义引用的语句中,正确的是________。
( A )
13、以下表达式的值与 x 无关、其值恒为真的是________。
( C )
14、下列标识符,不合法的是________。
( A )
15、若变量已正确说明为float类型,要通过语句 scanf("%f %f %f",&a,&b,&c); 给a赋予10.0,b赋予22.0,c赋予33.0,正确的输入形式是________。
( B )
16、运行下述程序段后, i 值为4 的是________。
( C )
17、以下不合法的用户标识符是________。
( D )
18、double x; scanf("%lf",&x); 不可以赋值给x变量的常量是________。
( A )
19、指针变量p进行自加运算(即 执行p++;)后,地址偏移值为4,则其 数据类型为________。
( C )
20、以下运算符中,优先级最高的运算符是()。
二、控制结构 (共10题,每题1分,共计10分)
( A )
1、有如下程序:
main ()
{
int x = 1, a = 0, b = 0;
switch (x)
{
case 0:
b++;
case 1:
a++;
case 2:
a++;
b++;
}
printf ("a = %d, b = %d\n", a, b);
}
该程序的输出结果是________。
( C )
2、当从键盘上输入字符"12134211"下面程序的 输出结果是________。
main( )
{
char s;
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;k<=7;k++)
{
scanf("%c",&s);
switch(s)
{
default: v4++;
case '1': v1++;
case '3': v3++;
case '2': v2++;
}
}
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);
}
( C )
3、下列说法中不正确的是________。
( C )
4、若a的值为3时,下列程序段被执行后,c的值是________。 int c = 1; if (a>0) if (a>3) c = 2; else c = 3; else c = 4;
( A )
5、下列叙述中正确的是________。
( D )
6、若a和b均是整型变量并已正确赋值,正确的switch语句是________。
( A )
7、switch语句不能用于下列哪种数据类型 ( )
( C )
8、有以下程序
main()
{
int i=1,j=1,k=2;
if((j++‖k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是________。
( B )
9、以下if语句书写正确的是________。
( A )
10、执行下面语句后的输出为____
int i= -1;
if (i < =0)printf("****\n");
else printf("%%%%\n");
三、循环结构 (共10题,每题1分,共计10分)
( A )
1、要求通过while循环不断读人字符,当读入字母n时结束循环,若变量已正确定义,下列正确的程序段是________。
( C )
2、若有以下程序段,w和k都是整型变量:
w=k;
LB:if(w==0)
goto LE;
w--;
printf("*") goto LB;
LE;
则不能与上面程序段等价的循环语句是________。
( D )
3、有以下程序:
main()
{
int i,n=0: for(i=2;i<5;i++)
{
do
{
if(i%3) continue: n++;
}
while(!i);
n++;
}
printf("n=%d\n",n);
}
程序执行后输出结果是________。
( C )
4、以下for循环是________。 for(x=0,y=0;(y!=123) && (x<4);x++)
( B )
5、下列选项中均属于c语言合法的标识符是________。
( A )
6、下列程序是死循环的是________。
( D )
7、有以下程序:
#include<stdio.h>
main()
{
int i=0,a=0;
while(i<20)
{
for(;;)
{
if((i%5)==0)break;
else i--;
}
i+=13,a+=i;
}
printf("%d\n",a);
}
程序的输出结果是________。
( A )
8、有以下程序:
#include<stdio.h>
main() {
int c;
while((c=getchar())!=’\n’)
switch(c-’3’) {
case 0: case 1:putchar(c+4);
case 2:putchar(c+4);
break;
case 3:putchar(c+3);
case 4:putchar(c+3);
break;
}
printf("\n");
}
从第一列开始输入数据(<cr>代表一个回车符):3845<cr>,则程序输出结果为________。
( D )
9、有以下程序段int n=0,p;
do
{
scanf("%d",&p);
n++;
}
while(p!=12345&&n<3);
此处do-while循环的结束条件是______。
( A )
10、设有循环语句"for(i=1;i>0;i++) i++; ",其循环执行的次数是________。
四、数组/指针数组 (共10题,每题1分,共计10分)
( C )
1、avg功能是求整形数组中的前若干个元素的平均值,设数组元素个数最多不超过则下列函数说明语句错误的是________。
( B )
2、以下能正确定义一维数组的选项是________。
( D )
3、若有定义: int a[3][4]; 不能表示数组元素 a[1][1] 。
( B )
4、若有以下定义和语句: int w[2][3] ,( *pw ) [3] ; pw=w ; 则对 w 数组元素非法引用是______。
( B )
5、二维数组a的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若a按行先存储,元素a[8,5]的起始地址与当a按列先存储时的元素( )的起始地址相同。设每个字符占一个字节。
( B )
6、若要定义a为3×4的二维数组,正确的定义语句是________。
( B )
7、int a[5],*p=a; 对a数组元素地址的正确引用是________。
( D )
8、已知三个字符为a、z和8,按它们的ascii码值升序排序,结果是________。
( D )
9、在执行int arr[][3] = {1,2,3,4,5,6 },语句后,arr[1][0]的值为________。
( A )
10、已定义两个字符数组a,b,则以下正确的输入格式 是________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( B )
1、下列数据中为字符串常量的是________。
( D )
2、下列关于boolean类型的叙述中,正确的是________。
( A )
3、以下选项中合法的c语言字符常量是________。
( B )
4、以下程序段的执行结果为
#define PLUS(X,Y)X+Y
main()
{
int x=1,y=2,z=3,sum;
sum=PLUS(x+y,z)*PLUS(y,z);
printf("SUM=%d",sum);
}
( D )
5、有以下程序
void fun(char s[][10],int n)
{
char t;int i,j;
for(i=0;i<N-1;I++)
for(j=i+1,j<N;J++)}
/*比较字符串的首字符大小,并交换字符
串的首字符*/
if(s[i][0])>s[j][0]){
t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;
}
main()
{
char ss[5][10]={“bcc”,”bbcc”,”xy”,”aaaacc”,”aabcc”};
fun(ss,5);printf(”%s,%s”,ss[0],ss[4]);
}
程序运行结果是________。
( D )
6、下面关于编译预处理命令,正确的是________。
( A )
7、以下选项中关于 c 语言常量的叙述错误的是________。
( A )
8、下面程序段输出两个字符串中对应相等的字符。请分析程序填空。
char x[]="programming";
char y[]="fortran";
int i=0;
while (x[i]!='\0'&&y[i]!='\0')
if (x[i]==y[i]) printf("%c", _____);
else i++;
( D )
9、若有char s1[]="abc",s2[20],*t=s2;gets(t);则下列语句中能够实现当字符串 s1 大于字符串 s2 时,输出 s2 的语句是()。
( B )
10、以下语句中,不能实现回车换行的是()。
六、函数/函数指针 (共10题,每题1分,共计10分)
( B )
1、在下列语句中,其含义为"q是一个函数指针,该指针指向整型数据"的定义语句是________。
( D )
2、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是________。
( B )
3、下列关于c语言的说法错误的是________ 。
( D )
4、c 语言规定,函数返回值的类型是由 。
( B )
5、以下叙述中正确的是______。
( C )
6、在printf的格式字符中,e格式字符的作用是________。
( C )
7、当用户要求输入的字符串中含有空格时,应使用的输入函数是________。
( A )
8、以下叙述中错误的是______。
( C )
9、以下说法错误的是________。
( C )
10、c 语言主要是借助以下哪种手段来实现程序的模块化()
七、指针 (共10题,每题1分,共计10分)
( D )
1、有数组:char a[ ]="this is an egg"; 。请问该数组到底占了几个字节?
( A )
2、对于 c 语言的函数,下列叙述中正确的是 ______ __.
( A )
3、设有定义 double a[10],*s=a; 以下能够代表数组元素a[3]的是______。
( C )
4、下列的程序用来输出两个字符串前7个字符中对应相等的字符及其位置号,程序空白处应该填写的是________。
#include<stdio.h>
main()
{
char sl[]="chinese",s2[]="japnese";
int i;
for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++) if(s1[i]=s2[i]&&i<7) ____________________;
}
( A )
5、以下不能将s所指字符串正确复制到t所指存储空间的是______。
( C )
6、有以下程序:
main()
{
char str[]="xyz", *ps=str;
while(*ps) ps++;
for(ps--;ps-str>=o;ps--) puts(ps);
}
执行后的输出结果是________。
( B )
7、若有定义语句:double x[5]= {1.0,2.0,3.0,4.0,5.0 }, *p=x;
则错误引用x数组元素的是______。
( D )
8、判断字符串a 和b 是否相等,应当使用。
( D )
9、若调用 fputc 函数输出字符成功,则其返回值是()。
( D )
10、求平方根函数的函数名为()。
八、结构体 (共10题,每题1分,共计10分)
( B )
1、若有以下语句:
typedef struct s
{
int g;
char h;
} t;
以下叙述中正确的是________。
( B )
2、有以下程序
struct stu
{
char name[10];
int num;
float totalscore;
};
void f(struct stu *p)
{
struct stu s[2]={{"sundan",20044,550} ,{"penghua",20045,537}}, *q=s;
++p ;
++q;
*p=*q;
}
main()
{
struct stu s[3]= {{"yangsan",20041,703},{"lisiguo",20042,580}};
f(s);
printf("%s %d %3.0f\n", s[1].name, s[1].num, s[1].totalscore);
}
程序运行后的输出结果是________。
( A )
3、有以下程序 struc stu
{
char name[10];
int num;
};
void f1(struct stu c)
{
struct stu b={"lisiguo",2042};
c=b;
}
void f2(struct stu *c)
{
struct stu b={"sundan",2044} ;
*c=b;
}
main( )
{
struct stu a={"yangsan",2041},b={"wangyin",2043} ;
f1(a);
f2(&b);
printf("%d %d\n",a.num,b.num);
}
执行后的输出结果是________。
( C )
4、有以下程序
struct stu
{
char name[10];
int num;
int score;
}
;
main( )
{
struct stu s[5]={{"yangsan",20041,703} , {"lisiguo",20042,580 , {"wangyin",20043,680}, {"sundan",20044,550}, {"penghua",20045,537}},*p[5],*t;
int i,j;
for(i=0;i<5;i++) p[i]=&s[i];
for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->score>p[j]->score)
{
t=p[i];
p[i]=p[j];
p[j]=t;
}
printf("5d %d\n",s[1].score,p[1]->score);
}
执行后输出结果是________。
( A )
5、以下结构体类型说明和变量定义中正确的是________。
( A )
6、c 语言中的基本数据类型包括
( C )
7、下面程序的输出结果为________。
struct st
{
int x;
int *y;
}
*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
void main()
{
p=aa;
printf("%d ", ++p->x);
printf("%d ", (++p)->x);
printf("%d ", ++(*p->y));
}
( D )
8、若有下面的说明和定义,则sizeof(struct aa)的值是______。
struct aa
{
int r1;
double r2;
float r3;
}
maya;
( B )
9、下面赋值表达式不正确的是__________________.
struct student
{
long num;
char name[20];
} st1, st2={101, "tom"}, *p=&st1;
( A )
10、结构体类型的定义允许嵌套是指()。
九、程序题 (共10题,每题1分,共计10分)
( C )
1、以下程序的输出结果是
main( )
{
int a= -1,b=1,k;
if((++a<0)&& ! (b-- <=0)) printf("%d %d\n",a,b);
else printf("%d %d\n",b,a);
}
( A )
2、下述程序执行的输出结果是________。
main()
{
char a[2][4];
strcpy(a,"are");
strcpy(a[1],"you");
a[0][3]='&' printf("%s\n",a);
}
( D )
3、阅读下面的程序
main()
{
int i,j;
char ch;
scanf("%d%c%f",&i,&ch,&j);
printf("%d%2c%7.2f",i,ch,j);
}
如果从键盘上输入 123a123x.12<回车> 则程序的运行结果是________。
( B )
4、有以下程序
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输入的值是________。
( B )
5、下面程序的输出是 ____________.
#include<stdio.h>
void main()
{
int x=023;
printf("%d\n",--x);
}
( A )
6、下面程序段的输出结果是________。
#include<stdio.h>
main()
{
float x=1.236547;
printf("%f\n",(int)(x*1000+0.5)/(float)1000);
}
( A )
7、以下程序的输出结果是________。
main()
{
int x=0x02ff,y=0x0ff00;
printf("%d\n",(x&y)>>410x005f);
}
( A )
8、以下程序的输出结果是_______。
main()
{
char s[]="159",*p;
p=s;
printf("%c",*p++);
printf("%c",*p++);
}
( C )
9、若输入ab,后回车,则程序运行结果为________。
main()
{
static char a[3];
scanf("%s",a);
printf("%c,%c",a[1],a[2]);
}
( C )
10、以下程序的执行结果是_______.
main()
{
int num = 0;
while( num <= 2 )
{
num++;
printf( "%d,",num );
}
}
相关标签:
- C语言
- 南昌航空大学
- 冲刺卷