分享

vf

 昵称1428713 2010-06-05

1、  打开STUD表,按姓名查询任一学生的信息。若找到,显示该生信息;否则,显示查无此人!

解:clear

use stud

accept "请输入姓名:" to xm

loca for 姓名=xm

if found()

  disp

 else

  "查无此人!"

endif

use

2、  计算1+2+3+……+10!之和。

解:s=0
k=1
for i=1 to 10
    k=k*i
    s=s+k
endfor
s
解释:第一次运行时:

s=0;k=1;

进入for循环,i=1,k=k*i(1=1*1),s=s+k(1=0+1);此时k=1,s=1;

第二次运行:

进入for循环,i=2,k=k*i(2=1*2),s=s+k(3=1+2);此时k=2,s=3;

第三次运行:

进入for循环,i=3,k=k*i(6=2*3),s=s+k(9=3+6);此时k=6,s=9;

 

…………………………

s就是每次循环的总和,k就是每次运算的(1!,即第一次k=1!,第二次k=2!,第N次,k=N!)。

3编写程序求,(1)3+8+11!

  2)(4+7!)*3

3)求100以内能被3整除的数

解:(1s=0
k=1
for i=1 to 3
  k=k*i
endfor
t=1
for i=1 to 8
  t=t*i
endfor
p=1
for i=1 to 11
  p=p*i
endfor
s=s+k+t+p
"3+8+11!=",s
2s=0
k=1
for i=1 to 4
  k=k*i
endfor
t=1
for i=1 to 7
  t=t*i
endfor
p=1
for i=1 to 3
  p=p*i
endfor
s=(k+t)*p
"(4+7!)*3=",s
3for i=1 to 100

  if i/3=int(i/3)

    i

  endif

endfor

4100以内所有能被3整除的整数的和。

解:clear

s=0

for i=1 to 100

  if i%3=0

    s=s+i

  endif

endfor

"100以内所有能被3整除的整数的和是:",s

5(1) 1~100奇数求和,
(2) 1~100求和
解:(1)题程序如下:
set talk off
s=0
i=1
do while i<=100
s=s+i
i=i+2
enddo
s
2)题程序如下:
set talk off
s=0
i=1
do while i<=100
s=s+i
i=i+1
enddo
s

6显示出100200的所有奇数并每行显示6

 解:clea

A=0

FOR I=100 to 200

 if mod(i,2)#0

 A=A+1

 IF A=6

  I

  A=0

 

 ELSE

  I

 ENDI

endi

endf

retu

7VF编程,1100之间,所有即是3的倍数又是7倍数的自然数之和

解:s=0
for i=1 to 100
   if ((i%3=0) and (i%7=0))
     s=s+i 
   endif
next i
s

8、任意输入三个数,按从大到小或从小到大顺序排列。

解:dimension a(3)
input "3个数" to a(1)
input "3个数" to a(2)
input "3个数" to a(3)
for i=1 to 2
for j=2 to 3
if a(i)<a(j) then 
s=a(i)
a(i)=a(j)
a(j)=s
endif
endfor
endfor
a(1),a(2),a(3)
9、一: 求一个学生表(XSB)中男女入学成绩的平均分, Do while语句实现

:求一个成绩表(CJB)中,有成绩和等级两个字段,要求根据学生的成绩确定等级,具体规定如下:  成绩在85分以上的等级为优秀,成绩在70分以上的等级为良好,成绩在60以上的等级为及格,低于60的等级为不及格 

解:如果非要用dowhile 语句请用下面那个,一个一个统计
set talk off
use xsb
count to m for 性别=""
count to n for 性别=""
 sum 入学成绩 to a for 性别=""
 sum 入学成绩 to b for 性别=""
"男生入学成绩平均分为:",a/m
"女生入学成绩平均分为:",b/n
set talk on
retu
*---------------------------------------
  set talk off 
 clea
 m=0
 n=0
 a=0
 b=0
 use xsb
 go top
 do while !eof()
  if 性别=""
    m=m+1
    a=a+入学成绩
  else
    n=n+1
    b=b+入学成绩
  endif
