文档库 最新最全的文档下载
当前位置:文档库 › 2011年全国C#语言要领

2011年全国C#语言要领

1、数组A和B的元素分别有序,欲将两数组合并到C数组,使C仍有序,应将A和B拷贝到C,只要注意A和B数组指针的使用,以及正确处理一数组读完数据后将另一数组余下元素复制到C中即可。

void union(int A[],B[],C[],m,n)

//整型数组A和B各有m和n个元素,前者递增有序,后者递减有序,本算法将A和B归并为递增有序的数组C。

{i=0; j=n-1; k=0;// i,j,k分别是数组A,B和C的下标,因用C描述,下标从0开始while(i=0)

if(a[i]

while(i

while(j>=0) c[k++]=b[j--];

}算法结束

4、要求二叉树按二叉链表形式存储。15分

(1)写一个建立二叉树的算法。(2)写一个判别给定的二叉树是否是完全二叉树的算法。BiTree Creat() //建立二叉树的二叉链表形式的存储结构

{ElemType x;BiTree bt;

scanf(“%d”,&x); //本题假定结点数据域为整型

if(x==0) bt=null;

else if(x>0)

{bt=(BiNode *)malloc(sizeof(BiNode));

bt->data=x; bt->lchild=creat(); bt->rchild=creat();

}

else error(“输入错误”);

return(bt);

}//结束 BiTree

int JudgeComplete(BiTree bt) //判断二叉树是否是完全二叉树,如是,返回1,否则,返回0

{int tag=0; BiTree p=bt, Q[]; // Q是队列,元素是二叉树结点指针,容量足够大

if(p==null) return (1);

QueueInit(Q); QueueIn(Q,p); //初始化队列,根结点指针入队

while (!QueueEmpty(Q))

{p=QueueOut(Q); //出队

if (p->lchild && !tag) QueueIn(Q,p->lchild); //左子女入队

else {if (p->lchild) return 0; //前边已有结点为空,本结点不空

else tag=1; //首次出现结点为空

if (p->rchild && !tag) QueueIn(Q,p->rchild); //右子女入队

else if (p->rchild) return 0; else tag=1;

} //while

return 1; } //JudgeComplete

2、请编写一个判别给定二叉树是否为二叉排序树的算法,设二叉树用llink-rlink法存储。

3、假设以邻接矩阵作为图的存储结构,编写算法判别在给定的有向图中是否存在一个简单有向回路,若存在,则以顶点序列的方式输出该回路(找到一条即可)。(注:图中不存在顶点到自己的弧)

有向图判断回路要比无向图复杂。利用深度优先遍历,将顶点分成三类:未访问;已访问但其邻接点未访问完;已访问且其邻接点已访问完。下面用0,1,2表示这三种状态。前面已提到,若dfs(v)结束前出现顶点u到v的回边,则图中必有包含顶点v和u的回路。对应程序中v的状态为1,而u是正访问的顶点,若我们找出u的下一邻接点的状态为1,就可以输出回路了。

void Print(int v,int start ) //输出从顶点start开始的回路。

{for(i=1;i<=n;i++)

if(g[v][i]!=0 && visited[i]==1 ) //若存在边(v,i),且顶点i的状态为1。

{printf(“%d”,v);

if(i==start) printf(“\n”); else Print(i,start);break;}//if

}//Print

void dfs(int v)

{visited[v]=1;

for(j=1;j<=n;j++ )

if (g[v][j]!=0) //存在边(v,j)

if (visited[j]!=1) {if (!visited[j]) dfs(j); }//if

else {cycle=1; Print(j,j);}

visited[v]=2;

}//dfs

void find_cycle() //判断是否有回路,有则输出邻接矩阵。visited数组为全局变量。

{for (i=1;i<=n;i++) visited[i]=0;

for (i=1;i<=n;i++ ) if (!visited[i]) dfs(i);

}//find_cycle

4、二叉树的层次遍历序列的第一个结点是二叉树的根。实际上,层次遍历序列中的每个结点都是“局部根”。确定根后,到二叉树的中序序列中,查到该结点,该结点将二叉树分为“左根右”三部分。若左、右子树均有,则层次序列根结点的后面应是左右子树的根;若中序序列中只有左子树或只有右子树,则在层次序列的根结点后也只有左子树的根或右子树的根。这样,定义一个全局变量指针R,指向层次序列待处理元素。算法中先处理根结点,将根结点和左右子女的信息入队列。然后,在队列不空的条件下,循环处理二叉树的结点。队列中元素的数据结构定义如下:

typedef struct

{ int lvl; //层次序列指针,总是指向当前“根结点”在层次序列中的位置

int l,h; //中序序列的下上界

int f; //层次序列中当前“根结点”的双亲结点的指针

int lr; // 1—双亲的左子树 2—双亲的右子树

}qnode;

BiTree Creat(datatype in[],level[],int n)

//由二叉树的层次序列level[n]和中序序列in[n]生成二叉树。 n是二叉树的结点数

{if (n<1) {printf(“参数错误\n”); exit(0);}

qnode s,Q[]; //Q是元素为qnode类型的队列,容量足够大

init(Q); int R=0; //R是层次序列指针,指向当前待处理的结点

BiTree p=(BiTree)malloc(sizeof(BiNode)); //生成根结点

p->data=level[0]; p->lchild=null; p->rchild=null; //填写该结点数据

for (i=0; i

if (in[i]==level[0]) break;

if (i==0) //根结点无左子树,遍历序列的1—n-1是右子树

{p->lchild=null;

s.lvl=++R; s.l=i+1; s.h=n-1; s.f=p; s.lr=2; enqueue(Q,s);

}

else if (i==n-1) //根结点无右子树,遍历序列的1—n-1是左子树

{p->rchild=null;

s.lvl=++R; s.l=1; s.h=i-1; s.f=p; s.lr=1; enqueue(Q,s);

}

else //根结点有左子树和右子树

{s.lvl=++R; s.l=0; s.h=i-1; s.f=p; s.lr=1;enqueue(Q,s);//左子树有关信息入队列s.lvl=++R; s.l=i+1;s.h=n-1;s.f=p; s.lr=2;enqueue(Q,s);//右子树有关信息入队列

}

while (!empty(Q)) //当队列不空,进行循环,构造二叉树的左右子树

{ s=delqueue(Q); father=s.f;

for (i=s.l; i<=s.h; i++)

if (in[i]==level[s.lvl]) break;

p=(bitreptr)malloc(sizeof(binode)); //申请结点空间

p->data=level[s.lvl]; p->lchild=null; p->rchild=null; //填写该结点数据

if (s.lr==1) father->lchild=p;

else father->rchild=p; //让双亲的子女指针指向该结点

if (i==s.l)

{p->lchild=null; //处理无左子女

s.lvl=++R; s.l=i+1; s.f=p; s.lr=2; enqueue(Q,s);

}

else if (i==s.h)

{p->rchild=null; //处理无右子女

s.lvl=++R; s.h=i-1; s.f=p; s.lr=1; enqueue(Q,s);

}

else{s.lvl=++R; s.h=i-1; s.f=p; s.lr=1; enqueue(Q,s);//左子树有关信息入队列

s.lvl=++R; s.l=i+1; s.f=p; s.lr=2; enqueue(Q,s); //右子树有关信息入队列}

}//结束while (!empty(Q))

return(p);

}//算法结束

5、设一棵二叉树的结点结构为 (LLINK,INFO,RLINK),ROOT为指向该二叉树根结点的指针,p 和q分别为指向该二叉树中任意两个结点的指针,试编写一算法ANCESTOR(ROOT,p,q,r),该算法找到p和q的最近共同祖先结点r。

6、由二叉树的前序遍历和中序遍历序列能确定唯一的一棵二叉树,下面程序的作用是实现由已知某二叉树的前序遍历和中序遍历序列,生成一棵用二叉链表表示的二叉树并打印出后序遍历序列,请写出程序所缺的语句。

#define MAX 100

typedef struct Node

{char info; struct Node *llink, *rlink; }TNODE;

char pred[MAX],inod[MAX];

main(int argc,int **argv)

{ TNODE *root;

if(argc<3) exit 0;

strcpy(pred,argv[1]); strcpy(inod,argv[2]);

root=restore(pred,inod,strlen(pred));

postorder(root);

}

TNODE *restore(char *ppos,char *ipos,int n)

{ TNODE *ptr; char *rpos; int k;

if(n<=0) return NULL;

ptr->info=(1)_______;

for((2)_______ ; rpos

k=(3)_______;

ptr->llink=restore(ppos+1, (4)_______,k );

ptr->rlink=restore ((5)_______+k,rpos+1,n-1-k);

return ptr;

}

postorder(TNODE*ptr)

{ if(ptr=NULL) return;

postorder(ptr->llink); postorder(ptr->rlink); printf(“%c”,ptr->info); }

7、本题要求建立有序的循环链表。从头到尾扫描数组A,取出A[i](0<=i

LinkedList creat(ElemType A[],int n)

//由含n个数据的数组A生成循环链表,要求链表有序并且无值重复结点

{LinkedList h;

h=(LinkedList)malloc(sizeof(LNode));//申请结点

h->next=h; //形成空循环链表

for(i=0;i

{pre=h;

p=h->next;

while(p!=h && p->data

{pre=p; p=p->next;} //查找A[i]的插入位置

if(p==h || p->data!=A[i]) //重复数据不再输入

{s=(LinkedList)malloc(sizeof(LNode));

s->data=A[i]; pre->next=s; s->next=p;//将结点s链入链表中

}

}//for

return(h);

}算法结束

高级语言程序设计实验C

高级语言程序设计实验 C Coca-cola standardization office【ZZ5AB-ZZSYT-ZZ2C-ZZ682T-ZZT18】

陕西理工大学 《高级语言程序设计(C)》 实验报告 院系: 班级: 学号: 姓名:

目录

实验一:C开发环境与顺序结构程序设计 1.实验目的: (1) 了解集成开发环境VC++的使用方法,理解相关命令的含义,掌握编辑、编译、连接以及运行调试的方法,掌握程序的基本结构,掌握输入输出的方式。 (2) 掌握程序设计的基本要素中的数据类型、变量、运算符以及表达式的运用。 (3) 学会正确使用逻辑运算符和逻辑表达式以及关系运算符与关系表达式,掌握在程序设计中灵活使用顺序结构。 2.实验环境: (1) 硬件环境 CPU: Inter Pentium(R)4 CPU 以上 内存:2GByte (2) 软件环境 操作系统:Microsoft Windows 7 编译系统:Microsoft Visual C++ 3.实验步骤: 按如图所示流程进行实验内容的 调试。 (1) 在XP操作系统中,启动VC++ 编译环境; (2) 在VC++编译界面输入C源程 序; (3) 选择编译、组建、执行命令 进行编译、链接和运行,并记录 实验数据; (4) 按以上方法依次输入其他源 程序并调试、运行和记录实验数 据。

4.实验内容: 输入并运行下列程序,查看程序运行的结果。 #include<> void main() { printf(“* * * * * * * * * *\n”); printf(“Programing in c A Labrtry Maual\n”); printf(“* * * *\n”); printf(“*\n”); } 查看程序运行的结果 #include<> void main() { int i,j,m,n; i=8; j=10; m=++i; n=j--; printf(“%d,%d,%d,%d\n”,i,j,m,n); } 找出下列程序中的错误,改正后写出程序运行结果. #include<> void main() { Int x,y=z=5,aver; x=7; AVER=(x+y+z)/3 printf(“AVER=%d\n”,aver); }

高级语言程序设计C

高级语言程序设计(C)模拟题四 一、选择题(本题共20道小题,每题2分,共40分。) 1.以下有4组用户标识符,其中合法的一组是()。 A) For -sub Case B) 4d DO Size C) f2_G3 IF abc D) WORD void define 答案:C 解析:标识符的命名规则:由字母、数字、下划线组成,第一个字符必须是字母或者下划线,标示符的命名不能同C语言的关键字相同。 2. 若有下面的程序片段: int a[12]={0}, *p[3], **pp, i; for(i=0; i<3; i++) p[i]=&a[i*4]; pp=p; 则对数组元素的错误引用是 A) pp[0][1] B) a[10] C) p[3][1] D) *(*(p+2)+2) 答案:C 解析:A. pp[0]表示p[0]的地址,而pp[0]也为一个指针,它和pp用法相同,故pp[0][1]则表示a[1]的地址,正确。 B.正确。 C.数组p的最大下标为2,错误。 D. *(*(p+2)+2)表示a[10],正确。 3. 若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为 A) a<>0 B) !a C) a=0 D) a 答案:D 解析:对if(a)而言,如果a的值不为0,则if语句括号中表达式的值不为0,if为真,选D。 4. 若已定义: int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i; 其中0≤i≤9, 则对a数组元素不正确的引用上 A) a[p-a] B) *(&a[i]) C) p[i] D) a[10] 答案:D 解析: A. a[p-a]表示a[0],正确。 B. *(&a[i])表示a[i],正确。 C. p[i]表示&a[i],正确。 D. a数组最大下标为9,错误。

