C程序设计第三版第十章题解

合集下载

C程序设计(第三版)章 (10)

C程序设计(第三版)章 (10)

第十章 文件
在C语言中文件的含义更为广泛,不仅包含以上所述 的磁盘文件,还包括一切能进行输入/输出的终端设备,它 们被看成是设备文件。如键盘常称为标准输入文件,显示 器称为标准输出文件。
文件是由磁盘文件和设备文件组成的。作为磁盘文件 之一的数据文件是本章学习的主要对象。
第十章 文件
根据文件内数据的组织形式, 文件可分为文本(text) 文件和二进制文件。 文本文件又称为ASCII码文件, 这种文件在磁盘中存放时每个字节存放一个字符的ASCII 码。 ASCII码文件可在屏幕上按字符显示, 文件的内容可 以通过编辑程序(如记事本等)进行建立和修改, 人们能读 懂文件内容。 但是ASCII码文件所占存储空间较多, 处理 时要花费转换时间(内存中的二进制形式与ASCII码之间的 转换)。
缓冲文件系统中,关键的概念是文件指针。
第十章 文件
通常,由于文件中的数据很多,因此读/写时应该指明 对哪个数据进行操作。流式文件中采用的方法是设立一个 专门用来存放文件读/写位置的变量,称为当前工作指针。 在对某文件开始进行操作时,将当前工作指针的值设置为 0,表示文件从头开始读(写); 每次读(写)之后,自动将当 前工作指针的值加上本次读(写)的字节数,作为下次读(写) 的位置。从前面的介绍可以看出,要对一个文件进行操作, 除了要设当前工作指针,还必须管理缓冲区。实际上,在 头文件stdio.h中,定义了一个名为FILE的类型,包含了所 有与文件操作有关的数据成员,这个文件类型是文件处理 的基础。文件类型FILE不是C语言的新类型,它是用 typedef定义出来的有关文件信息的一种结构体类型。如 Turbo C的stdio.h文件中有如下的定义:
第十章 文件
数据流可分为文字流和二进制流。 一个文字流是一行行的字符,换行符表示这一行的结 束。文字流中某些字符的变换由环境工具的需要来决定。 例如一个换行符可以变换为回车换行两个字符。因此所读 /写的字符与外部设备中的数据没有一一对应的关系。 一个二进制流是由与外部设备中的数据一一对应的一 系列字节组成的。使用中没有字符翻译过程,而且所读/ 写的字节数目也与外部设备中的数目相同。

C语言程序设计(第三版)谭浩强著 各章习题答疑

C语言程序设计(第三版)谭浩强著 各章习题答疑

以八、 /* 以八、十六进制输出 */
} ???? 是对应的带符号短整数。 输出结果是八进制整数 十六进制整数
2
3.9 计算某个表达式的值。 通用程序清单如下: stdio.h” #include ”stdio.h stdio.h void main() { ?????? x; 计算表达式值存入x x=( 表达式 );/* 计算表达式值存入x */ printf(”% printf( %?\n”,x); ,x); } ?????? 表达式对应的数据类型符(需事先判断) ? 表达式为整型,则为d 表达式为实型,则为f 3
第七章习题答疑(二)
折半查找法在排序数组中查找某个数。 上课时已有提示。 7.13 字符串连接(b[]中字符串连接到a[]中字符串后) 设:a[10]=”12 ,b[]=”abc 12”, abc” 12 abc (1)找到a串的’\0’的下标(i=2) ’ (2)j=0; 当型循环(b[j]!=’\0’) ’\ ’ a[i]=b[j],i++,j++ (3)a[i]=’\0’ \ 7.15 字符串复制(b[]中字符串复制到a[]中) 设:a[10]=”12”,b[]=”abc” (1)i=0; 当型循环(b[i]!=’\0’) a[i]=b[i],i++ (2)a[i]=’\0’ 7.9
18
第十章习题答疑(一)
输入3个整数,按照由小到大顺序输出。 int x,y,z,*px=&x,*py=&y,*pz=&x; 用以前的程序,其中的x、y、z换成*px、*py、*pz 10.3 输入10个整数存入一维数组a[10],将其中最小数与第1 个数交换,最大数与最后一个数交换。 要求编3个函数: 10 10 输入10个整数、交换、输出交换后的10个整数。 输入函数: void in(int *p,int n) 输出函数: void out(int *p,int n) 交换函数: void change(int *p,int n) 其中寻找最大最小数的方法: int *q,*max,*min; for (max=min=p,q=p+1;q<p+n;q++) { if(*max<*q) max=q; if(*min>*q) min=q; } 19 交换的方法:*p和*min,*(p+n-1)和*max 10.1

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案

《C语言程序设计教程》第三版课后习题参考答案C语言程序设计教程第三版课后习题参考答案第一章:C语言概述1.1 C语言的特点答案:C语言是一种通用的、面向过程的程序设计语言,具有高效、简洁、灵活等特点。

它提供了丰富的程序设计元素和功能,适用于各种不同的应用领域。

1.2 C语言程序的基本结构答案:C语言程序由预处理指令、函数声明、函数定义、变量声明和语句组成。

其中,预处理指令用来引入头文件或定义宏,函数声明用来声明函数的名称和参数,函数定义用来实现函数的功能,变量声明用来声明变量的类型和名称,语句用来表达具体的计算过程。

1.3 C语言的数据类型答案:C语言提供了多种数据类型,包括基本类型(整型、浮点型、字符型等)和派生类型(数组、指针、结构体等)。

每种数据类型在内存中占据一定的存储空间,并具有特定的取值范围和操作规则。

1.4 C语言的运算符和表达式答案:C语言支持各种运算符和表达式,例如算术运算符(+、-、*、/等)、关系运算符(>、<、==等)、逻辑运算符(&&、||、!等)等。

通过运算符和表达式可以进行各种数值计算和逻辑判断。

第二章:基本数据类型与运算2.1 整型数据类型答案:C语言提供了不同长度的整型数据类型,包括有符号整型(int、long等)和无符号整型(unsigned int、unsigned long等)。

整型数据类型可以表示整数值,并具有不同的取值范围。

2.2 浮点型数据类型答案:C语言提供了浮点型数据类型(float、double等),用来表示带小数部分的实数值。

浮点型数据可以表示较大或较小的数值,并具有一定的精度。

2.3 字符型数据类型答案:C语言提供了字符型数据类型(char),用来表示单个字符。

字符型数据可以用于表示各种字符(包括字母、数字、符号等)。

2.4 布尔型数据类型答案:C语言不直接支持布尔型数据类型,但可以使用整型数据类型来表示布尔值(0表示假、非零表示真)。

c语言程序设计教程第三版习题答案

c语言程序设计教程第三版习题答案

c语言程序设计教程第三版习题答案C语言程序设计教程第三版习题答案第一章:C语言概述1. 简述C语言的特点。

C语言是一种结构化编程语言,具有高级语言的特点,同时支持底层硬件操作。

其特点包括:简洁、高效、可移植、丰富的运算符、数据结构支持、广泛的库函数等。

2. 什么是编译型语言?编译型语言是指源代码在执行前需要通过编译器转换成机器语言的程序设计语言。

C语言就是一种编译型语言。

第二章:数据类型、运算符和表达式1. 列出C语言的基本数据类型。

C语言的基本数据类型包括:整型(int)、字符型(char)、浮点型(float和double)。

2. 说明赋值运算符的用法。

赋值运算符(=)用于将右侧表达式的值赋给左侧的变量。

例如:`int a = 10;` 将整数值10赋给变量a。

第三章:控制结构1. 什么是条件语句?条件语句用于根据条件的真假来执行不同的代码块。

C语言中的条件语句主要有if语句和switch语句。

2. 循环语句有哪些?C语言中的循环语句主要有for循环、while循环和do-while循环。

第四章:数组和字符串1. 数组的声明和初始化方式。

数组声明的一般形式为:`type arrayName[arraySize];`。

初始化可以使用花括号一次性赋值,如:`int arr[5] = {1, 2, 3, 4, 5};`。

2. 字符串在C语言中的表示方法。

在C语言中,字符串以字符数组的形式存在,以空字符('\0')作为结束标志。

第五章:函数1. 函数的定义和调用。

函数定义的一般形式为:`returnTypefunctionName(parameterList) { /* function body */ }`。

调用函数时,使用其名称和必要的参数。

2. 函数的参数传递方式有哪些?C语言中函数的参数传递方式主要有值传递(pass by value)和引用传递(pass by reference)。

C#程序设计第十章课后习题答案

C#程序设计第十章课后习题答案

