程序设计典型例题
程序设计习题及答案

程序设计习题及答案程序设计是一门需要不断练习和实践的技能。
通过解决各种习题,可以帮助我们提升编程能力,加深对编程语言和算法的理解。
本文将介绍一些常见的程序设计习题,以及它们的解题思路和答案。
一、习题一:计算1到100的和题目描述:编写一个程序,计算从1到100的所有整数的和。
解题思路:我们可以使用循环来实现这个求和操作。
从1开始,每次循环将当前数值累加到总和上,然后将当前数值加一。
循环直到达到100为止。
代码示例:```pythonsum = 0for num in range(1, 101):sum += numprint("1到100的和为:", sum)```二、习题二:查找列表中的最大值题目描述:给定一个整数列表,编写一个程序来查找列表中的最大值。
解题思路:我们可以使用一个变量来存储当前的最大值,然后遍历整个列表,比较每个元素与最大值的大小。
如果找到比当前最大值更大的元素,就更新最大值。
代码示例:```pythonnumbers = [5, 8, 3, 12, 1, 9]max_num = numbers[0]for num in numbers:if num > max_num:max_num = numprint("列表中的最大值为:", max_num)```三、习题三:判断一个数是否为素数题目描述:给定一个正整数,编写一个程序来判断该数是否为素数。
解题思路:素数是指只能被1和自身整除的整数。
我们可以使用一个循环来判断该数是否有除了1和自身以外的因子。
遍历2到该数的平方根,如果找到任何一个能整除该数的因子,就说明该数不是素数。
代码示例:```pythonimport mathdef is_prime(num):if num < 2:return Falsefor i in range(2, int(math.sqrt(num)) + 1):if num % i == 0:return Falsereturn Truenum = 17if is_prime(num):print(num, "是素数")else:print(num, "不是素数")```四、习题四:反转字符串题目描述:给定一个字符串,编写一个程序来将它反转。
经典C语言程序设计例题集锦

