2010新疆维吾尔自治区C语言版高级

1、编程实现单链表的就地逆置。 23.在数组 A[1..n]中有n个数据,试建立一个带有头结点的循环链表,头指针为h,要求链中数据从小到大排列,重复的数据在链中只保存一个.

2、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一个单链表,表头指针为head。二叉树按二叉链表方式存储,链接时用叶子结点的右指针域来存放单链表指针。分析你的算法的时、空复杂度。 3、后序遍历最后访问根结点,即在递归算法中,根是压在栈底的。采用后序非递归算法,栈中存放二叉树结点的指针,当访问到某结点时,栈中所有元素均为该结点的祖先。本题要找p和q 的最近共同祖先结点r ,不失一般性,设p在q的左边。后序遍历必然先遍历到结点p,栈中元素均为p的祖先。将栈拷入另一辅助栈中。再继续遍历到结点q时,将栈中元素从栈顶开始逐个到辅助栈中去匹配,第一个匹配(即相等)的元素就是结点p 和q的最近公共祖先。 typedef struct {BiTree t;int tag;//tag=0 表示结点的左子女已被访问,tag=1表示结点的右子女已被访问 }stack; stack s[],s1[];//栈,容量够大 BiTree Ancestor(BiTree ROOT,p,q,r)//求二叉树上结点p和q的最近的共同祖先结点r。 {top=0; bt=ROOT; while(bt!=null ||top>0) {while(bt!=null && bt!=p && bt!=q) //结点入栈 {s[++top].t=bt; s[top].tag=0; bt=bt->lchild;} //沿左分枝向下 if(bt==p) //不失一般性,假定p在q的左侧,遇结点p时,栈中元素均为p的祖先结点 {for(i=1;i<=top;i++) s1[i]=s[i]; top1=top; }//将栈s的元素转入辅助栈s1 保存 if(bt==q) //找到q 结点。 for(i=top;i>0;i--)//;将栈中元素的树结点到s1去匹配 {pp=s[i].t; for (j=top1;j>0;j--) if(s1[j].t==pp) {printf(“p 和q的最近共同的祖先已找到”);return (pp);} } while(top!=0 && s[top].tag==1) top--; //退栈 if (top!=0){s[top].tag=1;bt=s[top].t->rchild;} //沿右分枝向下遍历 }//结束while(bt!=null ||top>0) return(null);//q、p无公共祖先 }//结束Ancestor

4、矩阵中元素按行和按列都已排序,要求查找时间复杂度为O(m+n),因此不能采用常规的二层循环的查找。可以先从右上角(i=a,j=d)元素与x比较,只有三种情况:一是A[i,j]>x,这情况下向j 小的方向继续查找;二是A[i,j]查找成功。否则,若下标已超出范围,则查找失败。 void search(datatype A[ ][ ], int a,b,c,d, datatype x) //n*m矩阵A,行下标从a到b,列下标从c到d,本算法查找x是否在矩阵A中. {i=a; j=d; flag=0; //flag是成功查到x的标志 while(i<=b && j>=c) if(A[i][j]==x) {flag=1;break;} else if (A[i][j]>x) j--; else i++; if(flag) printf(“A[%d][%d]=%d”,i,j,x); //假定x为整型. else printf(“矩阵A中无%d 元素”,x); }算法search结束。 [算法讨论]算法中查找x的路线从右上角开始,向下(当x>A[i,j])或向左(当x向下最多是m,向左最多是n。最佳情况是在右上角比较一次成功,最差是在左下角(A[b,c]),比较m+n次,故算法最差时间复杂度是O(m+n)。

5、(1)p->rchild (2)p->lchild (3)p->lchild (4)ADDQ(Q,p->lchild) (5)ADDQ(Q,p->rchild) 25. (1)t->rchild!=null (2)t->rchild!=null (3)N0++ (4)count(t->lchild) (5)count(t->rchild) 26. .(1)top++ (2) stack[top]=p->rchild (3)top++ (4)stack[top]=p->lchild 27. (1)*ppos // 根结点(2)rpos=ipos (3)rpos–ipos (4)ipos (5)ppos+1

6、矩阵中元素按行和按列都已排序,要求查找时间复杂度为O(m+n),因此不能采用常规的二层循环的查找。可以先从右上角(i=a,j=d)元素与x比较,只有三种情况:一是A[i,j]>x,这情况下向j 小的方向继续查找;二是A[i,j]查找成功。否则,若下标已超出范围,则查找失败。 void search(datatype A[ ][ ], int a,b,c,d, datatype x) //n*m矩阵A,行下标从a到b,列下标从c到d,本算法查找x是否在矩阵A中. {i=a; j=d; flag=0; //flag是成功查到x的标志 while(i<=b && j>=c) if(A[i][j]==x) {flag=1;break;} else if (A[i][j]>x) j--; else i++; if(flag) printf(“A[%d][%d]=%d”,i,j,x); //假定x为整型. else printf(“矩阵A中无%d 元素”,x); }算法search结束。 [算法讨论]算法中查找x的路线从右上角开始,向下(当x>A[i,j])或向左(当x向下最多是m,向左最多是n。最佳情况是在右上角比较一次成功,最差是在左下角(A[b,c]),比较m+n次,故算法最差时间复杂度是O(m+n)。

7、将顶点放在两个集合V1和V2。对每个顶点,检查其和邻接点是否在同一个集合中,如是,则为非二部图。为此,用整数1和2表示两个集合。再用一队列结构存放图中访问的顶点。 int BPGraph (AdjMatrix g) //判断以邻接矩阵表示的图g是否是二部图。 {int s[]; //顶点向量,元素值表示其属于那个集合(值1和2表示两个集合) int Q[];//Q为队列,元素为图的顶点,这里设顶点信息就是顶点编号。 int f=0,r,visited[]; //f和r分别是队列的头尾指针,visited[]是访问数组 for (i=1;i<=n;i++) {visited[i]=0;s[i]=0;} //初始化,各顶点未确定属于那个集合 Q[1]=1; r=1; s[1]=1;//顶点1放入集合S1 while(f {v=Q[++f]; if (s[v]==1) jh=2; else jh=1;//准备v的邻接点的集合号 if (!visited[v]) {visited[v]=1; //确保对每一个顶点,都要检查与其邻接点不应在一个集合中 for (j=1,j<=n;j++) if (g[v][j]==1){if (!s[j]) {s[j]=jh; Q[++r]=j;} //邻接点入队列 else if (s[j]==s[v]) return(0);} //非二部图 }//if (!visited[v]) }//while return(1); }//是二部图 [算法讨论] 题目给的是连通无向图,若非连通,则算法要修改。

8、由二叉树的前序遍历和中序遍历序列能确定唯一的一棵二叉树,下面程序的作用是实现由已知某二叉树的前序遍历和中序遍历序列,生成一棵用二叉链表表示的二叉树并打印出后序遍历序列,请写出程序所缺的语句。 #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)_______ ; rposk=(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); }

合集下载

2014新疆维吾尔自治区C语言版深入

2014新疆维吾尔自治区C语言版深入
io.h> typedef char datatype; typedef struct node{ datatype data; struct node * next; } listnode; typedef listnode* linklist; /*--------------------------------------------*/ /* 删除单链表中重复的结点 */ /*--------------------------------------------*/ linklist deletelist(linklist head) { listnode *p,*s,*q; p=head->next; while(p) {s=p; q=p->next; while(q) if(q->data==p->data) {s->next=q->next;free(q); q=s->next;} else { s=q; /*找与 P 结点值相同的结点*/ q=q->next; } p=p->next; } return head; } 8、证明由二叉树的中序序列和后序序列,也可以唯一确定一棵二叉树。 当 n=1 时,只有一个根结点,由中序序列和后序序列可以确定这棵二叉树。 设当 n=m-1 时结论成立,现证明当 n=m 时结论成立。 设中序序列为 S1, S2, „, Sm,后序序列是 P1,P2,„, Pm。 因后序序列最后一个元素 Pm 是根, 则在中序序列中可找到与 Pm 相等的结点(设二叉树中各结点互不相同)Si(1≤i≤m),因中 序序列是由中序遍历而得,所以 Si 是根结点,S1,S2,„,Si-1 是左子树的中序序列,而 Si+1,Si+2,„,Sm 是右子树的中序序列。 若 i=1,则 S1 是根,这时二叉树的左子树为空,右子树的结点数是 m-1,则{S2,S3,„,Sm} 和{P1,P2,„,Pm-1}可以唯一确定右子树,从而也确定了二叉树。 若 i=m,则 Sm 是根, 这时二叉树的右子树为空, 左子树的结点数是 m-1, 则{S1, S2, „, Sm-1} 和{P1,P2,„,Pm-1}唯一确定左子树,从而也确定了二叉树。 最后,当 1<i<m 时,Si 把中序序列分成{S1,S2,„,Si-1}和{Si+1,Si+2,„,Sm}。由于后 序遍历是“左子树—右子树—根结点” ,所以{P1,P2,„,Pi-1}和{Pi,Pi+1,„Pm-1}是二叉树 的左子树和右子树的后序遍历序列。因而由{S1,S2,„,Si-1}和{P1,P2,„,Pi-1} 可唯一确定二叉树的左子树,由{Si+1,Si+2,„,Sm}和

2010新疆维吾尔自治区教师招聘考试公共基础知识包过题库

2010新疆维吾尔自治区教师招聘考试公共基础知识包过题库

1、____是指专门为某一应用目的而编制的软件。

A、系统软件B、数据库管理系统C、操作系统D、应用软件2、计算机用户有了可以上网的计算机系统后,一般需找一家____注网入网。

A、软件公司B、系统集成商C、ISPD、电信局3、下列有关Windows屏幕保护程序的说法,不正确的是____。

A、屏幕保护程序可以保护显示器不受到损坏B、屏幕保护程序的图案不可以设置C、屏幕保护程序能减少屏幕的损耗D、屏幕保护程序可以设置口令4、TCP/IP协议是一组协议,其中文全称为_____。

A、传输控制协议和网络互联协议B、邮局协议和网络互联协议C、传输控制协议和电子邮件协议D、传输控制协议和文件传输协议5、在Windows操作系统中所采用的目录结构为____。

A、树型B、星型C、环型D、网络型6、WWW提供的搜索引擎主要用来帮助用户_____。

A、在WWW上查找朋友的邮件地址B、查找哪些朋友现在已经上网C、查找自己的电子油箱是否有邮件D、在Web上快捷地查找需要信息7、在Word2000种,编辑英文文本时经常会出现红色下划波浪线,表示____。

A、语法错误B、单词拼写错误C、格式错误D、逻辑错误8、在Windows中,如果想同时改变窗口的高度或宽度,可以通过拖放____来实现。

A、窗口边框B、窗口角C、滚动条D、菜单栏9、下列四项中主要用于在Internet上交流信息的是____。

A、BBSB、DOSC、WordD、Excel10、客户/服务器模式的局域网,其网络硬件主要包括服务器、工作站、网卡和____。

A、网络拓扑结构B、计算机C、传输介质D、网络协议11、键盘上[CapsLock]键被称作是____A、退格键B、控制键C、空格键D、大写字母锁定键12、世界上第一台电子计算机所用的主要电子元器件是____。

A、电子管B、晶体管C、小规模集成电路D、大规模集成电路13、计算机中字节是常用单位,它的英文名字是____。

2010年全国自考高级语言程序设计模拟试卷(四)及答案

2010年全国自考高级语言程序设计模拟试卷(四)及答案

更多优质自考资料,请访问自考乐园俱乐部/club/5346389 2010年全国自考高级语言程序设计模拟试卷(四)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。

1.下列标识符中,不是C语言保留字的是()A.charB.whileC.minD.default答案:C2.以下能正确定义且赋初值的语句是()A.int n1=n2=10;B.char c=32;C.float f=f+1.1;D.double x=12.3E2.5;答案:B3.设有宏定义“#define R 2+3”,则R*R的宏替换结果正确的是()A.(2+3)*(2+3)B.2+3*2+3C.5*5D. 5.0*5.0答案:B4.执行语句“for (k=4;k>0;k--) { break; --k;}”后,变量k的值是 ()A. 1B. 2C. 3D. 4答案:D5.能将x定义成指向文件的文件型指针的数据定义语句是()A.FILE x;B.file *x;C.file x;D.FILE *x;答案:D6.设 int a=4,b;则执行b=a<<1;语句后,b 的结果是()B. 2C.8D.10答案:C7.执行表达式“x=(y=4,z=16,k=32)”后,x的值为()A. 4B.16C.32D.52答案:C8.函数调用“strcmp(″333″,″300″)”的返回值是 ()A.0B. 1C.任意负整数D.任意正整数答案:D9.若有:char c[5]={′a′,′b′,′\0′,′c′,′\0′}; 则执行语句printf(″%s″,c);的结果为()A.′a′ ′b′B.abC.ab cD.ab\0c答案:B10.设变量x为实型,不能正确表达数学公式xyz的表达式是 ()A.x/y*zB.x*(1/(y*z))C.x/y*1/zD.x/y/z答案:A11.以下循环体的执行次数是()main(){int i,j;for(i=0,j=1;i<=j+1;i+=2,j--)printf(″%d\n″,i);}A. 3B. 2D.0答案:C12.设有定义:char s[12]={″string″};,则printf(″%d\n″,strlen(s));的输出是()A. 6B.7C.11D.12答案:A13.设有数据定义语句“struct xyz { int x;float y;char z;} xyz1;”,则下面的说法中,错误的是()A.struct xyz可以看成一种数据类型符B.xyz是用户选取的结构型名称C.xyz1可以用来定义该结构型变量等D.x是结构型的成员名答案:C14.以只写方式打开一个文本文件,应选择的文件操作方式是()A.″a+″B.″w+″C.″wb″D.″w″答案:D15.已知:int a[3][4],(*p)[4]=a;且a[0][0]的地址为2000,则下列表达式地址不是2008的是()A.*p+1B.a+1C.*(a+1)D.*(p+1)答案:A解析:*p+116.以下与int*q[5];等价的定义语句是()A.int q[5];B.int *q;C.int*(q[5]);D.int(*q)[5];答案:C解析:int*(q[5]);17.已知:float x=1,y;则y=++x*++x的结果为()A.y=9B.y=6C.y=1D.表达式是错误的答案:B解析:y=618.在C语言中,引用数组元素时,其数组下标的数据类型允许是()A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式答案:C解析:整型常量或整型表达式19.以下选项中,合法的用户标识符是 ()A.longB.2TestC.3DmaxD. A.dat答案:B解析:2Test20.下列程序段的输出结果是 ()int k=2,n=2,m;m=(k+=n*=k); printf(″%d,%d\n″,m,n);A.8,6B.8,3C.6,4D.7,4答案:C解析:6,4二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。

2014新疆维吾尔自治区C语言版入门

2014新疆维吾尔自治区C语言版入门

p=p->next; count++; } pre->next=p->next; /*输出该结点,并删除该结点*/ printf("%4d",p->data); free(p); k1=pre->next; /*新的报数起点*/ } printf("%4d",k1->data); /*输出最后一个结点*/ free(k1); } main() {linklist head,p,r; int n,s,m,i; printf("n="); scanf("%d",&n); printf("s="); scanf("%d",&s); printf("m=",&m); scanf("%d",&m); if (n<1) printf("n<0"); else {/*建表*/ head=(linklist)malloc(sizeof(listnode)); /*建第一个结点*/ head->data=n; r=head; for (i=n-1;i>0;i--) /*建立剩余 n-1 个结点*/ { p=(linklist)malloc(sizeof(listnode)); p->data=i; p->next=head; head=p; } r->next=head; /*生成循环链表*/ jose(head,s,m); /*调用函数*/ } } 3 、二路插入排序是将待排关键字序列 r[1..n] 中关键字分二路分别按序插入到辅助向量 d[1..n]前半部和后半部(注:向量 d 可视为循环表) ,其原则为,先将 r[l]赋给 d[1],再从 r[2] 记录开始分二路插入。编写实现二路插入排序算法。 4、请编写一个判别给定二叉树是否为二叉排序树的算法,设二叉树用 llink-rlink 法存储。 5、本题要求建立有序的循环链表。从头到尾扫描数组 A,取出 A[i](0<=i<n),然后到链表 中去查找值为 A[i]的结点,若查找失败,则插入。 LinkedList creat(ElemType A[],int n)