单选:(1).NET中的大多数控件都派生于(C)类A. ClassB. FromC. ControlD. Object(2)在以下控件中,可用于输入数据的是(B)A. LabelB. TextBoxC. ButtonD. PictureBox(3)在以下控件中,可实现多项选择的是(A)A. CheckBoxB.RadioButtonboBoxD.NumericUpDown(4)不属于容器控件的是(C)A. GroupBoxB.PanelC.MenuStripD.TapControl(5)(B)控件组合了TextBox控件和ListBox控件的功能。

belboBoxC.ProgressBarD.PictureBox(6)让控件不可以使用的属性是以下哪一个?BA. AllowDropB.EnabledC.BoundsD.Visible(7)让控件不可显示的属性是以下哪一个?DA. AllowDropB.EnabledC.BoundsD.Visible(8)不能用于设置控件布局位置的属性是(C)A.LeftB.TopC.SizeD.Location(9)可用来设置文字颜色的属性是(B)A. BackColorB.ForeColorC.TextD.Parent(10)TextBox控件的(B)属性将输入的字符代替显示为指定的密码字符。

A. TextB.PasswordCharC.TextAlignD.Multiline(11)所有控件都一定具有的属性是(D)A.TextB.BackColorC.Items(12)当用户鼠标左键单击窗体或控件系统将触发(D)事件A. ActivatedB.LoadC.DoubleClickD.Click(13)用户修改了文本框中的内容时,系统将触发(A)事件。

A .xtChanged B.CheckedChanfed C.SelectedIndexChanged D.SizeChanged(14)在列表框或组合框中,当用户重新选择另一个选项时,系统将触发(C)事件。

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强课后习题答案完整版

C语言程序设计第三版谭浩强课后习题答案完整版第一章1.5请参照本章例题,编写一个C程序,输出以下信息:**************************Very Good!**************************解:mian(){printf(“**************************”);printf(“\n”);printf(“Very Good!\n”);printf(“\n”);printf(“**************************”);}1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。

解:mian(){int a,b,c,max;printf(“请输入三个数a,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if(max<b)max=b;if(max<c)max=c;printf(“最大数为:“%d”,max);}第三章3.6写出以下程序运行的结果。

main(){char c1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c %c”,c4,c5);}解:aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabcAㄩN3.7要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母.例如,字母"A"后面第4个字母是"E"."E"代替"A"。

因此,"China"应译为"Glmre"。

请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为,’C’、’h’、’i’、’n’、’a’,经过运算,使c1、c2、c3、c4、c5分别变为’G’、’l’、’m’、’r’、’e’,并输出。

C++程序设计第三版(谭浩强)第十章习题答案