《高级语言程序设计》复习题及答案

一、选择题 1.以下叙述正确的是( ): A)在C程序中,main函数必须位于程序的最前面 B) C程序的每行只能写一条语句 C) C语言使用库函数实现输入输出操作 D)注释中的拼写错误会影响编译结果 2、以下说法中正确的是() A) C语言程序总是从第一个的函数开始执行 B) C语言程序总是从main()函数开始执行 C)在C语言程序中,要调用的函数必须在main()函数中定义 D)C语言程序中的main()函数必须放在程序的开始部分 3、下列选项种说法正确的是( ) A)函数由声明部分和执行部分两部分组成 B)语言中main函数一定在程序的开始部分 C)C语言程序总是从第一个定义的函数开始执行 D)C程序的每行中只能写一条语句 4、设有说明:int a;float b; char c; double d; 则表达式1.3*a+2*b*c+d*(int) 2.6 值的类型为( )。 A)doubleB) char C) floatD) int 5、C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( ) A)必须为字母 B)必须为下划线 C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 6、以下不正确的C语言标识符是( )。 A) ABC B) abc C)a_bc D) void 7、下列运算符中优先级最高的是( ) A)< B)+ C)&& D)!= 8、以下选项中属于C语言中合法关键字的是( ) A)Float B)abc C)int D)CASE 9、若x、i、j和k都是int型变量,计算下面表达式后,x的值为( ) x=(i=4,j=16,k=32) A)4 B)16 C)32 D)52 10、在C语言中,要求数据必须是整型的运算符是( ) A)/ B)+ + C)!=D) % 11、若整型变量x的值为8,则下列表达式中值为1的表达式是 A)x+=x-=x B) x%=x-1 C) x%=x%=3 D) x/=x+x 12、若w=1,x=2,y=3,z=4,则条件表达式“w > x? w : y< z ? y : z”的值是( ) A)4 B)3 C)2 D)1 13、有以下程序,程序运行后的输出结果是。 main() {inti=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); }

