第三版VB程序设计教程课后习题答案 龚沛曾主编的

第三版VB程序设计教程课后习题答案 龚沛曾主编的,第1张

习题一

答案在教材上找。

习题二

1对象指现实世界中的实体。每个对象有自己的特征(属性)、行为(方法)和发生在该对象上的活动(事件)。

类是对同一种对象的集合与抽象。类包含所创建对象的属性数据,以及对这些数据进行 *** 作的方法。封装和隐藏是类的重要特性,将数据结构和对数据的 *** 作封装在一起,类的内部实现细节对用户来说是透明的。

VB工具箱中的可视图标是VB系统设计好的标准控件类。通过将控件类实例化,得到真正的控件对象。在窗体上画一个控件,就将类转换为对象,创建了一个控件对象。

VB中常用的对象是控件。此外,VB还提供了系统对象。窗体是个特例,它既是类也是对象。当向一个工程添加一个新窗体时,实质就由窗体类创建了一个窗体对象。

对象的三要素:属性、事件和方法。

属性:存放对象的数据(决定对象外观及功能)对象属性的设置方法:在设计阶段,利用属性窗口直接设置属性值;程序运行时,通过语句[对象名]属性名=属性值。若属性只能在设计阶段设置,在程序运行阶段不可改变,称为只读属性。

事件:发生在对象上的事情。同一事件,对不同的对象,会引发不同的反应。

事件过程:应用程序处理事件的步骤。应用程序设计的主要工作就是为对象编写事件过程的代码。

方法:面向对象的程序设计语言,为程序设计人员提供了一种特殊的过程和函数。方法是面向对象的,调用时一定要指明对象。

2窗体和控件具有的基本属性“

(1) Name属性:名称

所创建的对象名称,在程序中引用。

(2) Caption属性:标题

该属性决定了对象上显示的内容。

(3) Height、Width、Top和Left属性

决定对象的大小和位置。

(4) Enabled 属性:对象是否允许 *** 作

(5) Visible 属性:对象是否可见

(6) Font 属性组:文本的外观

FontName字体、FontSize大小

FontBold粗体、FontItalic斜体

FontStrikethru 删除线

FontUnderline 下划线

(7) ForeColor属性:前景颜色

(8) BackColor属性:背景颜色

(9) MousePointer属性:鼠标指针类型, 设置值范围0~15,由系统指定 。若为99,由用户提供的图形文件定义鼠标指针形状。

(10) MouseIcon属性:在MousePointer属性值为99时,存放自定义的鼠标图标文件(ico或cur)。图标库在Graphics目录下。

3窗体的事件:Load事件是在窗体被装入工作区时触发的事件。当应用程序启动,自动执行该事件,该事件通常用来在启动应用程序时对属性和变量进行初始化。

窗体的方法:(1)Print方法

用来显示文本内容,格式:[对象]print 表达式

(2)Cls方法

清除运行时在窗体或图形框中产生的文本或图形, Cls方法不能清除窗体在设计时的文本和图形。

格式:[对象]cls

(3)Move方法

可移动窗体或控件,并可改变其大小。

语法格式如下:

[对象]Move 左边距离[,上边距离[,宽度[,高度]]]

4标签作用:用于显示文本(输出)信息,不能作为输入信息的界面。其内容只能通过Caption属性设置或修改,不能直接编辑。

5文本框是一个文本编辑区域,可以在该区域输入、编辑、修改和显示正文内容。在VB中字符长度以字为单位,也就是一个西文字符与一个汉字都是一个字,长度为1。

重要属性(1) Text 显示或输入的正文内容。

(2) Maxlength 设置文本框可输入的文字最大长度。默认值为0,表示可以输入任意长字符串。

(3) MultiLine 多行属性

设置为True时,文本框可以输入或显示多行正文,同时具有文字处理器的自动换行功能,按Enter键可插入一空行。

(4) ScrollBars 滚动条属性

0-None 无滚动条

1-Horizontal 水平滚动条

2-Vertical 垂直滚动条

3-Both 同时加水平和垂直滚动条

