c程序设计答案第九章
C语言程序设计课后各章节习题答案

main()
{
float x,y,d;
printf("Input x,y:");
scanf("%f,%f",&x,&y);
d=sqrt((x-2)*(x-2)+(y-2)*(y-2));
if(d>1)printf(ntf("inside");
}
12有一函数
x-1 -5<x<0
y= x x=0
x+1 0<x<8
编写一程序,要求输入x的值,输出y的值。分别用不嵌套的if语句,嵌套的if语句,switch语句编写。
答使用不嵌套的if语句程序如下:
main()
{
int x,y;
printf("Input x:");
scanf("%d",&x);
答main()
{
int x,a,b,c;
printf("Input number:");
scanf("%d",&x);
a=x/100;/*变量a中记录x的百倍数字*/
b=x/10%10;/*变量b中记录x的十位数字*/
c=x%10;/*变量c中记录x的个位数字*/
if(a*a*a+b*b*b+c*c*c==x)
if(m==2)
d=28+f;
else
d=31-(m==4)+(m==6)+(m==9)+(m==11);
printf("%d-%d is %d days.\n",y,m,d);
国家开放大学C语言程序设计章节测试参考答案

国家开放大学《C语言程序设计》章节测试参考答案第一章C语言概述自测练习一:C语言字符集自测练习1.在C语言字符集中,包含有全部26个英文大写字母和对应的小写字母。
(√)2.在C语言字符集中,一个大写英文字母和它的小写英文字母被视为不同的字符。
(√)3.在C语言程序中,ABC和abc被作为同一标识符使用。
(×)自测练习二:C语言字符集自测练习1.在C语言中,保留字是有专门含义和作用的,不能作为一般标识符使用。
(√)2.在C语言中,作为标识符的第一个字符只能是英文字母或下划线,不能是数字字符。
(√)3.C语言中使用的字符常量,其起止标记符是()。
a. 双引号b. 尖括号c. 单引号d. 中括号4.C语言中使用的字符串常量,其起止标记符是()。
a. 双引号b. 中括号c. 尖括号d. 单引号自测练习三:C语句分类自测练习1.在C语言中,一条简单语句的结束符是()。
a. 分号b. 空格c. 冒号d. 逗号2.在C语言中,每条复合语句的开始标记字符为()。
a. <b. [c. (d. {3.不符合C语言规定的复合语句是()。
a. {x=0;}b. {}c. {;}d. {y=10}4.C语言中的选择类语句有两条,它们是()。
a. else和caseb. if和switchc. if和elsed. switch和case自测练习四:函数分类与使用自测练习1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。
a. nameb. mainc. MAINd. function2.C语言程序中的基本功能模块为()。
a. 标识符b. 函数c. 表达式d. 语句3.一个函数定义所包含的两个部分是()。
a. 函数头和函数体b. 函数原型和函数体c. 函数名和参数表d. 函数头和函数尾4.一个程序文件开始使用的每条预处理命令,其首字符必须是()。
a. #b. @c. %d. $5.在一个程序文件中,若要使用#include命令包含一个系统头文件,则此头文件所使用的起止定界符为一对()。
面向对象程序设计C课后题答案

第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对象程序设计是一种新型的程序设计范型。
这种范型的主要特征是:程序=对象+消息。
面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。
第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。
面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。
这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。
[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。
对象可以认为是:数据+操作在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。
类和对象之间的关系是抽象和具体的关系。
类是多个对象进行综合抽象的结果,一个对象是类的一个实例。
在面向对象程序设计中,总是先声明类,再由类生成对象。
类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。
[1_3]现实世界中的对象有哪些特征?请举例说明。
对象是现实世界中的一个实体,其具有以下一些特征:(1)每一个对象必须有一个名字以区别于其他对象。
(2)需要用属性来描述它的某些特性。
(3)有一组操作,每一个操作决定了对象的一种行为。
(4)对象的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。
例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36 生日:1966.10.1 工资:2000 部门:人事部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对象程序设计中,一个对象向另一个对象发出的请求被称为“消息”。
C语言第九章习题带答案

练习9-1答案一、选择题1.typedef unsigned long LONG的作用是( D )。
A.建立了一种新的数据类型B.定义了一个整形变量C.定义了一个长整型变量D.定义了一个新的数据类型标识符2.下面的4个运算符中,优先级最低的是( D )。
A.( ) B.. C.-> D.++3.已知:struct{int i;char c;float a;} test;则sizeof(test)的值是( D )。
A.4 B.5 C.6 D.74.当声明一个结构变量时系统分配给它的内存是( A )。
A.各成员所需内存量的总和B.结构中第一个成员所需内存量C.成员中占内存量最大者所需的容量D.结构中最后一个成员所需内存量5.以下对结构类型变量的定义中错误的是( D )。
A.typedef struct student B.struct student{ i nt num; {int num;float age; float age;} STUDENT std1; } std1;C.struct D.struct{ i nt num; {int num;float age; float age;} std1; } student;struct student std1;6.根据下面的定义,能打印出字母M的语句是( D )。
struct person{char name[9];int age;};struct person class[10]={"John", 17, "Paul", 19, "Mary", 18, "adam", 16};A.printf("%c\n", class[3].name); B.printf("%c\n", class[3].name[1]);C.printf("%c\n", class[2].name[1]); D.printf("%c\n", class[2].name[0]); 7.以下scanf函数调用语句中对结构变量成员的错误引用是( D )。
C语言理论教材各章后习题参考答案第九章习题

第九章习题参考答案一、选择题9.1 答案:B9.2 答案:C9.3 答案:D9.4 答案:B9.5 答案:D9.6 答案:C9.7 答案:C9.8 答案:D9.9 答案:B9.10 答案:D二、读程序回答问题9.11 答案:C9.12 答案:A9.13 答案:A9.14 答案:D9.15 答案:C三、程序填空9.16答案:①FILE *fp;② "Ef9-16.txt","w"或"Ef9-16.txt","w+";③ch,fp。
9.17答案:①Ef9-17.dat;② 8*sizeof(char)。
9.18 答案:①fopen; ② SEEK_END或2。
9.19 答案:①fname; ②fp。
9.20 答案:①argc!=2; ②r; ③NULL; ④row++ ; ⑤fclose(fp)。
四、编写程序9.21 从键盘输入一行字符串,将其中的小字母全部转换成大写字母,然后输出到一个磁盘文件" Ef9-21.txt"中保存。
参考源程序如下:#include <stdio.h>void main( ){FILE *fp;char str[100];int i;if ((fp=fopen("Ef9-21.txt ", "w")) == NULL) {printf ("Cannot open the file.\n");exit(0);}printf ("Input a string:");gets (str); /* 读入一行字符串 */for (i=0; str[i]&&i<100; i++) { /* 处理该行中的每一个字符 */if (str[i] >= 'a' && str[i] <= 'z') /* 若是小写字母 */str[i] -= 'a' - 'A'; /* 将小写字母转换为大写字母 */fputc (str[i], fp); /* 将转换后的字符写入文件 */}fclose (fp); /* 结束文件输入操作关闭文件 */}9.22文件Ef9-22.txt中存放了一个学生各门课程的考试分数,数据之间以逗号分割。
c++第九章练习答案

};
Time::Time(int h,int m,int s){SetTime(h,m,s);}
void Time::SetTime(int hh,int mm,int ss)
{
hour=(hh>=0&&hh<=23)? hh:0;
minute=(mm>=0&&mm<=59)?mm:0;
second=(ss>=0&&ss<=59)?ss:0;
}
void show_date1(Date d)
{
cout<<d.mouth <<"-"<<d.day <<"-"<<d.year <<endl;
}
void show_date2(Date d)
{
cout<<d.year <<"-"<<d.mouth <<"-"<<d.day <<endl;
}
(简单的完整日期类)私有的数据成员
int main()
{
cout<<"Enter date(day month year:"<<endl;
Date date1;
set_date(date1);
show_date2(date1);
show_date1(date1);
return 0;
}
void set_date(Date& d)
《C语言程序设计》试题九及答案
《C语言程序设计》试题九 (1)一、选择题 (1)二、填空题 (2)三、程序填空与算法题 (3)四、编程题 (5)《C语言程序设计》试题九答案 (6)《C语言程序设计》试题九一、选择题1.一个C语言程序是由()构成。
A.语句 B.行号 C.数据 D.函数2.下面标识符中正确的是()。
A.d&ef B.6a C.z4x5c D.a3/b43.在C语言中,存储一个字符型、整型、单精度实型变量所需的空间是()。
型、单精度实型变量所需的空间是()。
A.1、2、4 B.1、1、4 C.1、2、8 D.2、2、84.为了避免嵌套的条件分支语句 if--else中的else总是与()组成成对关系。
A. 缩排位置相同的B. 在其之前未配对的C. 在其之前未配对的最近的ifD. 在同一行上的if5.下列表达式的结果正确的是()。
int aa,bb,cc,dd;aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;sp; aa=bb=cc=dd=1;(aa+1==2)?bb=aa+2:aa+3A.2 B.3 C. 1 D.56.设有int x=11 ;则表达式(x+1/3)的值是()。
A.3 B. 4 C. 11 D.127.设有字符串A=“He has 钱!”,则该字符串的长度为()。
A. 9B. 10C. 11D. 88.有如下程序段,则正确的执行结果是()int m=3;while(m<=5){ printf(“%d”,m-3); m++;}A. 0 0 0 B.0 1 2 C.1 2 3 D.无结果9.执行语句:printf("%d",(a=2)&&(b= -2);后,输出结果是()。
A.无输出 B.结果不确定 C.-1 D. 110.有如下定义类型语句,若从键盘输入数据,正确的输入语句是()。
int x; char y; char z[20];A. scanf("%d%c%c",&x,&y,&z);B. scanf("%d%c%s",&x,&y,&z);C. scanf("%d%c%c",&x,&y,z);D. scanf("%d%c%s",&x,&y,z);11. struct ex{ int x ; float y; char z ;} example;则下面的叙述中不正确的是()。
数据结构(c语言版)题集答案——第九章_查找
*;
;
*;
} ;
{
*;
;
} ;供查找地双向循环链表类型
*( )在有序双向循环链表存储结构上地查找算法,假定每次查找都成功文档来自于网络搜索
{
;
(>>)
{
(>>) >;
;
}
(>{
(>;
;
}
;
}
分析:本题地平均查找长度与上一题相同,也是.
;
( )判断二叉树是否二叉排序树,是则返回,否则返回
{
(>) (>);
{
;
()沿分支向下查找
{
(>>[]);确定关键字所在子树
(>) ;关键字太大
>[];
}
(>[]);在叶子结点中查找
(>) ;找不到关键字
;
;
}
( )在树中插入字符串地结构见第四章文档来自于网络搜索
{
(*)(());
>;
>;建叶子结点
[];
;
(<>[([])])
{
;
>[([])];
;
}自上而下查找
(>)如果最后落到分支结点(无同义词):
(>>>)其余部分与上一题同
{
(>) >;
(>);
}
(>)
{
(>) >;
(>);
}
>;
>;
}
{
;
;
;域表示该结点地左子树地结点总数加
*,*;
} ,*;含域地平衡二叉排序树类型
第9章C语言程序设计习题答案
《C语言程序设计(Visual C++6.0环境)》习题答案习题九一、思考题1.根据数据的组织形式,C文件可分为哪两种,各有何特点?文件可分为ASCⅡ码文件和二进制文件。
ASCⅡ码文件又称为文本文件,该文件是由一个个字符组成,每一个字节存放一个ASCⅡ码,代表一个字符。
二进制文件是把内存中的数据按其在内存中的存储形式原样放入磁盘存放。
2.什么是文件类型指针?C语言程序可以同时处理多个文件,为了对每一个文件进行有效的管理,在打开一个文件时,系统会自动地在内存中开辟一个区,用来存放文件的有关信息(如文件名、文件状态等)。
这些信息保存在一个结构体变量中,该结构体是由系统定义的,取名为FILE。
对每一个要进行操作的文件,都需要定义一个指向FILE类型结构体的指针变量,该指针称为文件类型指针。
3.从键盘输入一些字符,逐个把它们写入到磁盘文件中,直到输入一个#为止。
#include<stdio.h>void main(){char a;FILE *fp;printf("Please enter char(# to exit):\n");fp=fopen("t.txt","wa");while(1){scanf(" %c",&a);if(a!='#')fwrite(&a,1,sizeof(char),fp);elsebreak;}fclose(fp);}4.将文件“A”中的数据复制到文件“B”中。
#include "stdio.h"#include "stdlib.h"void main(){FILE *fp1,*fp2;char ch;fp1=fopen("A.dat","rb");if(fp1==NULL){printf("打开文件A.dat错误!\n");exit(0);}fp2=fopen("B.dat","wb");ch=fgetc(fp1);while(!feof(fp1)){fputc(ch,fp2);ch=fgetc(fp1);}printf("复制完成,请查阅文件!\n");fclose(fp1);fclose(fp2);}5.有5个学生,每个学生有三门课的成绩,从键盘输入每个学生的姓名及三门课的成绩,计算出平均成绩,将原有数据和计算出的平均成绩存入文件“stu”中。
严蔚敏《数据结构(c语言版)习题集》算法设计题第九章答案
严蔚敏《数据结构(c语言版)习题集》算法设计题第九章答案第九章查找int Search_Sq(SSTable ST int key)//在有序表上顺序查找的算法监视哨设在高下标端{ST elem[ST length+ ] key=key;for(i= ;ST elem[i] key>key;i++);if(i>ST length||ST elem[i] keyreturn i;}//Search_Sq分析:本算法查找成功情况下的平均查找长度为ST.length/2,不成功情况下为ST.length.9.26int Search_Bin_Recursive(SSTable ST,int key,int low,int high)//折半查找的递归算法{if(low>high) return 0; //查找不到时返回0mid=(low+high)/2;if(ST.elem[mid].key==key) return mid;else if(ST.elem[mid].key>key)return Search_Bin_Recursive(ST,key,low,mid-1);else return Search_Bin_Recursive(ST,key,mid+1,high);}}//Search_Bin_Recursive9.27int Locate_Bin(SST able ST,int key)//折半查找,返回小于或等于待查元素的最后一个结点号{int *r;r=ST.elem;if(keyelse if(key>=r[ST.length].key) return ST.length;low=1;high=ST.length;while(low<=high){mid=(low+high)/2;if(key>=r[mid].key&&keyreturn mid;else if(keyelse low=mid;} //本算法不存在查找失败的情况,不需要return 0;}//Locate_Bin9.28typedef struct {int maxkey;int firstloc;} Index;typedef struct {int *elem;int length;Index idx[MAXBLOCK]; //每块起始位置和最大元素,其中idx[0]不利用,其内容初始化为{0,0}以利于折半查找int blknum; //块的数目} IdxSqList; //索引顺序表类型int Search_IdxSeq(IdxSqList L,int key)//分块查找,用折半查找法确定记录所在块,块内采用顺序查找法{if(key>L.idx[L.blknum].maxkey) return ERROR; //超过最大元素low=1;high=L.blknum;found=0;while(low<=high&&!found) //折半查找记录所在块号mid{mid=(low+high)/2;if(key<=L.idx[mid].maxkey&&key>L.idx[mid-1].maxkey)found=1;else if(key>L.idx[mid].maxkey)low=mid+1;else high=mid-1;}i=L.idx[mid].firstloc; //块的下界j=i+blksize-1; //块的上界temp=L.elem[i-1]; //保存相邻元素L.elem[i-1]=key; //设置监视哨for(k=j;L.elem[k]!=key;k--); //顺序查找L.elem[i-1]=temp; //恢复元素if(kreturn k;}//Search_IdxSeq分析:在块内进行顺序查找时,如果需要设置监视哨,则必须先保存相邻块的相邻元素,以免数据丢失.9.29typedef struct {LNode *h; //h指向最小元素LNode *t; //t指向上次查找的结点} CSList;LNode *Search_CSList(CSList &L,int key)//在有序单循环链表存储结构上的查找算法,假定每次查找都成功{if(L.t->data==key) return L.t;else if(L.t->data>key)for(p=L.h,i=1;p->data!=key;p=p->next,i++);elsefor(p=L.t,i=L.tpos;p->data!=key;p=p->next,i++);L.t=p; //更新t指针return p;}//Search_CSList分析:由于题目中假定每次查找都是成功的,所以本算法中没有关于查找失败的处理.由微积分可得,在等概率情况下,平均查找长度约为n/3.9.30typedef struct {DLNode *pre;int data;DLNode *next;} DLNode;typedef struct {DLNode *sp;int length;} DSList; //供查找的双向循环链表类型DLNode *Search_DSList(DSList &L,int key)//在有序双向循环链表存储结构上的查找算法,假定每次查找都成功{p=L.sp;if(p->data>key){while(p->data>key) p=p->pre;L.sp=p;}{while(p->data next;L.sp=p;}return p;}//Search_DSList分析:本题的平均查找长度与上一题相同,也是n/3.9.31int last=0,flag=1;int Is_BSTree(Bitree T)//判断二叉树T是否二叉排序树,是则返回1,否则返回0{if(T->lchild&&flag) Is_BSTree(T->lchild);if(T->datalast=T->data;if(T->rchild&&flag) Is_BSTree(T->rchild);return flag;}//Is_BSTree9.32int last=0;void MaxLT_MinGT(BiTree T,int x)//找到二叉排序树T中小于x 的最大元素和大于x的最小元素{if(T->lchild) MaxLT_MinGT(T->lchild,x); //本算法仍是借助中序遍历来实现if(last data>=x) //找到了小于x的最大元素printf("a=%d\n",last);if(last<=x&&T->data>x) //找到了大于x的最小元素printf("b=%d\n",T->data);if(T->rchild) MaxLT_MinGT(T->rchild,x);}//MaxLT_MinGT9.33void Print_NLT(BiTree T,int x)//从大到小输出二叉排序树T中所有不小于x的元素{if(T->rchild) Print_NLT(T->rchild,x);if(T->dataprintf("%d\n",T->data);if(T->lchild) Print_NLT(T->lchild,x); //先右后左的中序遍历}//Print_NLT9.34void Delete_NLT(BiTree &T,int x)//删除二叉排序树T中所有不小于x元素结点,并释放空间{if(T->rchild) Delete_NLT(T->rchild,x);if(T->dataq=T;T=T->lchild;free(q); //如果树根不小于x,则删除树根,并以左子树的根作为新的树根if(T) Delete_NLT(T,x); //继续在左子树中执行算法}//Delete_NLT9.35void Print_Beeen(BiThrTree T,int a,int b)//打印输出后继线索二叉排序树T中所有大于a且小于b的元素{p=T;while(!p->ltag) p=p->lchild; //找到最小元素while(p&&p->data{if(p->data>a) printf("%d\n",p->data); //输出符合条件的元素if(p->rtag) p=p->rtag;else{p=p->rchild;while(!p->ltag) p=p->lchild;} //转到中序后继}//while}//Print_Beeen9.36void BSTree_Insert_Key(BiThrTree &T,int x)//在后继线索二叉排序树T中插入元素x{if(T->data{if(T->rtag) //T没有右子树时,作为右孩子插入{p=T->rchild;q=(BiThrNode*)malloc(sizeof(BiThrNode));q->data=x;T->rchild=q;T->rtag=0;q->rtag=1;q->rchild=p; //修改原线索}else BSTree_Insert_Key(T->rchild,x);//T有右子树时,插入右子树中}//ifelse if(T->data>x) //插入到左子树中{if(!T->lchild) //T没有左子树时,作为左孩子插入{q=(BiThrNode*)malloc(sizeof(BiThrNode));q->data=x;T->lchild=q;q->rtag=1;q->rchild=T; //修改自身的线索}else BSTree_Insert_Key(T->lchild,x);//T有左子树时,插入左子树中}//if}//BSTree_Insert_Key9.37。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9.2答:
#include
#define SURPLUS(a,b) ((a)%(b))
void main ()
{
int a,b;
printf("Input two integers a,b:");
scanf("%d,%d",&a,&b);
printf("Remember is %d\n",SURPLUS(a,b));
}
9.3答:
#include
#define S(a,b,c) (a+b+c)/2
#define AREA(a,b,c) sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c))
void main ()
{
floata,b,c;
printf("输入3个数a,b,c:\n\n");
scanf("%f,%f,%f",&a,&b,&c);
if (a+b>c &&a+c>b &&b+c>a)
printf("area:%8.2f.\n",AREA(a,b,c));
else
printf("\n输入的3个数无法构成三角形\n\n");
}
9.7答:
/*format.h文件*/
#define INT(d) printf("%d\n",d)
#define FLOAT(f) printf("%6.2f\n",f)
#define STRING(s) printf("%s\n",s)
#include
#include "format.h"
void main ()
{
intd,num;
float f;
char s[50];
printf("选择输出格式:1-int,2-float,3-string:");
scanf("%d",&num);
switch(num)
{
case 1:printf("输出整形:");
scanf("%d",&d);
INT(d);
break;
case 2:printf("输出实数:");
scanf("%f",&f);
FLOAT(f);
break;
case 3:printf("输出字符串:");
scanf("%s",&s);
STRING(s);
break;
}
}