绍兴文理学院2023年C语言程序设计专升本模拟

本试卷为绍兴文理学院2023年C语言程序设计专升本模拟,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。

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

C语言程序设计专升本模拟

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

(  A  )
1、有如下程序:
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);
}
该程序的输出结果是________。
A、a=2,b=1
B、a=1,b=1
C、a=1,b=0
D、a=2 b=2
(  D  )
2、若要定义一个具有5个元素的整型数组,以下错误的定义语句是________。
A、int a[5]={0};
B、int b[]={ 0,0,0,0,0 }
C、int c[2+3];
D、int i=5,d[i];
(  A  )
3、有以下程序
#include <stdio.h>
void f(int *p,int *q);
main()
{
int m=1,n=2,*r=&m;
f(r, &n);
printf("%d,%d",m,n);
}
void f(int *p,int *q)
{
p=p+1;
*q=*q+1;
}
程序运行后的输出结果是________。
A、1,3
B、2,3
C、1,4
D、1,2
(  B  )
4、有如下程序 int a[10]={ 1,2,3,4,5,6,7,8,9,10 },*p=a; 则数值为9的表达式是________。
A、*P+9
B、*(P+8)
C、*P+=9
D、P+8
(  B  )
5、设int*p[4]; 则标识符p是________。
A、整型数组名
B、指针数组名
C、指针函数名
D、指向整型变量的指针
(  A  )
6、下列关于continue和break的描述正确的是________。
A、continue只能用于循环体中
B、break只能用于循环体中
C、continue只是一个语句标记
D、break只能用于switch语句块中
(  B  )
7、下列关于自动类型转换的说法中,正确的是________。
A、操作数1是byte类型,操作数2是long类型,结果为byte类型
B、操作数1是byte类型,操作数2是long类型,结果为long类型
C、操作数1是long类型,操作数2是byte类型,结果是byte类型
D、操作数1是long类型,操作数2是byte类型,结果是long类型
(  A  )
8、以下结构体类型说明和变量定义中正确的是________。
A、typedef struct
int n;char c;REC;
REC t1,t2;
B、struet REC;
int n;char c;;
REC t1,t2;
C、typedef struct REC;
int n=0;char c='A';t1,t2;
REC t1,t2;
D、struct
int n;char c;REC;
(  A  )
9、有程序
#include<stdio.h>
main( ) {
int a,b,c=246;
a=c/100%9;
b=(-)& &(-1);
printf("%d,%d\n%,a,b);
}
输出结果是________。
A、2,1
B、3,2
C、4,3
D、2,-1
(  D  )
10、c语言提供的预处理功能包括条件,其基本形式为: #×××标识符 程序段1 #else 程序段2 #endif 这里的×××可以是________。
A、define或include
B、ifdef或include
C、indef或ifndef或define
D、ifdef或ifndef或if
(  C  )
11、下面程序的输出结果是______。
main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int(*p)[4]=a,i,j,k=0;
for(i=0;i<3;i++) for(j=0;j<2;j++) k=p[i][j];
printf("%d\n",k);
}
A、17
B、18
C、19
D、23
(  A  )
12、下列合法的字符型常量是________。
A、'\x13'
B、'\081'
C、'65'
D、"\n\
(  C  )
13、以下程序运行后的输出结果是
#include<stdio.h>
struct st
{
int x, y;
} data[2] = {{1, 10},{2, 20}};
main ()
{
struct st *p = data;
printf ("%d,", p->y);
printf ("%d\n", (++p)->x);
}
A、10,1
B、20,1
C、10,2
D、20,2
(  C  )
14、将用高级程序语言编写的源程序翻译成目标程序的程序称______。
A、连接程序
B、编辑程序
C、编译程序
D、诊断维护程序
(  C  )
15、已知英文字母m的ascii码值为6dh,那么ascii码值为70h的英文字母是________。
A、P
B、Q
C、p
D、j
(  B  )
16、若变量已正确定义并赋值,表达式( )不符合c语言语法。
A、5&&3
B、int(5.5)
C、+a
D、a=b=c=3
(  B  )
17、以下对局部变量描述错误的是________。
A、在函数内部定义的变量
B、在程序的全部执行过程中一直占用存储单元。
C、在main函数中定义的变量是局部变量
D、形式参数也是局部变量。
(  C  )
18、若有以下语句,则正确的描述是char a[] ="toyou";
char b[] ={′ t′ ,′o′ ,′ y′,′o′ ,′u′ };
A、a 数组和b 数组的长度相同
B、a 数组长度小于b 数组长度
C、a 数组长度大于b 数组长度
D、a 数组等价于b 数组
(  A  )
19、设有以下代码其中,循环体 a 与循环体 b 相同,以下叙述正确的是________。
A、循环体 A 与循环体 B 的执行次数相同
B、循环体 A 比循环体 B 的执行次数多一次
C、循环体 A 比循环体 B 的执行次数少一次
D、循环体 A 与循环体 B 的执行次数不确定
(  C  )
20、执行下列语句后变量x和y的值是________。 y=10; x=y++;
A、x=10,y=10
B、x=11,y=11
C、x=10,y=11
D、x=11,y=10