华南理工大学高级语言程序设计(C++I)试卷及答案

华南理工大学计算机学院 高级语言程序设计(C++I)试卷 学生证号:____________________ 姓名: ____________________ 注意事项:1. 本试卷共五大题,满分100分,考试时间120分钟; 2. 所有答案请写在答卷上,试卷和答卷同时提交; 一.单项选择题(每小题2分,共20分) 1.下列字符列中,合法的长整型常量是: (A) 4.18e3 (B) 0.46793 (C) 4L (D) 956738 2.设变量x,y,a,b,c,d的值为1,计算表达式(x=a!=b)&&(y=c!=d)后,变量x,y的值分别是: (A) 0,0 (B) 0,1 (C) 1,0 (D) 1,1 3.以下运算符中,优先级最低的是: (A) *= (B) ?:: (C) && (D) >= 4.在C++中,char类型数据在内存的存储形式是: (A) 原码(B) 反码(C) 补码(D) ASCII码 5.设变量定义int x = 6, y, z; 执行语句 y = z = x--; y = x == z; 后变量y的值是:(A) 0 (B) 1 (C) 5 (D) 6 6.下面的变量定义中,不正确的是: (A) char *p=”string”(B) int a[]={‘A’,’B’,’C’} (C) float *q=&b, b; (D) doudle a, *r=&a; 7.设有变量定义 doubleb[5], *p=b; 能正确表示b数组中元素地址的表达式是: (A) b (B) b+5 (C) *b[0] (D) &b 8.设有变量定义 int a[]={2,3,5,9,11,13},*pa=a, w; 执行语句w=++(*++pa); 后,变量w和*pa的值是: (A) 3和3 (B) 4和3 (C) 3和4 (D) 4和4 9.语句if(w) … ; else … ; 中的表达式w的等价表示是: (A) w==0 (B) w==1 (C) w!=0 (D) w!=1 10.设有函数说明和变量定义:int max(int x,int y); int(*p)(int,int)=max; int a, b; 以下正确调用函数的代码是: (A) *p(a,b) (B) p(a,b) (C) *(p(a,b)) (D) p(&a,&b)

