中国音乐学院2022年C语言程序设计期末
本试卷为中国音乐学院2022年C语言程序设计期末,题目包括:单项选择题,填空题,编程题。
覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,结构体,程序题。
C语言程序设计期末
一、单项选择题 (共20题,每题2分,共计40分)
( B )
1、有以下程序:
main()
{
char x[]="string";
x[0]=0;
x[1]='\0';
x[2]='0';
printf("%d %d\n",sizeof(x),strlen(x));
}
程序运行后的输出结果是________。
( D )
2、在c语言的变量类型说明中,int,char,float等类型的长度是________。
( D )
3、有以下程序
struct stu
{
int num;
float totalscore;
};
void f(struct stu p)
{
struct stu s[2]= {{20044,550}, {20045,537}};
p.num = s[1].num;
p.totalscore = s[1].totalscore;
}
main()
{
struct stu s[2]= {{20041,703} ,{20042,580}};
f(s[0]);
printf("%d %3.0f\n", s[0].num, s[0].totalscore);
}
程序运行后的输出结果是________。
( C )
4、有以下程序
main( )
{
char k;
int i;
for(i=1;i<3;i++)
{
scanf("%c",&k);
switch(k)
{
case ‘0’: printf("another\n");
case ‘1’: printf("number\n");
}
}
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是________。
( C )
5、有以下程序
main()
{
int k=4,n=0;
for( ; n<k ; )
{
n++;
if(n%3!=0) continue;
k--;
}
printf("%d,%d\n",k,n);
}
程序运行后的输出结果是________。
( C )
6、关于数组的叙述中,下列说法不正确的是________。
( D )
7、在16位pc机上使用c语言,若有如下定义
struct data {
int i;
char ch;
double f;
} b;
则结构变量b占用内存的字节数是________。
( B )
8、若要定义a为3×4的二维数组,正确的定义语句是________。
( B )
9、已知 #int t=0; while(t=1) {...} 则以下叙述正确的是________。
( C )
10、有以下函数
int fun(char *s) {
char *t=s;
while(*t++);
return(t-s)
}
该函数的功能是______。
( A )
11、设有数组定义:char array[]="china"; 则数组array所占的空间为________。
( C )
12、设有如下程序段:
union
{
int i;
char c;
} a;
a.i=12;
a.c='a';
printf("\n%d",a.i);
这段程序执行后,屏幕输出的结果是………………………………………( )
( A )
13、以下表达式的值与 x 无关、其值恒为真的是________。
( D )
14、在c语言中以下正确的叙述是________。
( B )
15、若有以下定义, int a,b;float x; 则正确的赋值语句是________。
( D )
16、为表示"a和b都不等于0",应使用的c语言表达式是________。
( D )
17、已定义以下函数int fun( int *p)
{
return *p;
}
则fun函数返回值足
( B )
18、若要判断 char 型变量 c 中存放的是否为小写字母,以下正确的表达式是________。
( A )
19、以下关于 c 语言数据类型使用的叙述中错误的是________。
( D )
20、下面描述正确的是________。
二、填空题 (共10题,每题2分,共计20分)
1、以下程序中函数f的功能是在数值x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。
#include <stdio.h>
void f(int x[], int n)
{
int p0,p1,i,j,t,m;
i=j=x[0];
p0=p1=0;
for(m=0;m<n;m++)
{
if (x[m]>i)
{
i=x[m];
p0=m;
}
else if(x[m]<j)
{
j=x[m];
p1=m;
}
}
t=x[p0];
x[p0]=x[n-1];
x[n-1]=1;
t=x[p1];
x[p1]=[14] ;
[15] =t;
}
main()
{
int a[10],u;
for(u=0;u<10;u++) scanf(*%d,&a[u]);
f(a,10);
for(u=0;u<10;u++) printf("%d",a[u]);
printf("\n");
}
2、表达式10/3*9%10/2的值是________。
3、字母'a'的ascii码值为多少()
4、已知"float a=3.5;int b=12;",则算术表达式"(int)(a+b/5)"的值是________。
5、main()
{
int a,b;
for (a=1,b=1;a<=100;a++)
{
if(b>=20) break;
if(b%3==1)
{
b+=3;
continue;
}
b-=5;
}
}
程序的输出结果a的值为________。
6、函数实参的传递分为
7、访问变量的方式有 ______ 和 _______
8、函数f 的形参a 为一个10×10 的二维数组, n 的值为5,以下程序段的运行结果为________。f(int a[][20], int n)
{
int i,j,k;
j=n/2+1;
a[1][j]=1;
i=1;
for(k=2;k<=n*n;k++)
{
i=i-1;
j=j+1;
if(i<1&&j>n)
{
i=i+2;
j=j-1;
}
else
{
if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{
i=i+2;
j=j-1;
a[i][j]=k;
}
}
}
main()
{
int a[20][20]={0},n,i,j;
scanf("%d",&n);
f(a,n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)printf("%3d",a[i][j]);
printf("\n");
}
}
9、请补充函数proc(),该函数的功能是:把从主函数中输入的由数字字符组成的字符串转换成一个无符号长整数,并且逆序输出。结果由函数返回。例如,输入:1234567,结果输出:7654321。 注意:部分源程序给出如下。 请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的横线上填人所编写的若干表达式或语句。 试题程序:
#include <stdio.h>
unsigned long proc(char*str)
{
unsigned long t=0: int k: int i=0;
i=str|en(str);
for( ________ ;i>=0;i--)
{
k= ________ ;
t= ________ ;
}
return t;
}
void main()
{
char str[8];
system("cls");
printf("enter a string made up of'0'to '9 ' digital character:\n");
gets(str);
printf("the string,is:%s\n",str);
if(strlen(str)>8) printf("the string is too tong!");
else printf("the result:%1u\n", proc(str));
}
10、C 语言中,一个函数一般由两个部分组成,它们是______和函数体。
三、编程题 (共3题,每题0分,共计40分)
1、请编一个函数int fun(int a),它的功能是:判断a是否是素数,若a是素数,返回1; 若不是素数,返回0。a的值由主函数从键盘读入。
2、编写程序:输入两个字符串str1和str2,将字符串str2倒置后接在字符串str1后面。例如:str1="how do ",str2="?od uoy",结果输出:"how do you do?"。
3、题⽬描述
完成⼀个对候选⼈得票的统计程序。假设有3个候选⼈,名字分别为Li,Zhang和Fun。使⽤结构体存储每⼀个候选⼈的名字和得票数。记录每⼀张选票的得票⼈名,输出每个候选⼈最终的得票数。结构体可以定义成如下的格式:
struct person {
char name[20];
int count;
}leader[3] = {“Li”, 0, “Zhang”, 0, “Fun”, 0};
输⼊
第⼀⾏有⼀个整数n,表⽰以下有n张选票信息将会输⼊。保证n不⼤于100。
以后的n⾏中,每⼀⾏包含⼀个⼈名,为选票的得票⼈。保证每⼀个⼈名都是Li,Zhang和Fun中的某⼀个。
输出
有三⾏,分别为Li,Zhang和Fun每⼈的得票数。格式为⾸先输出⼈名,其后输出⼀个冒号,最后输出候选⼈的得票数。
请注意⾏尾输出换⾏。
样例输⼊
10
Li
Li
Fun
Zhang
Zhang
Fun
Li
Fun
Zhang
Li
样例输出
Li:4
Zhang:3
Fun:3
相关标签:
- C语言
- 中国音乐学院
- 期末