二、判断题 (共10题,每题2分,共计20分)

(   F  )
1、do-while循环中,根据情况可以省略while.( ) 
(   F  )
2、分号是 c 语言中语句的结束符 , 不可用作分隔符。 
(   F  )
3、c 语言标准输出操作中 ,putchar() 函数可以输出显示一个字符串。 
(   T  )
4、在定义数组之后,根据数组中元素的类型及个数,在内存中分配一段连续存储单元用于存放数组中的各个元素。 
(   F  )
5、switch语句中,每一个case的冒号后面都必须至少跟有一条语句。 
(   F  )
6、以"a"方式打开一个文件时,文件指针指向文件首。 
(   T  )
7、c语言本身并不提供输入输出语句。但可以通过输入输出函数来实现数据的输入输出。 
(   T  )
8、c语言函数默认的返回值类型是 int 。( ) 
(   T  )
9、在C语言中,逗号既可以作为运算符,也可以作为分隔符。 
(   F  )
10、输入操作称为写操作,将输入流中的信息存到内存时,使用写函数。 

三、填空题 (共5题,每题4分,共计20分)

1、语句主要是实现次数循环结构,while语句主要是实现当型循环结构。
2、在c语言中,假使x为字符变量,如果我们采用printf("格式控制",x)格式输出x,那么"格式控制"具体表示为"( )"。
3、已知char str[]="student",则strlen(str)的值为________。
4、开发一个c程序要经过编辑、编译、()和运行4个步骤、
5、在c语言中,将字符串中大写字母转换成小写字母的函数是______________。

四、程序分析题 (共4题,每题5分,共计20分)

1、请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。 ________ ( double,double);
main()
{
double x,y;
scanf("%lf%lf",&x,&y);
printf("%lf\n",max(x,y));
}
double max(double a,double b)
{
return(a>b ? a:b);
}
2、语句putchar('a'+2);的输出结果是________。
3、下面程序的运行结果是________。
main()
{
int a[5][5],i,j,n=1;
for(i=0;i<5;i++)for(j=0;j<5;j++)a[i][j]=n++;
printf("the result is:\n");
for(i=0;i<5;i++)
{
for(j=0;j<=i;j++)printf("%4d",a[i][j]);
printf("\n");
}
}
4、鸡兔同笼,头30,脚90,下面程序段计算鸡兔各有多少只。请分析程序填空。for(x=1;x<=30;x++ )
{
y=30-x;
if( 【1】________) printf("%d,%d",x,y);
}

五、编程题 (共3题,每题0分,共计50分)

1、编写程序,求s=1+(1+2)+….+(1+2+….+10)
2、输入5位同学的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序。
3、从键盘上输入一个字符串, 计算字符串里有多少个空格、小写字母、大写字母、数字。