搜索
您的当前位置:首页正文

湖北经济学院2021年《C语言程序设计》专升本精选模拟(七)

来源:哗拓教育
----------------------------------------- 湖北经济学院2021年《C语言程序设计》专升本精选模拟(七)考试方式:【闭卷、笔试】总 分:【150分】题号一二三考试时间:【120分钟】出 题 人:【栾波】总分 :号证考准 密 :名姓 ----------------------------------------- 封 :号证份身 ----------------------------------------- 线 :级班业专 -----------------------------------------得分答案一律写在答题纸上,写在试卷上无效试卷不得带出考场考试中途不能无端离场得分评卷人一、单项选择题 (共20题,每题2分,共计( )1、设有字符串a=\"he has 钱!\A、9B、10C、11D、8( )2、若有以下说明和定义: union dt { int a; char b; double c;} data;以下叙述中错误的是________。A、data的每个成员起始地址都相同B、变量data所占内存字节数与成员c所占字节数相等C、程序段:data.a=5; printf(\"%f\\n\D、data可以作为函数的实参( )3、以下程序的输出结果是 _______ 。 main() { int x=1,y=0,a=0,b=0; switch(x) { case 1:switch(y) { case 0:a++; break; case 1:b++; break; } case 2:a++;40分)第1/11页 b++; break; }

printf(\"%d,%d\\n\ }A、2,1B、2,2C、1,1D、2 1

( )4、下列程序的运行结果是________。

#include<stdio.h> void sub(int*s,int*y) {

static int m=4: *y=s[m]; m--;}

void main() {

int a[]={1,2,3,4,5},k,x; printf(\"\\n\"); for(k=0;k<=4;k++) {

sub(a,&x);

printf(\"%d,\ }}

A、5,4,3,2,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,

( )5、以下程序的输出结果是________。

main() {

char ch[3][4]= { \"123\ int i;

for(i==-0; i<3; i++) p[i]=ch[i];

for(i=0; i<3; i++) printf(\"%s\}

A、123456780B、123 456 780C、12345678D、147

( )6、下列说法中不正确的是________。

A、switch语句功能可以由if-else语句实现

B、若用于比较的数据类型为double,则不能用switch语句来实现

第2/11页

C、if-else语句的执行效率总是比switch语句高

D、case子句可以有多个语句,并且不需要用大括号””括起来

( )7、以下能正确定义二维数组的是______。

A、int a[][3]={1,2,3,4,5,6};B、int a[][3]={2*3};C、int a[][3]={};

D、int a[2][3]={{1},{2},{3,4}};

( )8、在标准ascⅱ编码表中,数字码、小写英文字母和大写英文字母的前后次序是________。

A、数字、小写英文字母、大写英文亨母B、小写英文字母、大写英文字母、数字C、数字、大写英文字母、小写英文字母D、大写英文字母、小写英文字母、数字

( )9、下列关于boolean类型的叙述中,正确的是________。

A、可以将boolean类型的数值转换为int类型的数值B、可以将boolean类型的数值转换为字符串

C、可以将boolean类型的数值转换为char类型的数值D、不能将boolean类型的数值转换为其他基本数据类型

( )10、有以下程序:

#include<stdio.h> union pw {

int i;

char ch[2];}a;

main() {

a.ch[0]=13; a.ch[1]=0;

printf(\"%d\\n\}

程序的输出结果是________。

A、13B、14C、208D、209

( )11、在下列关于c语言的局部变量和全局变量所采取的存储类别的叙述中,错误的一条是

________。

A、对于动态局部变量来说,一旦离开函数,其值就消失B、对于静态局部变量来说,离开函数,其值仍保留C、对于寄存器变量来说,一旦离开函数,其值就消失D、静态外部变量既可在本文件中引用,又可在其他文件中引用

( )12、按照标识符的要求,下列选项中,( )符号不能组成标识符。

第3/11页

A、连接符B、下划线C、大小写字母D、数字字符

( )13、若已定义x为int型变量,说明指针变量p的正确语句是________。

A、int p=&x;B、int * p=x;C、int * p=&x;D、* p=* x;

( )14、设有以下语句:

typedef struct tt { char c; int a[4]; } cin; 则下面叙述中正确的是________。

A、可以用TT定义结构体变量B、TT是struct类型的变量C、可以用CIN定义结构体变量D、CIN是struct TT类型的变量

( )15、有下列程序:

main() {

int x=0;

int y=0;

while(x<7 &&++v) {

y--; x++; }

printf(\"%d,%d\}

程序的输出结果是________。A、0,7B、7,7C、0,6D、1,6

( )16、有如下程序

#define N 3#define M N+2

#define NUM 2*M+1main() {

int i;

for(i=1;i<=NUM;i++)printf(\"%d\\n\}

该程序中的for循环执行的次数是______。A、5B、9

第4/11页

C、7D、8

( )17、有以下程序

#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;

}

程序运行后的输出结果是________。A、1001,ZhangDa,1098.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1002,ZhangDa,1202.0

( )18、下列说法正确的是________。

A、在C程序中,main()函数必须位于程序的最前面B、在C程序中,一条语句只能写一行而不能写多行C、C程序是以行为基本单位的D、C语言本身没有输入输出语句

( )19、有以下程序

main()

{

char s[]=\"\\n123\\\\\";

printf(\"%d,%d\\n\}

执行后输出结果是________。A、赋初值的字符串有错B、6,7C、5,6D、6,6

( )20、定义file *fp; 则文件指针fp 指向的是________。

第5/11页

A、文件在磁盘上的读写位置B、文件在缓冲区上的读写位置C、整个磁盘文件D、文件类型结构体得分

评卷人

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

21、共用体类型变量的定义关键字是________。

22、下列给定程序中函数fun()的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:l,1,2,3,5,8,13,21,… 例如,若给n输入7,则该项的斐波拉契数值为13。 请改正程序中的错误,使它能得出正确结果。 注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构! 试题程序: long fun(int g) ( switch(g); {

case 0:

return 0;

case 1:case 2: return 1; }

return(fun(g-1)+fun(g-2)); ) void main() {

long fib;

int n;

printf(\"input n:\"); scanf(\"%d\

printf(\"n=%d\\n\ fib=fun(n);

printf(\"fib=%d\\nkn\}

23、下列程序段的运行结果是_____。main( ) {

int n,s=0 ;

for(n=1; n<=5; n++) {

if(n%2==0) continue; s=s+n; }

printf(\"%d\\n\}

24、在c语言中,如果采用printf函数将整个字符串一次输出,那么对应的格式控制符为\"( )\"。 25、下列程序段的运行结果是_____。char a='m' ,*p ;p=&a;

printf(\"%c\

26、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。

第6/11页

void main( ){

float x[1000], sum=0.0, ave, a; int n=0, i;

printf(\"enter mark:\\n\"); scanf(\"%f\

while(a>=0.0&& n<1000) {

sum+ ____1_____; x[n]= ____2_____ ; n++;

scanf(\"%f\ }

ave= ____3_____ ; printf(\"output:\\n\"); printf(\"ave=%f\\n\ for (i=0;i<n;i++)

if ____4_____printf (\"%f\\n\}

27、在c语言中,假使x为长整型变量,如果我们采用printf(\"格式控制\控制\"具体表示为\"( )\"。

28、在c语言中,在调用一个函数的过程中又出现__________或间接地调用该函数本身,这一现象称为函数的递归调用。

29、以下程序的运行结果是________。main() {

int a = 2, b = 3, c; c = a;

if (a > b) c = 1;

else if (a == b) c = 0; else c = -1;

printf(\"%d\\n\}

30、下列程序段的运行结果是_____。struct student{

long num;

char name[20]; char sex; float score;

}

a={1021103,\"jiang ping\main( ) {

printf(\"%ld\\n\}

得分

评卷人

三、简答题 (共3题,每题分值不等,共计40分)

第7/11页

31、编写程序:查找n在数组a中最后一次出现的位置

例如:如果a数组中的元素为:1,5,2,5,6,8,7,4,3,0,当n=5时,程序的输出结果为:5 is no.3 当n=10时,程序的输出结果应为:10 not found (本题10分)

32、编写程序:从键盘输入 n (n<10)个学生的学号(学号为4位的整数,从1000开始)、成绩并存入结构数组中,查找并输出成绩最高的学生信息。输入输出示例:括号内为说明,无需输入输出输入样例:3 (n=3)1000 851001 901002 75

输出样例:

1001 90 (本题14分)

33、编写程序:利用结构体类型,编程计算一名同学5门课的平均分。 (本题16分)

第8/11页

参考答案

一、单项选择题1、B2、D

【解析】选项A),共用体的每个成员的起始地址都相同;选项B),共用体变量所占的内存长度等于最长的成员的长度;选项C),因为每个成员的起始地址相同,所以整型数5以浮点型输出时为5.000000;选项D),C语言规定,不能把共用体变量作为函数的参数。3、A4、A

【解析】本题考查的是静态变量以及函数的实参与形参之间的地址值传递。sub()函数数中定义的变量m是一个静态变量,系统可为其分配固定的存储空间,重复使用时,变量的值保留;所以当mam()函数中的for循环中语句

sub(a,&x);执行时,sub函数中m的值依次是4,3,2,1,0;因为变量x进行的是地址值传递,所以最后依次输出的是数组a的元素a[4]、a[3]、a[2]、a[1]、a[0]。5、B6、C

【解析】并不是所有的if-else语句的执行效率都高于switch语句,在一些特定的情况下, switch语句可以比较简炼,同时容易阅读,因此,选项C的描述是错误的。7、A8、C

【解析】在标准ASCⅡ码表中,数字码、小写英文字母和大写英文字母的前后次序是:数字、大写英文字母、小写英文字母。9、D10、A

【解析】在本题中,首先定义了一个共用体pw,其中有两个域:整型变量i和字符数组ch。因为共用体中的域是共享内存空间的,数组元素由低到高存储:ch[0]在低字节;ch[1]在高字节;整型变量i占两个字节,高位与ch[1]共用存储空间,低位与ch[0]共用存储空间,而高位 ch[1]的值为0,所以输出的成员变量i的值就是ch[0]的值13。11、B12、A

【解析】本题考核的标识符定义。规定标识符由大小写字母、数字字符 (0~9)和下划线组成,并且以字母或下划线开始,后跟0个或多个字母,数字字符或下划线。由此可知A) 选项中的连接符不能用于组成标识符。13、C14、C

【解析】将题目中的定义语句去掉前面的typedef和后面的CIN(分号保留),就是一条完整的结构体定义语句,其中struct是说明符,TT是结构体名,大括号里面的是结构体成员的定义。此时要声明该结构体变量时需要使用struct加结构体名一起来声明,struct TT一起构成一个结构体类型,就好像字符类型char。若只去掉前面的typedef,就是一条结构体定义同时声明个结构体变量CIN的语句,因为CIN的前面部分是struct TT的完整写法,可以看作是struct TT。C语言允许用typedef说明一种新类型名,其语法格式为: typedef 类型名 标识符;

以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在typedef时,该语句就变成了给struct TT的定义一个新的名称CIN。所以,此时的CIN是一个结构体类型,它相当于struct TT,即可以和char一样单独用来声明该结构体变量,而TT只是一个结构体名,不能单独用来声明变量。所以,4个选项中C符合题意。15、A

第9/11页

16、B17、A18、D

【解析】本题涉及C语言最基本的4个知识点:①C语言程序是由函数构成的,C程序的基本单位是函数;②每个C程序有且只有一个主函数main(),且程序必须从main()函数开始执行,但是main()函数可以放在程序中的任意位置;③C语言的书写格式是自由的,一行可以写多条语句,一条语句也可以写在不同的行上:④C语言本身不提供输入输出语句,可以通过函数来实现输入和输出操作。19、C

【解析】本题在定义字符数组时没有定义数组长度,但是给数组赋了初值,这时初值的个数即为数组的长度,故数组长度为6(包括'\\0')。字符串的长度为有效字符的个数5。因此printf语句中输出的结果为5,6。20、B二、填空题21、union

22、(1)错误:switch(g);

正确:switch(g)(2)错误:casel:case2:returnl;正确:casel;case2:returnl;23、924、%s25、m26、(1) =a (2) a (3)sum/n (4)x[i]<ave

【解析】很明显,该程序中使用sum表示总成绩,使用x[1000]数组存储学生成绩,使用n表示学生个数,使用ave表示平均分。弄明白这些变量的含义后,程序该怎么填写,一目了然。27、%ld28、直接29、-130、1021103三、简答题

31、#include <stdio.h>main( ) {

int a[10]={1,5,2,5,6,8,7,4,3,0}; int i,k,n,f=0; scanf(\"%d\ for(i=0;i<10;i++) if(a[i]==n) {

f=1; k=i; }

第10/11页

if(f) printf(\"%d is no. %d\\n\ else printf(\" %d not found !\\n\}

32、#include <stdio.h>#define N 8

typedef struct student{

int no; int score;}student;int main(){

student s[1000]; int n,i; int max;

scanf(\"%d\ for(i=0;i<n;i++) {

scanf(\"%d\ scanf(\"%d\ max=s[0].score; if(max<s[i].score) max=s[i].score; }

for(i=0;i<n;i++) {

if(s[i].score==max) printf(\"%d \ }

printf(\"%d\ return 0; }

33、struct student{ char name[30]; float score[5];};

int main(int argc, const char * argv[]){

struct student a = {\"zhangsan\ float sum = 0;//定义一个5科分数之和变量

float AverageScore = 0;//定义一个平均分变量 for (int i = 0; i < 5; i++) { sum =sum + a.score[i];

AverageScore = sum / 5; }

printf(\" 姓名%s\\n 5科成绩平均分是:%.1f分\ return 0;}

第11/11页

因篇幅问题不能全部显示,请点此查看更多更全内容

Top