注意:当MultiLine为True时,ScrollBars才有效

(5) PassWordChar 设置显示文本的替代符。例如,当设置为“”,则在文本框输入的内容均以“”显示,而存储的值是用户输入的原文。一般用于设置口令的输入。

当MultiLine为True时,该属性不起作用,密码不允许多行。

(6) Locked 指定文本控件是否可被编辑,默认值为False(可编辑),当设置为True时,文本控件相当于标签控件的作用。

注意:Locked与Enabled的区别。

(7)文本内容进行选择 *** 作的三个属性

SelStart 选定的正文开始位置

SelLength 选定的正文长度

SelText 选定的正文内容

这3个属性互相关联,例如设置SelStart、SelLength后,SelText 自动存放指定的文本。

注意:属性窗口中没有这三个属性,只能在程序代码中使用。

6文本框的事件:(1) Change事件:当Text属性值发生改变时引发该事件

(2) KeyPress事件:按下并且释放键盘上的一个键时,引发焦点所在控件的KeyPress事件,所按键的值存放在参数KeyAscii中。对回车的判断 KeyAscii=13

7文本框最有用的方法是SetFocus,把光标移到指定的文本框中。

8命令按钮 Picture属性:按钮可显示文件(bmp和Ico),当Style为1时有效。

10 启动窗体时将命令按钮定位在窗体中央的代码

Private Sub Form_Load()

Command1Left = Form1ScaleWidth / 2 - Command1Width / 2

Command1Top = Form1ScaleHeight / 2 - Command1Height / 2

End Sub

11.vb文件在 C:\Program Files\Microsoft Visual Studio\Common\Graphics 文件夹。

安装VB时可选择是否安装这些文件。

习题三

1 合法常量:

(1) Double

(2) 错误

(3) Double

(4) Double

(5) 错误

(6) Integer

(7) String

(8) String

(9) Date

(10) Double

(11) 错误(汉字字符)

(12)Integer(八进制)

(13) 错误(八进制无数码8)

(14) Integer

(15) Boolean

(16) 错误

(17) 错误(十六进制无数码g)

(18) Single

说明:浮点型变量默认为Double类型而非Single。

2 合法变量名:

(1) √

(2) √

(3) 误:数字开头

(4) 误:含空格

(5) 误:关键字

(6) √

(7) 误:关键字

(8) 误:有括号

(9) √

(10) √

(11) √

(12) √(汉字字符可作为变量名,但不常用,且此名称易误解)

变量命名规则见P41-42。

字母(汉字)开头,字母(汉字)、数字、下划线组成,长度为1-255个字符;关键字不可作为变量名,但可在变量名中嵌入关键字;不区分大小写。

常量、数组、类型、函数、过程、对象命名规则与此相同。常量名通常全用大写。

3 写VB表达式

(1) Abs(x + y) + z ^ 5

(2) (1 + x y) ^ 6

(3) (10 x + Sqr(3 y)) / (x y)

(4) (-b + Sqr(b ^ 2 - 4 a c)) / (2 a)

(5) 1 / (1 / r1 + 1 / r2 + 1 / r3)

(6) Sin(45 314159 / 180) + (Exp(10) + Log(10)) / Sqr(x + y + 1)

4 根据条件写表达式

(1) 随机产生大写字母 Chr(Int(Rnd (Asc("L") - Asc("C") + 1) + Asc("C")))

(2) [100,200]内的随机数 Int(Rnd 101) + 100

(3) 点(x,y)位于第一或第三象限 x > 0 And y > 0 Or x < 0 And y < 0 或 x y > 0

(4) x是5或7的整数倍 x Mod 5 = 0 Or Int(x / 7) = x / 7

(5) 将两位整数x的个位与十位对换 x \ 10 + (x Mod 10) 10

(6) 四舍五入取两位小数 Round(x, 2)

(7) 字符变量C是字母字符(不区分大小写)——准确地说是:字符变量C的第一个字符是字母

C >= "A" And C <= "Z" Or C >= "a" And C < "z"

或 UCase(C) >= "A" And UCase(C) <= "Z"