高级语言程序设计实验 C

陕西理工大学 《高级语言程序设计(C)》 实验报告 院系: 班级: 学号: 姓名:

目录

实验一:C开发环境与顺序结构程序设计 1.实验目的: (1) 了解集成开发环境VC++的使用方法,理解相关命令的含义,掌握编辑、编译、连接以及运行调试的方法,掌握程序的基本结构,掌握输入输出的方式。 (2) 掌握程序设计的基本要素中的数据类型、变量、运算符以及表达式的运用。 (3) 学会正确使用逻辑运算符和逻辑表达式以及关系运算符与关系表达式,掌握在程序设计中灵活使用顺序结构。 2.实验环境: (1) 硬件环境 CPU:Inter Pentium(R)4 CPU 以上 内存:2GByte (2) 软件环境 操作系统:Microsoft Windows 7 编译系统:Microsoft Visual C++ 3.实验步骤: 按如图所示流程进行实验内容的 调试。 (1) 在XP操作系统中,启动VC++ 编译环境; (2) 在VC++编译界面输入C源程 序; (3) 选择编译、组建、执行命令进 行编译、链接和运行,并记录实验 数据; (4) 按以上方法依次输入其他源程 序并调试、运行和记录实验数据。 4.实验内容: 输入并运行下列程序,查看程序运行的结果。 #include<>

void main() { printf(“* * * * * * * * * *\n”); printf(“Programing in c A Labrtry Maual\n”); printf(“* * * *\n”); printf(“*\n”); } 查看程序运行的结果 #include<> void main() { int i,j,m,n; i=8; j=10; m=++i; n=j--; printf(“%d,%d,%d,%d\n”,i,j,m,n); } 找出下列程序中的错误,改正后写出程序运行结果. #include<> void main() { Int x,y=z=5,aver; x=7; AVER=(x+y+z)/3 printf(“AVER=%d\n”,aver); }

华南理工 《高级语言程序设计C 》平时作业

一、分析程序,写输出结果 1.#include #include void main() {int m, k, i ; for( m=1; m<=10; m+=2 ) { k = m/3; for( i=2; i<=k; i++ ) if( m%i ) cout << m << " "; } } 解:m 的取值为1,3,5,7,9 对应k的取值为0,1,1,2,3, 第二个for循环:只有当k=2和k=3时才执行,当k=2,i=2,m%i等于1为真,输出m为7 当k=3,i=2,m%i等于1为真,输出m为9, i=3,m%i等于0为假,无输出结果为: 7 9 2.#include void fun(); void main() {int i; for(i=1;i<5;i++) fun(); cout< int fun(int n) { if(n==0) return 1; return 2*fun(n-1); } void main()

{ int a=5; cout< void main() { char *cp="word"; for (int i=0 ; i<4; i++ ) cout< void main() { int max; int a[10]={76,55,95,87,85,83,65,90,77,85}; int *p= a ; max=*p; for( ; p< &a[10] ; p++) if( *p>max ) max= *p ; cout<<"max= "<

华工高级语言程序设计C++_随堂练习答案

华工高级语言程序设计C++_随堂练习答案答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D.

答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D.

答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D.

答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D.

答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D. 答题: A. B. C. D.

《高级语言程序设计(C)》期末考试试题

《高级语言程序设计(C)》期末考试试题 一、选择题(本题共20道小题,共40分。) 1. 设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是 A)把x和y按从大到小排列 B)把x和y按从小到大排列 C)无确定结果 D)交换x和y中的值 2. 下面程序的输出是 void prtv(int *x) { printf("%d\n", ++(*x));} main() { int a=25; prtv(&a);} A) 23 B) 24 C) 25 D) 26 3. int x=10, y=20, z=30; if(x>y) z=x; x=y; y=z; 以上语句执行后x, y, z的值是 A) x=10,y=20,z=30B) x=20,y=30,z=30 C) x=20,y=30,z=10D) x=20,y=30,z=20 4. 设有以下宏定义: #define N 3 #define Y(n) ((N+1)*n) 则执行语句:z=2 *(N+Y(5+1))后,z的值为 A)出错 B)42 C)48 D)54 5. 逻辑运算符两侧运算对象的数据类型是()。 A) 只能是0或1 B) 只能是0或非0正数 C) 只能是整型或字符型数据 D) 可以是任何类型的数据 6. 当执行以下程序段时 x=-1; do { x=x*x;} while(!x); A)循环体将执行一次 B)循环体将执行两次 C)循环体将执行无限次 D)系统将提示有语法错误 7. int x=3; do { printf("%3d",x-=2);} while(!(--x)); 以上程序段的输出结果是 A) 1 B) 3 0 C) 1-2 D) 死循环 8. main() {int k=11; printf("k=%d,k=%o,k=%x\n",k,k,k); } 以上程序段的输出结果是 A)k=11,k=12,k=11 B)k=11,k=13,k=13 C)k=11,k=013,k=0xb D)k=11,k=13,k=b 9.以下程序的输出结果是()。 main() { int num=0; while(num<=2) { num++; printf(“%d\n”,num);} } A) 1B) 1C) 1D) 1 2 2 2