skip
enddo
 "男生入学成绩平均分为:",a/m
 "女生入学成绩平均分为:",b/n
set talk on
retu
第二题:clear
use cjb
cj=成绩
do while not eof()
   do case  
      case cj>=85
           replace 等级 with "优秀"
       case cj>=70.and.cj<85
           replace 等级 with "良好"
       case cj>=60.and.cj<70
           replace 等级 with "及格"
       case cj<60.and.cj>0 
           replace 等级 with "不及格"
   endcase
   skip 
enddo  
use 
return 

10s=1*2*3*4*……*n s不大于400000n的最大值。

解:clear

s=1

n=1

do while .t.

   s=s*n

  

   if s>=400000

     exit

   endif

   n=n+1

  

enddo

 n-1

111+2+3+4+5+...10!详细的编程。

解:CLEAR

s=0

b=1

FOR i=1 TO 10

 FOR j=1 TO i

  b=b*j

 ENDFOR

 s=s+b

 b=1

ENDFOR

s

121~100间能被35整除的整数的和?

解:set talk on

clear

sum=0

FOR i =1 TO 100

 if i%3=0 or i%5=0

sum=sum+i

   ENDIF

 endfor

"和为:",sum

SET TALK off

13、编程求出1300以内能被37整除的数的平方和。

解:clea
s=0
for i=1 to 300
    if i%3=0.or.i%7=0
       s=s+i*i
    endif
