2018秋_高级程序设计语言_A卷
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
得分
二、写出程序运行结果(每小题 3 分,共 15 分)
将答案写在题目后的横线上
1.
int main() {
char grade; grade = 'B'; switch(grade) {
case 'A': printf("excellent"); case 'B': printf("good"); case 'C': printf("pass"); default: printf("failure"); } return 0; } 运行结果为___________________________________
得分
百度文库
一、单选题(每小题 2 分,共 30 分)
提示:每题有一项最佳选项,请将该选项字母填在括号内。如果你对
题意有不同的理解,也可以将你的观点或你认为正确的答案写在括号或题后的空隙里。
1.下列不是C语言的关键字的是( ) A) sizeof B) free C) signed
D) auto
2.在C语言中,要求运算数必须是整型的运算符是( )
A) *a[4]
B) &a[4]
C) a[4]
D) *(a+4)
7.假定a是一个二维数组,则与a[i][j]等价的表达式为( ) A) *(a+i+j) B) *(*(a+i)+j) C) *(a+i)+j D) *a+i+j
8. 关于函数的下列说法正确的是( )
A) 函数内部可以改变实参的值 B) 函数可以有多个返回值 C) 函数调用时只能将实参的值赋给形参 D) 函数可以返回其内部变量的地址
2.
void func(int n) {
int i; for(i=1; i<=n; i=i+2)
if(n%i == 0) printf("%d ", i);
printf("\n");
第 3页,共 10页
} int main() {
int n; scanf("%d", &n); func(n); return 0; } 输入:30<回车> 运行结果为________________________________
return c;
}
int main()
{
int n=5;
printf("age:%d\n",age(n));
return 0;
}
3.下面程序实现把输入的字符串逆序存放的功能,填空完成程序。
void main()
{
char str[100], t;
int i, j, len;
scanf("%s", str);
len=strlen(str);
for(i=0,j=len-1;
;
)
{
t=str[i];
str[i]=str[j];
str[j]=t;
}
printf("%s\n", str);
}
得分
四、编程题(共 40 分)
1.(8 分)编写递归函数计算下面的函数(函数参数 n 和 k 为整数):
for(_______________;i>=1;i--)
3.
int func(int n) {
if(n==1) return 1; else return func(n-1)+3; } void main() { int i,j=0; for(i=1;i<4;i++)
j = j + func(i); printf("%d\n", j); } 运行结果为_________________________________
封
装
密
线
线
订
学院:
封
装
密
年级:
线
4.(12 分)编写寻找数组中最小的三个元素的如下函数:
void FindThreeSmallest(int a[], int n, int *smallest, int *second_smallest, int *third_smallest); 其 中 a 为 数 组 , n 为 数 组 元 素 的 数 量 。 函 数 返 回 后 *smallest 中 应 存 储 最 小 元 素 , *second_smallest 中应存储第二小元素,*third_smallest 中应存储第三小元素。
A) (a>=-22)&&(a<-10)&&(a>=20)&&(a<=44) B) !((a>-22)||(a<=-10)||(a>=20)||(a<44)) C) !((a>-22)&&(a<=-10)||(a>=20)&&(a<44)) D) (a>=-22)||(a<=-10)&&(a>20)||(a<=44)
车站的职工发现桥的长度最多能容纳两节车厢,如果将桥旋转 180 度,则可以把相邻两节车
厢的位置交换,用这种方法可以重新排列车厢的顺序(从小到大)。于是他就负责用这座桥
将进站的车厢按车厢号从小到大排列。他退休后,火车站决定将这一工作自动化,其中一项
重要的工作是编一个程序,输入初始的车厢顺序,计算最少用多少步就能将车厢排序。
if(____________________)break; printf("Maximal Common Divisor is : %d\n",i); return 0; }
2. 已知第一个学生的年龄为 10 岁,第二个学生年比第一个学生的年龄大 2 岁,以此类推,
以下程序用于计算学生年龄,请补充完整。 int age(int n) {
printf("%d",strlen(str));
A) 15
B) 4
C) 10
D) 字符串中有非法字符
密
专业 :
线
线
订
姓名:
封
装
密
线
学号:
线
订
封
装
密
第 1页,共 10页
第 2页,共 10页
装
订
线
装
订
线
装
订
线
装
订
线
装
学号:
姓名:
专业 :
年级:
学院:
密
封
线
密
封
线
密
封
线
密
封
线
密
封
14.以下程序的输出结果是( )
5.
struct st {
第 4页,共 10页
封
装
密
线
线
订
学院:
封
装
密
年级:
线
线
订
封
装
int a; int b; union {
int e; int f; }c; }; int main( ) { struct st y; y.a=10; y.c.e=20; y.c.f=y.a; y.b=y.c.e; printf("%d,%d\n",y.c.e,y.c.f); return 0; } 运行结果为___________________________________
得分
三、程序填空(每空 3 分,共 15 分)
1. 以下程序实现求两个正整数 x 和 y 的最大公约数,请补充完整。
int main() {
int x,y,t,i; scanf("%d%d",&x,&y); if(x>y) {t=x; x=y; y=t;}
else c=________________________________;
int c; if(n==1) c=10;
密
专业 :
线
线
订
姓名:
封
装
密
线
学号:
线
订
封
装
密
第 5页,共 10页
第 6页,共 10页
封
装
密
线
线
订
2.(10 分)编写程序,判断用户输入的一串字符是否为“回文”,所谓“回文”是指顺读和
倒读都一样的字符串,例如:“level”、”abcddcba”。
3.(10 分)在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个
9.struct Node{
int data;
struct Node *next;
} a, b;
则下列赋值语句正确的为( )
A) a.next=b
B) a->next=b
C) a->next=&b
D) a.next=&b
10.能正确表示”a的值在(-22,-10]和[20,44)范围内为假,否则为真”的表达式是( )
12.下列二维数组的定义语句中,正确的是( )
A) int a[3][]={'xyz',"8"}; C) int a[3][]={'x',"8"};
B) char a[][3]={'xyz',"8"}; D) char a[][3]={‘x’,"8"};
13.若有以下声明和语句,则输出结果是( )
char str[]="\t\v\\\n\0will\n";
【输入格式】
2 行数据,第一行是车厢总数 N(N≤10000),第二行是 N 个不同的数表示初始的车厢顺
序。
【输出格式】
1 个数据,即最少的旋转次数。
【输入示例】
【输出示例】
4
6
4321
学院:
封
装
密
年级:
线
线
订
封
装
密
专业 :
线
线
订
姓名:
封
装
密
线
学号:
线
订
封
装
密
第 7页,共 10页
第 8页,共 10页
4.
int main() {
char a[4][10] = {"1234", "abcd", "xyz", "ijkm"}; int i = 3; char (*p)[10] = a; for (p = a; p < a + 4; p++, i--)
printf("%c", *(*p + i)); return 0; } 运行结果为______________________________________
线
订
封
装
密
专业 :
线
线
订
姓名:
封
装
密
线
学号:
线
订
封
装
密
第 9页,共 10页
第 10页,共 10页
11.下面程序的输出结果是( )
int x=1,y=8,z=2;
while(++x!=(y-=1)){
z+=2;
if(y<x) break;
}
printf("x=%d,y=%d,z=%d\n",x,y,z);
A) x=4,y=4,z=8
B) x=5,y=4,z=10
C) x=5,y=4,z=6
D) x=5,y=4,z=12
B) (exp==0) C) (exp==1) D) (exp!=1)
5. 求如下程序中,循环体语句被执行的次数( )
int i=0; int x,y; for(x=0,y=0;y!=250||x<4;x++) y+=50;
A) 7
B) 6
C) 5
D) 4
6.对于int a[10];取数组a的第5个元素的地址的正确写法是( )
int x=4; void main(){
int s=0; { int x=8; s+=x++; } s+=++x;
printf(“%d\n”,s);
} A) 8
B) 9
C) 13
D) 17
15.若有声明int n=2,*p=&n,*q=p,则以下非法的赋值语句是( ) A) p=q B) *p=*q C) n=*q D) p=n
封
装
密
线
线
订
学院:
封
装
密
年级:
线
线
订
封
装
青岛大学课程考试试卷
2018 ~ 2019 学年秋季学期 计算机科学技术学院 2018 级 考试时间:120 分钟
课程名称 高级程序设计语言 A 卷□√ B 卷□
题号 一
二
三
四 成绩 复核
得分
阅卷
注意事项:★答卷前,考生务必把答题纸上密封线内各项内容填写清楚并且填写在密封线与 装订线之间(学号应与教务在线中学号相同),否则可能得不到成绩。答案必须写在边框内。 ★试卷中所有的程序,默认包含头文件 stdio.h stdlib.h string.h math.h,省略未印出。
A) !
B) /
C) %
D) --
3.若有语句int a=3,b=2,c=1;则以下值为0的表达式是( )
A) 'a'&&'b'&&'c' B) a>b>c
C) a<b<c
D) a=b+c
4.给定表达式(exp)?a++:b++,则以下表达式中完全等价于表达式(exp)的是( )
A) (exp!=0)