第四章 程序设计基础
- 格式:doc
- 大小:48.00 KB
- 文档页数:14
4.1 阅读下列程序,写出执行结果1.#include <iostream.h>void main(){ int i, conut=0, sum=0 ;float average ;int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } ;for( i=0; i<10; i++ ){ if( a[i] % 2 == 0 ) continue ;sum += a[ i ] ;conut ++ ;}average = sum / conut ;cout << "conut = " << conut << '\t' << "average = " << average << endl ;}2.#include <iostream.h>void main(){ int a[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 } ;int *p = a , sum = 0 ;for( ; p<a+9; p++ )if( *p % 2 == 0 ) sum += *p ;cout << "sum = " << sum << endl ;}3.const int n = 5 ;#include <iostream.h>#include <iomanip.h>void main(){ int a[n][n]={ 0 }, i, j, k ;for( k=1 , i=0 ; i<n ; i++ )for( j=i; j>= 0; j-- , k++ )a[j][i - j ] = k ;for( i=0 ; i<n ; i++ ){ for( j=0; j<n ; j++ )cout << setw( 3 ) << a[i][j] ;cout << endl ;}}4.int f(int [],int);#include <iostream.h>void main(){ int a[] = { -1, 3, 5, -7, 9, -11 } ;cout << f( a, 6 ) << endl ;}int f( int a[], int size ){ int i, t=1 ;for( i=0 ; i<size; i ++ )if( a[i]>0 ) t *= a[i] ;return t;}5.int f( int [][3], int, int ) ;#include <iostream.h>void main(){ int a[][3] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 } ;cout << f( a, 3, 3 ) << endl ;}int f( int a[][3], int row, int col ){ int i, j, t=1 ;for( i=0; i<row; i ++ )for( j=0; j<col; j++ ){ a[i][j] ++ ;if( i == j ) t *= a[i][j] ;}return t ;}6.#include<iostream.h>void test1( int *a1 ){ a1 = new int( 5 ) ;cout << "*a1 = " << *a1 << endl ;}void test2(int * & a2){ a2 = new int( 5 ) ;cout << "*a2 = " << *a2 << endl ;}void main(){ int *p = new int( 1 ) ;test1( p ) ;cout << "test1: *p1 = " << *p << endl ;test2( p ) ;cout << "test2: *p2 = " << *p << endl ;}7.#include <iostream.h>void main(){ char s[] = "abccda" ;int i ; char c ;for( i = 1 ; ( c=s[i] ) != '\0'; i ++ ){ switch( c ){ case 'a' : cout << '%' ; continue ;case 'b' : cout << '$' ; break ;case 'c' : cout << '*' ; break ;case 'd' : continue ;}cout << '#' << endl ;}}8.#include <iostream.h>void main(){ char *str[] = { "c++", "basic", "pascal" } ;char **p ;int i ;p = str ;for( i=0 ; i<3 ; i++ )cout << *( p+i ) << endl ;}9.#include <iostream.h>void main(){ char s1[] = "Fortran" , s2[] = "Foxpro" ;char *p , *q ;p = s1 ; q = s2 ;while( *p && *q ){ if ( *p == *q )cout << *p ;p ++ ;q ++ ;}cout << endl ;}10.#include <string.h>#include <iostream.h>void main(){ char str[][10] = { "vb", "pascal", "c++" }, s[10] ;strcpy( s , ( strcmp( str[0] , str[1] ) < 0 str[0] : str[1] ) ) ;if( strcmp( str[2], s ) < 0 ) strcpy( s, str[2] ) ;cout << s << endl ;}4.2 思考题1.数组说明语句要向编译器提供什么信息?写出一维数组、二维数组说明语句的形式。
第四章程序设计基础一、选择题1.分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决问题,最后将子问题的解组合起来形成原问题的解。
这要求原问题和子问题的()A.规模相同,性质相同B.规模相同,性质不同C.规模不同,性质相同D.规模不同,性质不同2.某算法的部分流程图如下图所示,执行该流程图,则输出s的值以及k的值是( )A.25 ,9B.36 ,11C.36 ,13D.49 ,153.以下流程图符号是输入输出框的是()A.B.C.D.4.如图所示的流程图,当输入16、80时,输出16;当输入20、18时,输出18,则虚线框中应填入的是()。
A.c=a,c=b B.c=b, c=a C.c=max(a,b)D.c=min(a,b) 5.观察流程图,下列关于算法特征表述错误..的是()A.算法可以没有数据输入B.算法必须至少有一个输出C.该流程图符合算法的有穷性特征D.该流程图中s=s+1体现了算法的确定性6.下面四个选项中,全部是C语言关键字的选项是()A.auto enum includeB.switch type def continueC.signed union scanfD.if struct type7.某算法的部分流程图如图所示。
执行这部分流程,则输出a的值为()A.1B.4C.8D.128.计算机能够直接识别和执行的语言是( )A.机器语言B.汇编语言C.Python 语言D.C语言二、简答题9.程序设计语言有哪些,分别具备什么特点。
10.思考高楼的自动电梯在运行时需要考虑哪些方面(例如方便乘客,节约能源等),请为自动电梯设计一个适宜的算法。
三、操作题11.某数据解密算法描述如下:(1)在输入的数字字符串中依次提取有效的密文,有效的密文的特点:①是一组连续的,都小于5的三位数字串;②每个位置上的数字不能被重复提取;(2)对有效密文进行解密的过程:将密文作为一个五进制数转换为对应的十进制数值,根据ASCII字符的十进制编码表,得出对应的明文字符(提示:空格符所对应的ASCII码值为十进制数32,小写字母“z”所对应的ASCII码值为十进制数122).例如,密文242转换成十进制数为72,对应的明文字符为大写字母“H”。
第四章程序设计基础教学目的及要求:使学生掌握顺序结构、分支结构、循环结构的语法规则和具体应用,程序调试的步骤和方法。
重点与难点:1、熟练掌握表达式、赋值语句及逻辑表达式等的书写约定2、掌握InputBox和MsgBox函数的用法3、掌握单分支和多分支条件语句4、熟练掌握For语句和While语句的使用5、难点是多重循环的程序设计主要外语词汇:context 、prompt、msgbox、inputbox授课内容:1、三种基本结构:顺序结构、选择结构、循环结构2、流程图:(1)传统的流程图(2)N-S流程图第一节顺序结构程序设计特点:按书写时的顺序依次执行。
一、VB中的语句及书写约定:1、自动语法检测2、格式化处理3、续行符:下划线,一条语句写在多行上。
下划线与其前面的字符之间至少要有一个空格。
4、复合语句行:冒号,多条语句写在一行上。
二、赋值语句:1、可以给一个变量或某一个对象的属性赋值。
格式1:变量名 = 表达式格式2:[对象名.]属性名 = 属性值若省略对象名,则默认是当前窗体。
方向性:从右向左赋值。
2、最终的结果是最后一次的赋值。
3、数据类型要匹配,注意相容现象:(1)逻辑型 -> 数值型:True -> -1,False -> 0数值型 -> 逻辑型:非0 -> True,0 -> False(2)实型 -> 整型:四舍五入原则,不是去尾原则整型 -> 实型:扩展小数位数4、不管表达式是什么数据类型,都可以赋给一个Variant变量。
5、系统提供的默认初始值:(1)数值型:0 (2)货币型:0 (3)字符型:空字符串(4)逻辑型:False (5)日期型:0:00:00(6)可变型:Empty (7)对象型:Nothing6、不能连续赋值:例:Dim a As Integer,b As Integer,c As Integera=b=c=1 错误a=1: b=1:c=1 正确7、交换两个变量中的数据:例:a=b:b=a 错误t=a:a=b:b=t 正确,t是中间变量注意:VB中的数字和只包含数字的字符串可以方便地互换类型,例:(1)隐式转换:Private Sub Command1_Click( )Dim x As Integer,y As Stringy = “100.23”:x = y‘隐式转换Print xEnd Sub(2)显式转换字符型 -> 数值型:利用Val函数:Private Sub Command1_Click( )Dim x As IntegerText1.Text = “100.23”x = Val(Text1.Text)‘显式转换Print xEnd Sub(3)显式转换数值型 -> 字符型:利用Str函数:Private Sub Command1_Click( )Dim x As Integerx = 100.23Text1.Text = Str(x)‘显式转换Print Text1.TextEnd Sub三、注释、暂停、结束语句:1、注释语句:非执行语句(1)格式1:Rem 注释语句(2)格式2:‘注释语句(常用)(3)块注释:视图-> 工具栏 -> 编辑 -> 设置注释块、解除注释块2、暂停语句:格式:Stop暂停程序的运行,但不关闭所有已打开的文件,相当于在程序代码中设置断点,主要用于调试程序。
3、结束语句:格式:End停止程序的运行,关闭所有已打开的文件。
还可以用来结束一些模块的操作。
例:Private Sub Command2_Click( )EndEnd Sub四、输入函数InputBox:在一对话框中显示提示,等待用户输入内容,并返回包含文本框内容的字符串。
1、格式:InputBox (prompt [, title] [, default] [, xpos, ypos] [, helpfile, context] ) (1)prompt:对话框的消息提示文字。
(2)title:对话框的标题,标题省略取默认值“工程1”。
(3)default:文本框的默认输入信息。
2、InputBox函数的返回值是字符型的。
3、每运行一次InputBox函数只能给一个变量赋值。
总结:输入数据的方法:1、在程序代码中直接指定:优点:代码简单缺点:缺少灵活性2、利用TextBox文本框输入数据:优点:可以输入任意值缺点:要添加多个文本框,界面复杂3、利用InputBox函数输入数据:优点:界面简单,可以输入任意值缺点:代码复杂,参数较多五、消息函数和语句MsgBox:在一对话框中显示消息,等待用户单击按钮,并返回包含文本框内容的字符串。
1、MsgBox函数:(1)格式:MsgBox (prompt [, buttons] [, title] [, helpfile, context] )①prompt:对话框的消息提示文字。
②buttons:a) 组合值,每组只能取一个数字,数字间用“+”连接。
b) 进行相加(只有唯一的分解方式)。
c) 使用VB常数。
(表4-1)d) 方式a)和方式c)可以结合起来使用。
e)把“+”换成“Or”例:3 + 32 + 035vbYesNoCancel + vbQuestion + vbDefaultButton1vbYesNoCancel + 32 + vbDefaultButton1③title:对话框的标题,标题省略取默认值“工程1”。
(2)MsgBox函数的返回值是整型的:1-7(表4-2)例:Private Sub Form_Load( )Dim a As IntegerShowa=MsgBox("请你选择:",3+32+0,"Buttons参数组合举例")If a=6 ThenUnload Form1Form2.ShowEnd IfIf a=7 ThenUnload Form1Form3.ShowEnd IfIf a=2 ThenEndEnd IfEnd Sub2、MsgBox语句:仅仅用于显示一些简单的信息而不需要返回值。
格式:MsgBox prompt [, buttons] [, title] [, helpfile, context]参数含义:同上不用写小括号,没有返回值,可以单独作为一个语句来使用。
六、数据输出:Print方法的缺省输出:从窗体的第1行第1列开始输出。
1、Tab函数:格式:Tab(n),参数n是绝对列数值。
(1)Tab函数与表达式之间用分号分隔。
(2)如果当前行的打印位置大于n,则Tab将打印位置移动到下一行的第n列上。
(3)如果n小于1,则Tab将打印位置移动到该行的第1列。
(4)如果n大于输出行的宽度,则Tab函数用以下公式计算下一个打印位置:n Mod 行宽。
2、Spc函数:格式:Spc(n),参数n是相对列数值。
(1)Spc函数与表达式之间用分号分隔。
(2)如果n小于输出行的宽度,则下一个打印位置将紧接在数个已打印的空白之后。
(3)如果n大于输出行的宽度,则Spc函数用以下公式计算下一个打印位置:当前打印位置+(n Mod 行宽)。
3、Space函数:格式:Space(n),输出n个空格注:Spc函数与Space函数作用相同,但Space函数可以使用字符串运算符&和+。
总结:输出行的控制:Print后面不跟表达式,只输出一行空行。
输出列的控制:用Tab、Spc或Space函数调整。
七、输出到打印机:1、直接输出:格式:Printer.Print [表达式]只能打印文本信息,不能打印图形图像信息。
(1)Page属性:用来设置页码,默认缺省值为1。
(2)NewPage方法:强制打印机跳到下一页打印。
(3)EndDoc方法:用来结束文件的打印。
2、窗体输出:格式:[窗体.]PrintForm既将信息输出到窗体,又将信息输出到打印机。
预览作用(1)[窗体.]AutoRedraw=True(2)可以打印窗体上的文本、任何可见的控件及图形信息。
附:方法与函数的区别:(1)方法可以单独作为语句使用,函数不可以。
(2)方法没有返回值,函数有返回值。
(3)方法的格式:[对象.]方法 [参数列表]函数的调用格式:函数名([参数列表])(4)方法是隶属于某一个对象的,函数存在于VB自带的函数库。
第二节选择结构程序设计特点:根据指定的条件进行判断,根据判断的结果在两条分支或多条分支路径中选取其中的一条执行。
一、行If语句:单行形式,双分支结构格式1:If 条件 Then 语句组1格式2:If 条件 Then 语句组1 Else 语句组2语句组中的多个语句之间用冒号分隔。
二、块If语句:多行形式,双分支结构格式3:If 条件 Then 格式4:If 条件 Then语句组1 语句组1End If Else语句组2End If1、Else必须单独一行。
2、If…End If必须成对出现。
行If语句中不需要End If。
3、最好采用缩进形式。
4、如果语句组1、语句组2中含有多条语句时,最好使用块If语句。
三、If语句的嵌套:多分支结构四、ElseIf语句:多分支结构格式:If 条件1 Then语句组1ElseIf 条件2 Then语句组2……ElseIf 条件n Then语句组nElse语句组n+1End If1、VB首先测试条件1,如果它为False,VB就测试条件2,依次类推,直到找到一个为True 的条件。
此时,VB就会执行相应的语句组,然后执行End If后面的语句。
2、不能交叉嵌套,只能完全嵌套。
3、可以使用任意数量的ElseIf语句。
4、只有一个End If与If相对应。
例题4-5:方法一:If cj >= 0 And cj < 60 ThenPrint "不及格"ElseIf cj >= 60 And cj < 75 ThenPrint "及格"ElseIf cj >= 75 And cj < 90 ThenPrint "良好"ElseIf cj >= 90 And cj <= 100 Then Print "优秀"End IfEnd IfEnd IfEnd If方法二:If cj >= 90 And cj <= 100 ThenPrint "优秀"ElseIf cj >= 75 ThenPrint "良好"ElseIf cj >= 60 ThenPrint "及格"ElsePrint "不及格"End IfEnd IfEnd If方法三:If cj >= 90 And cj <= 100 ThenPrint "优秀"ElseIf cj >= 75 ThenPrint "良好"ElseIf cj >= 60 ThenPrint "及格"ElsePrint "不及格"End If方法四:Select Case cjCase 90 To 100Print “优秀”Case 75 To 89Print “良好”Case 60 To 74Print “及格”Case ElsePrint “不及格”End Select五、多条件选择语句Select Case:多分支结构格式:Select Case 测试表达式Case 表达式1语句组1Case 表达式2语句组2……Case 表达式n语句组n[ Case Else语句组n+1 ]End Select改进:Select Case 测试表达式‘复合语句 Case 表达式1:语句组1Case 表达式2:语句组2……Case 表达式n:语句组n[ Case Else :语句组n+1 ]End Select1、测试表达式只能是数值型或字符型。