长春工业大学2023年计算机C语言专升本

本试卷为长春工业大学2023年计算机C语言专升本,题目包括:单项选择题,填空题,编程题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,结构体,程序题。

计算机C语言专升本

一、单项选择题 (共20题,每题2分,共计40分)

(  A  )
1、定义如下变量和数组: int i; int x[3][3]={ 1,2,3,4,5,6,7,8,9 } 则下面语句的输出结果是________。 for(i=0;i<3;i++) printf("%d",x[i][2-1]);
A、2 5 8
B、1 4 7
C、3 5 7
D、3 6 9
(  D  )
2、若int i=10;
执行下列程序后,变量i的正确结果是________。 switch (i)
{
case 0: i+=1;
case 10: i+=1;
case 11: i+=1;
default: i+=1;
}
A、10
B、11
C、12
D、13
(  B  )
3、设有以下说明语句
typedef struct
{
int n;
char ch[8];
}
per;
则下面叙述中正确的是________。
A、PER 是结构体变量名
B、PER是结构体类型名
C、typedef struct 是结构体类型
D、struct 是结构体类型名
(  B  )
4、以下关于程序中函数的定义、调用和声明的叙述中,正确的是______。
A、函数的定义必须放在该函数的调用之前
B、函数的声明必须放在该函数的调用之前
C、函数的定义必须放在该函数的声明之前
D、函数的声明必须放在该函数的定义之前
(  B  )
5、以下叙述中正确的是________。
A、在C程序中,语句之间必须要用分号(;)分隔
B、在C程序中#include行和#define行不是C语句
C、程序中的注释部分可有可无,通常可以省略
D、当输入数值数据时,对于整型变量只能输入整型值:对于实型变量只能输入实型值
(  D  )
6、下列关于boolean类型的叙述中,正确的是________。
A、可以将boolean类型的数值转换为int类型的数值
B、可以将boolean类型的数值转换为字符串
C、可以将boolean类型的数值转换为char类型的数值
D、不能将boolean类型的数值转换为其他基本数据类型
(  B  )
7、若变量已正确定义为int型,要通过语句scanf("%d,%d,%d",&a,&b,&c); 给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是______。(ц代表一个空格符)
A、ЦЦЦ1,2,3<回车>
B、1Ц2Ц3<回车>
C、1,ЦЦЦ2,ЦЦЦ3<回车>
D、1,2,3<回车>
(  C  )
8、下面程序的输出结果是
#include<stdio.h>
main()
{
int a[]=1,2,3,4,5,6,7,8,9,0,*p;
p=a;
printf("%d\n",*p+9);
}
A、0
B、1
C、10
D、9
(  C  )
9、下面程序的输出结果是________。
#include<stdio.h>
main() {
char a[]='a','b','c','d','f','g',*p;
p=a;
printf("%c\n",*p+4);
}
A、a
B、b
C、e
D、f
(  A  )
10、设有如下说明:
typedef struct
{
int n;
char c;
double x;
}
std;
则以下选项:能正确定义结构体数组并赋初值的语句是________。
A、STDtt[2]={{1,'A',62},{2,'B',75}};
B、STDtt[2]={1,"A",62,2,"B",75};
C、struet tt[2]={{1,'A'},{2,'B'}};
D、struct tt[2]={{1,"A",62.5},{2,"B",75.0}};
(  C  )
11、下列各数据中,( ) 最小。
A、11011011(二进制数)
B、76(十进制数)
C、37(八进制数)
D、2A8(十六进制数)
(  D  )
12、下面程序的输出结果是_______。
main( )
{
extern int m;
m+=2;
f( );
printf("%d\n",m);
}
int m=7;
f( )
{
printf("%d&",m*m);
m+=m;
}
A、8118
B、81&81
C、18&18
D、81&18
(  D  )
13、已知字符 'a' 的ascii码为 97,执行下列语句的输出是____。
A、98, b
B、语法不合法
C、98, 99
D、98, c
(  C  )
14、使下列程序段输出"123,456,78",键盘输入数据,正确的输入是________ 。 int i,j,k scanf("%d,%3d%d",&i,&j,&k);
printf("%d,%d,%d\n",i,j,k);
A、12345678
B、123,456,78
C、123,45678
D、123,*45678
(  D  )
15、有如下程序:
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]);
}
该程序的输出结果是______。
A、不确定的值
B、4
C、3
D、0
(  D  )
16、若int类型数据占两个字节,则下列语句的输出为________。 int k=-1; printf("%d,%u\n",k,k);
A、-1,-1
B、-1,32767
C、-1,32768
D、-1,65535
(  B  )
17、以下对枚举类型名的定义中正确的是________。
A、enum a={sum,mon,tue};
B、enum a {sum=9,mon=-1,tue};
C、enum a={"sum","mon","tue"};
D、enum a {"sum","mon","tue"};
(  B  )
18、以下程序的输出结果是________。 。
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);
}
A、2,1
B、3,2
C、2,3
D、3 2
(  C  )
19、以下描述正确的是________。
A、goto 语句只能用于退出多层循环。
B、switch 语句中不能出现continue 语句。
C、只能用continue 语句来中止本次循环。
D、在循环中break 语句不能独立出现。
(  D  )
20、若二维数组a 有m 列,则计算任一元素a[i][j] 在数组中位臵的公式为(假设a[0][0] 位于数组的第一个位臵上) ________。
A、i*m+j
B、j*m+i
C、i*m+j-1
D、i*m+j+1

二、填空题 (共10题,每题2分,共计20分)

1、int *p 的含义是 ________ 。
2、局部变量的作用域是从______的位置起,到函数结束止。
3、执行下列程序段后,输出的a的值是_____________。
main( )
{
int a = 2;
switch(a)
{
case 0: a--;
break;
case 1: a++;
break;
case 2: a=a+5;
break
}
printf("%d",a);
}
4、语句主要是实现次数循环结构,while语句主要是实现当型循环结构。
5、已知a=5,则表达式"a+=a-=3"的值是________。
6、若有定义:
float x=3.5;
int z=8;
则表达式 x+z%3/4 的值为________。
7、以下程序运行结果是________。
void swap2(int *x,int *y)
{
int t;
t=*x;
*x=*y;
*y=t;
}
void main( )
{
int a=100,b=200;
swap2(&a,&b);
printf("%d,%d",a,b);
}
8、在c 语言中,输入操作是由库函数____完成的,输出操作是由库函数____完成的。
9、有1020 个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,问几天以后能卖完?请分析程序填空。
#include <stdio.h>
main()
{
int day, x1, x2;
day = 0;
x1 = 1020;
while (____1____)
{
x2 = ____2____;
x1 = x2;
day++;
}
printf("day=%d\n", day);
}
10、在c 语言中,二维数组在内存中的存放顺序是________。

三、编程题 (共3题,每题0分,共计40分)

1、编写程序:求两个正整数m,n之间的非素数之和(包含m和n)
例如: 如果数组m=2,n=20,则程序的输出应为:sum is: 132()
2、编写程序:使用结构体,创建一个长度为n的链表。
3、编程判断输入的字符串是否为“回文”。所谓“回文”是指顺读和倒读都一样,如abcba。