高级语言程序设计(C)答案

学习中心/函授站_ 姓名学号 西安电子科技大学网络与继续教育学院 2015学年上学期 《高级语言设计(C)》期末考试试题 (综合大作业) 考试说明: 1、大作业于2015年4月3日公布,2015年5月9日前在线提交; 2、考试必须独立完成,如发现抄袭、雷同、拷贝均按零分计。 一、名词解释(每小题3分,共15分) 1、【初始化】:初始化就是把变量赋为默认值,把控件设为默认状态,把没准备的准备好。 2、【软件测试】:描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。 3、【库函数】:顾名思义是把函数放到库里,是别人把一些常用到的函数编完放到一个文件里,供程序员使用,程序员用的时候把它所在的文件名用#include<>加到里面就可以了(尖括号内填写文件名),例如#include。 4、【作用域】:通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定 这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部 性,增强程序的可靠性,减少名字冲突。 5、【编译预处理】:编译预处理是C语言区别于其它高级程序设计语言的特征之一,它属于C语言编译系统的一部分。C程序中使用的编译预处理命令均以#开头,它在C编译系统对源程序进行编译之前,先对程序中这些命令进行“预处

理”。本章的知识点是编译预处理命令的三种不同形式:宏定义、文件包含和条 件编译。 二、简答题(每小题5分,共25分) 1、为什么要用变量? 答:1)、计算机在工作过程中所产生的所有数据,都是在“内存”是存储和读取的。大家可以把“内存”想象成一个工厂的仓库,数据呢就是这个工厂工作过程中要使用的“零件”。在一段程序中,有很多很的数据(零件),它们分别存放在内存(仓库)中的不同地方。需要用变量把它引用出来。 2、算法设计的一般步骤有哪些? 答:1)、分析问题:输入是什么?输出是什么?条件是什么?能用什么方法? 2)、用流程图画出解决方案:决定了程序的结构。三大结构有:顺序结构、判断结构、循环结构 3)、算法设计:常见的算法设计方法:穷举法、迭代法、递推法、递归法、回溯法、贪婪法、分治法 4)、程序设计:用编程语言来实现 3、引入数组机制的好处是什么? 答:数组在内存中分配是栈内存,是【连续】存储【同一种类型】的【线性】结构。它的作用主要体现在对同一类型的数据进行存储。(要是int型,全都是int型,要是char 型,全都是char型),不可以出现其他类型。对数据的访问是具名访问,可是直接读出数据中某一块的数据,例如 int array[5]={1,2,3,4,5}; array[3]等于3.这里需要注意的是:数组的下标是从0开始的。如果你想访问array[5],会提示错误,因为已经越界了。提取数据比较方便,因为数组在内存中是连续存储数据的,好找。随便说句,数组可以当指针用,但它绝不是指针。 4、函数设计三要素包括功能、输入和输出三个方面的内容,它们和函数结构的关系是怎么样的? 答:函数设计的功能告诉这个函数具有具体的功能。输入对应函数的首部,输出对应函数的返回值。 5、值调用的特点是什么? 答:函数体内相应数据的改变不影响调用它的函数中的数据。 三、分析填表题(每小题6分,共30分) 1. struct student { int StuId; int Score[4]; int Total; } struct student com [10] ={{ 1, 90, 83, 72, 82},{ 2, 71, 92, 88, 78 }, { 3, 85, 72, 98, 66 },{ 4, 78, 95, 63, 90 } }; struct student x, *sPtr; sPtr=com; x=com[0];

高级语言程序设计(C)答案

学习中心/ 函授站_ 姓名学号 西安电子科技大学网络与继续教育学院 2015 学年上学期 《高级语言设计(C)》期末考试试题 (综合大作业) 题号一二三四总分 题分15 25 30 30 得分 考试说明: 1、大作业于2015 年4 月3 日公布,2015 年5 月9 日前在线提交; 2、考试必须独立完成,如发现抄袭、雷同、拷贝均按零分计。 一、名词解释(每小题 3 分,共15 分) 1、【初始化】: 初始化就是把变量赋为默认值,把控件设为默认状态,把没准备的准 备好。 2、【软件测试】: 描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过 程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。 3、【库函数】:顾名思义是把函数放到库里,是别人把一些常用到的函数编完放到一个 文件里,供程序员使用,程序员用的时候把它所在的文件名用#include<> 加到里面就可以了(尖括号内填写文件名),例如#include 。 4、【作用域】:通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部 性,增强程序的可靠性,减少名字冲突。 5、【编译预处理】:编译预处理是 C 语言区别于其它高级程序设计语言的特征 之一,它属于 C 语言编译系统的一部分。 C 程序中使用的编译预处理命令均以# 开头,它在 C 编译系统对源程序进行编译之前,先对程序中这些命令进行“预处

