资源描述
西 安 建 筑 科 技 大 学
2018 年攻读硕士学位研究生招生考试试题
(答案书写在本试题纸上无效。考试结束后本试题纸须附在答题纸内交回) 共 6 页
第 2 页
第 1 页
考试科目: 适用专业:
(869)C/C++程序设计
计算机技术、计算机科学与技术
3、(本 题 6 分)写出下面程序的运行结果
#include <stdio.h> void main(){
char grade='A'; switch(grade){
case 'A': printf("90-100\n");
case 'B': printf("80-90\n");
case 'C': printf("70-80\n"); break;
case 'D': printf("60-70\n"); break;
case 'E': printf("<60\n"); default : printf("error!\n");
}
}
4、(本 题 6 分)写出下面程序的运行结果
#include <stdio.h> int f(int a){
int b=0; static int c; b++;c++;
return(a+b+c);
}
void main(){
int a=5,i; for(i=0;i<3;i++)
printf("%d ",f(a));
}
5、(本 题 6 分)写出下面程序的运行结果
#include <stdio.h> void main(){
int a1=5,a2=5; printf("a1=%d,a2=%d,a1=%d",++a1,a2++,a1--);
}
一、按照要求回答问题(共 6 题,每题分值见各题前的标注,共计 50 分)
1、(本 题 12 分)写出下面程序的运行结果
#include <stdio.h> void main() {
int j,k;
int x[3][4]={0},y[4][3]={0};
for(j=0;j<3;j++)
for(k=j;k<4;k++) x[j][k]=j+k;
for(j=0;j<3;j++)
for(k=j;k<4;k++) y[k][j]=x[j][k];
for(j=0;j<4;j++)
for(k=0;k<3;k++) printf("%d,",y[j][k]);
}
2、(本 题 8 分)写出下面程序的运行结果
#include <stdio.h> char s[]="1234"; void main() {
char *p; for(p=s;p<s+4;p++)
printf("%c %s\n",*p,p);
}
西 安 建 筑 科 技 大 学
2018 年攻读硕士学位研究生招生考试试题
(答案书写在本试题纸上无效。考试结束后本试题纸须附在答题纸内交回) 共 6 页 考试科目: (869)C/C++程序设计 适用专业: 计算机技术、计算机科学与技术
二、在横线空白处填写代码,补充完整程序(共 6 题,25 处横线空白,每空 2 分,共 50 分)
1、(本题 8 分)输入一个字符,判断该字符是数字、字母、空格还是其他字符。
void main( ) {
char ch=getchar();
if( (1) ) printf("It is an English character\n"); else if( (2) ) printf("It is a digit character\n");
else if( (3) ) printf("It is a space character\n");
第 4 页
第 3 页
6、(本 题 12 分)写出下面程序的运行结果
#include <iostream> using namespace std; class B1 //基类 B1 声明
{ public:
B1(int i) {cout<<"constructing B1 "<<i<<endl;}
~B1() {cout<<"destructing B1 "<<endl;}
};
class B2 //基类 B2 声明
{public:
B2(int j) {cout<<"constructing B2 "<<j<<endl;}
~B2() {cout<<"destructing B2 "<<endl;}
};
class B3 //基类 B3 声明
{public:
B3(){cout<<"constructing B3 *"<<endl;}
~B3() {cout<<"destructing B3 "<<endl;}
};
class C: public B2, public B1, public B3
{public:
C(int a, int b, int c, int d):B1(a),memberB2(d),memberB1(c),B2(b){} private:
B1 memberB1; B2 memberB2; B3 memberB3;
};
void main(){ C obj(11,12,13,14);}
(4)
}
printf("It is other character\n");
2、(本题 12 分)输入正整数 n (1<n≤10),再输入 n 个整数,用选择法将其从大到小排序后输出。
void main(void){
int i, index, k, n, temp;
(5) ;/* 定义 1 个数组a,它有 10 个整型元素*/ printf("Enter n: ");
(6) ;
printf("Enter %d integers: ", n);
for(i = 0; i < n; i++) scanf("%d", &a[i]); for(k = 0; k < n-1; k++){/* 对 n 个数排序 */
index = k;
for( (7) )
if( (8) ) index = i;
(9) ;
}
printf("After sorted: ");
for(i = 0; i < n; i++)/* 输出 n 个数组元素的值 */
(10) ;
}
3、(本题 4 分)列出所有的个位数为 8,且能被 4 整除的 2 位数。
void main(){ int i;
for( (11) ; i<=99; i++) if( (12) &&i%4==0) printf("%3d\n",i); }
西 安 建 筑 科 技 大 学
2018 年攻读硕士学位研究生招生考试试题
(答案书写在本试题纸上无效。考试结束后本试题纸须附在答题纸内交回) 共 6 页 考试科目: (869)C/C++程序设计 适用专业: 计算机技术、计算机科学与技术
6、(本 题 10 分)已知单链表的类型说明为:
typedef struct LNode{int data; struct LNode *next; }LNode,*LinkList; 阅读以下程序,填充空格,使其成为完整算法。其功能是将两个已排序的带头结点的单链表合并成 一个链表而不改变其排序性(升序),这里两个链表头指针分别为 p 和 q。
LinkList mergelink(LinkList p,LinkList q){ LinkList r,h;
(21) ; h->next=NULL; r=h;
4、(本题 8 分)如下为二分查找的非递归算法,试将其填写完整。
int Binarysearch(int A[ ],int n, int K){ int low=0, high= (13) ; while (low<=high){
int mid= (14) ;
if (K == A[mid]) return mid; //查找成功,返回元素的下标 else if (K < [mid]) (15) ;
else (16) ;
}
return -1; //查找失败,返回-1
}
5、(本 题 8 分)求 1!+2!+3!+……+n!的和。 void main(){
long int f,s;int i,j,n;
(17) ; scanf("%d",&n);
for(i=1;i<=n; (18) )
{ f=1;
for(j=1; (19) ;j++)
(20) ; s=s+f;
}
printf("n=%d,s=%ld\n",n,s);
}
p=p->next; q=q->next; while (p&&q){
if(p->data<=q->data){ (22) ; r=p; (23) ;}
else { (24) ;r=q;q=q->next;}
第 6 页
第 5 页
}
if(!p)r->next=q;
(25) ; return h;
}
三、用 C 或 C++编写程序(共 5 题,每题 10 分,共 50 分)
1、(本题 10 分)编程实现输入一行字符,统计其中有多少个单词,其中单词之间用空格分隔开。
2、(本题 10 分)有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 5 报数),凡是报到
5 的人退出圈子,试编写程序输出最后退出圈子的人员编号。
3、(本题 10 分)编写函数 char * myStrcat (char * str1,char *str2)实现字符串连接(要求不能使用 strcat
函数)。
4、(本题 10 分)有 n 个整数,使前面各数顺序向后移动 m 个位置,最后 m 个数变成最前面 m 个 数,如下图所示。写一个函数实现上述功能,在主函数中输入 n 个整数和输出调整后的 n 个数。
n-m
m
5、(本题 10 分)编程计算[m,n]之间既不能被 3 整除也不能被 5 整除的整数之和,m 和 n 的值由 键盘输入。例如,如果 m 和 n 的值分别为 1 和 10,则计算结果为 22。
展开阅读全文