或 LCase(C) >= "a" And LCase(C) <= "z"

(8) 字符变量S第5个字符起取6个字符 Mid(S, 5, 6)

(9) 10≤x<20 10 <= x And x < 20

(10) x,y至少有一个小于z x < z Or y < z

(11)x,y都大于z x > z And y > z

5 写表达式的值

(1) 188 ——注意运算的优先级顺序,以及整除运算“\”的计算

(2) 200100 —— 计算100 + "100"时,由于两个 *** 作数类型不同,在可能的情况下自动采用精度较高的类型,即把字符型转换为数值型,100 +100 得到200;然后进行字符串连接运算200 & 100 ,再自动将两个数值转换为字符串,得200100。

(3) 6856 ——在四舍五入函数产生之前,这就是四舍五入的计算方法

(4) 876554 ——先进行字符串的“+”运算,再转换成数值。在变量名和函数名后可加上类型符,以强调其类型,但不是必须的。

(5) 2000-2-29

(6) 6

6.Shell函数调用

i = Shell("mspaintexe", 1) '启动画图

i = Shell("C:\Program Files\Microsoft Office\OFFICE11\winwordexe", 1) '启动Word

说明:“画图”是Windows本身提供的程序,可以省略路径。

8 答:单精度浮点型

第7,9题答案在教材中找。

习题四

第1,3,5,8题答案在教材中找。

2 赋值语句的错误

(1)10x 不能做变量名。

上机验证结果:VB将10识别为行号,x = Sin(x) + y是为变量x赋值。故无语法错误。

(2)Sqr函数的参数为负数。

上机验证结果:“无效的过程调用或参数”

(3)赋值号左边不是变量名。

上机验证结果:“缺少子程序、函数或属性”

(4)除数为0

上机验证结果:“溢出”。

4 [答案略]

说明:小数位可以使用四舍五入函数Round或输出格式函数Format。例如Round(x, 2)和Format(x, “000”)均可使结果只保留两位小数。但如果四舍五入后要进行数值运算,则使用Round函数,例如z=Round(x,2)+Round(y,2)。而Format函数通常只用于输出格式设置。

6.指出错误

(1)“≥”应改为“>=”,前者是中文字符,不具有运算功能。

(2)“10<x<20”应改为“10<x And x<20”,否则运行结果错误。

7.写条件语句

(1)

Dim c As String

c = InputBox("c=")

If Mid(c, 3, 1) = "C" Then

MsgBox "Yes"

Else

MsgBox "No"

End If

(2)

# 使用If语句

Dim x As Single, y As Single

x = Val(InputBox("x="))

If x > 20 Then

y = x ^ 2 + 3 x + 2

ElseIf x >= 10 Then

y = Sqr(3 x) - 2

ElseIf x > 0 Then

y = 1 / x + Abs(x)

End If

Print "y="; y

# 使用Select Case语句

Dim x As Single, y As Single

x = Val(InputBox("x="))

Select Case x

Case Is > 20

y = x ^ 2 + 3 x + 2

Case Is >= 10

y = Sqr(3 x) - 2

Case Is > 0

y = 1 / x + Abs(x)

End Select

Print "y="; y

(3)

# 使用If语句

Dim x As Single, y As Single, z As Single, Max As Single

x = Val(InputBox("x="))

y = Val(InputBox("y="))

z = Val(InputBox("z="))

Max = x

If y > Max Then Max = y

If z > Max Then Max = z

Print "Max="; Max

# 使用IIF函数

x = Val(InputBox("x="))

y = Val(InputBox("y="))

z = Val(InputBox("z="))

Max = IIf(x > y, x, y)

Max = IIf(z > Max, z, Max)

Print "Max="; Max

9 计算循环次数

(1) 6

(2)19

(3)0

(4)死循环直至溢出

10 40号语句执行 4次;第50 号语句执行12次;

执行第90号语句输出的结果是: 13,0,2

