2022年河北专接本C语言程序设计模拟试卷(1)
摘要:本文是2022年河北专接本C语言程序设计模拟试卷(1),包含2套河北专接本C语言程序设计模拟试卷,供大家报考参考。下面是具体详细内容。
河北省普通高校专科接本科教育考试C 语言程序设计模拟试卷一
(考试时间:75 分钟)
(总分:150 分)
说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。
一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
1. 以下叙述不正确的是
A. 一个C源程序可由一个或多个函数组成 B. 一个C源程序必须包含一个main函数
C. C程序的基本组成单位是函数 D. 在C程序中,注释说明只能位于一条语句的后面
2. 在C语言中,假设所有变量均为整型,则表达式(a=3,b=7,a++,a+b)的值是
A.1O B.11 C.4 D. 13
3. 在C程序中,有语句“int k=7,x=12;”,则下列表达式的值为3的是
A. x%=k-k%5 B. x%=(k-k%5) C. x%=(k%=5) D. (x%=k)-(k%=5)
4. 在C语言中,非法的字符常量是
A. '\t' B. '\17' C. "\n" D. '\xaa'
5. 若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是
A. (exp==0) B. (exp!=0) C. (exp==1) D. (exp!=1)
6. 在C语言中,有语句“int a,b; scanf("a=%d b=%d",&a,&b);”,下列输入方法能使a的值为2、b的值为3的是
A. a=2 b=3 B. a=2,b=3 C. 2,3 D. 2 3
7. 若有定义:float x=1.5;int a=1,b=3,c=2;则正确的switch语句是
A. switch(x) B. switch((int)x);
{ case 1.0: printf("*\n"); { case 1.0:printf("*\n");
case 2.0: printf("**\n"); case 2.0: printf("**\n");
} }
C. switch(a+b) D. switch(a+b)
{ case 1: printf("*\n"); { case 1: printf("*\n");
case 2+1: printf("**\n"); } case c: printf("**\n");
} }
8. 以下程序段的输出结果是
int a[]={1,2,3,4,5,6},*p;
p=a;
*(p+3)+=2;
printf("%d,%d\n",*p,*(p+3));
A. 0,5 B. 1,5 C. 0,6 D. 1,6
9. C语言中函数返回值的类型由( )决定的。
A. return语句中的表达式类型 B. 调用该函数的主调函数的类型
C. 调用函数时临时决定 D. 定义函数时所指定的函数类型
10. 在C语言中,有以下程序段:
int a=10,b=O;
do{ b+=2;
a-=2+b; } while(a>=O);
程序段中循环体的执行次数是
A.2 B.3 C.4 D. 5、
11. 在C语言中,以下函数定义格式正确的是
A.double fun(int x,int y) B.fun(int x,y)
{ z=x+y; { int z;
retun z; return z;
} }
C.fun(x,y) D.double fun(int x,int y)
{ int x,y; { double z;
double z; z=x+y;
z=x+y; return z;
return z; }
}
12. 以下叙述中正确的是
A. 构成C程序的基本单位是函数 B. 可以在一个函数中定义另一个函数
C. main()函数必须放在其它函数之前 D. 所有被调用函数一定要在调用之前进行定义
13. 在C语言中,以下错误的定义语句是
A. int x[][3]={{0},{1},{1,2,3}};
B. int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C. int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D. int x[][3]={1,2,3,4};
14. 在C语言中,有以下程序段:
char str[]="\tab\n\012\\\"";
printf("%d",strlen(str));
其输出结果是
A.3 B. 4
C.7 D.13
15. 能正确表示a和b同时为正或同时为负的表达式是
A. (a>=0||b>=0)&&(a<0||b
C. (a+b>0)&&(a+b
16. 若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
17. 下列程序的输出结果是
#include
struct abc
{ int a,b,c; };
main()
{ struct abc s[2]={{1,2,3},{4,5,6}};
int t;
t=s[0].a+s[1].b%s[0].c;
printf("%d\n",t);
}
A. 2 B. 3 C. 4 D. 7
18. 在下面关于指针的说法中,错误的一条是
A. 变量的指针就是变量的地址
B. 可以将一个整型量或任何其他非地址类型的数据赋给一个指针变量
C. 一个指针变量只能指向同一个类型的变量
D. 指针变量中只能存放地址
19. 以下程序运行后的输出结果是
#include
main()
{ int i=5,j=0;
do{j=j+(--i);}
while(i<2);
printf("%d\n",j);
}
A. 4 B. 5 C. 6 D. 9
20. 在下列叙述中,正确的一条是
A. puts和gets函数只能输入或输出一个字符串
B. 在C语言中,函数可以递归调用或递归定义
C. 用scanf函数输入数据时可以规定精度,例如scanf("%7.2f",&a);
D. 外部变量只限于本文件中使用
二、阅读程序题(共5小题,每小题6分,共30分)
1. 【程序】
#include
main()
{ int i,a[]={1,2,3,4,5,9,8,7,6,5};
void tran(int *);
tran(a);
for(i=0;i<10;i++)
printf("%3d",a[i]);
}
void tran(int *p)
{ int t,*d,*e;
d=p;e=p+9;
while(d<e)
{ t=*d;*d=*e;*e=t;
d++;e--;
}
}
【运行结果】
2. 【程序】 请写出输入“24,16”时的输出结果
#include
main()
{ int a,b,num1,num2,temp;
scanf("%d,%d",&num1,&num2);
if(num1>num2)
{ temp=num1;
num1=num2;
num2=temp;
}
a=num1,b=num2;
while(b!=0)
{ temp=a%b;
a=b;
b=temp;
}
printf("%d,%d\n",a,num1*num2/a);
}
【运行结果】
3. 【程序】
#include
int fun(int n)
{ static int f=1;
f=f*n;
return f;
}
main()
{ int i;
for(i=1;i<=5;i++)
printf("%d\t",fun(i));
}
【运行结果】
4. 【程序】
#include
main()
{ int a=3,b=2,c=1;
c-=++b;
b*=a+c;
{ int b=5,c=12;
c/=b*2;
a-=c;
printf("%d,%d,%d,", a,b,c);
a+=--c;
}
printf("%d,%d,%d\n", a, b, c);
}
【运行结果】
5. 【程序】程序运行时,输入B
#include
main()
{ char grade;
scanf("%c",&grade);
switch(grade)
{ case'A':printf(">=85");
case'B':printf(">=75");
case'C':printf(">=60");
case'D':printf("<60");
default:printf("errror");
}
}
【运行结果】
三、程序填空题(共3题,每空5分,共35分)
1. 功能是:用递归的方法求菲波那契数列2,2,4,6,10,16,26,42,68,110,……的第10项
#include
long fib(int n)
{ if(n>=______________ )
return___________________ ;
else
return________________ ; }
main()
{ printf("%ld\n",fib(10)); }
2. 函数delchar的功能是:删除字符串s中的所有数字字符
#include
void delchar(char *s)
{ int i,n=0;
for(i=0; s[i]!='\0';i++)
if(___________________ )
s[____________ ]=s[i];
s[n]='\0'; }
3. 功能是:输出方阵中主对角线和、副对角线上元素的和sum1和sum2
#include
#define N 3
main()
{ int a[N][N],i,j,sum1,sum2;
sum1=sum2=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{ sum1+= _____________;
sum2+=____________ ; }
printf("%d,%d\n",sum1,sum2);}
四、编程题 (共3小题,每题15分 共45分)
1、打印以下图案:
**
****
******
********
**********
2、求一个3*4的矩阵各列元素的平均值;将原矩阵和求出的平均值全部输出。
3、编写函数int fun(char s[]),功能是:判断字符串是s否为回文,是回文返回1,否则返回0
河北省普通高校专科接本科教育考试C 语言程序设计模拟试卷二
(考试时间:75 分钟)
(总分:150 分)
说明:请在答题纸的相应位置上作答,在其它位置上作答的无效。
一、单项选择题(本大题共 20 小题,每小题 2 分,共 40 分。在每小题给出的四个备选项中,选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。)
1. 下面四个选项中,均是不合法的用户标识符的选项是
A. A P_0 do B. b-a goto int C. float ia0 _A D. _123 temp int
2. 以下程序段输出的结果是
int a=-1,b=4,k;
k=(++a<0)&&!(b--<0);
printf("%d%d%d\n",a,b,k);
A. 041 B. 040 C. 030 D. 031
3. 设有说明char w;int x;float y;double z;,则表达式w*x+z-y的值的类型为
A. float B. char C. int D. double
4. 以下程序段的输出结果是
int x=3;
do { printf("%3d",x-=2);} while(!(--x));
A. 1 B. 3 0 C. 1 -2 D. 死循环
5. 若有说明:int a[3][4],则对a数组元素的正确引用是
A. a[2][4] B. a[1,3] C. a[1+1][0] D. a(2)(1)
6. 以下程序段的输出结果是
char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=0;k<3;k++)
printf("%s\n",&w[k][k]);
A. ABCD B. FGH E. EFG D. ABCD
FGH KL JK EFG
KL
7. 以下叙述中不正确的是
A.在函数中,通过return语句获得返回值
B.在函数中,可以有多条return语句
C.在函数中,如果没有return语句则不带回返回值
D.在C语言中,调用函数不必在一条独立的语句中完成
8. 以下程序段的输出结果是
int x=2,y=-1,z=2;
if(x<y)< p="">
if(y<0)z=0;
else z+=1;
printf("%d\n",z);
A. 2 B. 3 C. 1 D. 0
9. 下列程序段的输出结果是
char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
printf("%d",*--p);
A. 非法 B. a[4]的地址 C. 3 D. 5
10. 以下错误的描述是
A. 不同的函数中可以使用相同的变量名
B. 在一个函数内部的复合语句中定义的变量可以在本函数范围内有效
C. 一个函数内部定义的变量只能在本函数范围内有效
D. 形式参数是局部变量
11. 设有:char str[]="Beijing";
则执行:printf("%d\n",strlen(strcpy(str,"China")));后输出的结果为
A. 5 B. 7 C. 12 D. 14
12. 在下列叙述中,正确的一条是
A. 以下语句是正确的:char c[]="ab";
B. 一维数组的定义可采用下列格式:int a(10);
C. 下面的语句定义了一个二维数组:float a[3,4];
D. 以下两个语句中的a[3][4]的含义相同:int a[3][4];a[3][4]=1;
13. 若有定义int (*pointer)[3],则标识符pointer是一个
A.指向整型变量的指针变量
B.指向有三个整型元素的一维数组的指针变量
C.指向函数的指针变量
D.指针数组名,有三个元素,每个元素均为一个指向整型变量的指针
14. 下列叙述中,正确的一条是
A.语句“goto 12;”是合法的
B.for(;;)语句相当于while(1)语句
C.if(表达式)语句中,表达式的类型只限于逻辑表达式
D.break语句可用于程序的任何地方,以终止程序的执行
15. 设变量定义如下,则对其中的成员num正确的应用是
struct student
{ int num;
char name[20];
float score;
} stud[10];
A.stud[1].num=10; B. student.stud.num=10;
C.struct.stud.num=10; D. struct student.num=10;
16. 以下程序的输出结果是
main()
{ int x=4;
fun(x);
printf("\n");
}
fun(int y)
{ if(y>0)fun(y-1);
printf("%d ", y);
}
A.0 1 2 3 4 5 B. 4 3 2 1
C.0 1 2 3 4 D. 5 4 3 2 1 0
17. 语句while(E);中的表达式E等价于
A. E!=0 B. E!=1 C. E==0 D. E==1
18. 下面程序的运行结果是
main()
{ char ch[7]={"65ab21"};
int i, s=0;
for(i=0;ch[i]>= '0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'0';
printf("%d\n", s);
}
A. 12ba56 B. 6 C. 6521 D. 62
19. 定义如下变量和数组:
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是
for(i=0;i<3;i++)printf("%d",x[2-i] [i]);
A. 7 5 3 B. 7 4 1 C. 9 5 1 D. 9 6 3
20. 以下程序的输出的结果是
int func(int a,int b)
{ return(a+b); }
main()
{ int x=2,y=5,z=8,r;
r=func(func(x,y),z);
printf(“%d\n”,r);
}
A.12 B. 13 C. 14 D. 15
二、阅读程序题(本题共5小题,每小题6分,共30分,请写出程序的运行结果)
1. 【程序】
#include
main()
{ int s[]={1,2,3,1,2,1,1,3},k;
int x[]={0,0,0,0};
for(k=0;k<8;k++)
switch(s[k])
{ case 1:
case 2:
case 3:x[s[k]]++;
}
for(k=0;k<4;k++)
printf("%d ",x[k]);
}
【运行结果】
2. 【程序】
#include
void reverse(int a[],int n)
{ int i,t;
for(i=0;i<n p="" 2;i++)
{ t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{ int a[]={1,2,3,4,5,6,7,8,9,10},i;
reverse(a,6);
for(i=0;i<10;i++)
printf("%3d",a[i]);
}
【运行结果】
3. 【程序】
#include
int func(int a,int b)
{ static int m=0, i=2;
i+=m+1;
m=i+a+b;
return m;
}
main()
{ int k=4,m=1,p;
p=func(k,m);printf("%d,",p);
p=func(k,m);printf("%d\n",p);
}
【运行结果】
4. 【程序】
#include
#define ADD(x) x+x
main()
{ int m=1,n=2,k=3;
int sum=ADD(m+n)*k;
printf("sum=%d\n",sum);
}
【运行结果】
5. 【程序】
#include
struct STU { char name[10];int num;int score; }
main()
{ struct STU s[5]={{"YangSan",20041,703},{"LiSiGuo",20042,580},
{"WangYin",20043,680},{"SunDan",20044,550},{"PengHua",20045,537}}, *p[5],*t;
int i,j;
for(i=0;i<5;i++) p[i]=&s[i];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(p[i]->score>p[j]->score)
{ t=p[i];p[i]=p[j];p[j]=t; }
printf("%d%5d\n",s[0].score,p[0]->score);
}
【运行结果】
三、程序填空题(共3题,每空5分,共35分)
1、以下程序的功能是:输出三位正整数中能被13整除的数
#include
main()
{ int n;
for(_________ ;______________ ;n++)
if(n%13!=0) ____________;
else printf("%d\n",n);}
2、阅读以下程序并填空。以下程序的功能是:计算:
#include
main()
{ int n;
float ;
scanf("%d",&n);
while(n>0)
{ s=s+___________ ;
n-- ; }
printf("Result is:%f\n",s); }
3、以下程序的功能是:输出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身例如:153是一水仙花数,因为:153=13+53+33
#include
main()
{ int i,a,b,c;
for(i=100;i<=999;i++)
{ a=____________ ;
b= _____________;
c= _____________;
if(a*a*a+b*b*b+c*c*c==i)
printf("%d\n",i);
}
}
四、编程题(共3小题,每题15分 共45分)
1、编写函数fun,其功能为计算数列“1,-2,3,-4,…,n-1,-n”的和。
要求:(1)利用宏定义将n定义为10;
(2)函数的调用和结果的输出由主函数main()处理,计算过程由fun函数处理;
(3)在main()中用printf()输出结果。
2、编写函数void fun(int a[],int n),功能是:将数组a中的前n个元素倒序存放。
3、编写程序,通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课程成绩。函数fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从大到小)排序。
延伸阅读
- 2023年河北专升本金属材料概论模拟题及答案
- 2023年河北专升本环境监测模拟题及答案
- 2023年河北专升本环境保护概论模拟题及答案
- 2023年河北专升本和声学模拟题及答案
- 2023年河北专升本基本乐理模拟题及答案
- 2023年河北专升本命题创作模拟题及答案
专升本微信公众号
扫码添加
专升本备考资料免费领取
去领取
扫描二维码