2010新疆维吾尔自治区全国计算机等级考试二级VB理论考试试题及答案

2010新疆维吾尔自治区全国计算机等级考试二级VB理论考试试题及答案

1、在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。

其中数据独立性最高的阶段是(A)A. 数据库系统B. 文件系统C. 人工管理D. 数据项管理2、在深度为5的满二叉树中,叶子结点的个数为(C)A. 32B. 31C. 16D. 153、在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送(D)A. 调用语句B. 命令C. 口令D. 消息4、在一棵二叉树上第5层的结点数最多是(B) 注:由公式2(k-1)得A. 8B. 16C. 32D. 155、对建立良好的程序设计风格,下面描述正确的是(A)A. 程序应简单、清晰、可读性好B. 符号名的命名要符合语法C. 充分考虑程序的执行效率D. 程序的注释可有可无6、对建立良好的程序设计风格,下面描述正确的是(A)A. 程序应简单、清晰、可读性好B. 符号名的命名要符合语法C. 充分考虑程序的执行效率D. 程序的注释可有可无7、数据库设计包括两个方面的设计内容,它们是(A)A. 概念设计和逻辑设计B. 模式设计和内模式设计C. 内模式设计和物理设计D. 结构特性设计和行为特性设计8、按条件f对关系R进行选择,其关系代数表达式为(C)A. R|X|RB. R|X|RfC. бf(R)D. ∏f(R)9、在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B)A. 可行性分析B. 需求分析C. 详细设计D. 程序编码10、下面对对象概念描述错误的是(A)A. 任何对象都必须有继承性B. 对象是属性和方法的封装体C. 对象间的通讯靠消息传递D. 操作是对象的动态性属性11、下面描述中,符合结构化程序设计风格的是(A)A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B. 模块只有一个入口,可以有多个出口C. 注重提高程序的执行效率D. 不使用goto语句12、数据库设计包括两个方面的设计内容,它们是(A)A. 概念设计和逻辑设计B. 模式设计和内模式设计C. 内模式设计和物理设计D. 结构特性设计和行为特性设计13、以下数据结构中不属于线性数据结构的是(C)A. 队列B. 线性表C. 二叉树D. 栈14、在结构化方法中,软件功能分解属于下列软件开发中的阶段是(C) 注:总体设计也就是概要设计A. 详细设计B. 需求分析C. 总体设计D. 编程调试15、检查软件产品是否符合需求定义的过程称为(A)A. 确认测试B. 集成测试C. 验证测试D. 验收测试16、算法的空间复杂度是指(D)A. 算法程序的长度B. 算法程序中的指令条数C. 算法程序所占的存储空间D. 算法执行过程中所需要的存储空间17、对建立良好的程序设计风格,下面描述正确的是(A)A. 程序应简单、清晰、可读性好B. 符号名的命名要符合语法C. 充分考虑程序的执行效率D. 程序的注释可有可无18、在下列选项中,哪个不是一个算法一般应该具有的基本特征(C)A. 确定性B. 可行性C. 无穷性D. 拥有足够的情报19、软件调试的目的是(B) 注:与软件测试要对比着复习A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能20、软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及(B)A. 阶段性报告B. 需求评审C. 总结D. 都不正确21、用树形结构来表示实体之间联系的模型称为(B)A. 关系模型B. 层次模型C. 网状模型D. 数据模型。