说明:该程序为嵌套循环,其中外循环由j值变化(1,4,7,10)控制执行4次,当j值为13时结束循环;内循环由k值变化(6,4,2)控制执行3次,当k值为0时结束循环。第40 行是外循环的循环体,故执行4次;第50 行是内循环的循环体,故执行43=12次。

11 可以定一个较大的循环次数,在循环体中根据条件用Exit For退出。

但这种情况通常用Do While循环控制。

12 编程(并非唯一正确答案)

(1)

Dim i As Integer, s As Integer

For i = 1 To 10

s = s + (i + 1) (2 i + 1)

Next i

Print "s="; s

(2)

Dim i As Integer, n3 As Integer, n7 As Integer

For i = 1 To 100

If i Mod 3 = 0 Then n3 = n3 + 1

If Int(i / 7) = i / 7 Then n7 = n7 + 1

Next i

Print "1-100中3的倍数有"; n3; "个"

Print "1-100中7的倍数有"; n7; "个"

(3)

Dim s1 As String, s2 As String, i As Integer

s1 = InputBox("Input String")

s2 = ""

For i = 1 To Len(s1)

s2 = Mid(s1, i, 1) + s2

Next i

Print "原序:"; s1

Print "反序:"; s2

For i = Len(s1) To 1 Step -1

s2 = s2 + Mid(s1, i, 1)

Next i

13 输出字符串“10100”。该程序功能是将十进制数转化为二进制。

