佳木斯大学历年C语言程序设计
本试卷为佳木斯大学历年C语言程序设计,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言程序设计
一、理论基础 (共20题,每题1分,共计10分)
( A )
1、下列合法的声明语句是________。
( D )
2、若x=5,y=3 则y*=x+5; y的值为________.
( A )
3、若有定义语句:"char se10]="1234567\0\0"; ",则strlen(s)的值是________。
( D )
4、若 d 为 double 型变量 , 则表达式 d=1,d+5,d++ 的值是 _________.
( C )
5、在c语言中,以下一组运算符中,优先级最高的运算符是______。
( B )
6、下列可用于c语言用户标识符的一组是________。
( B )
7、以下叙述正确的是________。
( A )
8、下列哪个赋值语句是不正确的
( C )
9、设a=12,a定义为整型变量。表达式a+=a-=a*=a的值为______。
( C )
10、下列语句序列执行后,i的值是________。 int i=10; do { i-=2; } while(i>6);
( B )
11、与十六进制数ab等值的二进数是________。
( B )
12、微处理器按其字长可以分为________。
( B )
13、已知int a[3][2]=(3,2,1); 则表达式"a[0][0]/a[0][1]/a[0][2]"的值是________。
( D )
14、以下合法的常量是________。
( C )
15、c 语言的编译系统对宏定义的处理是________。
( B )
16、软件设计中模块划分应遵循的准则是________。
( C )
17、以下不正确的if 语句形式是________。
( A )
18、一个变量的指针就是________。
( C )
19、不能正确表示a*b/c*d 的c 语言表达式是________。
( C )
20、以下描述中,正确的是()。
二、控制结构 (共10题,每题1分,共计10分)
( C )
1、在嵌套使用if语句时,c语言规定else总是________。
( A )
2、有如下程序:
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);
}
该程序的输出结果是________。
( B )
3、c语言对嵌套if语句的规定是:else总是与( ) 。
( C )
4、有以下程序
main( )
{
char k;
int i;
for(i=1;i<3;i++)
{
scanf("%c",&k);
switch(k)
{
case ‘0’: printf("another\n");
case ‘1’: printf("number\n");
}
}
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是________。
( C )
5、若a的值为3时,下列程序段被执行后,c的值是________。 int c = 1; if (a>0) if (a>3) c = 2; else c = 3; else c = 4;
( A )
6、if语句的基本形式为:if(表达式)语句,其中"表达式"________。
( A )
7、有如下程序
main()
{
int x=1,a=5,b=5;
switch(x)
{
case 0: b--;
case 1: a--;
case 2: a--;
b--;
}
printf("a=%d,b=%d\n",a,b);
}
该程序的输出结果是______。
( A )
8、c语言的if语句中,用作判断的表达式为____
( A )
9、c 语言中逻辑表达式的值为________。
( D )
10、选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达 式,但其值只能被判断为“真”或“假”。哪个数作为逻辑“假”值()。
三、循环结构 (共10题,每题1分,共计10分)
( D )
1、以下叙述中正确的是________。
( B )
2、下列程序的运行结果是________。
void main()
{
int s=0,k;
for(k=7;k>1;k--)
{
switch(k)
{
case 1: case 4: case 7: s++: break;
case 2: case 3: case 6:break;
case 0: case 5: s+=2: break;
}
}
printf("s=%d",s);
}
( 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);
}
程序执行后输出结果是________。
( B )
4、下述 for 循环语句 。
int i,k;
for(i=0,k=-1;k=1;i++,k++)
printf("* * * *");
( C )
5、下面程序段中 , 循环体的执行次数是 ___________.
int a=10,b=0;
do
{
b+=2;
a-=2+b;
}
while(a>=0);
( D )
6、有以下程序:
#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);
}
程序的输出结果是________。
( C )
7、有以下程序
main() {
int i;
for(i=0;i<3;i++)
switch(i) {
case 0: prinft("%d",i);
case 2: prinft("%d",i);
default:prinft("%d",i);
}
}
程序运行后的输出结果是________。
( B )
8、有以下程序
main()
{
int y=10;
while(y--);
printf("y=%d\n",y);
}
程序执行后的输出结果是______。
( A )
9、下面说法正确的是________。
( B )
10、以下程序的执行结果是 main()
{ int x = 0, s = 0;
while( !x != 0 ) s += ++x;
printf( "%d ",s ); }
四、数组/指针数组 (共10题,每题1分,共计10分)
( D )
1、以下对一维数组a的正确说明是________。
( D )
2、以下函数返回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 )
3、在数制的转换中,正确的叙述是______。
( C )
4、下列哪个语句是声明一个含有10个string对象的数组 ( )
( D )
5、下述程序的输出结果是________。
#include<stdio.h>
void main()
{
int a[5]={1,2,3,4,5};
int*p=a,**q=&p;
printf("%d",*(p++));
printf("%d",**q);
}
( A )
6、设有数组定义:char array[]="china"; 则数组array所占的空间为________。
( A )
7、以下叙述中正确的是______。
( A )
8、以下选项中,不能正确赋值的是 ______。
( B )
9、int (*p)[6]; 它的含义为________。
( D )
10、若有以下的定义:int t[3][2]; 能正确表示t数组元素地址的表达式是________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( B )
1、下列数据中为字符串常量的是________。
( A )
2、以下不能正确进行字符串赋初值的语句是________。
( A )
3、下列四组字符串中都可以用作c语言程序中的标识符的是________。
( B )
4、设宏定义#define PI 3.1415926,用宏名PI替换的是________。
( A )
5、下列合法的字符型常量是________。
( C )
6、顺序执行下列程序语句后,则b的值是 string a="hello"; string b=a.substring(0,2);
( B )
7、宏定义用于将一个标识符定义为一个
( C )
8、若有定义: char str1[10] = "aaaaaaa"; char str2[10] = "bbbbb"; 将字符串str2连接到str1,则下列描述中正确的是________。
( A )
9、下面不正确的字符串常量是________。
( B )
10、字符串指针变量中存入的是________。
六、函数/函数指针 (共10题,每题1分,共计10分)
( C )
1、c语言规定,函数返回值的类型是由( )决定的。
( D )
2、若有以下函数首部: int fun(double x[10],int *n) 则下面针对此函数的函数声明语句中正确的是________。
( C )
3、若有以下调用语句,则不正确的fun函数的首部是________。
main() {
…
int a[50],n;
…
fun(n, &a[9]);
…
}
( C )
4、c语言中,可用于说明函数的是________。
( A )
5、以下正确的函数头定义形式是________。
( C )
6、下列叙述中错误的是________。
( D )
7、以下叙述不正确的是_____。
( C )
8、以下程序中函数f的功能是将n个字符串,按由大到小的顺序进行排序。
#include <string.h>
void f(char p[][10],int n)
{
char t[20];
int i,j;
for(i=0;i<n-1;i++)
for (j=i+1;j<n;j++)if(strcmp(p[i],p[j])<0)
{
strcpy(t,p[i]);
strcpy(p[i],p[j]);
strcpy(p[j],t);
}
}
main()
{
char p[][10]={"abc","aabdfg","abbd","dcdbe","cd"};
f(p,5);
printf("%d\n",strlen(p[0]));
}
程序运行后的输出结果是______。
( A )
9、在c语言中,当内部函数与外部函数重名时,下列描述中正确的是________。
( C )
10、以下叙述中不正确的是________。
七、指针 (共10题,每题1分,共计10分)
( C )
1、设有定义:char s[81]; int i=0; 以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是________。
( C )
2、下面各语句行中,能正确进行字符串赋值操作的语句是______。
( B )
3、若有说明int a[3][4]; 则a数组元素的非法引用是________。
( D )
4、已知3个字符为:a、z和8,按它们的ascii码值升序排序,结果是________。
( C )
5、有以下程序
int add(int a,int b)
{
return(a+b);
}
main()
{
int k,(*f)(),a=5,b=10;
f=add;
…
}
则以下函数调用语句错误的是______。
( C )
6、有定义语句:int*p[4]; 以下选项中与此语句等价的是________。
( A )
7、有函数char fun(char *p) { return p; } 该函数的返回值是________。
( C )
8、在c语言中,( )
( C )
9、假定double类型变量占用8个字节,且数组定义如下,则数组length在内存中所占字节数是________。double length [10];
( B )
10、以下能正确定义一维数组的选项是________。
八、结构体 (共10题,每题1分,共计10分)
( A )
1、有以下程序
struct stu
{
char name[10];
int num;
};
void f(char *name, int num)
{
struct stu s[2]={{"sundan",20044},{"penghua",20045}};
num = s[0].num;
strcpy(name, s[0].name);
}
main()
{
struct stu s[2]={{"yangsan",20041},{"lisiguo",20042}},*p;
p=&s[1];
f(p->name, p->num);
printf("%s %d\n", p->name, p->num);
}
程序运行后的输出结果是________。
( A )
2、有以下程序
#include <studio.h>
#include <string.h>
struct a
{
int a;
char b[10];
double c;
};
void f(struct a t);
main()
{
struct a a={1001,"zhangda",1098.0};
f(a);
pringt("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
void f(struct a t)
{
t.a=1002;
strcpy(t.b,"changrong");
t.c=1202.0;
}
程序运行后的输出结果是________。
( D )
3、有以下定义和语句
struct workers
{
int num;
char name[20];
char c;
srruct
{
int day;
int month;
int year;
}
s;
};
struct workers w,*pw;
pw=&w 能给w 中year 成员赋1980 的语句是________。
( C )
4、若定义下列结构体,结构体变量p的出生年份赋值正确的语句是________。
struct st
{
int x;
int y;
int z;
}
struct worker
{
char name[20];
char sex;
struct st birth;
} p;
( A )
5、有以下程序
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]);
}
程序运行后的输出结果是________。
( B )
6、下列程序的输出结果是________。
#include <stdio.h>
struct abc
{
int a, b, c, s;
} ;
main ()
{
struct abc s[2] = { {1, 2, 3}, {4, 5, 6} };
int t;
t = s[0].a + s[1].b;
printf ("%d\n", t);
}
( D )
7、若有下面的说明和定义,则sizeof(struct aa)的值是______。
struct aa
{
int r1;
double r2;
float r3;
}
maya;
( B )
8、以下对枚举类型名的定义中正确的是________。
( A )
9、在下列程序段中,枚举变量c1,c2的值依次是________。
enum color
{
red,
yellow,
blue=4,
green,
white
}
c1,c2;
c1=yellow;
c2=white;
printf("%d,%d\n",c1,c2);
( B )
10、相同结构体类型的变量之间,可以________。
九、程序题 (共10题,每题1分,共计10分)
( B )
1、若有以下程序段: int a=0,b=0,c=0; c=(a-=a-5),(a=b,b+3); printf("%d,%d,%a",a,b,c);执行后的输出结果是________。
( C )
2、下列程序的输出结果是________。
int a[5]= { 2,4,6,8,10 } ,*p,**k;
p=a;
k=&p;
printf("%d",*(p++));
printf("%d\n",**k);
( D )
3、有以下程序
#include <stdio.h>
main()
{
int a=1,b=0;
printf("%d,",b=a+b);
printf("%d",a=2*b);
}
程序运行后的输出结果是________。
( B )
4、有以下程序
main()
{
int x[8]={8,7,6,5,0,0},*s;
s=x+3;
printf("%d\n",s[2]);
}
执行后输出结果是________。
( D )
5、有如下程序
main( )
{
int a[3][3]={{1,2,3},{3,4,5},{5,6,7}}, i,j,s = 0;
for(i=0; i<3; i++)for(j=0; j<=i; j++) s+=a[i][j]];
printf("%d\n",s);
}
该程序的输出结果是______。
( B )
6、下面程序的输出结果是______。
main( )
{
int b[]={1,2,3,4,5,6,7,8,9,0},*q;
q=b;
printf("%d\n",*(q+0));
}
( B )
7、以下程序的输出结果是______。
main()
{
int i, k, a[10], p[3];
k=5;
for(i=0;i<10;i++) a[i]=i;
for(i=0;i<3;i++) p[i]=a[i+1];
for(i=0;i<3;i++) k+=p[i];
printf("%d\n",k);
}
( B )
8、下列程序段的执行结果是输出________。
x=3;
do {
printf("%2d",x--);
} while(!x);
( C )
9、若有以下程序片段: char str[ ]="ab\n\012\\\"";
printf("%d",strlen(str));
上面程序片段的输出结果是________。
( B )
10、下列程序运行结果为:
#define P 3
#define S(a) P*a*a
main()
{int ar;
ar=S(3+5);
printf("\n%d",ar);
}
相关标签:
- C语言
- 佳木斯大学