理”。本章的知识点是编译预处理命令的三种不同形式:宏定义、文件包含和条 件编译。 二、简答题(每小题 5 分,共25 分) 1、为什么要用变量? 答:1) 、计算机在工作过程中所产生的所有数据,都是在“内存”是存储和读取的。 大家可以把“内存”想象成一个工厂的仓库,数据呢就是这个工厂工作过程中要使用的“零 件”。在一段程序中,有很多很的数据(零件),它们分别存放在内存(仓库)中的不同地方。需要用变量把它引用出来。 2、算法设计的一般步骤有哪些? 答:1)、分析问题:输入是什么?输出是什么?条件是什么?能用什么方法? 2 )、用流程图画出解决方案:决定了程序的结构。三大结构有:顺序结构、判断结构、循 环结构 3 )、算法设计:常见的算法设计方法:穷举法、迭代法、递推法、递归法、回溯法、贪婪 法、分治法 4 )、程序设计:用编程语言来实现 3、引入数组机制的好处是什么? 答:数组在内存中分配是栈内存,是【连续】存储【同一种类型】的【线性】结构。它 的作用主要体现在对同一类型的数据进行存储。(要是int 型,全都是int 型,要是char 型,全都是char 型),不可以出现其他类型。对数据的访问是具名访问,可是直接读出数 据中某一块的数据,例如int array[5]={1,2,3,4,5}; array[3] 等于 3. 这里需要注意的是:数组的下标是从0 开始的。如果你想访问array[5], 会提示错误,因为已经越界了。提取数据比较方便,因为数组在内存中是连续存储数据的,好找。随便说句,数组可以当指针用,但它绝不是指针。 4、函数设计三要素包括功能、输入和输出三个方面的内容,它们和函数结构的关系是 怎么样的? 答:函数设计的功能告诉这个函数具有具体的功能。输入对应函数的首部,输出对应函数的返回值。 5、值调用的特点是什么? 答:函数体内相应数据的改变不影响调用它的函数中的数据。 三、分析填表题(每小题 6 分,共30 分) 1. struct student { int StuId; int Score[4]; int Total ; } struct student com [10] ={{ 1, 90, 83, 72, 82},{ 2, 71, 92, 88, 78 }, { 3, 85, 72, 98, 66 },{ 4, 78, 95, 63, 90 } }; struct student x, *sPtr; sPtr=com; x=com[0]; 结构成员引用值 x. Total 0

《高级语言程序设计》复习题及答案

一、选择题 1.以下叙述正确的是(): A) 在C程序中,main函数必须位于程序的最前面 B) C程序的每行只能写一条语句 C) C语言使用库函数实现输入输出操作 D) 注释中的拼写错误会影响编译结果 2、以下说法中正确的是() A) C语言程序总是从第一个的函数开始执行 B) C语言程序总是从main()函数开始执行 C)在C语言程序中,要调用的函数必须在main()函数中定义 D) C语言程序中的main()函数必须放在程序的开始部分 3、下列选项种说法正确的是() A) 函数由声明部分和执行部分两部分组成 B)语言中main函数一定在程序的开始部分 C)C语言程序总是从第一个定义的函数开始执行 D)C程序的每行中只能写一条语句 4、设有说明:int a; float b; char c; double d; 则表达式1.3*a+2*b*c+d*(int)2.6 值 的类型为()。 A) double B) char C) float D) int 5、 C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符() A)必须为字母 B)必须为下划线 C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 6、以下不正确的C语言标识符是()。 A) ABC B) abc C) a_bc D) void 7、下列运算符中优先级最高的是() A) < B)+ C)&& D)!= 8、以下选项中属于C语言中合法关键字的是() A)Float B)abc C)int D)CASE 9、若x、i、j和k都是int型变量,计算下面表达式后,x的值为() x=(i=4,j=16,k=32) A)4 B)16 C)32 D)52 10、在C语言中,要求数据必须是整型的运算符是() A)/ B)+ + C)!= D) % 11、若整型变量x的值为8,则下列表达式中值为1的表达式是 A)x+=x-=x B) x%=x-1 C) x%=x%=3 D) x/=x+x 12、若w=1,x=2,y=3,z=4,则条件表达式“w > x ? w : y < z ? y : z”的值是() A)4 B)3 C)2 D)1 13、有以下程序,程序运行后的输出结果是。 main() { int i=1,j=2,k=3; if(i++==1&&(++j==3||k++==3)) printf("%d %d %d\n",i,j,k); }

高级语言程序设计期末复习题

高级语言程序设计期末复习题 一、选择题 1.以下程序的输出结果是 () main( ) { int a=10,b=12; printf("%d %d\n",--a,++b); } A)9 10 B)9 13 C)11 10 D)10 13 2.下面的程序() main() { int x=3; do { printf("%d\n",X-=2); }while(!(--x));} A) 输出的是1 B) 输出的是1和-2 C) 输出的是3和0 D) 是死循环 3.下面能正确进行字符串赋值操作的语句是() A)char s[5]={"ABCDE"}; B)char s[5]={'A'、'B'、'C'、'D'、'E'}; C) char *s;s="ABCDEF"; D)char *s; scanf("%s",s); 4.若有以下定义: char a;int b; float c;double d; 则表达式a*b+d-c值的类型为 A)float B)int C)char D)double 5.若已定义:int a[8],*p=a;并在以后的语句中未改变p的值,不能表示a[1] 地址的表达式是() A) p+1 B) a+1 C) a++ D) ++p 6.若执行下面的程序时从键盘上输入4和5,则输出是() main() { int a,b,s; scanf("%d %d",&a,&b); s=a; if(a

高级语言程序设计C语音

C语言程序设计模拟试题三 一、选择题(本题共20道小题,每题2分,共40分。) 1. 若有说明,double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是A)*p=&a; scanf("%lf",p); B) p=(double*)malloc(8);scanf("%f",p); C) p=&a;scanf("%lf",a); D) p=&a; scanf("%le",p); 答案:D 解析: 选项A:此项中 *p是指针指向单元的值引用,&a是a单元的地址,故此项错误。 选项B:scanf中的格式控制符对双精度变量而言是"%lf",而非选"%f",此项错误。选项c:scanf函数的地址表列中不能写成a,此项错误。 选项D:指针p首先指向a单元,再通过键盘以科学计数格式赋值浮点数,此项正确。 2. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 int main( ) { int x; scanf("%d",&x); if(x + + >5) printf("%d",x); else printf("%d\n",x - -); } A) 7和5 B) 6和3 C) 7和4 D) 6和4 答案:A 解析:当输入为6时,即x=6,∵++在x后,∴先取x=6与5比较,再取x=6+1=7,6>5成立,输出x=7;同理,当输入为4时,输出x=5。本题考察++,--的优先级与结合性。 3. 下面程序的输出是 A) xyzabcABC B) zabcABC C) yzabcABC D) xyabcABC #include #include int main() { char *p1="abc",*p2="ABC",str[50]="xyz"; strcpy(str+2,strcat(p1,p2)); printf("%s\n", str); } 答案:D 解析:strcat将p2字符串连在p1字符串尾,产生新字符串:abcABC,在讲连接后的值赋在str[2]处,即a将z覆盖,产生新的字符组元素:xyabcABC。本题考察字符串函数应用. 4. 若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是 A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c]