C++程序设计第三版(谭浩强)第十章习题答案
return c;}
void Complex::display()
{cout<<"("<<real<<","<<imag<<"i)"<<endl;}
int main()
{Complex c1(3,4),c2(5,-10),c3;
c3=c1+c2;
cout<<"c1+c2=";
c3.display();
c3=c1-c2;
cout<<"c1-c2=";
c3.display();
c3=c1*c2;
cout<<"c1*c2=";
c3.display();
c3=c1/c2;
cout<<"c1/c2=";
c3.display();
return 0;
}
10.3 题
#include <iostream> //用 VC++时改为∶ #include
Complex operator+(int &i,Complex &c)
{return Complex(i+c.real,c.imag);}
int main()
{Complex c1(3,4),c2(5,-10),c3;
int i=5;
c3=c1+c2;
cout<<"c1+c2=";
c3.display();

《C语言程序设计教程》(第三版)李凤霞 主编——第十章习题答案

《C语言程序设计教程》(第三版)李凤霞 主编——第十章习题答案

习题十一、单选题1~5 DDDCC6~10 AABDB11~14 CADC二、填空题1、34 122、ARRAY a,b,c;3、1 34、a c5、(*b).day=? b->day=?5、分析下列程序执行结果。

#include “stdio.h”main(){static struct s1{char c[4],*s;s1={“abc”,”def”};static struct s2{char *cp;struct s1 ss1;}s2={“ghi”,{“jkl”,”mno”}};printf(“%c%c\n”,s1.c[0],*s1.s); /*output ab */printf(“%s%s\n”,s1.c,s1.s); /*output abcdef */printf(“%s%s\n”,s2.cp,s2.ss1.s); /*output ghimno */printf(“%s%s\n”,++s2.cp,++s2.ss1.s); /* output hino */}6、以下程序的功能是:读入一行字符(如:a,...,y,z),按输入时的逆序建立一个链式的结点序列,即先输入的位于链表尾(如下图),然后再按输入的相反顺序输出,并释放全部结点。

#define getnode(type)_________malloc(sizeof(type)) ( (struct node *))main(){struct node{char info;struct node *link;}*top,*p;char c;top=NULL;while((c=getchar())______________) (!='\n'){p=getnode(struct node);p->info=c;p->link=top;top=p;}while(top){_________________; (p=top)top=top->link;putchar(p->info);free(p);}}7、下面的函数将指针p2所指向的线性链表链接到p1所指向的的链表的末端。

C程序设计第三版第十章题解

C程序设计第三版第十章题解

第十章指针10.1 输入3个整数,按照从小到大的顺序输出#include<stdio.h>void main(){void swap(int *p1, int *p2);int n1,n2,n3;int *p1,*p2,*p3;printf("input three integer:");scanf_s("%d,%d,%d",&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if(n1>n2) swap(p1,p2);if(n1>n3) swap(p1,p3);if(n2>n3) swap(p2,p3);printf("the order: %d,%d,%d\n",n1,n2,n3);}void swap(int *p1, int *p2){int temp;temp=*p1;*p1=*p2;*p2=temp;}NOTE:scanf的参数为地址,printf参数为参数10.2输入三个字符串,按照从小到大的顺序输出#include<stdio.h>#include<string.h>void main(){void swap(char *p1, char *p2);char str1[20],str2[20],str3[20];printf("input three string:");gets_s(str1);gets_s(str2);gets_s(str3);if(strcmp(str1,str2)) swap(str1,str2);if(strcmp(str1,str3)) swap(str1,str3);if(strcmp(str2,str3)) swap(str2,str3);printf("the order: %s,%s,%s\n",str1,str2,str3); }void swap(char *p1, char *p2)char temp[20];strcpy(temp,p1);strcpy(p1,p2);strcpy(p2,temp);}NOTE:gets()用于获取字符串输入。

C程序设计(第三版)谭浩强 清华大学出版社 课后习题答案

C程序设计(第三版)谭浩强 清华大学出版社 课后习题答案

C程序设计(第三版)谭浩强清华大学出版社课后习题答案第一章1.5# include <stdio.h>void main(){printf("* * * * * * * * *\n V ery good!\n* * * * * * * * *\n");}1.6(法一)#include <stdio.h>main(){int a,b,c,max;scanf("%d,%d,%d",&a,&b,&c);max=(a>b)?a:b;max=(max>c)?max:c;printf("max=%d\n",max);}(法二)main(){int a,b,c,max;scanf("%d,%d,%d",&a,&b,&c);if(a>b&&a>c)max=a;else if (b>c)max=b;elsemax=c;printf("max=%d\n",max);}(法三)# include <stdio.h>void main(){int max(int x,int y,int z);int a,b,c,d;scanf("%d,%d,%d",&a,&b,&c);d=max(a,b,c);printf("max=%d\n",d);}int max(int x,int y,int z){int A,B;if(x>y) A=x;else A=y;if(z>A) B=z;else B=A;return(B);}第三章3.3(1)(10)10=(12)8=(a)16(2)(32)10=(40)8=(20)16(3)(75)10=(113)8=(4b)16(4)(-617)10=(176627)8=(fd97)16(5)(-111)10=(177621)8=(ff91)16(6)(2483)10=(4663)8=(963)16(7)(-28654)10=(110022)8=(9012)16(8)(21003)10=(51013)8=(520b)163.6aabb (8)cc (8)abc(7)AN3.7main(){char c1='C',c2='h',c3='i',c4='n',c5='a';c1+=4, c2+=4, c3+=4, c4+=4, c5+=4; printf("%c%c%c%c%c\n",c1,c2,c3,c4,c5); }3.8main(){int c1,c2;c1=97;c2=98;printf("%c %c",c1,c2);}(1)=2.5(2)=3.53.109,11,9,103.12(1)24 (2)10 (3)60 (4)0 (5)0 (6)0第四章4.4main(){int a,b,c;long int u,n;float x,y,z;char c1,c2;a=3;b=4;c=5;x=1.2;y=2.4;z=-3.6;u=51274;n=128765;c1='a';c2='b';printf("\n");printf("a=%2d b=%2d c=%2d\n",a,b,c);printf("x=%8.6f,y=%8.6f,z=%9.6f\n",x,y,z);printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x); printf("u=%6ld n=%9ld\n",u,n);printf("c1='%c'or %d(ASCII)\n",c1,c1);printf("c2='%c'or %d(ASCII)\n",c2,c2);}4.5575 767.856400,-789.12396267.856400,-789.12396267.86 -789.12,67.856400,-789.123962,67.856400,-789.123962 6.785640e+001,-7.89e+002A,65,101,411234567,4553207,d68765535,177777,ffff,-1COMPUTER, COMa=3 b=7/x=8.5 y=71.82/c1=A c2=a/4.710 20Aa1.5 -3.75 +1.4,67.8/(空3)10(空3)20Aa1.5(空1)-3.75(空1)(随意输入一个数),67.8回车4.8main(){float pi,h,r,l,s,sq,sv,sz;pi=3.1415926;printf("input r,h\n");scanf("%f,%f",&r,&h);l=2*pi*r;s=r*r*pi;sq=4*pi*r*r;sv=4.0/3.0*pi*r*r*r;sz=pi*r*r*h;printf("l=%6.2f\n",l);printf("s=%6.2f\n",s);printf("sq=%6.2f\n",sq);printf("vq=%6.2f\n",sv);printf("vz=%6.2f\n",sz);}4.9main(){float c,f;scanf("%f",&f);c=(5.0/9.0)*(f-32);printf("c=%5.2f\n",c);}4.10#include"stdio.h"main(){char c1,c2;scanf("%c,%c",&c1,&c2);putchar(c1);putchar(c2);printf("\n");printf("%c%c\n",c1,c2);第五章5.3(1)0 (2)1 (3)1 (4)0 (5)15.4main(){int a,b,c;scanf("%d,%d,%d",&a,&b,&c); if(a<b)if(b<c)printf("max=%d\n",c);elseprintf("max=%d\n",b); else if(a<c)printf("max=%d\n",c); elseprintf("max=%d\n",a);}main(){int a,b,c,temp,max;scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)?a:b;max=(c>temp)?c:temp;printf("max=%d",max);}5.5main(){int x,y;scanf("%d",&x);if(x<1)y=x;else if(x<10)y=2*x-1;else y=3*x-11;printf("y=%d",y);}5.6main(){int score,temp,logic;char grade;logic=1;while(logic){scanf("%d",&score);if(score>=0&&score<=100)logic=0;}if(score==100)temp=9;elsetemp=(score-score%10)/10;switch(temp){case 9:grade='A';break;case 8:grade='B';break;case 7:grade='C';break;case 6:grade='D';break;case 5:case 4:case 3:case 2:case 1:case 0:grade='E';}printf"score=%d,grade=%c",score,grade);}5.7main(){long int num;int indiv,ten,hundred,thousand,ten_thousand,place;scanf("%ld",&num);if(num>9999) place=5;else if(num>999) place=4;else if(num>99) place=3;else if(num>9) place=2;else place=1;printf("place=%d\n",place);ten_thousand=num/10000;thousand=(num-ten_thousand*10000)/1000;hundred=(num-ten_thousand*10000-thousand*1000)/100;ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=num-ten_thousand*10000-thousand*1000-hundred*100-ten*10;switch(place){case 5:printf("%d,%d,%d,%d,%d\n",ten_thousand,thousand,hundred,ten,indiv);printf("%d,%d,%d,%d,%d\n",indiv,ten,hundred,thousand,ten_thousand);break;case 4:printf("%d,%d,%d,%d\n",thousand,hundred,ten,indiv);printf("%d,%d,%d,%d\n",indiv,ten,hundred,thousand);break;case 3:printf("%d,%d,%d\n",hundred,ten,indiv);printf("%d,%d,%d\n",indiv,ten,hundred);break;case 2:printf("%d,%d\n",ten,indiv);printf("%d,%d\n",indiv,ten);break;case 1:printf("%d\n",indiv);printf("%d\n",indiv);}}5.8main(){long i;float bonus,bon1,bon2,bon4,bon6,bon10;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;scanf("%ld",&i);if(i<=1e5)bonus=i*0.1;else if(i<=2e5)bonus=bon1+(i-100000)*0.075;else if(i<=4e5)bonus=bon2+(i-200000)*0.05;else if(i<=6e5)bonus=bon4+(i-400000)*0.03;else if(i<=1e6)bonus=bon6+(i-600000)*0.015;else bonus=bon10+(i-1000000)*0.01;printf("bonus=%10.2f",bonus);}main(){long i;float bonus,bon1,bon2,bon4,bon6,bon10;int branch;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;scanf("%ld",&i);branch=i/100000;if(branch>10)branch=10;switch(branch){case 0:bonus=i*0.1;break;case 1:bonus=bon1+(i-100000)*0.075;break; case 2:case 3:bonus=bon2+(i-200000)*0.05;break; case 4:case 5:bonus=bon4+(i-400000)*0.03;break; case 6:case 7case 8:case 9:bonus=bon6+(i-600000)*0.015;break; case 10:bonus=bon10+(i-1000000)*0.01;}printf("bonus=%10.2f",bonus);}4.9main(){int t,a,b,c,d;scanf("%d,%d,%d,%d",&a,&b,&c,&d);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}printf("%d %d %d %d\n",a,b,c,d);}5.10main(){int h=10;float x,y,x0=2,y0=2,d1,d2,d3,d4;scanf("%f,%f",&x,&y);d1=(x-x0)*(x-x0)+(y-y0)*(y-y0);d2=(x-x0)*(x-x0)+(y+y0)*(y+y0);d3=(x+x0)*(x+x0)+(y-y0)*(y-y0);d4=(x+x0)*(x+x0)+(y+y0)*(y+y0);if(d1>1&&d2>1&&d3>1&&d4>1)h=0; printf("h=%d",h);}第六章循环控制6.1main(){int a,b,num1,num2,temp;scanf("%d,%d",&num1,&num2);if(num1<num2){temp=num1;num1=num2;num2=temp;}a=num1;b=num2;while(b!=0){temp=a%b;a=b;b=temp;}printf("%d\n",a);printf("%d\n",num1*num2/a);}6.2#include"stdio.h"main(){char c;int letters=0,space=0,digit=0,other=0;while((c=getchar())!='\n'){if(c>='a'&&c<='z'||c>='A'&&c<='Z') letters++;else if(c==' ')space++;else if(c>='0'&&c<='9')digit++;else other++;}printf("letters=%d\nspace=%d\ndigit=%d\nother=%d\n",letters,space,digit,other); }6.3main(){int a,n,count=1,sn=0,tn=0;scanf("%d,%d",&a,&n);while(count<=n){tn+=a;sn+=tn;a*=10;++count;}printf("a+aa+aaa+...=%d\n",sn);}6.4main(){float n,s=0,t=1;for(n=1;n<=20;n++){t*=n;s+=t;}printf("s=%e\n",s);}6.5main(){int N1=100,N2=50,N3=10;float k;float s1=0,s2=0,s3=0;for(k=1;k<=N1;k++)s1+=k;for(k=1;k<=N2;k++)s2+=k*k;for(k=1;k<=N3;k++)s3+=1/k;printf("s=%8.2f\n",s1+s2+s3);}6.6main(){int i,j,k,n;for(n=100;n<1000;n++){i=n/100;j=n/10-i*10;k=n%10;if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)printf("n=%d\n",n);}}6.7#define M 1000main(){int k0,k1,k2,k3,k4,k5,k6,k7,k8,k9;int i,j,n,s;for(j=2;j<=M;j++){n=0;s=j;for(i=1;i<j;i++){if((j%i)==0){n++;s=s-i;switch(n){case 1:k0=i;break;case 2:k1=i;break;case 3:k2=i;break;case 4:k3=i;break;case 5:k4=i;break;case 6:k5=i;break;case 7:k6=i;break;case 8:k7=i;break;case 9:k8=i;break;case 10:k9=i;break;}}}if(s==0){printf("j=%d\n",j);if(n>1)printf("%d,%d",k0,k1);if(n>2)printf(",%d",k2);if(n>3)printf(",%d",k3);if(n>4)printf(",%d",k4);if(n>5)printf(",%d",k5);if(n>6)printf(",%d",k6);if(n>7)printf(",%d",k7);if(n>8)printf(",%d",k8);if(n>9)printf(",%d\n",k9);}}}main(){static int k[10];int i,j,n,s;for(j=2;j<=1000;j++){n=-1;s=j;for(i=1;i<j;i++){if((j%i)==0){n++;s=s-i;k[n]=i;}}if(s==0){printf("j=%d\n",j);for(i=0;i<n;i++)printf("%d,",k[i]);printf("%d\n",k[n]);}}}6.8main(){int n,t,number=20; float a=2;b=1;s=0;for(n=1;n<=number;n++) {s=s+a/b;t=a,a=a+b,b=t;}printf("s=%9.6f\n",s);}6.9main(){float sn=100.0,hn=sn/2; int n;for(n=2;n<=10;n++){sn=sn+2*hn;hn=hn/2;}printf("sn=%f\n",sn); printf("hn=%f\n",hn);}6.10main(){int day,x1,x2;day=9;x2=1;while(day>0){x1=(x2+1)*2;x2=x1;day--;}printf("x1=%d\n",x1);}6.11#include"math.h"main(){float a,xn0,xn1;scanf("%f",&a);xn0=a/2;xn1=(xn0+a/xn0)/2;do{xn0=xn1;xn1=(xn0+a/xn0)/2;}while(fabs(xn0-xn1)>=1e-5);printf("a=%5.2f\n,xn1=%8.2f\n",a,xn1); }6.12#include"math.h"main(){float x,x0,f,f1;x=1.5;do{x0=x;f=((2*x0-4)*x0+3)*x0-6;f1=(6*x0-8)*x0+3;x=x0-f/f1;}while(fabs(x-x0)>=1e-5);printf("x=%6.2f\n",x);}6.13#include"math.h"main(){float x0,x1,x2,fx0,fx1,fx2;do{scanf("%f,%f",&x1,&x2);fx1=x1*((2*x1-4)*x1+3)-6;fx2=x2*((2*x2-4)*x2+3)-6;}while(fx1*fx2>0);do{x0=(x1+x2)/2;fx0=x0*((2*x0-4)*x0+3)-6;if((fx0*fx1)<0){x2=x0;fx2=fx0;}else{x1=x0;fx1=fx0;}}while(fabs(fx0)>=1e-5);printf("x0=%6.2f\n",x0);}6.14main(){int i,j,k;for(i=0;i<=3;i++){for(j=0;j<=2-i;j++)printf(" ");for(k=0;k<=2*i;k++)printf("*");printf("\n");}for(i=0;i<=2;i++){for(j=0;j<=i;j++)printf(" ");for(k=0;k<=4-2*i;k++)printf("*");printf("\n");}}6.15main(){char i,j,k;for(i='x';i<='z';i++)for(j='x';j<='z';j++){if(i!=j)for(k='x';k<='z';k++){if(i!=k&&j!=k){if(i!='x'&&k!='x'&&k!='z')printf("\na--%c\tb--%c\tc--%c\n",i,j,k);}}}}第七章数组7.1#include <math.h>#define N 101main(){ int i,j,line,a[N];for (i=2;i<N;i++) a[i]=i;for (i=2;i<sqrt(N);i++)for (j=i+1;j<N;j++){if(a[i]!=0 && a[j]!=0)if (a[j]%a[i]==0)a[j]=0; } printf("\n");for (i=2,line=0;i<N;i++){ if(a[i]!=0){ printf("%5d",a[i]);line++; }if(line==10){ printf("\n");line=0; }}}7.2#define N 10main(){int i,j,min,temp,a[N];for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N-1;i++){min=i;for(j=i+1;j<N;j++)if(a[min]>a[j])min=j;temp=a[i];a[i]=a[min];a[min]=temp;}for(i=0;i<N;i++)printf("%5d",a[i]);}7.3main(){float a[3][3],sum;int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++){scanf("%f",&sum);a[i][j]=sum;}for(i=0;i<3;i++)sum=sum+a[i][i];printf("sum=%f",sum);}7.4main(){int a[11]={1,4,6,9,13,16,19,28,40,100}; int temp1,temp2,number, end,i,j;scanf("%d",&number);end=a[9];if(number>end) a[10]=number;else{for(i=0;i<10;i++){if(a[i]>number){temp1=a[i];a[i]=number;for(j=i+1;j<11;j++){temp2=a[j];a[j]=temp1;temp1=temp2;}break;}}}for(i=0;i<11;i++)printf("%6d",a[i]);}7.5#define N 5main(){int a[N]={8,6,5,4,1},i,temp;for(i=0;i<N/2;i++){temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}for(i=0;i<N;i++)printf("%4d",a[i]);}7.6#define N 11main(){int i,j,a[N][N];for(i=1;i<N;i++){a[i][i]=1;a[i][1]=1;}for(i=3;i<N;i++)for(j=2;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i<N;i++){for(j=1;j<=i;j++)printf("%6d",a[i][j]);printf("\n");}}7.7main(){int a[16][16],i,j,k,p,m,n;p=1;while(p==1){scanf("%d",&n);if((n!=0)&&(n<=15)&&(n%2!=0))p=0;}for(i=1;i<=n;i++)for(j=1;j<=n;j++)a[i][j]=0;j=n/2+1;a[1][j]=1;for(k=2;k<=n*n;k++){i=i-1;j=j+1;if((i<1)&&(j>n)){i=i+2;j=j-1;}else{if(i<1)i=n;if(j>n)j=1;}if(a[i][j]==0)a[i][j]=k;else{i=i+2;j=j-1;a[i][j]=k;}}for(i=1;i<=n;i++){for(j=1;j<=n;j++)printf("%3d",a[i][j]);printf("\n");}}7.8#define N 10#define M 10main(){int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj; scanf("%d,%d",&n,&m);for(i=0;i<n;i++)for(j=0;j<m;j++)scanf("%d",&a[i][j]);flag2=0;for(i=0;i<n;i++){max=a[i][0];for(j=0;j<m;j++)if(max<a[i][j]){max=a[i][j];maxj=j;}for(k=0,flag1=1;k<n&&flag1;k++)if(max>a[k][maxj])flag1=0;if(flag1){ printf("\na[%d][%d]=%d\n",i,maxj,max);flag2=1;}}if(!flag2) printf("NOT");}7.9#include<stdio.h>#define N 15main(){int i,j,number,top,bott,min,loca,a[N],flag;char c;for(i=0;i<=N;i++)scanf("%d",&a[i]);flag=1;while(flag){scanf("%d",&number);loca=0;top=0;bott=N-1;if((number<a[0])||(number>a[N-1]))loca=-1;while((loca==0)&&(top<=bott)){min=(bott+top)/2;if(number==a[min]){loca=min;printf("number=%d,loca=%d\n",number,loca+1);}else if(number<a[min])bott=min-1;elsetop=min+1;}if(loca==0||loca==-1)printf("%d not in table\n",number);printf("continue Y/N or y/n\n");c=getchar();if(c=='N'||c=='n')flag=0;}}7.10main(){int i,j,uppn,lown,dign,span,othn;char text[3][80];uppn=lown=dign=span=othn=0;for(i=0;i<3;i++){gets(text[i]);for(j=0;j<80&&text[i][j]!='\0';j++){if(text[i][j]>='A'&&text[i][j]<='Z')uppn++;else if(text[i][j]>='a'&&text[i][j]<='z')lown++;else if(text[i][j]>='0'&&text[i][j]<='9')dign++;else if(text[i][j]==' ')span++;elseothn++;}}for(i=0;i<3;i++)printf("%s\n",text[i]);printf("uppn=%d\n",uppn);printf("lown=%d\n",lown);printf("dign=%d\n",dign);printf("span=%d\n",span);printf("othn=%d\n",othn);}7.11main(){static char a[5]={'*','*','*','*','*'};int i,j,k;char space=' ';for(i=0;i<=5;i++){printf("\n");for(j=1;j<=3*i;j++)printf("%1c",space);for(k=0;k<=5;k++)printf("%3c",a[k]);}}7.12#include<stdio.h>main(){int i,n;char ch[80],tran[80];gets(ch);i=0;while(ch[i]!='\0'){if((ch[i]>='A')&&(ch[i]<='Z'))tran[i]=26+64-ch[i]+1+64;else if((ch[i]>='a')&&(ch[i]<='z'))tran[i]=26+96-ch[i]+1+96;elsetran[i]=ch[i];i++;n=i;for(i=0;i<n;i++)putchar(tran[i]);}7.13main(){char s1[80],s2[40];int i=0,j=0;scanf("%s",s1);scanf("%s",s2);while(s1[i]!='\0')i++;while(s2[j]!='\0')s1[i++]=s2[j++];s1[i]='\0';printf("s=%s\n",s1);}7.14#include<stdio.h>main(){int i,resu;char s1[100],s2[100];gets(s1);gets(s2);i=0;while((s1[i]==s2[i])&&(s1[i]!='\0'))i++;if(s1[i]=='\0'&&s2[i]=='\0')resu=0;elseresu=s1[i]-s2[i];printf("s1=%s,s2=%s,resu=%d\n",s1,s2,resu); }7.15#include"stdio.h"main(){char from[80],to[80];;int i;scanf("%s",from);for(i=0;i<=strlen(from);i++)to[i]=from[i];printf("%s\n",to);}8.1hcf(u,v)int u,v;{int a,b,t,r;if(u>v){t=u;u=v;v=t;}a=u;b=v;while((r=b%a)!=0){b=a;a=r;}return(a);}lcd(u,v,h)int u,v,h;{return(u*v/h);}main(){int u,v,h,l;scanf("%d,%d",&u,&v);h=hcf(u,v);printf("H.C.F=%d\n",h);l=lcd(u,v,h);printf("L.C.D=%d\n",l);}8.2#include"math.h"float x1,x2,disc,p,q;greater_than_zero(a,b)float a,b;{x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);}equal_to_zero(a,b)flaot a,b;{x1=x2=-b/(2*a);}smaller_than_zero(a,b)float a,b;{p=-b/(2*a);q=sqrt(-disc)/(2*a);}main(){float a,b,c;scanf("%f,%f,%f",&a,&b,&c); disc=b*b-4*a*c;if(fabs(disc)<=1e-5){equal_to_zero(a,b);printf("x1=%5.2f\tx2=%5.2f\n",x1,x2);}else if(disc>0){greater_than_zero(a,b);printf("x1=%5.2f\tx2=%5.2f\n",x1,x2);}else{smaller_than_zero(a,b);printf("x1=%5.2f+%5.2fi\tx2=%5.2f-%5.2fi\n",p,q,p,q);}}8.3main(){int number;scanf("%d",&number);if(prime(number))printf("yes");elseprintf("no");}int prime(number)int number;{int flag=1,n;for(n=2;n<number/2&&flag==1;n++)if(number%n==0)flag=0;return(flag);}8.4#define N 3int array[N][N];convert(array)int array[3][3];{int i,j,t;for(i=0;i<N;i++)for(j=i+1;j<N;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}main(){int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++)scanf("%d",&array[i][j]);convert(array);for(i=0;i<N;i++){printf("\n");for(j=0;j<N;j++)printf("%5d",array[i][j]);}}8.5main(){char str[100];scanf("%s",str);inverse(str);printf("%s\n",str);}inverse(str)char str[];{char t;int i,j;for(i=0,j=strlen(str);i<strlen(str)/2;i++,j--) {t=str[i];str[i]=str[j-1];str[j-1]=t;}}8.6char concate(str1,str2,str)char str1[],str2[],str[];{int i,j;for(i=0;str1[i]!='\0';i++)str[i]=str1[i];for(j=0;str2[j]!='\0';j++)str[i+j]=str2[j];str[i+j]='\0';}main(){char s1[100],s2[100],s[100];scanf("%s",s1);scanf("%s",s2);concate(s1,s2,s);printf("\ns=%s",s);}8.7main(){char str[80],c[80];void cpy();gets(str);cpy(str,c);printf("\n%s\n",c);}void cpy(s,c)char s[],c[];{int i,j;for(i=0,j=0;s[i]!='\0';i++)if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'|| s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U'){c[j]=s[i];j++;}c[j]='\0';}8.8main(){char str[80];scanf("%s",str);insert(str);}insert(str)char str[];{int i;for(i=strlen(str);i>0;i--){str[i*2]=str[i];str[i*2-1]=' ';}printf("%s\n",str);}8.9int alph,digit,space,others;main(){char text[80];gets(text);alph=0,digit=0,space=0,others=0;count(text);printf("\nalph=%d,digit=%d,space=%d,others=%d\n",alph,digit,space,others); }count(str)char str[];{int i;for(i=0;str[i]!='\0';i++)if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))alph++;else if(str[i]>='0'&&str[i]<='9')digit++;else if(strcmp(str[i],' ')==0)space++;elseothers++;}8.10int alph(c)char c;{if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))return(1);elsereturn(0);}int longest(string)char string[];{int len=0,i,length=0,flag=1,place,point;for(i=0;i<=strlen(string);i++)if(alph(string[i]))if(flag){point=i;flag=0;}elselen++;else{flag=1;if(len>length){length=len;place=point;len=0;}return(place);}main(){int i;char line[100];gets(line);for(i=longest(line);alph(line[i]);i++) printf("%c",line[i]);printf("\n");}8.11#define N 10char str[N];main(){int i,flag;for(flag=1;flag==1;){scanf("%s",str);if(strlen(str)>N)printf("input error");elseflag=0;}sort(str);for(i=0;i<N;i++)printf("%c",str[i]);}sort(str)char str[N];{int i,j;char t;for(j=1;j<N;j++)for(i=0;(i<N-j)&&(str[i]!='\0');i++)if(str[i]>str[i+1]){t=str[i];str[i]=str[i+1];str[i+1]=t;}}8.12#include<math.h>float solut(a,b,c,d){float x=1,x0,f,f1;do{x0=x;f=((a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c;x=x0-f/f1;}while(fabs(x-x0)>=1e-5);return(x);}main(){float a,b,c,d;scanf("%f,%f,%f,%f",&a,&b,&c,&d);printf("x=%10.7f\n",solut(a,b,c,d));}8.13main(){int x,n;float p();scanf("%d,%d",&n,&x);printf("P%d(%d)=%10.2f\n",n,x,p(n,x));}float p(tn,tx)int tn,tx;{if(tn==0)return(1);else if(tn==1)return(tx);elsereturn(((2*tn-1)*tx*p((tn-1),tx)-(tn-1)*p((tn-2),tx))/tn); }8.14#define N 10#define M 5float score[N][M];float a_stu[N],a_cor[M];main(){int i,j,r,c;float h;float s_diff();float highest();r=0;c=1;input_stu();avr_stu();avr_cor();printf("\n number class 1 2 3 4 5 avr");for(i=0;i<N;i++){printf("\nNO%2d",i+1);for(j=0;j<M;j++)printf("%8.2f",score[i][j]);printf("%8.2f",a_stu[i]);}printf("\nclassavr");for(j=0;j<M;j++)printf("%8.2f",a_cor[j]);h=highest(&r,&c);printf("\n\n%8.2f %d %d\n",h,r,c); printf("\n %8.2f\n",s_diff());}input_stu(){int i,j;float x;for(i=0;i<N;i++){for(j=0;j<M;j++){scanf("%f",&x);score[i][j]=x;}}}avr_stu(){int i,j;float s;for(i=0;i<N;i++){for(j=0,s=0;j<M;j++)s+=score[i][j];a_stu[i]=s/5.0;}}avr_cor(){int i,j;float s;for(j=0;j<M;j++){for(i=0,s=0;i<N;i++)s+=score[i][j];a_cor[j]=s/(float)N;}}float highest(r,c)int *r,*c;{float high;int i,j;high=score[0][0];for(i=0;i<N;i++)for(j=0;j<M;j++)if(score[i][j]>high){high=score[i][j];*r=i+1;*c=j+1;}return(high);}float s_diff(){int i,j;float sumx=0.0,sumxn=0.0;for(i=0;i<N;i++){sumx+=a_stu[i]*a_stu[i];sumxn+=a_stu[i];}return(sumx/N-(sumxn/N)*(sumxn/N)); }8.15#include<stdio.h>#define N 10void input_e(num,name)int num[];char name[N][8];{int i;for(i=0;i<N;i++){scanf("%d",&num[i]);gets(name[i]);}}void sort(num,name)int num[];char name[N][8];{int i,j,min,temp1;char temp2[8];for(i=0;i<N-1;i++){min=i;for(j=i;j<N;j++)if(num[min]>num[j])min=j;temp1=num[i];num[i]=num[min];num[min]=temp1;strcpy(temp2,name[i]);strcpy(name[i],name[min]);strcpy(name[min],temp2);}for(i=0;i<N;i++)printf("\n%5d%10s",num[i],name[i]);}void search(n,num,name)int n,num[];char name[N][8];{int top,bott,min,loca;loca=0;top=0;bott=N-1;if((n<num[0])||(n>num[N-1]))loca=-1;while((loca==0)&&(top<=bott)){min=(bott+top)/2;if(n==num[min]){loca=min;printf("number=%d,name=%s\n",n,name[loca]);}else if(n<num[min])bott=min-1;elsetop=min+1;}if(loca==0||loca==-1)printf("number=%d is not in table\n",n);}main(){int num[N],number,flag,c,n;char name[N][8];input_e(num,name);sort(num,name);for(flag=1;flag;){scanf("%d",&number);search(number,num,name);printf("continue?Y/N!");c=getchar();if(c=='N'||c=='n')flag=0;}}8.16#include<stdio.h>#define MAX 1000main(){int c,i,flag,flag1;char t[MAX];i=0;flag=0;flag1=1;while((c=getchar())!='\0'&&i<MAX&&flag1){if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f') {flag=1;t[i++]=c;}else if(flag){t[i]='\0';printf("\nnumber=%d\n",htoi(t));printf("continue?");c=getchar();if(c=='n'||c=='N')flag1=0;else{flag=0;i=0;}}}}htoi(s)char s[];{int i,n;n=0;for(i=0;s[i]!='\0';i++){if(s[i]>='0'&&s[i]<='9')n=n*16+s[i]-'0';if(s[i]>='a'&&s[i]<='f')。

C程序设计(第三版)习题答案(10章) 谭浩强著

C程序设计(第三版)习题答案(10章) 谭浩强著

C程序设计(第三版)习题答案(10章) 谭浩强著第十章指针10.1int swap(int*p1,int*p2){int p;p=*p1;*p1=*p2;*p2=p;}void main(){int n1,n2,n3;int*q1,*q2,*q3;scanf("%d %d %d",&n1,&n2,&n3);q1=&n1;q2=&n2;q3=&n3;if(n1>n2) swap(q1,q2);if(n1>n3) swap(q1,q3);if(n2>n3) swap(q2,q3);printf("%d %d %d\n",n1,n2,n3);}10.2main(){char *str1[20],*str2[20],*str3[20];char swap();scanf("%s",str1);scanf("%s",str2);scanf("%s",str3);if(strcmp(str1,str2)>0)swap(str1,str2); if(strcmp(str1,str3)>0)swap(str1,str3); if(strcmp(str2,str3)>0)swap(str2,str3); printf("%s\n%s\n%s\n",str1,str2,str3); }char swap(p1,p2)char *p1,*p2;{char *p[20];strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}10.3main(){int number[10];input(number);max_min_value(number);output(number);}input(number)int number[10];{int i;for(i=0;i<10;i++)scanf("%d",&number[i]); }max_min_value(number)int number[10];{int *max,*min;int *p,*end;end=number+10;max=min=number;for(p=number+1;p<end;p++)if(*p>*max)max=p;else if(*p<*min)min=p;*p=number[0];number[0]=*min;*min=*p;*p=number[9];number[9]=*max;*max=*p;return;}output(number)int number[10];{int *p;for(p=number;p<number+9;p++) printf("%d,",*p);printf("%d\n",*p);}10.4main(){int number[20],n,m,i;scanf("%d",&n);scanf("%d",&m);for(i=0;i<n:i++)scanf("%d",&number[i]); move(number,n,m);for(i=0;i<n;i++)printf("%8d",number[i]); }move(array,n,m)int array[20],n,m;{int *p,end;end=*(array+n-1);for(p=array+n-1;p>array;p--) *p=*(p-1);*array=end;m--;if(m>0)move(array,n,m);}10.5#define nmax 50main(){int i,k,m,n,num[nmax],*p; scanf("%d",&n);p=num;for(i=0;i<n;i++)*(p+i)=i+1;i=k=m=0;while(m<n-1){if(*(p+i)!=0)k++;if(k==3){*(p+i)=0;k=0;m++;}i++;if(i==n)i=0;}while(*p==0)p++;printf("%d",*p);}10.6main(){int len;char *str[20];scanf("%s",str);len=length(str);printf("\nlen=%d\n",len); }length(p)char *p;{int n=0;while(*p!='\0'){n++;p++;}return(n);}10.7main(){int m;char *str1[20],*str2[20]; scanf("%s",str1);scanf("%d",&m);if(strlen(str1)<m)printf("error");else{copystr(str1,str2,m); printf("%s",str2);}}copystr(p1,p2,m)char *p1,*p2;int m;{int n=0;while(n<m-1){n++;p1++;}while(*p1!='\0'){*p2=*p1;p1++;p2++;}*p2='\0';}10.8#include"stdio.h"main(){int cle=0,sle=0,di=0,wsp=0,ot=0,i; char *p,s[20];for(i=0;i<20;i++)s[i]=0;i=0;while((s[i]=getchar())!='\n')i++; p=s;while(*p!='\n'){if(*p>='a'&&*p<='z')++sle;else if(*p>='A'&&*p<='Z')++cle;else if(*p==' ')++wsp;else if(*p>='0'&&*p<='9')++di;else++ot;p++;}printf("sle=%d,cle=%d,wsp=%d,di=%d,ot=%d\n",sle,cle,wsp,di,ot); }10.9main(){int a[3][3],*p,i;for(i=0;i<3;i++)scanf("%d,%d,%d",a[i][0],a[i][1],a[i][2]);p=a;move(p);for(i=0;i<3;i++)printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);}move(pointer)int *pointer;{int i,j,t;for(i=0;i<2;i++)for(j=i+1;j<3;j++){t=*(pointer+3*i+j);*(pointer+3*i+j)=*(pointer+3*j+i);*(pointer+3*j+i)=t;}}10.10main(){int a[5][5],*p,i,j;for(i=0;i<5;i++)for(j=0;j<5;j++)scanf("%d",&a[i][j]);p=a;change(p);for(i=0;i<5;i++){printf("\n");for(j=0;j<5;j++)printf("%8d",a[i][j]); }}change(p)int *p;{int i,j,change;int *pmax,*pmin;pmax=p;pmin=p;for(i=0;i<5;i++)for(j=0;j<5;j++){if(*pmax<*(p+5*i+j))pmax=p+5*i+j;if(*pmin>*(p+5*i+j))pmin=p+5*i+j;}change=*(p+12);*(p+12)=*pmax;*pmax=change;change=*p;*p=*pmin;*pmin=change;pmin=p+1;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;change=*(p+4);*(p+4)=*pmin;*pmin=change;pmin=p+1;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=(p+4))&&((p+5*i+j)!=p)&&(*pmin>*(p+5*i+j))) pmin=p+5*i+j;change=*(p+20);*(p+20)=*pmin;*pmin=change;pmin=p+1;for(i=0;i<5;i++)for(j=0;j<5;j++)if(((p+5*i+j)!=p)&&((p+5*i+j)!=(p+4))&&((p+5*i+j)!=(p+20)) &&(*pmin>*(p+5*i+j)))pmin=p+5*i+j;change=*(p+24);*(p+24)=*pmin;*pmin=change;}10.11main(){int i;char *p,str[10][10];for(i=0;i<10;i++)scanf("%s",str[i]);p=str;sort(p);for(i=0;i<10;i++)printf("%s\n",str[i]);}sort(p)char *p;{int i,j;char s[10],*smax,*smin;for(i=0;i<10;i++){smax=p+10*i;for(j=i+1;j<10;j++){smin=p+10*j;if(strcmp(smax,smin)>0) {strcpy(s,smin);strcpy(smin,smax); strcpy(smax,s);}}}}10.12#define MAX 20main(){int i;char *pstr[10],str[10][MAX]; for(i=0;i<10;i++)pstr[i]=str[i];for(i=0;i<10;i++)scanf("%s",pstr[i]);sort(pstr);for(i=0;i<10;i++)printf("%s\n",pstr[i]);}sort(pstr)char *pstr[10];{int i,j;char *p;for(i=0;i<10;i++){for(j=i+1;j<10;j++){if(strcmp(*(pstr+i),*(pstr+j))>0) {p=*(pstr+i);*(pstr+i)=*(pstr+j);*(pstr+j)=p;}}}}10.13#include"math.h"main(){int n=20;float a,b,a1,b1,a2,b2,c,(*p)(),jiff(); scanf("%f,%f",&a,&b);scanf("%f,%f",&a1,&b1);scanf("%f,%f",&a2,&b2);p=sin;c=jiff(a,b,n,p);printf("sin=%f\n",c);p=cos;c=jiff(a1,b1,n,p);printf("cos=%f\n",c);p=exp;c=jiff(a2,b2,n,p);printf("exp=%f\n",c);}float jiff(a,b,n,p)float a,b,(*p)();int n;{int i;float x,f,h,area;h=(b-a)/n;x=a;area=0;for(i=1;i<=n;i++){x=x+h;area=area+(*p)(x)*h; }return(area);}10.14{int i,n,num[20];char *p;scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&num[i]); p=num;sort(p,n);for(i=0;i<n;i++)printf("%8d",num[i]); }sort(p,m)char *p;int m;{int i;char change,*p1,*p2;for(i=0;i<m/2;i++){p1=p+i;p2=p+(m-1-i);change=*p1;*p1=*p2;*p2=change;}}main(){int i,j,*pnum,num[4];float score[4][5],aver[4],*psco,*pave; char course[5][10],*pcou;pcou=course[0];for(i=0;i<5;i++)scanf("%s",pcou+10*i);printf("number");for(i=0;i<5;i++)printf(",%s",pcou+10*i);printf("\n");psco=score;pnum=num;for(i=0;i<4;i++){scanf("%d",pnum+i);for(j=0;j<5;j++)scanf(",%f",psco+5*i+j);}pave=aver;printf("\n");avsco(psco,pave);avcour1(pcou,psco);printf("\n");fali2(pcou,pnum,psco,pave); printf("\n");good(pcou,pnum,psco,pave); }avsco(psco,pave)float *psco,*pave;{int i,j;float sum,average;for(i=0;i<4;i++){sum=0;for(j=0;j<5;j+)sum+=(*(psco+5*i+j)); average=sum/5;*(pave+i)=average;}}avcour1(pcou,psco)char *pcou;float *psco;{int i;float sum,average1;sum=0;for(i=0;i<4;i++)sum+=(*(psco+5*i))average1=sum/4;printf("%s %5.2f\n",pcou,average1); }fali2(pcou,pnum,psco,pave)char *pcou;int *pnum;float *psco,*pave;{int i,j,k,label;printf("\nnumber\n");for(i=0;i<5;i++)printf("%-8s",pcou+10*i);printf("\naverage\n");for(i=0;i<4;i++){label=0;for(j=0;j<5;j++)if(*(psco+5*i+j)<60.0)label++;if(label>=2){printf("%-8d",*(pnum+i));for(k=0;k<5;k++)printf("%-8.2f",*(psco+5*i+k)); printf("%-8.2f",*(pave+i));}}}good(pcou,pnum,psco,pave)char *pcou;int *pnum;float *psco,*pave;{int i,j,k,label;printf("number");for(i=0;i<5;i++)printf("%-8s",pcou+10*i);printf("average");for(i=0;i<4;i++){label=0;for(j=0;j<5;j++)if(*(psco+5*i+j)>=85.0)label++;if((label>=5)||(*(pave+i)>=90)){printf("%-8d",*(pnum+i));for(k=0;k<5;k++)printf("%-8.2f",*(psco+5*i+k)); printf("%-8.2f",*(pave+i));}}}10.16#include"stdio.h"main(){char str[50],*pstr;int i,j,k,m,e10,digit,ndigit,a[10],*pa;gets(str);pstr=str;pa=a;ndigit=0;i=j=0;while(*(pstr+i)!='\0'){if((*(pstr+i)>='0')&&(*(pstr+i)<='9')) j++;else{if(j>0){digit=*(pstr+i-1)-48;k=1;while(k<j){e10=1;for(m=1;m<=k;m++)e10=e10*10;digit+=(*(pstr+i-1-k)-48)*e10; k++;}*pa=digit;ndigit++;pa++;j=0;}}i++;}if(j>0){digit=*(pstr+i-1)-48;k=1;while(k<j){e10=1;for(m=1;m<=k;m++)e10=e10*10;digit+=(*(pstr+i-1-k)-48)*e10; k++;}*pa=digit;ndigit++;j=0;}printf("ndigit=%d\n",ndigit);j=0;pa=a;for(j=0;j<ndigit;j++)printf("%d",*(pa+j));}10.17main(){int m;char str1[20],str2[20],*p1,*p2;scanf("%s",str1);scanf("%s",str2);p1=str1;p2=str2;m=strcmp(p1,p2);printf("%d\n",m);}strcmp(p1,p2)char *p1,*p2;{int i=0;while(*(p1+i)==*(p2+i))if(*(p+i++)=='\0')return(0);return(*(p1+i)-*(p2+i));}10.18main(){static char *mname[13]={"illeagl","January","February","March", "April","May","June","July","August","September","October", "November","December"};int n;scanf("%d",&n);if((n>=1)&&(n<=12))printf("%s\n",*(mname+n)); elseprintf("error");}10.20main(){int i;char **p,*pstr[5],str[5][10]; for(i=0;i<5;i++)pstr[i]=str[i];for(i=0;i<5;i++)scanf("%s",pstr[i]);p=pstr;sort(p);for(i=0;i<5;i++)printf("%s\n",pstr[i]);}sort(p)char **P;{int i,j;char *pchange;for(i=0;i<5;i++){for(j=i+1;j<5;j++){if(strcmp(*(p+i),*(p+j))>0) {pchange=*(p+i);*(p+i)=*(p+j);*(p+j)=pchange;}}}}10.21main(){int i,n,digit[20],**p,*pstr[20]; scanf("%d",&n);for(i=0;i<n;i++)pstr[i]=&digit[i];for(i=0;i<n;i++)scanf("%d",pstr[i]);p=pstr;sort(p,n);for(i=0;i<n;i++)printf("%d ",*pstr[i]);}sort(p,n)int **p,n;{int i,j,*pchange;for(i=0;i<n;i++){for(j=i+1;j<n;j++){if(**(p+i)>**(p+j)) {pchange=*(p+i); *(p+i)=*(p+j); *(p+j)=pchange; }}}}。

c程序设计第三版课后答案完整版

c程序设计第三版课后答案完整版

c程序设计第三版课后答案完整版C程序设计第三版课后答案完整版C程序设计是一门基础而重要的计算机科学课程,它不仅教授编程语言本身,还涵盖了程序设计的基本概念和技巧。

第三版的教材在内容上进行了更新和扩充,以适应现代编程教育的需求。

以下是基于第三版C 程序设计教材的课后答案完整版,供同学们参考学习。

第一章:C语言概述1. C语言的历史和特点- C语言由Dennis Ritchie在1972年开发,用于UNIX操作系统。

- 特点包括跨平台、高效、灵活、可移植。

2. C语言的基本组成- C程序由函数、变量、表达式和控制语句组成。

3. C程序的编写和运行过程- 编写源代码,编译,链接,生成可执行文件,运行。

第二章:数据类型、运算符和表达式1. 基本数据类型- 整型(int)、浮点型(float)、双精度型(double)、字符型(char)。

2. 变量声明和初始化- 使用类型说明符声明变量,初始化赋予初值。

3. 运算符- 算术运算符、关系运算符、逻辑运算符、位运算符等。

4. 表达式- 表达式由操作数和运算符组成,用于计算结果。

第三章:控制语句1. 条件语句- if语句、switch语句。

2. 循环语句- while循环、do-while循环、for循环。

3. 跳转语句- break语句、continue语句、return语句、goto语句。

第四章:函数1. 函数的定义和声明- 函数由返回类型、函数名、参数列表和函数体组成。

2. 函数的调用- 调用函数时,需要传递参数并接收返回值。

3. 函数的作用域和生命周期- 局部变量的作用域仅限于函数内部,全局变量可在程序中多处访问。

第五章:数组和字符串1. 数组的基本概念- 存储相同类型元素的集合。

2. 字符串的操作- 字符串是字符数组,以空字符'\0'结尾。

3. 常用字符串处理函数- strcpy、strcat、strlen、strcmp等。

第六章:指针1. 指针的基本概念- 指针变量存储另一个变量的地址。

c程序设计第三版习题参考解答(全)

c程序设计第三版习题参考解答(全)

C程序设计(第三版)课后习题参考解答第1章 C语言概述1.5 参照本章例题,编写一个C程序,输出以下信息:******************************Very Good!******************************解:main ( ){printf(“****************************** \n”);printf(“\n”);printf(“ Very Good! \n”);printf(“\n”);printf(“****************************** \n”);}1.6 写一个程序,输入a,b,c三个值,输出其中最大者。

解:main ( ){int a,b,c,max;printf(“请输入三个数a,b,c: \n”);scanf(“%d,%d,%d”,&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf(“最大数为:%d ”,max);}第2章程序的灵魂——算法2.1 什么叫结构化的算法?为什么要提倡结构化的算法?解:由一些基本结构顺序组成的算法称为结构化的算法。

由于在基本结构之间不存在非顺序的跳转,流程的转移只存在于一个基本结构范围之内,因而提高了算法的质量。

2.7 什么叫结构化程序设计?它的主要内容是什么?解:结构化程序就是用高级语言表示的结构化算法。

它的主要内容包括“自顶向下,逐步细化”的分析方法和“模块化设计”的解决方法,以及“结构化编码”的实现方法。

第3章数据类型、运算符与表达式3.4将以下三各整数分别赋给不同类型的变量,请画出赋值后数据在内存中的存储形式。

注:如果没有学过二进制和补码,此题可以不做。

解:各数据在内存中的存储形式如下表所示:变量的类型25 -2 32769int型00 (000011001)8 位111111111111111015100 … 001(溢出)14long型00 (000011001)24 11 (1110)3100... 0100 (001)16 14short型100 (000011001)8 111111111111111015100 … 001(溢出)14signed char(8位)100011001 11111110 00000001(溢出)unsigned int型00 (000011001)8 11 (110)15100 (001)14unsigned long型00 (000011001)24 11 (110)3100... 0100 (001)16 14unsigned short型00 (000011001)8 11 (110)15100 (001)8unsigned char型00011001 11111110 00000001其中int和short类型,其取值范围是-32768~32767。

C++程序设计(第3版)第10章 运算符重载

C++程序设计(第3版)第10章  运算符重载

10.3 运算符重载的两种形式
10.3.1 用成员函数重载运算符 10.3.2 用友元函数重载运算符
运算符重载有两种实现方式:重载为类的成员函数和重载为类的友 元函数。运算符重载通常是针对类中的私有成员进行操作,故运算符重 载函数也应该能够访问类中的私有成员,所以运算符重载一般采用类的 成员函数或友元函数来实现,既不是成员函数也不是友元函数,只是作 为类外部的普通函数来重载运算符的情况极少。
//定义成员函数实现复数加法运算
10.2 运算符重载规则
运算符是在C++ 系统内部定义的,它们具有特定的语法规则,如参 数说明、运算顺序、优先级别等。因此,运算符重载时必须要遵守一定 的规则。 运算符重载的一般规则如下: (1)重载的运算符必须是C++语言中已经存在的运算符,不允许用 户自己定义新的运算符。 (2 )运算符重载不能改变运算符的语法结构,即操作数的个数。 例如,自增运算符“++”和自减运算符“-”只能重载为单目运算符使 用,不能重载为双目运算符使用。 (3)运算符重载不能改变C++语言中已定义运算符的优先级和结合 性。 (4)运算符重载一般不改变运算符的功能。例如,重载“+”运算 符虽然可以定义成计算两个对象乘积的函数,但失去了人们对“+”运算 符的常规认识,会影响程序代码的可读性。
//声明Complex
//输出复数
} Complex add(Complex &c1, Complex &c2) { this->real=c1.real+c2.real; this->imag=c1.imag+c2.imag; return *this; } private: double real,imag; }; int main() { Complex c1(1.1,2.2),c2(3.3,4.4),c3; c3.add(c1,c2); c3.display(); return 0; }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第十章指针10.1 输入3个整数,按照从小到大的顺序输出#include<stdio.h>void main(){void swap(int *p1, int *p2);int n1,n2,n3;int *p1,*p2,*p3;printf("input three integer:");scanf_s("%d,%d,%d",&n1,&n2,&n3);p1=&n1;p2=&n2;p3=&n3;if(n1>n2) swap(p1,p2);if(n1>n3) swap(p1,p3);if(n2>n3) swap(p2,p3);printf("the order: %d,%d,%d\n",n1,n2,n3); }void swap(int *p1, int *p2){int temp;temp=*p1;*p1=*p2;*p2=temp;}NOTE:scanf的参数为地址,printf参数为参数10.2输入三个字符串,按照从小到大的顺序输出#include<stdio.h>#include<string.h>void main(){void swap(char *p1, char *p2);char str1[20],str2[20],str3[20];printf("input three string:");gets_s(str1);gets_s(str2);gets_s(str3);if(strcmp(str1,str2)) swap(str1,str2);if(strcmp(str1,str3)) swap(str1,str3);if(strcmp(str2,str3)) swap(str2,str3);printf("the order: %s,%s,%s\n",str1,str2,str3);}void swap(char *p1, char *p2){char temp[20];strcpy(temp,p1);strcpy(p1,p2);strcpy(p2,temp);}NOTE:gets()用于获取字符串输入。