endfor
s
retu
14、(1.输入一年份,判断是否为闰年。
2.帮我编一个求打折商品的程序。
解:(1clear
set talk off
input "请输入年份:"to n
 msg="年不是闰年"
  if mod(n,4)=0 and mod(n,100)<>0 or mod(n,400)=0
    msg="年是闰年"
    
   endif
   n,msg
set talk on 
2clear
SET TALK OFF
INPUT "请输入商品价格:" TO A
INPUT "请输入折扣数:" TO C
 S=A*0.1*C
"折后价格为:",S
SET TALK ON
15、一:顾客订购机票,若买到二十张以上,则优惠15%若买到十张以上,则优惠10%。现要求编一个程序在顾客输入定票数后直接现实价格          二:在学生表中找到张三的资料,若入校总分大于540,则现实其学号,出生年月,专业
解:一、clear
input "请输入定票数:" to x
do case
   case x<10
     y=x
   case x>=10 and x<20
     y=0.9*x
   other
     y=0.85*x
endcase
"应付价格为:",y
二、clear
use 学生表
loca for 姓名="张三"
if 入校总分>540
  学号,出生年月,专业
endif
use
16、用vf编程输出如下图形:

*************

 ***********

  *********

   *******

    *****

     ***

      *

解:clear

for i=7 to 1 step -1

  space(7-i)

  for j=2*i-1 to 1 step -1

    "*"

  endfor

 

Endfor

17vf 用循环语句编程 输出下面图形:

*              *           ****

***           ***            ***

*****        *****           **

******    *******     *

解:CLEAR

FOR i=1 TO 8 STEP 2

   FOR a=1 TO i

      "*"

   ENDFOR

   " "

   FOR b=1 TO i

      "*"

   ENDFOR

   " "

   FOR c=1 TO (8+1-i)/2

      "*"

   ENDFOR

  

Endfor

18用循环语句编写计算10!

解:set talk off

clear

t=1

for n=1 to 10

t=t*n

endfor

'10!=',t

Return

19n=0  

do while .T.      条件为真是建立循环

n=n+1             循环一次,N增加1

if n/30=int(n/30) 判断N是否能被30整除

n                可以整除,显示N的值

if n>=90           继续判断N是否大于等于90

exit    大于等于90时执行EXIT退出DO while循环语句

endif

endif

enddo

return

结果为30,60,90.当等于90.第二个IF语句条件成立,执行EIXT退出整个DO while 语句

20由键盘输入一个字符串,要求逆序输出该字符串.

解:CLEAR

ACCEPT  "请输入一个字符串:" TO S1

A=LEN(S1)

I=A

S2=""

DO WHILE I>=1

   S2=S2+SUBSTR(S1,I,1)

   I=I-1

ENDDO

"这个字符串的逆序是:",S2

21if   从键盘输入三个数,按从大到小排列后,放入A.B.C.中,并输出A.B.C.
clear
"请输入3个数"
input "第一个   " to a
input "第二个   " to b
input "第三个   " to c
if a<b
d=a
a=b
b=d
endif
if a<c
d=a
a=c
c=d
endif
if b<c
d=b
b=c
c=d
endif
"a="+LTRIM(STR(a)),"b="+LTRIM(STR(b)),"c="+LTRIM(STR(c))
return
22、用do case  scorese表中查找指定身份证号码的学生,并按他的语文成绩给出相应的评语

语文成绩 100-90 优秀

          89-70 良好

          69-60 合格

          60以下   不合格

解:clear

use scorese

accept "查询学生身份证号码:" to nu

locate for 身份证号=nu

do case

 case 语文成绩<60

 "不合格"

 case 语文成绩<69

 "合格"

 case 语文成绩<89

 "良好"

 case 语文成绩<=100

 "优秀"

endcase

return

23x>=0y=8*x+2,x<0y=2-8*x计算y的值

do while

解:do while .t.

 input to x

 if x>=0

    y=8*x+2

 else

    y=2-8*x

 endif

 y

 wait "是否继续y/n" to s

 if s="n" or s="N"

  exit

 endif

enddo

24从键盘输入数据A(可以是C,D,N,LY型等),通过类型判断,输入其数据类型的汉字说明(如A的值为“OK!”,那么输出应为:OK!--字符型数据)。
解:clear
input "请输入数据" to A
T=vartype(A)
A
do case
 case T='C'
 "--字符型"
 case T='D'
 "--日期型"
 case T='G'
 "--通用性"
 case T='Y'
 "--货币型"
 case T='T'
 "日期时间型"
 case T='L'
 "--逻辑型"
 case T='N'
 "--数值型"
endcase
return

25VFP中,if语句 do case语句 等区别。

解:和do case都是条件型语句:
IF是只有两种情况下使用的,就是,如果条件成立,怎么处理,否则,怎么处理,当然,里面还可以再有嵌套。
DO CASE则表示,当什么情况下,怎么处理;当什么情况下怎么处理;。。。可以执行的是多条件,里面也可以再加嵌套。 

26、在VFP中怎么用 DO WHILE语句编程 显示所有100以内的6的倍数的数,并求这些数的和

解:s=0

i=1

do while i<=100

if mod(i,6)=0

i

s=s+i

endif

i=i+1

enddo

"",s

 27VFP编程。给出一个百分制成绩,要求输出成绩等级ABCDE。用if 语句。

解:clear 

input "输入考试成绩" to chj

if chj<60

dj="E"

else

if chj<70

dj="D"

else

if chj<80

dj="C"

else

if chj<90

dj="B"

else

dj="A"

endif

endif

endif

endif

dj

28用条件语句编写程序求下面的分段函数Y的值 VF

x<2 y=x;
 2<=x<=10  y=x;
  x>10  y=-3x; 

clear

input "请输入x的值:" to x

do case

   case x<2

     y=x

   case x>=2 and x<=10

     y=x  &&这里可能是你的题写错了,怎么两个都是y=x,你自己看到题把这改下

   case x>10

     y=-3*x

endcase

"y的值是:",y

29编程打印由数字组成的图案,图案如下。

1

1  2

1  2  3

1  2  3  4

1  2  3  4  5

1  2  3  4  5  6

解:dimen a(6,6)

for i=1 to 6

  for j=1 to i

  a(j,1)=1

  a(j,2)=2

  a(j,3)=3

  a(j,4)=4

  a(j,5)=5

  a(j,6)=6

  endfor

  endf

 

for i=1 to 6

  for j=1 to i

  a(i,j)

  endfo

 

Endf

30for循环也叫当型循环,意思是当条件成立时执行的循环。

do while 循环也叫直到型循环,意思是直到条件不成立结束循环。

scan循环也叫表扫描循环,根据当前表的记录数进行循环,每循环一次表记录指针下移一个记录,直到数据表结束

31打印学生表(学生.dbf),中全体女生的信息。(姓名,性别,年龄,专业,等内容

解:1、用scan for...endscan 语句

 

use 学生

scan all for 性别=""

姓名,性别,年龄,专业

endscan

 

 

2、用do while...enddo语句

 

use 学生

do while !eof()

if 性别=""

姓名,性别,年龄,专业

endif

skip

enddo

31vf,do while !eof(),是什么意思呀

解:!指不等于 eof()函数用于测试指针是否指向文件尾.

! eof() 等价于 not eof()

do while !eof() 循环语句,判断是指针是否到文件尾.

条件成功,建立循环,否则直接跳出循环体.

321、首先,EOFx)是一个函数,它的返回的函数值是boolean型:当数据指针指向文件末尾时,它的值为true,当指针未指向文件末尾时它的值为false.  函数中的x是一个整型数,代表打开文件时定义的文件号。
    一般eof函数跟读取顺序文件相联系,以防到达文件末尾时还要读取数据而出现错误。使用方法是:先打开文件,每读一个数据后用eof判断是否到了文件末尾,如果不到则继续读取,如果到达结尾(eof()=true)则说明已经到达文件末尾,不存在没有读取的数据了,所以立即停止读取。
2not eof(1)的含义:“1”表示打开文件时使用的通道号为1#。它的意思是当文件正在读取时,如果指针没有到达结尾,eof(1)=false,根据布尔代数运算规则,not eof(1)的值为true;而当指针到达文件结尾时,not eof(1)的值为false
    3do while not eof(1)是一个循环语句,它的循环条件是not eof(1)true,刚才分析过,这个取值表示指针没有到达文件结尾。而停止循环的条件是not eof(1)=false,这个值只有当指针文件到达尾部时才取得。
    所以,这个循环条件是指:当指针没有到达文件结尾时,继续循环,而一旦指针到达文件结尾,则停止循环。
举一个读取顺序文件的例子吧:
    open d:\a.txt for input as #1
    do while not eof(1)
        input #1,a
    loop
    这样就把文件d:\a.txt 中的数据全部读了一遍。当然读取之后再做什么运算或赋值是还要另外编程解决地。

33、在VB do while not eof(1)..................loop.....是什么意思

解:1  eof()函数为判断是否到文件尾函数,当到尾时eof()函数为真,不到尾时函数值为假。

2 do While是当型循环,当条件满足时执行循环体,条件不满足时退出循环。

所以 not eof()为真代表没到文件尾,所以此句为没到文件尾就执行循环体。

34for ...to,用在知道循环次数的时候比较方便 

DO WHILE....LOOP 用在在循环时判断条件,条件满足执行,不满足就退出

例如你要计算123...+100的值则用for to

要计算12345...什么时候大于1000,并返回最后一个数时用DO WHILE....LOOP

35VF, do while 求等差数列和

 解:SET TALK OFF

i=4

s=0

DO WHILE i<=14

s=s+i

i=i+2

ENDDO

"和是:",s

SET TALK ON

 36vfDO WHILE语句怎么编写乘法口诀

解:CLEAR

i = 1

DO WHILE i <= 9

 j =1

 DO WHILE j <= i

  STR(j,2) + " * " + STR(i,1) + " = " + STR(i * j,2) + " "

  j = j + 1

 ENDDO

 i = i + 1

  CHR(13) + CHR(10)

ENDDO

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多