说明:要理解该程序需要了解数制转换的计算方法(有兴趣者参看百度百科>

实验6:

1.编一判断m是否为素数的函数,并在主函数中利用它输出十对最小的孪生素数。所谓孪生素数是指两个相差为2的素数,如3和5,11和13。输出形式如图261。

函数形式为:

bool isprime(int m);

#include "iostreamh"

int isprime(int m) //判别m是否为质数

{ int i;

for(i=2;m%i!=0;i++);

return (i==m);

}

void main()

{int x,count=0;

x=2;

while(1)

{ if(isprime(x)&&isprime(x+2))

{count++;

cout<<"("<<x<<","<<x+2<<")"<<endl;

if(count>=10)break;

}

x++;

}

}

2 编一函数,功能为构造正整数x的逆序数。再编一主函数,输出10个大于10000的最小的回文数。回文数是指顺读和倒读都相同的数,如5、151、3553等。

函数形式为:int reverse (int x);

#include"iostreamh"

#include"stdlibh"

#include"timeh"

int f(int a)

{ int b,c=0;

while(a!=0)

{b=a%10;

c=c10+b;

a/=10;

}

return c;

}

void main()

{ int x,i,k=0,t; bool tag=true;

srand(time(NULL));

for(x=10000;k<10;x++)

{

if(f(x)==x)

{cout<<x<<endl;k++;if(k==10)break;}

}

}

3.编一函数,功能为判断一字符串是否为回文,如果是回文则返回1,否则返回0。回文是指顺读和倒读都一样的字符串,如“deed”和“level”是回文。在主函数中对输入的字符串加以调用。

函数形式为:int huiwen(char s[]);

#include <iostreamh>

#include <stringh>

#include <stdioh>

int huiwen(char s[])

{

int i,n=0;

char ch,s1[80];

strcpy(s1,s); //原来的字符串保留在s1中

while(s[n])n++; //求字符串长度

for(i=0;i<n/2;i++) //构造逆序的字符串

{ ch=s[i]; s[i]=s[n-i-1]; s[n-i-1]=ch; }

if(strcmp(s1,s)==0)

return 1;

else

return 0;

}

void main()

{ char s[80]; int i,count=0;

cout<<"输入5个字符串:"<<endl;

for(i=0;i<5;i++)

{ gets(s);

if(huiwen(s))count++;

}

cout<<"回文个数:"<<count<<endl;

}

4.函数的功能是将学生成绩从高分到低分排序,并统计优秀与不及格的人数。用下面两种方法实现:

(1)函数形式为:int fun(int s[],int n,int x);

要求优秀人数通过return返回,不及格人数通过指针参数返回结果。

(2)函数形式为:void fun(int s[],int n,int &x,int &y);

要求优秀与不及格的人数通过引用参数返回结果。

分别编二个程序,学生数从键盘输入。

方法一:

#include <iostreamh>

#define N 10

int fun(int a[],int n,int x)

{int i,j,k;

x=0;

for(i=0;i<n-1;i++)

{k=i;

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

if(a[j]>a[k])

k=j;

if(k!=i)

{int t=a[k]; a[k]=a[i]; a[i]=t;}

}

for(i=0;i<n;i++)

if(a[i]>=60)

x=x+1;

return(n-x);

}

void main()

{int a[N],i,n,pass,npass;

cin>>n;

for(i=0;i<n;i++)

cin>>a[i];

npass=fun(a,n,&pass);

cout<<"pass="<<pass<<",npass="<<npass<<endl;

cout<<"成绩由高到低依次为:\n";

for(i=0;i<n;i++)

cout<<a[i]<<endl;

}

方法2:

#include <iostreamh>

#define N 10

void fun(int a[],int n,int &x,int &y)

{int i,j,k;

x=0;

for(i=0;i<n-1;i++)

{k=i;

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

if(a[j]>a[k])

k=j;

if(k!=i)

{int t=a[k]; a[k]=a[i]; a[i]=t;}

}

for(i=0;i<n;i++)

if(a[i]>=60)

x=x+1;

y=n-x;

}

void main()

{int a[N],i,n,pass,npass;

cin>>n;

for(i=0;i<n;i++)

cin>>a[i];

fun(a,n,pass,npass);

cout<<"pass="<<pass<<",npass="<<npass<<endl;

cout<<"成绩由高到低依次为:\n";

for(i=0;i<n;i++)

cout<<a[i]<<endl;

}

5 编一函数,功能为统计字符串中各个字母(不区分大、小写)出现的频率,同时找出频率出现最高的字母及次数。。函数形式为:

void freq(char s[],int p[],char &chmax,int &max)

#include "iostreamh"

#include "stdioh"

#include "stringh"

void freq(char s[],int p[],char &chmax,int &max)

{ for(int i=0;i<26;i++)

p[i]=0;

strlwr(s);

i=0;

while(s[i]!='\0')

{ if(s[i]>='a'&&s[i]<='z')

p[s[i]-'a']++;

i++;

}

max=p[0]; int k=0;

for(i=1;i<26;i++)

if(p[i]>max)

{ max=p[i];k=i;}

chmax=k+97;

}

void main()

{ int p[26],i,max; char s[80],chmax;

gets(s);

freq(s,p,chmax,max);

for(i=0;i<26;i++)

if(p[i])cout<<char(i+97) <<"----"<<p[i]<<endl;

cout<<chmax<<"----"<<max<<endl;

}

6.编写函数max,其功能是将字符串s中最大字符的地址返回,再编写一个主函数,调用该函数,将字符串s中从最大字符开始的子串中的小写字母转换成大写字母,然后输出新字符串s。例如,假设s的内容为“qwertyou”,则从最大字符’y’开始的子串为“you”,处理后的s为“qwertYOU”。

函数形式为:char max(char s[]);

#include "iostreamh"

#include "stringh"

#include "stdioh"

char max(char s[])

{char p=s;

int i=1,imax=0;

while(s[i]!='\0')

{ if(s[i]>s[imax])imax=i;

i++;

}

while(s[imax]!='\0') //等价于strupr(&s[imax]);

{s[imax]-=32;imax++;}

return p;

}

void main()

{char s[100];

gets(s);

cout<<max(s)<<endl;

}

7.编一函数,求级数的部分和,当最后一项的值小于eps时结束。设eps的默认值为10-6 。函数形式为:

double fun(double x, double eps=1e-6);

#include <iostreamh>

#include <mathh>

double fun(double x,double eps=1e-6)

{int n=1;

double t=1,s=0;

while(fabs(x/t)>1e-6)

{

s=s+x/t;

n=n+2;

t=-tn(n-1);

}

return s;

}

void main()

{double x;

cin>>x;

cout<<fun(x)<<endl;

}

8.编写两个同名的函数,分别求出整型数的两点间距离和浮点型数的两点间距离,调试成功后,再将其改为用函数模板实现。

函数形式为:

double dist(int x1, int y1, int x2, int y2);

double dist(double x1, double y1, double x2, double y2);

#include <iostreamh>

#include <mathh>

double dist(int x1,int y1,int x2,int y2)

{

return(sqrt((x1-x2)(x1-x2)+(y1-y2)(y1-y2)));

}

double dist(double x1,double y1,double x2,double y2)

{

return(sqrt((x1-x2)(x1-x2)+(y1-y2)(y1-y2)));

}

void main()

{int x1,x2,y1,y2;

double x11,x12,y11,y12;

cin>>x1>>y1>>x2>>y2;

cin>>x11>>y11>>x12>>y12;

cout<<"dist1="<<dist(x1,y1,x2,y2)<<endl;

cout<<"dist2="<<dist(x11,y11,x12,y12)<<endl;

}

用函数模板来实现:

#include <iostreamh>

#include <mathh>

template <class T>

double dist(T x1,T y1,T x2,T y2)

{

return(sqrt((x1-x2)(x1-x2)+(y1-y2)(y1-y2)));

}

void main()

{int x1,x2,y1,y2;

double x11,x12,y11,y12;

cin>>x1>>y1>>x2>>y2;

cin>>x11>>y11>>x12>>y12;

cout<<"dist1="<<dist(x1,y1,x2,y2)<<endl;

cout<<"dist2="<<dist(x11,y11,x12,y12)<<endl;

}

实验7:

1、

#include "iostreamh"

#define N 5

struct student

{

char num;

int score;

};

student max(student s[],int n)

{

student t=s[0];

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

if(s[i]score>tscore)

t=s[i];

return t;

}

void main()

{

student s[N],maxs;

int i;

for(i=0;i<N;i++)

{

s[i]num=new char[10];//假设学号不超过9位

cin>>s[i]num>>s[i]score;

}

maxs=max(s,N);

cout<<maxsnum<<' '<<maxsscore<<endl;

}

2、

#include "iostreamh"

#include "stringh"

#define N 5

struct book

{

char name[30];

double price;

};

void sort(book b[],int n)

{

int i,j;

book t;

for(i=0;i<n-1;i++)

for(j=0;j<n-1-i;j++)

if(strcmp(b[j]name,b[j+1]name)>0)

{

t=b[j];

b[j]=b[j+1];

b[j+1]=t;

}

}

void main()

{

book b[N];

int i;

for(i=0;i<N;i++)

cin>>b[i]name>>b[i]price ;

sort(b,N);

for(i=0;i<N;i++)

cout<<b[i]name<<' '<<b[i]price <<endl;

}

3、

#include "iostreamh"

void main()

{

struct date

{

int year;

int month;

int day;

}d;

int dpm[12]={31,28,31,30,31,30,31,31,30,31,30,31},i,s=0;

cin>>dyear>>dmonth>>dday;

if(dyear%400==0||dyear%4==0&&dyear%100!=0)

dpm[1]=29;

for(i=0;i<dmonth-1;i++)

s=s+dpm[i];

s=s+dday;

cout<<"s="<<s<<endl;

}

4、

#define N 5

#include "iostreamh"

struct node

{

char num[6]; //职工工号

char name[20]; //职工姓名

double wage; //职工工资

node next;

};

node deln(node head,int n)

{

node p=head,q;

int i=1;

if(n==1)

head=head->next;

else

{ while(i<n&&p->next!=NULL)

{

q=p;

p=p->next;

i++;

}

q->next =p->next ;

}

delete p;

return head;

}

void print(node head)

{

node p=head;

while(p!=NULL)

{

cout<<p->name<<' '<<p->num <<' '<<p->wage <<endl;

p=p->next;

}

}

void main()

{

node head=NULL,tail=NULL,newnode;

int i,n;

for(i=0;i<N;i++)

{

newnode=new node;

cin>>newnode->name >>newnode->num>>newnode->wage ;

if(head==NULL)

head=newnode;

else

tail->next=newnode;

tail=newnode;

}

tail->next=NULL;

print(head);

cin>>n; //输入待删除结点的序号

head=deln(head,n);

print(head);

}

5、

#define N 5

#include "iostreamh"

#include "stringh"

struct node

{

char num[6]; //职工工号

char name[20]; //职工姓名

double wage; //职工工资

node next;

};

void modify(node head,char num[],double w)

{

node p=head;

while(p!=NULL&&strcmp(p->num ,num)!=0)

p=p->next ;

if(p==NULL)

cout<<num<<"not exist\n";

else

p->wage =w;

}

void print(node head)

{

node p=head;

while(p!=NULL)

{

cout<<p->name<<' '<<p->num <<' '<<p->wage <<endl;

p=p->next;

}

}

void main()

{

node head=NULL,tail=NULL,newnode;

int i;

char num[6];

double w;

for(i=0;i<N;i++)

{

newnode=new node;

cin>>newnode->name >>newnode->num>>newnode->wage ;

if(head==NULL)

head=newnode;

else

tail->next=newnode;

tail=newnode;

}

tail->next=NULL;

print(head);

cin>>num>>w; //输入待修改信息的工号、新工资

modify(head,num,w);

print(head);

}

6、

#include "iostreamh"

#include "stdioh"

struct node

{

char ch;

node next;

};

void main( )

{

struct node head, p, q,newnode,tail;

char s[100];

gets(s);

head = new node ; // 在链表中插入伪结点,不关心该结点的数据域的值。

head->next =NULL;

tail = head;

for (int i=0;s[i]!='\0';i++)

{

newnode=new node;

newnode->ch=s[i];

newnode->next =NULL;

p=head->next;

while(p!=NULL&&s[i]>p->ch)

{

q=p;

p=p->next ;

}

if(p==NULL)

{

tail->next =newnode;

tail=newnode;

}

else

{

q->next =newnode;

newnode->next =p;

}

}

p=head->next ;

while(p!=NULL)

{

cout<<p->ch;

p=p->next ;

}

}

实验8:

1、

#include "iostreamh"

#include "stdioh"

#include "stdlibh"

void main()

{

FILE fp;

char s[100];

int i;

fp=fopen("abctxt","w");

if(fp==NULL)

{

cout<<"can't open abctxt\n";

exit(1);

}

gets(s);

i=0;

while(s[i]!='\0')

{

if(s[i]>='a'&&s[i]<='z')

s[i]=s[i]-32;

else if(s[i]>='A'&&s[i]<='Z')

s[i]=s[i]+32;

i++;

}

fputs(s,fp);

fclose(fp);

}

2、

#include "iostreamh"

#include "stdioh"

#include "stdlibh"

void main()

{

FILE fp;

char ch;

fp=fopen("abctxt","r");

if(fp==NULL)

{

cout<<"can't open abctxt\n";

exit(1);

}

while(1)

{

ch=fgetc(fp);

if(feof(fp))

break;

cout<<ch<<"("<<(int)ch<<")";

}

}

3、

#include "iostreamh"

#include "stdioh"

#include "stdlibh"

#include "stringh"

void main()

{

FILE fp;

char s[100],t[100];

int i,len;

fp=fopen("abctxt","w");

if(fp==NULL)

{

cout<<"can't open abctxt\n";

exit(1);

}

gets(s);

len=strlen(s);

strcpy(t,s);

for(i=0;i<len/2;i++)

{

char ch=s[i];

s[i]=s[len-1-i];

s[len-1-i]=ch;

}

fputs(s,fp);

fputs(t,fp);

fclose(fp);

}

以上就是关于第三版VB程序设计教程课后习题答案 龚沛曾主编的全部的内容,包括:第三版VB程序设计教程课后习题答案 龚沛曾主编的、vb程序设计教程第五版第四章课后习题答案InputBox()函数返回值的类型、求C/c++程序设计教程(高等教育出版社)龚沛曾 杨志强主编课后习题答案等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9403506.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存