strcmp() 和strcpy()的应用10.3 输入10个整数,将其中最小的数和第一个数对换,把最大的数和最后一个数对换,写三个函数:①输入十个数;②进行处理;③输出十个数#include<stdio.h>void main(){void input(int *);void output(int *);void proceed(int *);int number[10];input(number);proceed(number);output(number);}void input(int *number){int i;printf("input ten integer:\n");for (i=0;i<10;++i){scanf("%d",&number[i]);}}void proceed(int *number)int i,*min,*max,temp;min=max=&number[0];for (i=0;i<10;++i){if (*min>number[i])min = &number[i];if(*max<number[i])max= &number[i];}temp= number[0];number[0]=*min;*min= temp;temp= number[9];number[9]=*max;*max= temp;}void output(int *number){int i;printf("After Proceeding,these numbers are\n");for (i=0;i<10;++i){printf("%d\n",number[i]);}}NOTE:对于只是改变部分数值,而不是单单取出某个数值,必须要利用指针,获取对应的地址,在将地址对于的数据进行交换操作,交换一般用temp保存中间数据10.4 有n个整数,使前面各数顺序向后移m个位置,最后m个数字变成最前面的m个数字。

写一个函数实现此功能,在主函数中输入n个数字和输出调整后的n个数字#include<stdio.h>void main(){void move(int *number,int n,int m);int n,m,number[20];printf("input the total number(n<=20):êo");scanf("%d",&n);printf("input these %d numbers\n",n);for(int i=0;i<n;++i)scanf("%d",&number[i]);printf("input the number you want to move backward:");scanf("%d",&m);if (m>n)printf("m must <=n,input a new m:");scanf("%d",&m);}move(number,n,m);printf("After moving,these numbers are:");for (int i=0;i<n;++i)printf("%d ",number[i]);}void move(int *number,int n,int m){int *p,number_end;number_end = *(number+n-1);for (p=number+n-1;p>number;p--)*p=*(p-1);*number=number_end;m--;if(m>0) move(number,n,m);} //后移m位函数10.5有n个人围成一圈,顺序排号。