《高级语言程序设计》答案)

1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。#include int main() { int i,j,t; int max(int,int); int min(int,int); scanf("%d%d",&i,&j); if(i int main() { int max4(int,int,int,int); //对max4的函数声明 int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); //输入4个数 printf("max=%d\n",max4(a,b,c,d));//调用4个数中的最大者 return 0; } int max4(int a,int b,int c,int d) //定义max4函数 { int max2(int,int); //对max2的函数声明 return max2(max2(max2(a,b),c),d); //调用max2把作为函数值带回main函数} int max2(int a,int b) { return(a>b?a:b); //返回条件表达式的值,即a和b中的大者 } 3. 用递归调用的方法求5!。 #include int main() { int fac(int); int n; scanf("%d",&n);

高级语言程序设计(C)答案

高级语言程序设计(C)答案

学习中心/函授站_
姓名
学号
西安电子科技大学网络与继续教育学院
2015 学年上学期
《高级语言设计(C)》期末考试试题
(综合大作业)
题号




总分
题分
15
25
30
30
得分
考试说明: 1、大作业于 2015 年 4 月 3 日公布,2015
年 5 月 9 日前在线提交; 2、考试必须独立完成,如发现抄袭、
雷同、拷贝均按零分计。
一、名词解释(每小题 3 分,共 15 分) 1、【初始化】: 初始化就是把变量赋为默认 值,把控件设为默认状态,把没准备的准备好。 2、【软件测试】: 描述一种用来促进鉴定软 件的正确性、完整性、安全性和质量的过程。换
第 2 页 (共 16 页)

句话说,软件测试是一种实际输出与预期输出间 的审核或者比较过程。
3、【库函数】:顾名思义是把函数放到库里, 是别人把一些常用到的函数编完放到一个文件 里,供程序员使用,程序员用的时候把它所在的 文件名用#include<>加到里面就可以了(尖括 号内填写文件名),例如#include。 4、【作用域】:通常来说,一段程序代码中所用到的 名字并不总是有效/可用的,而限定这个名字的 可用性的代码范围就是这个名字的作用域。作用 域的使用提高了程序逻辑的局部性,增强程序的 可靠性,减少名字冲突。
5、【编译预处理】:编译预处理是 C 语言区别于其它高级程序设计语言的特征 之一,它属于 C 语言编译系统的一部分。C 程序中使用的编译预处理命令均以# 开头,它在 C 编译系统对源程序进行编译之前,先对程序中这些命令进行“预处 理”。本章的知识点是编译预处理命令的三种不同形式:宏定义、文件包含和条 件编译。
二、简答题(每小题 5 分,共 25 分) 1、为什么要用变量? 答:1)、计算机在工作过程中所产生的所有 数据,都是在“内存”是存储和读取的。大家可 以把“内存”想象成一个工厂的仓库,数据呢就 是这个工厂工作过程中要使用的“零件”。在一
第 3 页 (共 16 页)

《高级语言程序设计(C语言)》考试大纲.

《高级语言程序设计(C语言)》考试大纲 第一章 C语言概述 (一)课程内容 1 C语言的简史与特点 2 一个简单的C程序 3 程序的编辑,编译,链接和运行 (二)考核知识点与考核要求 1.程序设计,要求达到“识记”层次。 2.C语言的字符集,要求达到“领会”层次。 第二章数据类型,运算符与表达式 (一)课程内容 1 C数据类型 2 常量与变量 3运算符与表达式 (二)考核知识点与考核要求 1.C数据类型,要求达到“识记”层次。 2.常量与变量,要求达到“领会”层次。 3.运算符与表达式,要求达到“简单应用”层次。 第三章顺序程序设计 (一)课程内容 1 C语句的概述 2 赋值语句 3 数据输入输出的概念及在C语言中的实现 4 字符数据的输入输出 5 格式输入与输出 (二)考核知识点与考核要求 1.C语句的概述,要求达到“识记”层次。 2.赋值语句,要求达到“简单应用”层次。 3.格式输入与输出,要求达到“综合应用”层次。 第四章选择结构程序设计 (一)课程内容 1 if语句 2 switch语句 (二)考核知识点与考核要求 if语句、switch语句,要求达到“综合应用”层次。 第五章循环控制 (一)课程内容 1 while语句 2 do—while语句 3 for语句 4 循环的嵌套 5 break语句和continue语句 (二)考核知识点与考核要求 1.while语句、do—while语句、for语句、break语句和continue语句,要求达到“综合

