佛山科学技术学院2022年C语言
本试卷为佛山科学技术学院2022年C语言,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
C语言
一、理论基础 (共20题,每题1分,共计10分)
( A )
1、下列运算符中优先级最高的算符是________。
( D )
2、设有语句int a=3; 则执行了语句a+=a-=a*a; 后,变量a的值是________。
( D )
3、表达式3.6-5/2+1.2+5%2的值是________。
( C )
4、以下选项中可作为c语言合法整数的是________。
( B )
5、下列字符中,ascii码值最小的是________。
( A )
6、下列内容是异常的含义的是________。
( D )
7、设int b=2; 表达式(b<<2)/(b>>1)的值是________。
( B )
8、下列关于c语言用户标识符的叙述中正确的是________。
( A )
9、下列属于条件运算符的是________。
( C )
10、以下选项中正确的定义语句是______。
( B )
11、下列叙述中正确的是________。
( B )
12、若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是________。
( A )
13、设变量 m 为 float 类型,变量 n 为 int 类型,则以下能实现将 m 中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是________。
( D )
14、在c语言程序中,注释部分从哪开始,到哪结束?()
( B )
15、设ch是char型变量,其值为c,且有下面的表达式ch=(ch>='a'&&ch<='z')?(ch+32):ch上面表达式的值是______。
( C )
16、空语句仅有一个 ▁▁▁▁▁ 的语句称为空语句。
( B )
17、以下选项中合法的用户标识符是______。
( C )
18、下列关于指针变量的描述,不正确的是________。
( A )
19、下列两条语句" int c1=1,c2=2,c3; c3=1.0/c2*c1; "执行后变量c3的值是________。
( C )
20、c 语言提供的基本数据类型关键字是________。
二、控制结构 (共10题,每题1分,共计10分)
( D )
1、当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是________。
( A )
2、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是________。
( C )
3、设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句: if(a<b) if(c==d)y=0; else y=1; 该语句所表示的含义是________。
( C )
4、关于结构化程序设计原则和方法的描述错误的是________。
( C )
5、当从键盘上输入字符"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 )
6、有以下定义语句: double a,b; int w; long c; 若各变量已正确赋值,则下列选项中正确的表达式是________。
( B )
7、下列表达式为关系表达式的为_________。(其中a为一整型变量)
( A )
8、若x和y是程序中的两个整型变量,则下列if语句中正确的是________。
( B )
9、以下叙述中正确的是________。
( D )
10、在c语言中,if语句后的一对原括号中,用以决定分支的流程的表 达式________。
三、循环结构 (共10题,每题1分,共计10分)
( A )
1、下列语句中,可以作为无限循环语句的是________。
( A )
2、下列关于宏操作的叙述错误的是________。
( D )
3、下列叙述中正确的是________。
( B )
4、t为int类型,进入下面的循环之前,t的值为0。while(t=1) {...}则以下叙述中,正确的是________。
( D )
5、有以下程序:
#include<stdio.h>
main()
{
int x=8;
for(;x>0;x--)
{
if(x%3)
{
printf("%d,",x--);
continue;
}
printf("%d,",--x);
}
}
程序的运行结果是______。
( D )
6、若有int x=1;
,执行下列程序段后,变量x的正确结果是________。
switch (x*10)
{
case 9: x+=1;
break;
case 10: x+=1;
case 11: x+=1;
default: x+=1;
}
( D )
7、下列语句哪些不属于循环语句?
( B )
8、设有声明语句:int a=1,b=0;
则执行以下语句后输出()
switch (a)
{
case 1:switch (b)
{
case 0: printf(""**0**"");
break;
case 1: printf(""**1**"");
break;
}
case 2: printf(""**2**"");
break;
}
( D )
9、下列程序的输出为________。
main()
{
int y=10;
while(y--);
printf("y=%d\n",y);
}
( B )
10、以下程序的输出结果是________。 。
main()
{
int x=1,y=0,a=1,b=1;
switch(x)
{
case 1:switch(y)
{
case 0:a++;
break;
case 1:b++;
break;
}
case 2:a++;
b++;
break;
}
printf("%d,%d\n",a,b);
}
四、数组/指针数组 (共10题,每题1分,共计10分)
( A )
1、在c语言中对于实型数组,其每个数组元素的类型是________。
( C )
2、以下对二维数组a的正确说明是________。
( B )
3、已知char x[]="hello", y[]={ 'h','e','a','b','e' }; 则关于两个数组长度的正确描述是________。
( C )
4、以下一维数组 a 的正确定义是 __________ .
( C )
5、若函数调用时用数组名作为函数参数,以下叙述中,不正确的是 __________.
( B )
6、以下能对二维数组a进行正确初始化的语句是________。
( A )
7、若定义static int a[2][2]={1,2,3,4 },则a数组的各数组元素分别为______。
( C )
8、假定a为一个整型数组名,则元素a[4]的字节地址为
( A )
9、以下叙述中正确的是______。
( B )
10、数组定义为 int a[3][2]={ 1, 2, 3, 4, 5, 6 },数组元素( )的值为6。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( B )
1、c语言中,下列不合法的字符串常量是________。
( D )
2、以下关于字符串的叙述中正确的是________。
( A )
3、下列字符串是标识符的是________。
( D )
4、以下正确的字符串常量是________。
( B )
5、设宏定义#define PI 3.1415926,用宏名PI替换的是________。
( A )
6、下列哪个是c语言的有效标识符
( C )
7、以下能将字符串,you are luck!正确读入的语句组是________。
( C )
8、下列表达式中,类型可以作为int型的是________。
( A )
9、下面不能正确进行字符串赋值操作的语句是________。
( C )
10、判断两个字符串是否相等,正确的表达方式是
六、函数/函数指针 (共10题,每题1分,共计10分)
( C )
1、设有说明double(*p1)[n]; 其中标识符p1是________。
( B )
2、下列关于模板形参的描述中,错误的是________。
( A )
3、以下程序运行后的输出结果是
#include <stdio.h>
void fun(int a,int b) {
int t;
t=a;
a=b;
b=t;
}
main( ) {
int c[10]=1,2,3,4,5,6,7,8,9,0,i;
for(i=0;i<10;i+=2) fun(c[i],c[i+1]);
for(i=0;i<10;i++) prinff("%d,",c[i]);
printf("\n");
}
( B )
4、有以下程序: 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 )
5、以下程序的输出结果是 long fun(int n) {
long s;
if(n==1||n==2)s=2;
else s=n-fun(n-1);
return s;
}
main() {
printf("%ld\n",fun(3));
}
( B )
6、设c1,c2均是char类型变量,则不正确的函数调用为______。
( D )
7、若有定义:char*x="abcdefghi"; 以下选项中正确运用了strcpy函数的是______。
( A )
8、对于以下递归函数f,调用f(4),其返回值为()
int f(int n)
{
if (n) return f(n - 1) + n;
else return n;
}
( C )
9、对c语言程序,以下说法正确的是________。
( C )
10、c语言规定,在一个源程序中,main函数的位置________。
七、指针 (共10题,每题1分,共计10分)
( C )
1、以下正确的函数定义形式是________.
( B )
2、有以下程序
main()
{
char p[]={'a', 'b', 'c'} , q[10]={'a', 'b', 'c'} ;
printf("%d %d\n", strlen(p), strlen(q));
}
以下叙述中正确的是________。
( D )
3、设有宏定义:#define IsDIV(k,n) ((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&& IsDIV(m,7)为真时所要表达的是________。
( C )
4、下面正确的函数定义形式为________。
( B )
5、下列关于数组的描述正确的是________。
( A )
6、有以下程序
#include<string.h>
main()
{
char p[]={'a','b','c'},q[10]={'a','b','c'};
printf("%d%d\n",strlen(p),strlen(q));
}
以下叙述中正确的是________。
( D )
7、已定义以下函数int fun( int *p)
{
return *p;
}
则fun函数返回值足
( A )
8、设变量定义为"int x, *p=&x; ",则&(*p)相当于
( A )
9、下列数组说明中,正确的是()。
( A )
10、以下叙述中正确的是()。
八、结构体 (共10题,每题1分,共计10分)
( B )
1、若有以下语句:
typedef struct s
{
int g;
char h;
} t;
以下叙述中正确的是________。
( B )
2、c语言中的基本数据类型是________。
( A )
3、下列选项中不属于c语言的数据类型是________。
( B )
4、递归算法的执行过程一般来说可先后分成______和______两个阶段。
( 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]);
}
程序运行后的输出结果是________。
( D )
6、有以下程序:
#include <stdio.h>
struct s
{
int a, b;
}
data[2]= {10, 100, 20, 200 };
main()
{
struct s p=data[1];
printf("%d\n", ++(p.a));
}
程序运行后的输出结果是______。
( D )
7、若有下面的说明和定义,则sizeof(struct aa)的值是______。
struct aa
{
int r1;
double r2;
float r3;
}
maya;
( B )
8、下面赋值表达式不正确的是__________________.
struct student
{
long num;
char name[20];
} st1, st2={101, "tom"}, *p=&st1;
( A )
9、以下关于逻辑运算符两侧运算对象的叙述中正确的是________。
( 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分)
( A )
1、有以下程序
#include <stdio.h>
main()
{
int a=0,b=0,c=0;
c=(a-=a-5);
(a=b,b+=4);
printf("%d, %d, %d\n",a,b,c);
}
程序运行后输出的结果是________。
( B )
2、有以下程序:
main()
{
int x=0,y=5,z=3;
while(z-->0&&++x<5)y=y-l;
printf("%d,%d,%d\n",x,y,z);
}
程序执行后的输出结果是________。
( C )
3、有以下程序:
main()
{
int x,i;
for(i=l;i<=50;i++)
{
x=i: if(x%2=0) if(x%3=0) if(x%7=0) printf("%d,i)";
}
}
输出结果是________。
( B )
4、有以下程序 #include <stdio.h>
main() {
int a=1,b=2;
while(a<6){
b+=a;
a+=2;
b%=10;
}
printf("%d,%d\n",a,b);
} 程序运行后的输出结果是________。
( A )
5、有以下程序
#include <stdio.h>
main()
{
int a1,a2;
char c1,c2;
scanf("%d%c%c",&a1,&c1,&a2,&c2);
printf(%d,%c,%d,%c,a1,c1,a2,c2);
}
若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出的结果是:12,a,34,b则正确的输入格式是(以下︿代表空格,<cr>代表回车)
( A )
6、已知字母a的ascii码为十进制数65,下面程序的输出结果是________。
main( ) {
char ch1,ch2;
ch1=a+5-3;
ch2=a+6-3;
printf("%d,%c\n",ch1,ch2);
}
( B )
7、以下程序的输出结果是______。
main()
{
int a=5,b=4,c=6,d;
printf("%d\n",d=a>c?(a>c?a:c):(b));
}
( D )
8、有如下程序:
main()
{
int n[5] = {1,2,3},i,k = 2;
for(i = 0; i <= k; i++)n[i] = n[i] + 1;
printf("%d\n",n[i]);
}
该程序的输出结果是______。
( C )
9、执行以下程序后的输出结果是________。
int w=3,z=7,x=10;
printf("%d",x>10?x+100:x-10);
printf("%d",w++||z++);
printf("%d",!w>z);
printf("%d",w&&z);
( B )
10、下面程序的运行结果是________。
fun(int p)
{
int k=1;
static t=2;
k=k+1;
t=t+1;
return(p*k*t);
}
main( )
{
int x=4;
fun(x);
printf(''%d\n'',fun(x));
}
相关标签:
- C语言
- 佛山科学技术学院