第一个人开始报数(从1到3报数),凡报道3的人退出圈子,问最后留下来的是原来的几号。

算法思路:先给n个数字标上号,当一个编号报数到3,则将其置零,不断报数,同时用一个数字记录推出人数,当退出人数m<n-1时候,则置零完成,在遍历,找到没有置零的那个,输出即可#include<stdio.h>void main(){int n,number[50],*p;printf("how many students? ");scanf_s("%d",&n);p=number;for (int i=0;i<n;++i)*(p+i)=i+1;int i=0;int baoshu=0;int number_quit=0;while (number_quit<n-1)if(*(p+i)!=0) baoshu++;if(baoshu==3){*(p+i)=0;baoshu=0;number_quit++;}i++;if(i==n) i=0;}while(*p==0) p++;printf("the last number left in the circle is:%d",*p);}10.6写一个函数,求一个字符串的长度,在main中输入字符串,并输出长度#include<stdio.h>void main(){void strlength(char *);char str[50];printf("input the string\n");scanf_s("%s",str);strlength(str);}void strlength(char *str){int count=0;char *p;p=str;while(*p != '\0'){count++;p++;}printf("%d",count);}10.7有一字符串,包含n个字符,写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串#include<stdio.h>void main(){void strcopy_from_m(char *str,int m);char str[50];int m;printf("input the string\n");gets_s(str);printf("input the number m:\n");scanf_s("%d",&m);strcopy_from_m(str,m);}void strcopy_from_m(char *str,int m){char *p,second_str[50];p=str+m-1;int i=0;while(*p != '\0'){second_str[i]=*p;p++;i++;}second_str[i]='\0';printf("%s",second_str);}10.8输入一行文字,找出其中大写字母,小写字母,空格,数字以及其他字符各有多少?#include<stdio.h>void main(){intA_count=0,a_count=0,space_count=0,number_count=0,other_count=0 ,i=0;char str[50];char *p;printf("input a string: ");//scanf("%s",str);while((str[i]=getchar())!='\n') i++;p=str;while (*p != '\n'){if(*p>='A'&&*p<='Z') ++A_count;else if(*p>='a'&&*p<='z') ++a_count;else if(*p==' ') ++space_count;else if(*p>='0'&&*p<='9') ++number_count;else ++other_count;p++;}printf("大䨮写¡ä字Á?母?%d 小?写¡ä字Á?母?%d 空?格?%d 数ºy字Á?%d 其?他?字Á?符¤?%d",A_count,a_count,space_count,number_count,other_count);}10.9写一个函数,将一个3*3整形矩阵转置#include<stdio.h>void main(){void transfer(int *p);void printfmetric(int *p);int init[3][3]={{1,2,3},{4,5,6},{7,8,9}};int *p;p=&init[0][0];printfmetric(p);transfer(p);printfmetric(p);}void printfmetric(int *p){for (int i=0;i<3;i++)printf("%d %d %d\n",*(p+3*i),*(p+3*i+1),*(p+3*i+2));}void transfer(int *p){int i,j,temp;for (i=0;i<3;i++)for(j=i;j<3;j++)//note:j==i,j!=0{temp=*(p+3*i+j);*(p+3*i+j)=*(p+3*j+i);*(p+3*j+i)=temp;}}10.10讲一个5*5的矩阵中最大的元素放在中心,四个角分别放四个最小的元素(顺序为从左到右,从上到下顺序依次从小到大存放,写一个函数实现之。

相关文档
最新文档