厦门理工学院2022年计算机C语言试题
本试卷为厦门理工学院2022年计算机C语言试题,题目包括:理论基础,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,数组/指针数组,字符串/字符串指针,函数/函数指针,指针,结构体,程序题。
计算机C语言试题
一、理论基础 (共20题,每题1分,共计10分)
( B )
1、以下选项中正确的实型常量是________。
( D )
2、设a、b和c都是int型变量。且a=3,b=4,c=5,则以下的表达式中值为0的表达式是________。
( B )
3、以下选项中,合法的一组c语言数值常量是________。
( A )
4、在执行 int a[][3]={ 1,2,3,4,5,6};语句后, a[1][0] 的值是______。
( B )
5、设有以下语句char ch1,ch2, scanf("%c%c",&ch1,&ch2);
若要为变量ch1和ch2分别输入字符a和b,正确的输入形式应该是________。
( D )
6、下列选项不是c关键字的是________。
( A )
7、下面赋值语句不正确的是________。
( D )
8、下面赋值语句中正确的是________。
( B )
9、若变量已正确定义并赋值,下面符合c语言语法的表达式是________。
( A )
10、已知[x/2]补=c6h,计算机的机器字长为8位二进制编码,则[x]补= (11) 。
( B )
11、以下选项中,不能作为合法常量的是________。
( A )
12、把十六进制数baf转换成二进制数________。
( D )
13、已有定义int a= -2; 和输出语句 printf("%8x",a); 以下正确的叙述是________。
( C )
14、能正确表示"当x的取值在[l,10]或[200,210]范围内为真,否则为假的表达式是________。
( D )
15、表示关系1<=x<=100的c语言表达式为________。
( C )
16、判断闭区间*判断实数 x 属于闭区间 [a, b ] 的表达式为 ▁▁▁▁▁
( A )
17、以下说法错误的是________。
( A )
18、若定义语句: int b[ ]= { 1,2,3,4,5},*p=b ; 则表达式*p++ 的值是________。
( B )
19、C语言源程序名的后缀是
( B )
20、以下正确的说法是()。
二、控制结构 (共10题,每题1分,共计10分)
( C )
1、设a、b、e、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值是________。
( D )
2、c语言对嵌套的if语句的规定是:else总是与 配对。
( A )
3、以下程序的输出结果是
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);
}
( D )
4、下列描述正确的是________。
( C )
5、switch语句中表达式(expression)的值不允许用的类型是________。
( A )
6、有以下程序
main()
{
int i;
for(i=0;i<3;i++)
switch(i)
{
case 1: printf("%d",i);
case 2: printf("%d",i);
default: printf("%d",i);
}
}
执行后输出的结果是________。
( C )
7、下列程序的输出结果是________。
main ()
{
int a = 4, b = 5, c;
if (a < b)
{
c = a * b;
printf ("%d,%d,%d\n", b, a, c);
}
else
{
c = b / a;
printf ("%d,%d,%d\n", b, a, c);
}
}
( B )
8、以下if语句书写正确的是________。
( B )
9、c语言的switch语句中case后____
( A )
10、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",a,b);}
该程序的输出结果是( )
三、循环结构 (共10题,每题1分,共计10分)
( A )
1、要求通过while循环不断读人字符,当读入字母n时结束循环,若变量已正确定义,下列正确的程序段是________。
( A )
2、有以下程序
#include <stdio.h>
main()
{
int c;
while ((c=getchar())!='\n')
{
switch(c-'2')
{
case 0: case 1: putchar(c+4);
case 2: putchar(c+4);
break;
case 3: putchar(c+3);
default: putchar(c+2);
break;
}
}
printf("\n");
}
从第一列开始输入以下数据,<cr>代表一个回车符。 2473<cr> 程序的输出结果是________。
( C )
3、有以下程序
#include <stdio.h>
main()
{
int a[]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{
case 0: switch(a[i]%2)
{
case 0:a[i]++;
break;
case 1:a[i]--;
}
break;
case 1:a[i]=0;
}
for(i=0;i<4;i++) printf("%d ",a[i]);
printf("\n");
}
程序运行后的输出结果是________。
( A )
4、下列各循环语句中,不是死循环的是________。
( A )
5、在循环结构中,______可以使得同一组语句一次也不执行。
( C )
6、有以下程序
main()
{
int i;
for(i=1;i<=40;i++)
{
if(i++%5==0) if(++i%8==0) pfintf("%d",i);
}
printf("\n");
}
执行后的输出结果是________。
( C )
7、有以下程序:
main() {
int k=4,n=0;
for(; n<k;) {
n++;
if(n%3!=o) continue;
k--;
}
printf("%d,%d\n",k,n);
}
程序运行后的输出结果是________。
( D )
8、程序设计语言中________。
( D )
9、下面有关for循环的正确描述是________。
( B )
10、以下程序的执行结果是 main()
{ int x = 0, s = 0;
while( !x != 0 ) s += ++x;
printf( "%d ",s ); }
四、数组/指针数组 (共10题,每题1分,共计10分)
( D )
1、下列说法正确的是________。
( C )
2、下述对c语言字符数组的描述中错误的是________。
( B )
3、以下能正确定义一维数组的选项是________。
( A )
4、设有如下程序段 char s[20]= "bejing",*p; p=s; 则执行p=s; 语句后,以下叙述正确的是________。
( D )
5、在下面语句中,其含义为"p为指向含n个元素的一维数组的指针变量"的定义语句是________。
( A )
6、若在以下定义和赋值语句,则才s数组的第i行第j列(假设i,j已正确说明并赋值)元素地址的合法引用为 int s[2][3]=0,( *p)[3]; p=s;
( C )
7、下面程序的运行结果是
#include<stdio.h>
main()
{
int a=28,b;
char s[10],*p;
p=s;
do
{
b=a%16;
if(b<10) *p=b+48;
else *p=b+55;
p++;
a=a/5;
}
while(a>0);
*p='\0';
puts(s);
}
( D )
8、下列能正确定义字符串的语句是________。
( B )
9、对于int *pa[5]; 的描述,以下哪个选项是正确的
( D )
10、若char a[10]; 已正确定义,以下语句中不能从键盘上给a数组的 所有元素输入值的语句是________。
五、字符串/字符串指针 (共10题,每题1分,共计10分)
( A )
1、以下不能正确进行字符串赋初值的语句是________。
( A )
2、下列数据中属于"字符串常量"的是________。
( C )
3、下面各语句行中,能正确进行字符串赋值操作的语句是______。
( D )
4、下列字符串中不能作为c标识符使用的是________。
( B )
5、下列关于串的叙述中,哪一条是正确的( )
( B )
6、设有以下程序段: int a[5]=0,*p,*q; p=a; q=a; 则下列选项中,合法的运算是________。
( D )
7、在宏定义#define PI 3.14159中,用宏名代替一个________。
( D )
8、判断字符串a 和b 是否相等,应当使用。
( D )
9、下面描述正确的是________。
( A )
10、下面程序的功能是将字符串s 中所有的字符'c'删除。
#include "stdio.h"
main()
{
char s[80];
int i,j;
gets(s);
for (i=j=0;s[i]!='\0';i++)if (s[i]!='c') ;
s[j]='\0';
puts(s);
}
六、函数/函数指针 (共10题,每题1分,共计10分)
( C )
1、以下叙述正确的是 。
( A )
2、是构成c语言程序的基本单位。
( B )
3、以下叙述中正确的是______。
( C )
4、以下程序的输出结果是________。
#include <stdio.h>
void swap(int*a, int *b)
{
int*t;
t=a;
a=b;
b=t;
}
main()
{
int i=3, j=5, *p=&i, *q=&j;
swap(p, q);
printf(1%d %d , *p, *q);
}
( B )
5、c语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是________。
( C )
6、以下正确的说法是________。
( D )
7、vb的3种结构化程序设计的3种基本结构是________。
( C )
8、关于函数返回值类型和返回值表达式的类型的描述中,错误的是________。
( A )
9、两次运行下面的程序,如果从键盘上分别输入3和2,则输出结果是________。
#include<stdio.h>
main() {
int x;
scanf("%d",&x);
if(x++>2)printf("%d",x);
else printf("%d\n",x--);
}
( B )
10、若执行 fopen 函数时发生错误,则函数的返回值是()。
七、指针 (共10题,每题1分,共计10分)
( B )
1、设a为存放(短)整型的一维数组,如果a的首地址为p,那么a中第i 个元素的地址为( )。
( D )
2、若有说明语句:double*p,a; 则通过scanf语句正确给输入项读人数据的程序段是________。
( B )
3、若函数中有定义语句:int k; 则
( D )
4、合法的数组定义是 __________.
( B )
5、设宏定义#define PI 3.1415926,用宏名PI替换的是________。
( D )
6、下列关于函数参数的叙述中,正确的是________。
( D )
7、若有定义:char*x="abcdefghi"; 以下选项中正确运用了strcpy函数的是______。
( C )
8、要调用数学函数时,在 #include命令行中应包含____。
( B )
9、在c语言中,不允许有常量的数据类型是________。
( A )
10、以下叙述中正确的是________。
八、结构体 (共10题,每题1分,共计10分)
( C )
1、有以下程序
typedef struct
{
char name[9];
char sex;
float score [2];
} stu;
stu f(stu a) {
stu b={"zhao", 'm', 85.0, 90.0};
int i;
strcpy(a.name, b.name);
a.sex=b.sex:;
for(i=0;i<2;i++) a.score[i]=b.score[i];
return a:
}
main() {
stu c=
{
"qian", 'f', 95.0, 92.0
};
stu d=f(c);
printf("%s, %c, %2.0f, %2.0f", d.name, d.sex, d.score[0], d.score[1]); ) 程序的运行结果是________。
( A )
2、有以下程序
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);
}
程序运行后的输出结果是________。
( B )
3、有以下程序
#include <stdlib.h>
struct node
{
int num;
struct node *next;
};
main( )
{
struct node *p,*q,*r;
int sum=0;
p=(struct node *)malloc(sizeof(struct node));
q=(struct node *)malloc(sizeof(struct node));
r=(struct node *)malloc(sizeof(struct node));
p->num=1;
q->num=2;
r->num=3;
p->next=q;
q->next=r;
r->next=null;
sum+=q->next->num;
sum+=p->num;
printf("%d\n",sum);
}
执行后的输出结果是________。
( B )
4、设有如下定义:
struct sk
{
int a ;
float b ;
}
data , *p ;
若有 p=&data ;
, 则对 data 中的 a 域的正确引用是______。
( D )
5、设有以下语句
typedef struct tt
{
char c;
int a[4];
}
cin;
则下面叙述中正确的是______。
( A )
6、设有结构体的定义如下:
struct data
{
char c1;
char c2;
}
;
则sizeof(struct data)的值是________。
( B )
7、定义file *fp; 则文件指针fp 指向的是________。
( C )
8、下面说法正确的是________。
( C )
9、static struct
{
int a1;
float a2;
char a3;
}
a[10]={1,3.5,'a'};
说明数组a是地址常量,它有10个结构体型的下标变量,采用静态存 储方式,其中被初始化的下标变量是________。
( A )
10、在C语言中,下面那种数据类型不属于构造类型____
九、程序题 (共10题,每题1分,共计10分)
( D )
1、下列程序执行后的输出结果是________。
main()
{
int a[3][3],*p,i,j;
p=&a;
for(i=p;i<9;i++)p[i]=i-i+1;
printf("%d\n",a[1][2]);
}
( A )
2、有以下程序:
double f(double x);
main()
{
double a=0;
int i;
for(i=0;i<30;i+=10)a+=f((double)i);
printf("%5.0f\n",a);
}
double f(double x)
{
return x*x+1;
}
程序运行后的输出结果是________。
( B )
3、有以下程序:
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 )
4、#include <stdio.h>
main()
{
char a,b,c,d;
scanf("%c%c",&a,&b);
c=getchar();
d=getchar();
printf("%c%c%c%c\n",a,b,c,d);
}
当执行程序时,按下列方式输入数据(从第一列开始,<cr>代表回车,注意:回车是一个字符) 12<cr> 34<cr> 则输出结果是:________。
( B )
5、有以下程序
main()
{
int i,t[][3]={9,8,7,6,5,4,3,2,1};
for(i=0;i<3;i++) printf("%d",t[2-i][i]);
}
程序执行后的输出结果是________。
( D )
6、有以下程序
#include <stdio.h>
void fun(char *t, char *s)
{
while(*t!=0) t++;
while((*t++=*s++)!=0);
}
min()
{
char ss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);
printf("%s,%s﹨n",ss,aa);
}
程序的运行结果是________。
( C )
7、下面语句的输出结果是_______。 printf("%d\n",strlen("\t\"\065\xff\n"));
( C )
8、以下程序的输出结果是
main ( ) {
double d=3.2;
int x,y;
x=1.2;
y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
( C )
9、有以下的代码 int a[4]= {1,2,3,4 }; int *p=a; p++; ++p; printf("%d",*p); 的输出结果是________。
( B )
10、下面程序的功能是把316 表示为两个加数的和,使两个加数分别能被13 和11 整除。请选择填空。
#include <stdio.h>
main()
{
int i = 0, j, k;
do
{
i++;
k = 316 - 13 * i;
}
while (______);
j = k / 11;
printf("316=13*%d+11*%d", i, j);
}
相关标签:
- C语言
- 厦门理工学院
- 试题