经典 C 语言程序设计 100 例 1-10
-------------------------------------------------------
【程序 1】
} } -------------------------------------------------------【程序 9】 题目:要求输出国际象棋棋盘。 1.程序分析:用 i 控制行,j 来控制列,根据 i+j 的和的变化来控制输出黑方格,还是白 方格。 2.程序源代码: #include "stdio.h" main() { int i,j; for(i=0;i<8;i++)
题目:有 1、2、3、4 个数字,能组成多少
个互不相同且无重复数字的三位数?都是
多少?
1.程序分析:可填在百位、十位、个位的数
字都是 1、2、3、4。组成所有的排列后再去
掉不满足条件的排列。
2.程序源代码:
main()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++)
/*以下为三重循
【程序 2】
题目:企业发放的奖金根据利润提成。利润
(I)低于或等于 10 万元时,奖金可提 10%;
利润高
于 10 万元,低于 20 万元时,低于
10 万元的部分按 10%提成,高于 10 万元的
部分,可可提
成 7.5%;20 万到 40 万之间时,高
于 20 万元的部分,可提成 5%;40 万到 60
Autolisp 程序设计例题

• • • • • • • • • • • • • • • • • • •
定义AutoCAD命令绘制带键槽的轴的剖面图 (defun c:shafkey ( / d l t1 p0 ang p1 p2 ) (setq d ( / ( getdist “\n d=” ) 2.0 ) I ( getdist “\n l=” ) t1 ( / (getdist “\n t1=” ) 2.0 ) p0 ( getpoint “\n center point:” ) ang (atan ( / t1 ( sqrt ( - ( * d d )) ( * t1 t1 ))))) ( command “pline” ( setq p1 ( polar p0 ( - ang ) d )) ( setq p2 ( list ( + ( car p0 ) ( - l d )) ( xadr p1 ))) ( polar p2 ( /pi 2.0 ) ( * 2 t1 )) ( polar p0 ang d ) ( “a” “ce” p0 p1 “ ” ) ( setq s1 ( entlast ) ) ( command “hatch” “u” 45 2 “s1” “ “ )) ) 调用方法是: command :shafkey
ห้องสมุดไป่ตู้
例题5.绘制参数化的楼梯图。 ( defun stair ( pb l h n/ d b po p1 p2 ) (setq pc (polar pb 0 l )) ( setq pt (polar pc ( / pi 2.0) h )) ( command “line” pb pc pt “ “ ) ( setq a ( / l n ) b ( / h n )) ( setq I 1 p0 pb ) ( while ( <= I n ) ( setq p1 ( polar p0 ( / pi 2.0 )b )) ( setq p2 (polar p1 0 a )) (command “line” p0 p1 p2 “ “ ) ( setq p0 p2 i (1+ i )) ) ; while ) ; defun
c语言程序设计试题及答案解析

c语言程序设计试题及答案解析C语言程序设计试题及答案解析一、选择题1. 下列哪个选项不是C语言的基本数据类型?A. intB. floatC. stringD. double答案:C2. C语言中,以下哪个运算符用于计算两个数的乘积?A. +B. -C. *D. /答案:C二、填空题1. 在C语言中,用于定义一个整型变量的关键字是______。
答案:int2. 若有以下C语言代码段:```cint a = 5, b = 10;printf("%d", a + b);```执行后输出的结果是______。
答案:15三、简答题1. 简述C语言中数组的定义和初始化方式。
答案:在C语言中,数组是一种基本的数据结构,用于存储具有相同类型的多个元素。
数组的定义方式为:类型名数组名[数组大小];初始化方式可以是静态初始化,即在定义时直接赋值,如:int arr[5] = {1, 2, 3, 4, 5}; 或者动态初始化,即在定义后使用循环或赋值语句逐一赋值。
四、编程题1. 编写一个C语言程序,实现求一个整数的阶乘。
```c#include <stdio.h>int factorial(int n) {if (n == 0)return 1;elsereturn n * factorial(n - 1);}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("%d 的阶乘是:%d\n", num, factorial(num));return 0;}```五、分析题1. 请分析以下C语言代码段的运行结果,并解释原因。
```c#include <stdio.h>int main() {int x = 10;printf("%d", x++);return 0;}```答案:代码段的运行结果是10。
C语言程序设计经典100题

C语言程序设计经典100题C语言是一种通用的、过程化的编程语言,广泛应用于软件开发、嵌入式系统和高性能计算等领域。
掌握C语言程序设计的基本知识对于初学者来说至关重要。
本文将为你介绍C语言程序设计中的经典100个题目,帮助你加深对C语言的理解和应用。
1. 编写一个程序,要求用户输入两个整数,并输出它们的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:\n");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和为:%d\n", sum);return 0;}```2. 编写一个程序,要求用户输入一个整数,并判断它是否为偶数。
```c#include <stdio.h>int main() {int num;printf("请输入一个整数:\n");scanf("%d", &num);if (num % 2 == 0) {printf("该数是偶数。
\n");} else {printf("该数是奇数。
\n");}return 0;}```3. 编写一个程序,实现1至100之间所有奇数的累加和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i += 2) {sum += i;}printf("1至100之间所有奇数的累加和为:%d\n", sum);return 0;}```4. 编写一个程序,实现输入一个数n,计算并输出1到n的阶乘。
程序设计经典100题

程序设计经典100题题目一:斐波那契数列斐波那契数列是指这样一个数列:0、1、1、2、3、5、8、13、21... 即前两个数之和等于第三个数。
现在要求输入一个正整数n,请你编写一个函数,输出斐波那契数列的第n个数。
解法一:递归法递归法是最简单直观的解法,原理是将问题分解为规模更小的子问题。
代码如下:```def fibonacci(n):if n <= 0:return 0if n == 1:return 1return fibonacci(n-1) + fibonacci(n-2)```解法二:迭代法递归法虽然直观易懂,但其时间复杂度较高。
使用迭代法可以将时间复杂度降低到O(n),代码如下:```def fibonacci(n):if n <= 0:return 0if n == 1:return 1a, b = 0, 1for i in range(2, n+1):a, b = b, a + breturn b```题目二:最大公约数给定两个正整数,求它们的最大公约数。
请你编写一个函数,输出最大公约数。
解法一:辗转相除法辗转相除法是一种求解最大公约数的常用方法。
它的原理是利用两个数的差值不断缩小问题的规模。
```def gcd(a, b):if b == 0:return areturn gcd(b, a % b)```解法二:欧几里得算法欧几里得算法也是一种求解最大公约数的常用方法。
它的原理是利用两个数的余数不断缩小问题的规模。
```def gcd(a, b):while b != 0:a, b = b, a % breturn a```题目三:翻转字符串给定一个字符串,将其翻转输出。
请你编写一个函数,输出翻转后的字符串。
解法一:使用切片可以使用字符串的切片功能来实现字符串的翻转。
```def reverse_string(s):return s[::-1]```解法二:使用列表逆序可以将字符串转换为列表,然后使用列表的逆序方法实现字符串的翻转。
python程序设计经典例题

Python程序设计经典例题一、介绍Python作为一种高级的通用编程语言,被广泛应用于各个领域,包括网络编程、数据分析、人工智能等。
在学习Python编程过程中,经典的例题是非常重要的,它可以帮助我们了解编程的基本逻辑和语法,提高我们的编程实战能力。
本文将介绍一些经典的Python程序设计例题,希望能够对大家的学习和工作有所帮助。
二、经典例题一:斐波那契数列斐波那契数列是数学中一个经典的问题,定义如下:F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) (n >= 2)要求编写一个Python程序,输入一个正整数n,输出斐波那契数列的第n个数。
解题思路:可以使用递归或者循环的方式来解决这个问题。
递归的方法比较简单,但是效率不高,可能会导致栈溢出。
循环的方法需要用到一个列表来保存中间结果,效率较高。
代码示例(循环方式):```def fibonacci(n):fib = [0, 1]for i in range(2, n+1):fib.append(fib[i-1] + fib[i-2])return fib[n]```代码示例(递归方式):```def fibonacci(n):if n <= 1:return nelse:return fibonacci(n-1) + fibonacci(n-2)```三、经典例题二:查找素数素数是指除了1和它本身外没有其他因数的整数。
要求编写一个Python程序,输入一个正整数n,输出小于等于n的所有素数。
解题思路:素数的判断可以使用试除法,即对于每个数字,判断它是否能被2到sqrt(n)之间的所有整数整除。
如果都不能整除,则该数字是素数。
代码示例:```import mathdef is_prime(num):if num < 2:return Falsefor i in range(2, int(math.sqrt(num))+1):if num i == 0:return Falsereturn Truedef find_prime(n):primes = []for i in range(2, n+1):if is_prime(i):primes.append(i)return primes```四、经典例题三:矩阵转置给定一个二维的矩阵,要求编写一个Python程序,实现矩阵的转置。
Visual Basic程序设计语言常用算法例题源代码30题

Visual Basic程序设计语言常用算法源代码30例题1、统计随机产生的十个两位正整数中偶数与奇数的个数,并求出偶数与奇数各自的总和Option ExplicitPrivate Sub Form_Click()Dim x As Integer, s1 As Integer, s2 As IntegerDim n1 As Integer, n2 As Integer, i As IntegerRandomizeFor i = 1 To 10_x=int(90*rnd)+10__Print x;If _ x mod 2=0 Thenn2 = n2 + 1s2 = s2 + xElse___n1=n1+1_s1 = s1 + xEnd IfNext iPrintPrint "奇数个数="; n1; "偶数个数="; n2;End Sub2.从字符串中分离数字和字母Private Sub Command1_Click()Dim s As String, i As IntegerConst ch As String = “0123456789.”s = "2L0A09U.0SI3V.24"For i = 1 To Len(s)If InStr(ch, Mid(s, i, 1)) = 0 Thenst1 = Mid(s, i, 1) & st1Elsest2 = st2 & Mid(s, i, 1)End IfNext iPrint st1: Print st2End Sub3. 统计字符串中“O”的个数Private Sub Command1_Click()a = "THERE IS A BOOK ON THE DESK"m = len(a)For i = 1 To mb =mid(a,i,1)If b = "O" Then num=num+1Next iPrint numEnd Sub4.从给定的字符串中只分离出数字Private Sub Command1_Click()Dim s As String, t As StringDim i As Integers = Text1.TextFor i = 1 To Len(s)If Mid(s, i, 1) >= "0" And Mid(s, i, 1) <= 9 Thent = t & Mid(s, i, 1)End IfNext iText2.Text = tEnd Sub5.(一)将正整数转化成二进制数Private Sub Command1_Click()Dim n As Long, t As Stringn = Val(Text1.Text)Dot = n Mod 2 & tn = n \ 2Loop Until n = 0Text2.Text = tEnd Sub5、(二)将正整数转化成16进制Private Sub Command1_Click()Dim n As Long, t As String, g As Stringn = Val(Text1.Text)Dog = n Mod 16If Val(g) > 9 Theng = Chr(55 + Val(g))End Ift = g & tn = n \ 16Loop Until n = 0Text2.Text = tEnd Sub5、(三)将正整数转化成8进制Private Sub Command1_Click()Dim n As Long, t As Stringn = Val(Text1.Text)Dot = n Mod 8 & tn = n \ 8Loop Until n = 0Text2.Text = tEnd Sub6.找出100以内的所有勾股数(不包括100)Private Sub Form_Click()Dim a As Integer, b As Integer, c As Integer, n As IntegerFor a = 1 To 99For b = 1 To 99For c = 1 To 99If a ^ 2 + b ^ 2 = c ^ 2 And a <> b Thenn = n + 1Print a; b; c; “; “;If n Mod 5 = 0 ThenPrintEnd IfEnd IfNext cNext bNext aPrint nEnd Sub7.找出三位数字中的所有升序数(各位数字>十位数字>百位数字)Private Sub Form_Click()Dim a As Integer, b As Integer, c As Integer, n As IntegerFor a = 1 To 9For b = 1 To 9For c = 1 To 9If a < b And b < c Thenn = n + 1Print a * 100 + b * 10 + c;If n Mod 10 = 0 Then '控制每行打印10个PrintEnd IfEnd IfNext cNext bNext aPrint nEnd Sub或Dim n As Integer, a1 As Integer, a2 As Integer, a3 As Integer, js As Integer For n = 100 To 999a1 = n \ 100 ‘取出百位数字a2 = n \ 10 Mod 10 ‘取出十位数字a3 = n Mod 10 ‘取出个位数字If a1 < a2 And a2 < a3 Thenjs = js + 1Print n;If js Mod 10 = 0 ThenPrintEnd IfEnd IfNext nPrint jsEnd Sub利用过程调用思想求升序数例找出a-b范围内的所有升序数,a>=100,b<=30000Private sub command1_click()Dim a as integer,b as integer,i as integera=text1:b=text2For i=a to bIf sx(i) thenList1.additem iEnd ifNext iEnd subPrivate sub function sx(byval n as integer) as booleanDim a() as integer,k as integer,i as integerDoK=k+1Redim preserve a(k)a(k)=n mod 10n=n\10loop until n<=0for i=1 to ubound(a)-1if a(i+1)>=a(i) then exit function (应该去判断a(1)>a(2)……a(k)但是不好判断,遇难则反,只要有一个a(i+1)>=a(i)这不是升序数)next isx=trueend function8.最小公倍数Private Sub Form_Click()Dim m%, n%, tem%m = Val(Text1.Text)n = Val(Text2.Text)tem = mDo While tem Mod n <> 0tem = tem + mLoopPrint m; "和"; n; "的最小公倍数是:"; temEnd Sub9.求一维数组a(n)各元素的和:Dim s as integer , I as intgers=0for i=1 to ns=s+a(i)next i10.求二维数组a(n,m)各元素的和Dim s as integer, i as integer, j as integers=0For i=1 to nfor j=1 to ms=s+a(i,j)next jNext i11. 求二维数组a(m,n)周边元素的和Dim s as integer, i as integerS=0For i=1 to ns=s+a(1,i)+a(m,i) (求第一行与最后一行的和)Next ifor i=2 to m-1s=s+a(i,1)+a(i,n) (求第二行到倒数第二行第一列与最后一列的和)Next i12、求二维数组a(n,n)主对角线元素的和(理解主对角线)Dim s as integer,i as integerS=0For i=1 to ns=s+ a (i,i)Next i13、求二维数组a(n,n)次对角线元素的Dim a as integer, i as integerS=0For i=1 to ns=s+a(i,n+1-i)Next i14、三种排序法(1)选择排序法是逐个比较,逆序交换;冒泡法是两两比较,逆序交换.(2)直接排序法(以降序为例)特点:比较后不立即互换元素,而是记下较大值的位置,并在每一轮比较完毕后和S(i)互换选择排序法(比较排序法)基本过程(以降序为例):将第一个元素顺序与其后面的元素比较,比第一个大则进行交换,第一轮完毕后,最大的元素被挪到了第一个位置,第二轮从第二个元素开始重复上面的过程,结束后得到第二个最大的元素,如此下去经过N-1 轮的比较,可将N 个数排好(3)冒泡法排序(以升序为例),则方法为:将相邻两个数比较,把小数对调到前边,如此进行一轮后,就会把最大的数互换到最后,再进行一次,则会把第二大数排在倒数第二的位置上,进行N-1次后,整个数列即可排好.在这种排序过程中,小数如同气泡一样逐层上浮,而大数逐个下沉,因此,被形象的喻为“冒泡”.选择法对数组经行降序排列Option explicitOption base 1Private sub command1_click()Dim sort(10) as integer, temp as integer , i as integer, j as integerFor i=1 to 10Sort(i)=int(rnd*99)+1Text1=text1 & str(sort(i))Next iFor i= 1 to 9For j=i+1 to 10If sort(i)<sort(j) thenTemp=a(i)a(i)=a(j)a(j)=tempend ifnext jtext2=text2 & str(sort(i))next itext2=text2 & str(sort(i))end sub直接排序法的精髓(降序)For i=1 to N-1pointer=I‘初始化pointer,在每轮比较开始处for j=I+1 to Nif Sort(pointer)< Sort(j) then pointer= j next jif I<> pointer thentemp=Sort(i) ‘交换Sort(i)=Sort(pointer)Sort(pointer)=tempend ifNext I冒泡排序法的精髓(升序)For i=1 to N-1for j=1 to N-i ‘比较次数逐次减少if S(j) > S(j+1) thent=S(j)S(j)=S(j+1)S(j+1)=t ‘立即互换end ifnext jnext i15、求三个数的和!Private Sub ifnum(str1 As String, n As Integer)Dim k As IntegerFor k = 1 To Len(str1) ‘逐个字符判断是否为数字If Asc(Mid(str1, k, 1)) < 48 Or Asc(Mid(str1, k, 1)) > 57 Thenn = 0: Exit SubEnd IfNext kn = 1End SubPrivate Sub Command1_Click()Dim a As String, b As String, c As StringDim y1 As Integer, y2 As Integer, y3 As Integera = Text1.Text ‘a,b,c用来取得三个文本框的字符串b = Text2.Textc = Text3.TextCall ifnum(a, y1) '用来判断a,b,c是否为数字串,为数字串时y1,y2,y3都为1 Call ifnum(b, y2)Call ifnum(c, y3)If y1 = 1 And y2 = 1 And y3 = 1 ThenText4.Text = Val(a) + Val(b) + Val(c)ElseText4.Text = "三个文本框内有非数字串"End IfEnd Sub16.求三个数的最小公倍数Option ExplicitPrivate Sub Command1_Click()Dim A As Integer, B As IntegerDim L As Long, C As IntegerA = Text1B = Text2C = Text3L = LCM(LCM(A, B), C)Text4 = LEnd SubPrivate Function LCM(ByVal X As Integer, ByVal Y As Integer)Dim M As Long, Flg As BooleanFlg = FalseDo Until FlgM = M + XIf M Mod Y = 0 ThenFlg = TrueEnd IfLoopLCM = MEnd Function17.打印九九乘法表Private sub form_clickDim I as integer, j as integerFor i=1 to 9For j=1 to iPrint j;”*”I;”=”i*j;Next jprintNext iEnd sub18判断完数(一个数如果恰好等于他所有因子之和,这个数就是完数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
我先给你一些VF的例题看看吧!Vfp--程序设计典型例题Vfp题库:程序设计基础典型例题[例1] 在()窗口中可以控制列表框内显示的变量种类。
A.跟踪窗口B.监视窗口C.局部窗口D.调动堆栈窗口分析:局部窗口用于显示模板程序中的内存变量,并显示它们的名称.当前取值的类型。
它可以控制在列表内显示的变量类型。
答案c例2下面选项中关于ACCEPT命令说法错误的是()A.ACCEPT命令格式是:ACCEPT[<字符表达式>] TO<内存变量>B.该命令只接收字符串,但是用户在输入字符串时,必须要加上定界符C如果不输入任何内容直接按回车键,系统就会把空串赋给指定的内存变量D如果选用<字符表达式>,那么系统就会首先显该表达式的值,作为提示信息分析:该命令只接收字符串,但用户在输入时不需要加定界符;否则,系统会把定界符当作字符串的一部分输出.答案:B例3下列关于过程的说法中不正确的是A.过程文件可以放在任何程序文件代码的后面,也可以保存在称为过程文件的单独文件里B.过程文件只包含过程,这些过程只能被过程文件调用C.如果需要打开多个过程文件,可以在调用过程语句中加ADDITVE,那么在打开过程文件时, 并不关闭原先已打开的过程文件D.关闭个别过程文件的命令格式是:RELESE PROCEDURE<过程文件>分析:过程文件只包含过程,这些过程可以被任何其它程序调用.命令格式SETPOCEDURE TO[<过程文件>][ADDITIVE]就可以打开多个过程文件.当使用不带任何文件名的SET PROCEDURE TO命令时,将会关闭所有的过程文件,使用命令RELEASE PROCEDURE<过程文件>时,将关闭指定的过程文件.答案:B例4 在一个程序定义了的一些变量,选出局部变量( )1.PRGPUBLIC aILOCAL a2,a3SCORE'B'TO a4LOCATE a5A.a1B.a2,a3C.a4D.a5分析:A是公共变量,C是私有变量,D的命令和LOCA TE相似,但不存在这样定义变量的命令.只有B才是定义了两个局部变量.答案:B例5 不需要先建立就可以使用的变量是( )A.局部变量B.公共变量C.私有变量D.数组分析:私有变量是指在程序中直接使用,由系统自动隐含建立的变量.即没有通过PUBLIC 或LOCAL定义的变量.它的作用域是建立它的模块及其下属的各层模块.私有变量随着建立它的模块运行结束自动清除,不需要先建立就可以使用.答案:C「例6」可以设置表达式类型的断点窗口是()A.跟踪窗口B.监视窗口C.局部窗口D.调用堆栈窗口分析:监视窗口主要就是用来指定表达式在程序调试执行过程中的变化。
要设置一个监视表达式,只需单击窗口中的“监视”文本框,然后输入表达式的内容,按回车键后表达式便添入文本框下方的列表框中。
答案:B「例7」下列命令语句正确的是()A.INPUT〃请输入账号〃TO zhB.INPUT〔2001-03-01〕TO rqC.INPUT〃T〃TO saD.INPUT〃∧2001-03-01〃TO zh分析:B的正确写法是:INPUT〔∧2001-03-01〕TO rq;C的正确写法是:INPUT.T.TO sa。
答案:A「例8」阅读下列程序,该程序的运行结果是()SET TALK OFFINPUT〃请输入A,B:〃TO A,BIF A〈BT = AA = BB = TENDIFDO WHILE B〈〉0T = MOD(A,B)A = BB = TENDDO?ASET TALK ONRETURN运行时输入:12,8A.2B.4C.12D.8分析:本程序的功能是求两个数的最大公约数。
方法是用两个数中较小的去除较大的,然后将除数作为一次除的被除数,余数作为下一次除的除数,反复进行这样的操作,直到余数为零时为止。
则最后一次除的除数,即为所给两个数的最大公约数。
答案:B「例9」用于说明程序中所有内存变量都是局部变量的命令是()A.PRIV ATE ALLB.PUBLIC ALLC.ALL=PRIV ATED.STORE PRIV A TE TO ALL分析:定义局部变量的语句有PRIV A TE<内存变量名表>和PRIVATE ALL(LIKE/EXCEPT<通配符>)。
在使用PRIV ATE ALL本程序中所有内存变量都说明为局部变量。
答案:A(例10)在Visual FoxPro中,用于建立过程文件PROGI的命令是( )A. CREATE PORGIB. MODIFY COMMAND PROGIC. MODIFY PROGID. EDIT PROGI分析:在Visual FoxPro中,建立程序的命令是MODIFY COMMAND答案:B例11:一个过程文件最多可以包含128个过程,其文件扩展名是( )A. PRGB. FOXC. DBTD. TXT分析:过程文件也是一种命令文件,扩展名为.PRG答案:A例12:有Visual FoxPro程序如下:SET TALK OFFUSE CJM - >ZF=0DO WHILE.NOT.EOF()M - >ZF=M - >ZF+ZFSKIPENDDO?M - >ZFRETURN其中数据库文件CJ.DBF中有2条记录,内容如下:XM ZF1 李四500.002 张三600.00运行该程序的结果应当是A.1100B.1000C.1600D.1200分析:分析该程序的结果时,只要理解“M - >ZF”的含义,程序就没有社么难度了。
答案:A例13:在命令文件中,调用另一个命令文件。
应使用命令分析:在FoxPro系统中,LOAD命令用于将一个二进制文件调人内存,CALL命令执行一个已调人内存的二进制文件。
PROCEDURE仅在程序中说明过程名,每个过程以PROCEDURE<过程名>开始,用PETURN结束,不是调用程序。
要在命令文件中调用另一个命令文件应该使用命令DO<命令文件名>.答案:DO〈命令文件名〉[例14]有下列程序:PARAMETER A,B,C,DD=B* B-4*A*CDO CASECASE D=OCASE D〈OD=OCASE D〉OD=2CASE D=OD=1在主程序中执行如下命令:STORE 2 TO A,CDO SUB WITH A,B,C,D?DD的值为—————分析:执行主程序DO SUB WITH A,B,C,D时,把实参1,2,1,2传递给形参A,B,C,D。
在执行过程SUB中语句D=B*B-4*A*C后的D值为O,然后执行DO CASE/ENDCASE语句,条件CASE D=O成立,重新赋值D=1,最后返回主程序时,把形参A,B,C,D的值1,2,1,1传给对应实参A,B,C,D此时D的值为1。
答案:1[例15]有如下程序:STORE O TO N,SDO WHILE.T.N=N+1S=S+NIF N>=1OEXITENDIFENDDO?”S=“+STR(S,2)本程序的运行结果是—————分析:本程序是无限次循环程序,有N的值来决定何时停止循环。
程序的功能是求1到1O 之间的所有整数之和。
可得程序运行的结果为S=55答案:S=55[例16]有如下程序:*主程序:MAIN。
PRGSET TALK OFFCLEARS=0DO SUB WITH 10,S?SRETU*子程序SUB。
PRGPARAMETERS D1,D2D1=D1+D1D2=D1*2RETURN执行主程序后S的值是__________。
分析:DO...WITH语句中的实在参数除了可以是变量外,还可以是任意有数或表达式。
当直接把值传给对应的形参;当为表达式时,先求其值后把其值传给形参。
主程序中变量S 的初值为0,S调用子程序SUB,将数值10和0对应传给子程序中的参数D1和D2,执行D1=D1+D1后,D1=20,再执行D2=D1*2,D2=40,返回到主程序时D2将值回传给S。
因此,在主程序执行?S时,屏幕显示40。
答案:40[例17]设成绩库CJK.DBF中“数学”(数值型字段)这门课程的学分为4,其学分计算的方法如下:数学>=90,学分值为480<=数学<90,学分值为370<=数学<80,学分值为260<=数学<70,学分值为1数学<60,学分值为0计算任一学生数学这门课程的学分值的程序如下:SET TALK OFFUSE CJKACCEPT "输入学号:" TO XHXF=0LOCATE FOR学号=XHDO CASECASE______XH=40CASE______XH=3CASE__________XF=2CASE__________XF=1OTHERWISEXF=0ENDCASE?"学号:",XH?"数学的学分值:",XFUSERETURN分析:本程序的考核要点是DO CASE分支语句答案:数学>=90 数学>=80 数学>=70 数学>=60【例18】参数的两种传递方法是_______和_______。
分析:调用程序模块时,如果实参是常量或一般形式的表达式,系统会计算出实参的值,并把它们赋值给相应的形参变量。
这种情形称为按值传递。
如果实参是变量,那么传递的将不是变量的值,的地址。
这时形参和实参实际上是同一个变量,在模块程序中对形参变量值的改变,同样是对实参变量值的改变,这种情形称为引用传递。
答案:TO V ALUE(按值传递),REFERENCE(按引用传递)【例19】填空完成下列程序,要求该程序能够三次从右向左显示变量S内容的字幕程序。
CLEARS=SPACE(80)+"关系数据库语言VFP计算机2级教程。
关系数据库."+SPACE(60)N=0______I=1DO WHILE I<160@20,0SAY SUBSTR(S,I,80)H=INKEY(0.1,"h")I=I+2__________ENDDO分析:表达式(1)是给出循环的条件,表达试(3)给出循环体的递增形式。
答案:(1)DO WHILE N<3,(2)ENDDO,(3)N=N+1【例20】用两种循环步长值来求1+2+3+...50的值,请将程序填写完整。
程序一:S=0FOR__(1)___S=S+NENDFOR? SRETURN程序二:S=0FOR__(2)___S=S+NENDFOR?SRETURN分析:这是一个计数循环的例子,由以上两种方法可以看出,初值和终值的设定是随步长值不同而变化的,在程序一中,由于步长为1,所以省略了。