应用”层次。 2. 循环的嵌套,要求达到“简单应用”层次。 第六章数组 (一)课程内容 1 一维数组 2 多维数组 3 字符数组 (二)考核知识点与考核要求 1一维数组的定义、元素的引用和初始化,要求达到“综合应用”层次。 2. 多维数组的定义、元素的引用和初始化,要求达到“简单应用”层次。 3字符数组的定义、元素的引用和初始化,要求达到“综合应用”层次。 4.字符数组的输入输出、字符串处理函数,要求达到“简单应用”层次。 第七章函数 (一)课程内容 1 概述 2 函数定义的一般形式 3 函数参数和函数值 4 函数的调用 5 函数的嵌套调用 6 函数的递归调用 7 数组作为函数参数 8 局部变量和全局变量 9 变量的存储类别 (二)考核知识点与考核要求 1.函数的定义和调用方法,要求达到“领会”层次。 2.函数参数和函数值,要求达到“简单应用”层次。 3.函数的嵌套调用和递归调用,要求达到“综合应用”层次。 4 数组作为函数参数、局部变量和全局变量、变量的存储类别,要求达到“简单应用”层次。 第八章预处理命令 (一)课程内容 1 宏定义 2 "文件包含"处理 (二)考核知识点与考核要求 宏定义、"文件包含"处理,要求达到“简单应用”层次。 第九章指针 (一)课程内容 1 地址和指针的概念 2 变量的指针和指向变量的指针变量 3 数组的指针和指向数组的指针变量 4 字符串的指针和指向字符串的指针变量 5指针数组和指向指针的指针 (二)考核知识点与考核要求 1.地址和指针的概念,要求达到“领会”层次。 2.变量的指针和指向变量的指针变量、数组的指针和指向数组的指针变量、字符串的指针

高级语言程序设计C(2012级B卷)

B 卷) 一、简答题(单选,每题5分,共15分) 1、简述一个有效的算法应该具备哪些特点? 2、何谓全局变量?何谓局部变量?当它们同名时编译器如何处理?分析 使用全局变量的优劣。 3、何谓函数原形?简述函数调用的最基本的条件?何谓外部函数?何谓内部函数? 二、选择题(每题2分,共20分) 1.已知 int x=1,y=2,z=3;则z+=x>y?++x:++y 的值是( ) A 、2 B 、4 C 、3 D 、6 2.已知int a[]={10,9,8,7,6},*p=a;则*(p+1)*(p+2)[2]的值是( ) A 、72 B 、80 C 、54 D 、有语法错误 3.已知int i,j;表达式(j=i=5,i=j<=5+i>=3<=5)的值是( ) A 、1 B 、5 C 、3 D 、0 4.从计算机所用资源(时间和空间)角度分析,宏与函数的主要区别是( ) A 、宏的使用节省了存储空间,函数消耗了时间; B 、宏的使用耗费了存储空间,函数消耗了时间; C 、宏的使用耗费了存储空间,函数节省了时间; D 、宏的使用节省了存储空间,函数节省了时间; 5.一维指针数组名作为实参,若有以下说明: int *p[5]; .... sub(p); 则sub 函数中对应的形参可以是( ) A. sub(int *p[5]); B. sub(int *p[]); C. sub(int **p); D. 以上答案都正确。 6.C 语言函数中的形参和在函数中定义的变量,都是在调用该函数时系统会给他们分配存储空间,在函数调用结束时就释放他们所占的空间,该说法( ) A 、错误 B 正确 7.若有以下说明: union { int n[3]; char ch ; float f; } a;

高级语言程序设计C

高级语言程序设计(C)模拟题四 一、选择题(本题共20道小题,每题2分,共40分。) 1.以下有4组用户标识符,其中合法得一组就是( )。 A) For -sub Case B) 4d DO Size C) f2_G3 IF abc D) WORD void define 答案:C 解析:标识符得命名规则:由字母、数字、下划线组成,第一个字符必须就是字母或者下划线,标示符得命名不能同C语言得关键字相同。 2、若有下面得程序片段: int a[12]={0}, *p[3], **pp, i; for(i=0; i<3; i++) p[i]=&a[i*4]; pp=p; 则对数组元素得错误引用就是 A) pp[0][1] B) a[10] C) p[3][1] D) *(*(p+2)+2) 答案:C 解析:A、 pp[0]表示p[0]得地址,而pp[0]也为一个指针,它与pp用法相同, 故pp[0][1]则表示a[1]得地址,正确。 B、正确。 C、数组p得最大下标为2,错误。 D、 *(*(p+2)+2)表示a[10],正确。 3、若要求在if后一对圆括号中表示a不等于0得关系,则能正确表示这一关系得表达式为 A) a<>0 B) !a C) a=0 D) a 答案:D 解析:对if(a)而言,如果a得值不为0,则if语句括号中表达式得值不为0,if为真,选D。 4、若已定义: int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i; 其中0≤i≤9, 则对a数组元素不正确得引用上 A) a[p-a] B) *(&a[i]) C) p[i] D) a[10] 答案:D 解析: A、 a[p-a]表示a[0],正确。 B、 *(&a[i])表示a[i],正确。 C、 p[i]表示&a[i],正确。 D、 a数组最大下标为9,错误。 5、以下程序得输出结果就是 int main( ) { int x=10,y=10,I; for(i=0;x>8;y=++i)

相关文档
相关文档 最新文档