2011年新疆维吾尔自治区C++语言版基础

2011年新疆维吾尔自治区C++语言版基础

1、设一棵树T中边的集合为{(A,B),(A,C),(A,D),(B,E),(C,F),(C,G)},要求用孩子兄弟表示法(二叉链表)表示出该树的存储结构并将该树转化成对应的二叉树。

2、(1)p->rchild (2)p->lchild (3)p->lchild (4)ADDQ(Q,p->lchild) (5)ADDQ(Q,p->rchild)25. (1)t->rchild!=null (2)t->rchild!=null (3)N0++ (4)count(t->lchild) (5)count(t->rchild)26. .(1)top++ (2) stack[top]=p->rchild (3)top++ (4)stack[top]=p->lchild27. (1)*ppos // 根结点 (2)rpos=ipos (3)rpos–ipos (4)ipos (5)ppos+13、 将顶点放在两个集合V1和V2。

对每个顶点,检查其和邻接点是否在同一个集合中,如是,则为非二部图。

为此,用整数1和2表示两个集合。

再用一队列结构存放图中访问的顶点。

int BPGraph (AdjMatrix g)//判断以邻接矩阵表示的图g是否是二部图。

{int s[]; //顶点向量,元素值表示其属于那个集合(值1和2表示两个集合)int Q[];//Q为队列,元素为图的顶点,这里设顶点信息就是顶点编号。

int f=0,r,visited[]; //f和r分别是队列的头尾指针,visited[]是访问数组for (i=1;i<=n;i++) {visited[i]=0;s[i]=0;} //初始化,各顶点未确定属于那个集合Q[1]=1; r=1; s[1]=1;//顶点1放入集合S1while(f<r){v=Q[++f]; if (s[v]==1) jh=2; else jh=1;//准备v的邻接点的集合号if (!visited[v]){visited[v]=1; //确保对每一个顶点,都要检查与其邻接点不应在一个集合中for (j=1,j<=n;j++)if (g[v][j]==1){if (!s[j]) {s[j]=jh; Q[++r]=j;} //邻接点入队列else if (s[j]==s[v]) return(0);} //非二部图}//if (!visited[v])}//whilereturn(1); }//是二部图[算法讨论] 题目给的是连通无向图,若非连通,则算法要修改。

2010级用高级语言程序设计实验报告quan

2010级用高级语言程序设计实验报告quan《高级语言程序设计》实验报告实验室名称:班级:学生姓名:学号:指导教师:学期:2009-2010学年上学期实验1 C 程序设计入门一、实验目的1、熟悉C 编程环境2、掌握简单C 程序的编辑、编译和运行方法二、知识要点1、用printf 函数输出指定字符串(转义字符的使用)2、计算并输出表达式的值3、程序书写风格三、实验预习(要求做实验前完成)1、若要在屏幕输出信息,需要用到库函数:2、输出的信息若需换行,需要用到换行符:3、按C 语言语法规则写出下列算法的表达式(1)26乘以49,再除以17:(2)求29除以6的余数:四、实验内容 (要求提供:① 算法描述或流程图② 源程序 )1、编程输出“我的信息”,包括姓名、性别、专业名称和课程名称,格式为:姓名:性别:专业名称:课程名称:2、编程求以下表达式的值:1491516232+-+ 3、编程计算并输出16.8与27.5两个数的和、差、积、商,要求输出界面为:和是:差是:积是:商是:五、实验结果要求写出运行界面并输出运行结果实验2─3 数据类型、常量变量及顺序结构程序设计一、实验目的1、掌握常量和变量的概念以及使用1、掌握变量的定义、赋值与引用2、掌握顺序结构相关语句的使用3、掌握scanf和printf输入、输出数据的方法二、知识要点1、变量与常量概念2、数据输入、输出的格式控制3、标准库函数与头文件的使用4、算术运算与赋值运算5、数据类型转换三、实验预习(要求做实验前完成)1、假如要定义两个整型变量x和y,语句int x y;错在哪里?2、把a的值赋给b,其语句是:3、如果使用语句scanf(“%d%d”,&x,&y);输入8和9两个整数,其输入格式应该是:4、如果使用语句scanf(“%d,%d”,&x,&y);输入8和9两个整数,其输入格式应该是:5、程序中如果要用到库函数sin,则应包含头文件:6、假设x是一个实型变量,语句printf(“%d”,x);错在哪里?7、语句x=10; y=20; printf(“y=%d, x= %d”,x,y); 能否交换x和y的值?四、实验内容(要求提供:①算法描述或流程图②源程序)1、输入两个人的身高,计算并输出他们的平均身高。

2010年1月高级语言程序设计(一)真题及参考答案

2010年1月高级语言程序设计(一)试题一、单项选择题(本大题共15小题,每小题2分,共30分)1. 下列不属于保留字的是( D )A. defaultB. RegisterC. structD. unsign2. 下列不能作为常量的是( A )A. 0582B. 0xa5C. ‟\n‟D. 2.5e-23. 设typedef long class;,则class是( C )A. 整型变量B. 长整型变量C. 长整型数据类型的新标识符D. 新的而非长整型数据类型的标识符4. 设char c=‟A‟;int i=1, j;,执行j=!c&&i++;后,i和j的值分别是( A )A. 1和0B. 1和1C. 2和0D. 2和l5. 设int a;,执行表达式(a=1,2,3),a+1后,a和表达式的值分别是( A )A. 1和2B. 2和3C. 3和4D. 4和56. 下列关于函数定义正确的是( D )A. fun(int x,y){int z;return z;}B. void fun(int x,int y){return x+y;}C. fun(x,y){int x,y;double z;z=x+y;return z;}D. double fun(int x,int y) {double z;z=x+y;return z;)7. 下列用户自定义标识符正确的是( B )A. 4aB. b_1C. -&D. *p8. 下列程序段中循环体执行的次数是( B )int x=-1; Do { x=x*x; }while(! x);A. 0B. 1C. 2D. 无限9. 实现字符串连接的系统函数名是( A )A. strcatB. strcmpC. strcpyD. strlen10. 若实参是一个数组名,在调用函数时,实参向形参传递的是( B )A. 数组的长度B. 数组的首地址C. 数组每个元素的值D. 数组每个元素的地址11. 设int a[ ][4]={l,2,3,4,5,6,7};,则a[1][3]的值是( A )A. 0B. 3C. 4D. 712. 若定义一个只限本源文件使用的全局变量,则该变量的存储类别是( C )A. externB. registerC. staticD. auto13. 设chark=‟a‟;float j=2.0;,执行k+=5/j;printf(“%c”,k);后,输出结果是( C )A. aB. bC. cD. d14. 下列程序段正确的是( D )A. char s[ ]={…xyz‟};scanf(……%s”,s);B. float *p,i; p=*p+i;C. char s[5]=…word‟;puts(s);D. int a[5]={0},*p=a; *p=*(p+1);15. 关于编译预处理命令,叙述正确的是( A )A. 预处理命令都以”#”开头 D. 每个程序必须在开头使用预处理命令#include<stdio. h>B. 预处理命令必须位于程序的首部C. 预处理命令只能实现宏定义和条件编译的功能二、填空题(本大题共10小题,每小题2分,共20分)16. 设float a,b,c;,若a、b和c分别为三角形的三条边长,它们”能构成等边三角形”的逻辑表达式是a+b>c && a+c>b && b+c>a 。

lesson 01 c语言基础及vc2010使用指导(0224)


任务1.0 程序设计语言的发展
程序设计语言的发展
面向机器的语言
程序设计是数据被加工的过程
机
汇
高
器
编
级
语
语
语
言
言
言
面向过程 面向对象
CPU指令系统, 由0、1序列构成 的指令码组成 如:
10000000 加 10010000 减
用助记符号描述 的指令系统 如 ADD A, B
客观世界可以分类,对象是类的实例 对象是数据和方法的封装 对象间通过发送和接受消息发生联系 程序设计关键是定义类,并由类派生对象
程序*.exe
库函数和 其它目标 程序
执行
源程序 目标程序 可执行程序
内容 程序设计语言 机器语言 机器语言
可执行
不可以
不可以
可以
文件名后缀
.c
.obj
.exe
附1 C程序的编译过程
C程序的编译过程
(1) 编译
编译就是将已经编好的源程序翻译成二进制的目标代码。编译后的文 件的扩展名为.obj。
任务1.2 C程序的书写规范
C程序的书写规范
习惯用小写字母,大小写敏感 不使用行号,无程序行概念 可使用空行和空格 常用锯齿形书写格式,如下图
优秀程序员的素质之一:
使用TAB缩进 书写规范,自动缩进 {}对齐 有足够的注释 有合适的空行
C程序的书写比较自由,可以在一行上写若干条语句,也可以在多行上写一条语句。 当一个语句分几行书写时,在换行前应加上“\”符,然后从下一行的开头继续。
//每条语句以“;”做结束符
//有几个getchar(); 需要根据不同情况确定
函数由两部分组成。第一部分是函数的说明部分。第二部分是函数的实现部 分。

c语言高级教程(解密)

高质量C++/C 编程指南目录前言 (6)第1 章文件结构 (8)1.1 版权和版本的声明 (8)1.2 头文件的结构 (8)1.3 定义文件的结构 (8)1.4 头文件的作用 (8)1.5 目录结构 (8)第2 章程序的版式 (8)2.1 空行 (8)2.2 代码行 (8)2.3 代码行内的空格 (8)2.4 对齐 (8)2.5 长行拆分 (8)2.6 修饰符的位置 (8)2.7 注释 (8)2.8 类的版式 (8)第3 章命名规则 (8)3.1 共性规则 (8)3.2 简单的W INDOWS 应用程序命名规则 (8)3.3 简单的U NIX 应用程序命名规则 (8)第4 章表达式和基本语句 (8)4.1 运算符的优先级 (8)4.2 复合表达式 (8)4.3 IF 语句 (8)4.4 循环语句的效率 (8)4.5 FOR 语句的循环控制变量 (8)4.6 SWITCH 语句 (8)4.7 GOTO 语句 (8)第5 章常量 (8)5.1 为什么需要常量 (8)5.2 CONST 与#DEFINE 的比较 (8)5.3 常量定义规则 (8)第6 章函数设计.....6.1 参数的规则 (8)6.2 返回值的规则 (8)6.3 函数内部实现的规则 (8)6.4 其它建议 (8)6.5 使用断言 (8)6.6 引用与指针的比较 (8)第7 章内存管理 (8)7.1 内存分配方式 (8)7.2 常见的内存错误及其对策 (8)7.3 指针与数组的对比 (8)7.4 指针参数是如何传递内存的? (8)7.5 FREE 和DELETE 把指针怎么啦? (8)7.6 动态内存会被自动释放吗? (8)7.7 杜绝“野指针” (8)7.8 有了MALLOC/FREE 为什么还要NEW/DELETE ? (8)7.9 内存耗尽怎么办? (8)7.10 MALLOC/FREE 的使用要点 (8)7.11 NEW/DELETE 的使用要点 (8)7.12 一些心得体会 (8)第8 章C++函数的高级特性 (8)8.1 函数重载的概念 (8)8.2 成员函数的重载、覆盖与隐藏 (8)8.3 参数的缺省值 (8)8.4 运算符重载 (8)8.5 函数内联 (8)8.6 一些心得体会 (8)第9 章类的构造函数、析构函数与赋值函数 (8)9.1 构造函数与析构函数的起源 (8)9.2 构造函数的初始化表 (8)9.3 构造和析构的次序 (8)9.4 示例:类S TRING 的构造函数与析构函数 (8)9.5 不要轻视拷贝构造函数与赋值函数 (8)9.6 示例:类S TRING 的拷贝构造函数与赋值函数 (8)9.7 偷懒的办法处理拷贝构造函数与赋值函数 (8)9.8 如何在派生类中实现类的基本函数 (8)第10 章类的继承与组合 (8)10.1 继承 (8)10.2 组合 (8)第11 章其它编程经验 (8)11.1 使用CONST 提高函数的健壮性 (8)11.2 提高程序的效率 (8)11.3 一些有益的建议..........................................................................................................8 参考文献.................................................................................................................................8 附录A :C++/C 代码审查表................................................................................................8 附录B :C++/C 试题............................................................................................................8 附录C :C++/C 试题的答案与评分标准.................................................................... .. (8)前言软件质量是被大多数程序员挂在嘴上而不是放在心上的东西!除了完全外行和真正的编程高手外,初读本书,你最先的感受将是惊慌:“哇!我以前捏造的C++/C程序怎么会有那么多的毛病?”别难过,作者只不过比你早几年、多几次惊慌而已。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档