中国音乐学院2022年C语言程序设计模拟
本试卷为中国音乐学院2022年C语言程序设计模拟,题目包括:单项选择题,判断题,填空题,程序分析题,编程题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。
C语言程序设计模拟
一、单项选择题 (共20题,每题2分,共计40分)
( B )
1、以下对二维数组a进行正确初始化的是________。
( D )
2、若变量c为char类型,能正确判断出c为小写字母的表达式是________。
( B )
3、若有"double a; ",则正确的输入语句是________。
( D )
4、有以下程序
#include <stdio.h>
struct tt
{
int x;
struct tt*y;
}
*p;
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{
int i;
p=a;
for(i=1;i<=2,i++)
{
printf("%d,",p->x);
p=p->y;
}
}
程序的运行结果是________。
( B )
5、下列程序执行后的输出结果是 __________.
#include <stdio.h>
void main( )
{
int x,y=1,z;
if ((z=y)<0) x=4;
else if (y==0) x=5;
else x=6;
printf("%d,%d\n",x,y);
}
( D )
6、下面程序段的运行结果是 _____________.
for(i=1;i<=5;)
printf("%d",i);
i++;
( D )
7、下列对程序解决问题的过程描述中,哪项是正确的( )
( B )
8、在一个应用程序中有如下定义:int a[]= {1,2,3,4,5,6,7,8,9,10 },为了打印输出数组a的最后一个元素,下面正确的代码是________。
( C )
9、若已定义: int a[]= { 0,1,2,3,4,5,6,7,8,9 },*p=a,i; 其中0≤i≤9,则对a数组元素不正确的引用是________。
( C )
10、以下正确的说法是________。
( C )
11、设变量x和y均已正确定义并赋值。以下if语句中,在编译时将产生错误信息的是________。
( C )
12、若有说明语句:int i,x[3][4]; 则不能将x[1][1]的值赋给变量i的语句是______。
( C )
13、若定义下列结构体,结构体变量p的出生年份赋值正确的语句是________。
struct st
{
int x;
int y;
int z;
}
struct worker
{
char name[20];
char sex;
struct st birth;
} p;
( D )
14、若有以下定义:int a[2][3]= { 2,4,6,8,10,12 } 则以下描述不正确的是 ______。
( D )
15、若有定义:char*x="abcdefghi"; 以下选项中正确运用了strcpy函数的是______。
( A )
16、下面程序的输出结果是______。
main( )
{
int a[]={1,2,3,4,5,6,7,8,9,0},*t;
t=a;
printf("%d\n",*(t+3));
}
( C )
17、以下for循环的执行次数是 for(x=0,y=0;(y=123)&&(x<4);x++); ()
( A )
18、若fahr为整型变量,则能正确表示以下数学式的c语言表达式是________ 。
( D )
19、以下不正确的说法是____
( A )
20、char a[]="This is a program.";输出前 5 个字符的语句是()。
二、判断题 (共10题,每题2分,共计20分)
( T )
1、用字符串常量给数组赋初值时,如果提供的字符个数大于数组长度,则系统报错。
( T )
2、用scanf()函数输入实型数时,可以指定宽度,但不能规定精度。
( T )
3、无论哪种循环语句,都必须给出循环结束条件。
( T )
4、赋值运算符的结合方向为自右向左。
( F )
5、c语言约定'\0' 计入字符串的长度。
( F )
6、在if语句中,else前一个语句可不加";".
( F )
7、若有说明int i=8 , k;则y=float(i) 是合法的c表达式
( T )
8、任何数组在使用前必须先定义。
( T )
9、c语言函数默认的返回值类型是 int 。( )
( F )
10、以“a”方式打开一个文件时,文件指针指向文件首。
三、填空题 (共5题,每题4分,共计20分)
1、局部变量的作用域是从______的位置起,到函数结束止。
2、c语言的源程序拓展名为()编译后生成() 链接后生成()
3、若有定义:double x[3][5]; 则x 数组中行下标的下限为【1】,列下标的上限为【2】。
4、C语言提供的三种逻辑运算符是______。
5、break语句通常用于______中。
四、程序分析题 (共4题,每题5分,共计20分)
1、以下程序的运行结果是________。
main()
{
int a[3][3]= {1,3,5,7,9,11,13,15,17 }, sum;
sum=func(a);
printf("nsum=%dn",sum);
}
func(int a[][3])
{
int i,j,sum=0;
for (i=0;i<3;i++) for (j=0;j<3;j++)
{
a[i][j]=i+j;
if(i==j) sum=sum+a[i][j];
}
return (sum);
}
2、以下程序的运行结果是_____________。
main( )
{
int k, s ,a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
s=0;
for( k=0;k<4;k ++)s=s+ a[k][k];
printf("%d,",s);
}
3、下面程序的运行结果是________。
main()
{
int i=1,n=3,j,k=3, a[5]={1,4,5};
while(i<=n&&k>a[i]) i++;
for(j=n-1;j>=i;j--)a[j+1]=a[j];
a[i]=k;
for(i=0;i<=n;i++)printf("%3d",a[i]);
}
4、当从键盘输入-1 0<cr>, 则以下程序的运行结果是________。
#include<stdio.h>
main()
{
int a,b,m,n;
m=n=1;
scanf("%d%d",&a,&b);
do
{
if(a>0)
{
m=2*n;
b++;
}
else
{
n=m+n;
a+=2;
b++;
}
}
while(a==b);
printf("m=%d n=%d\n",m,n);
}
五、编程题 (共3题,每题0分,共计50分)
1、有一包含职工编号、年龄和性别的单向链表,分别使用函数完成以下功能 建立链表。 分别统计男女职工的人数。 在链表尾部插入新职工。 删除指定编号的职工。 删除60岁以上的男职工和55岁以上的女职工被删除的结点保存到另一个链表 中。在主函数中设计简单的菜单去调用上述函数。
2、一个皮球从100米高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求当它第10次落地时,共经过了多少米,第10次反弹多高?
3、编写程序,将用户输入的字符串中删除所有的数字,然后输出剩余的字符。
相关标签:
- C语言
- 中国音乐学院
- 模拟