西北民族大学C语言程序设计
本试卷为西北民族大学C语言程序设计,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言程序设计
一、理论基础 (共20题,每题1分,共计10分)
( A )
1、表示关系x<=y<=z的c语言表达式为
( D )
2、若有定义"double a; ",则正确的输入语句是________。
( C )
3、设变量p是指针变量,语句p=null; 是给指针变量赋null值,它等价于( )。
( D )
4、c语言允许将一条语句写在两行上,下列语句不正确是________。
( C )
5、计算机内部运算使用的数是________。
( B )
6、以下能正确定义且赋初值的语句是________。
( A )
7、若有定义 int a; float b; double c; 程序运行时输入: 3 4 5<回车>能把值3输入给变量a、4输入给变量b、5输入给变量c的语句是________。
( D )
8、下列选项中正确的语句组是________。
( A )
9、下面c++标识符中正确的是________。
( C )
10、字面常量42、4.2、42l的数据类型分别是________。
( B )
11、下列叙述中正确的是________。
( A )
12、以下选项中,合法的数值型常量是________。
( A )
13、在c语言中,合法的长整型常数是______。
( B )
14、定义 char a; 则以下赋值语句不恰当的是________。
( D )
15、以下不符合c语言语法的赋值语句是________。
( C )
16、下列程序段的输出结果为________。 int x=3,y=2; printf("%d",(x-=y,x*=y+8/5));
( C )
17、以下叙述中不正确的是________。
( B )
18、c 语言中局部变量的缺省存储类别是________。
( D )
19、在c 语言中,退格符是________。
( D )
20、若d 为double 型变量,则表达式d=1,d+5,d++ 的值是________.
二、控制结构 (共10题,每题1分,共计10分)
( D )
1、三种基本结构中,能简化大量程序代码的是________。
( C )
2、关于结构化程序设计原则和方法的描述错误的是________。
( D )
3、c语言对嵌套的if语句的规定是:else总是与 配对。
( D )
4、若int i=10;
执行下列程序后,变量i的正确结果是________。 switch (i)
{
case 0: i+=1;
case 10: i+=1;
case 11: i+=1;
default: i+=1;
}
( A )
5、以下程序的输出结果是
main()
{
int a=0,i;
for(i=;i<5;i++)
{
switch(i)
{
case 0: case 3:a+=2;
case 1: case 2:a+=3;
default:a+=5;
}
}
printf("%d\n",a);
}
( C )
6、下列说法中不正确的是________。
( C )
7、若所用变量都已正确定义,则在以下选项中,非法的表达式是________。
( A )
8、switch语句不能用于下列哪种数据类型 ( )
( C )
9、下列if语句中,不正确的是________。
( B )
10、将三个数排序需要比较________次。
三、循环结构 (共10题,每题1分,共计10分)
( C )
1、下列标识符不是关键字的是________。
( A )
2、当输入为"hello?"时,下面程序的执行结果是________。
main()
{
char c;
c=getchar();
while(c!='?')
{
putchar(e);
break;
}
}
( D )
3、下面程序的输出结果是 ____________.
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 )
4、对于while、do…while循环结构,正确的说法是________。
( A )
5、下列程序是死循环的是________。
( B )
6、若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是________。
( C )
7、有以下程序:
#include <stdio.h>
main()
{
int i, j, m=1;
for(i=1; i<3; i++)
{
for(j=3; j>0; j--)
{
if(i*j>3)break;
m*=i*j;
}
}
printf("m=%d\n", m);
}
程序运行后的输出结果是______。
( D )
8、有以下程序:
#include<stdio.h>
main()
{
int x=8;
for(;x>0;x--)
{
if(x%3)
{
printf("%d,",x--);
continue;
}
printf("%d,",--x);
}
}
程序的运行结果是______。
( D )
9、以下程序的输出结果是______。
main()
{
int a,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=10) break;
if(b%3==1)
{
b+=3;
continue;
}
}
printf("%d\n",a);
}
( C )
10、以下叙述中错误的是________。
四、数组/指针数组 (共10题,每题1分,共计10分)
( D )
1、若已定义:int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素的引用不正确的是________。
( B )
2、以下程序调用findmax函数返回数组中的最大值
findmax(int *a,int n)
{
int *p,*s;
for(p=a,s=a; p-a<n; p++) if ( ) s=p;
return(*s);
}
main()
{
int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下划线处应填入的是________。
( B )
3、若有定义:int w[3][5]; 则以下不能正确表示该数组元素的表达式是________。
( B )
4、二维数组m[i,j]的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i范围从0到4,列下标,i的范围从0到5。m按行存储时元素m[3,5]的起始地址与m按列存储时元素( )的起始地址相同。
( C )
5、排序的重要目的是为了以后对已排序的数据元素进行________。
( B )
6、二维数组a的每个元素是由6个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若a按行先存储,元素a[8,5]的起始地址与当a按列先存储时的元素( )的起始地址相同。设每个字符占一个字节。
( D )
7、在下面的字符数组定义中,哪一个有语法错误 。
( B )
8、int a[5],*p=a; 对a数组元素地址的正确引用是________。
( B )
9、某一维数组中依次存放了数据元素12,23,30,38,41,52,54,76,85,在用折半(二分)查找方法(向上取整)查找元素54时,所经历"比较"运算的数据元素依次为________。
( C )
10、以下二维数组c 的定义形式是________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( D )
1、s1和s2已正确定义并分别指向两个字符串。若要求:当s1所指串大于s2所指串时,执行语句s; 则以下选项中正确的是________。
( D )
2、char *s="\t\\name\\address\n"; 指针 s 所指字符串的长度为: 。
( A )
3、设有定义:char*c; 以下选项中能够使字符型指针c正确指向一个字符串的是________。
( B )
4、以下关系表达式中,其值为true的是________。
( D )
5、按照c语言规定的用户标识符命名规则,不能出现在标识符中的是________。
( D )
6、以下选项中,合法的 c 语言常量是________。
( B )
7、下面选项中合法的字符常量是________。
( A )
8、以下选项中关于 c 语言常量的叙述错误的是________。
( C )
9、设 char *s="\ta\017bc"; 则指针变量s指向的字符串所占的字节数 是________。
( D )
10、下面描述正确的是________。
六、函数/函数指针 (共10题,每题1分,共计10分)
( B )
1、在下列语句中,其含义为"q是一个函数指针,该指针指向整型数据"的定义语句是________。
( C )
2、函数的值通过return语句返回,下面关于return语句的形式描述错误的是________。
( D )
3、下列说法正确的是________。
( B )
4、以下叙述中正确的是________。
( A )
5、有函数char fun(char *p) { return p; } 该函数的返回值是________。
( C )
6、当输入数据:27 63 时,下面程序的运行结果是________。
( C )
7、设有语句:printf("%2d\n",2010);
,则以下叙述正确的是________。
( A )
8、以下说法错误的是________。
( D )
9、下面说法中错误的是________。
( A )
10、下面叙述中错误的是________。
七、指针 (共10题,每题1分,共计10分)
( A )
1、若a和b均是正整型变量,正确的switch语句是________。
( D )
2、以下正确的字符串常量是________。
( D )
3、在下面的函数声明中,存在着语法错误的是________。
( B )
4、有以下程序:
main()
{
int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},ij;
for(i=0;i<4;i++)
{
for(j=0;j<=i;j++) printf("%4c",’);
for(j=______;j<4;j++) printf("%4d",num[i][j]);
printf("\n");
}
}
若要按以下形式输出数组右上半三角 1 2 3 4 6 7 8 11 12 16 则在程序下划线处应填入的是 ______ 。
( B )
5、下面程序的输出结果是______。
main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;
printf("%d\n",p[3]);
}
( D )
6、关于数组的定义与初始化,下列哪一项是错误的( )
( B )
7、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为________。
( C )
8、与数学式子3乘以x的n次方/(2x-1)对应的c语言表达式是______。
( B )
9、c语言程序中必须有的函数是________。
( B )
10、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是
八、结构体 (共10题,每题1分,共计10分)
( B )
1、有以下程序
struct s
{
int x,y;
}
data[2]={ 10,100,20,200 };
main()
{
struct s *p=data;
printf("%d\n",++(p->x));
}
程序运行后的输出结果是________。
( D )
2、有如下定义
struct person
{
char name[9] ;
int age ;
};
struct person class[10]={" johu" , 17 , "paul" , 19 , "mary" , 18 , "adam" , 16};
根据上述定义,能输出字母 m 的语句是______。
( B )
3、以下对枚举类型名的定义中正确的是______。
( C )
4、以下关于c语言数据类型的叙述中正确的是________。
( B )
5、有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是________。
struct node
{
char data;
struct node *next;
}
a,b,*p=&a,*q=&b;
( D )
6、有以下结构体说明、变量定义和赋值语句
struct std
{
char name[10];
int age;
char sex;
}
s[5],*ps;
ps=&s[0];
则以下scanf函数调用语句中错误引用结构体变量成员的是________。
( A )
7、若有下面的说明和定义:
struct test
{
int m1;
char m2;
float m3;
union uu
{
char u1[5];
int u2[2];
}
ua;
}
myaa;
则sizeof(struct test)的值是________。
( C )
8、以下scanf函数调用语句中不正确的是__。
struct pupil
{
char name[20];
int age;
int sex;
}
pup[5], *p=pup;
( A )
9、在下列程序段中,枚举变量c1,c2的值依次是________。
enum color
{
red,
yellow,
blue=4,
green,
white
}
c1,c2;
c1=yellow;
c2=white;
printf("%d,%d\n",c1,c2);
( C )
10、static struct
{
int a1;
float a2;
char a3;
}
a[10]={1,3.5,'a'};
说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存 储方式,其中被初始化的下标变量是________。
九、程序题 (共10题,每题1分,共计10分)
( D )
1、有以下程序:
#include<stdio.h>
main() {
char cl,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar();
c6=getchar();
putchar(c1);
putchar(c2);
printf("%c%c\n",c5,c6);
} 程序运行后,若从键盘输入(从第1l列开始) 123<回车> 45678<回车> 则输出结果是________。
( C )
2、有以下程序段: int i,j,m=0;
for(i=1;i<=15;i+=4) for(j=3;j<=19;j+=4)m++;
printf("%d\n",m);
程序段的输出结果是________。
( A )
3、下述程序的运行结果是________。
main()
{
char*s1="abdui";
char*s2="abdug";
int t;
t=strcmp(s1,s2);
printf("%d",t);
}
( A )
4、有下列程序:
main()
{
int x=0;
int y=0;
while(x<7 &&++v)
{
y--;
x++;
}
printf("%d,%d",y,x);
}
程序的输出结果是________。
( B )
5、有下列程序: fun(int x,int y)
{
static int m=0,i=2;
i+=++rn;
m=i x y;
return m;
}
main()
{
int j=l,m=1,k;
k=fun(j,m);
printf("%d,",k);
k=fun(j,m);
printf("%d\n",k);
}
执行后的输出结果是________。
( C )
6、下面程序的输出的是
main()
{
int x=10,y=3;
printf("%d\n",y=x/y);
}
( A )
7、若有定义语句"int i=2, j=3; ",则表达式i/j的结果是________。
( B )
8、以下程序的输出结果是________。
# define SQR (X) X*X
main( ) {
int a=16,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a);
}
( B )
9、下述程序段的运行结果是________。
main( )
{
static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int b[3][2],i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
b[i][j]=a[j][i]+a[i][j];
printf(''%5d'',b[i][j]);
}
printf(''\n'');
}
}
18
( B )
10、下列程序的输出结果是________。
main()
{
char c1=97,c2=98;
printf("%d %c",c1,c2);
}
相关标签:
- C语言
- 西北民族大学