1 / 16

水仙花数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如: 1^3 + 5^3 + 3^3 = 153 )

题 1055 :求出 100 至 999 范围内的所有水仙花数. 水仙花数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如: 1^3 + 5^3 + 3^3 = 153 ).  三位的水仙花数共有 4 个: 153 , 370 , 371 , 407. 输出结果行末有空格,算格式错误,一定要当心. program ex1055; var i,g,s,b,num:integer; begin num:=0; for i:=100 to 999 do begin g:=i mod 10;

Download Presentation

水仙花数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如: 1^3 + 5^3 + 3^3 = 153 )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 题1055:求出100至999范围内的所有水仙花数 水仙花数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)  三位的水仙花数共有4个:153,370,371,407 输出结果行末有空格,算格式错误,一定要当心

  2. program ex1055; var i,g,s,b,num:integer; begin num:=0; for i:=100 to 999 do begin g:=i mod 10; s:=i div 10 mod 10; b:=i div 100; if (i=g*g*g+s*s*s+b*b*b) then begin inc(num); if num=1 then write(i) else write(' ',i) end; end; end.

  3. 在线测试,提交的结果中英文对译: Accepted(通过) Compile Error(编译错) Run Error(运行错) Time Limit Exceeded(超时) Memory Limit Exceeded(超内存) Wrong answer (答案错) Format Error(格式错)。

  4. 随机生成20个1-100之间的数,输出平均值,保留两位小数随机生成20个1-100之间的数,输出平均值,保留两位小数 var d:real; x,p,s:integer; begin randomize; for x:= 1 to 20 do begin p:=random(100)+1; write(p,' '); s:=s+p; end; writeln; d:=s/20; writeln(d:0:2); readln; end. program ex3; var i:integer; s:real; begin randomize; s:=0; for i:=1 to 20 do s:=s+(random(99)+1); writeln(s/20:0:2); end. 随机生成20个1-100之间的数,输出平均值,同时输出高于平均值的数 要求有变量保存生成的数 如果要保留20个数要有多少变量?

  5. a1 a2 a3 … an 数组 名字相同下标不同的一组数 a[1] a[2] a[3] … a[n]

  6. Pascal数据类型 • 简单类型 • 标准类型: 整型、实型、字符型、布尔型 • 自定义类型:枚举型、子界型 • 构造类型数组类型、集合类型、记录类型和文件类型 • 指针类型 type char integer real string boolean

  7. 一维数组

  8. program pzf; var i,n:integer; s,p:real; a:array[1..10] of real; begin readln(n); s:=0; for i:=1 to n do begin read(a[i]); s:=s+a[i]; end; p:=s/n; for i:=1 to n do if a[i]>p then write (a[i] ,’ ‘); end. 输入n个学生的某门课程的成绩,输出大于平均分的数 n<=10 a[1] a[2] a[3] ……

  9. 数组类型 数组定义 方式一,先构造,再定义 type data=array[1..50] of integer; var x:data; x为数组变量 方式二,构造与定义同时 var x:array [1..50] of integer; student:array[‘a’..’z’] of real; 数组是一个整体,数组名是一个整体的标识,要想使用数组中的元素,只能通过下标才能实现。数组下标可以是一个表达式。下标类型必须是有序的,可以是整型、字符型、布尔型、枚举型、子界型等

  10. 数组的基本操作 • 数组的输入、输出 • 数组元素的查找 • 数组元素的移动 • 数组元素的插入 • 数组元素的删除 • 排序

  11. 数组元素的输入、输出 例:按照顺序读入十个数,然后以逆序方式输出。 for i:=1 to 10 do read(a[i]); {输入} for i:=10 downto 1 do write(a[i]); {输出} Program ex2_1; const n=10; {符号常量} var a:array[1..n] of integer; {下标不能是未知} i:integer; begin for i:=1 to n do read(a[i]); {读入} for i:=n downto 1 do write(a[i],’‘); end.

  12. 思考:将上题A数组中的各元素的值按逆序重新放置再输出,如何操作?思考:将上题A数组中的各元素的值按逆序重新放置再输出,如何操作? 可以先开一个B数组,将A数组各元素的值按逆序赋值B数组元素,再将B数组各元素的值按顺序回到A数组相应元素中。

  13. Program ex2_1; const n=10; var a,b:array[1..n] of integer; i,m:integer; begin for i:=1 to n do read(a[i]); for i:=1 to n do b[i]:=a[ ]; for i:=1 to n do a[i]:=b[i]; for i:=1 to n do write(a[i],’‘); end. n-i+1 也可以共用一个变量t实现不开其它数组对调,如何做?

  14. Program ex2_1; const n=10; var a:array[1..n] of integer; i,t:integer; begin for i:=1 to n do read(a[i]); for i:=1 to n div 2 do begin t:=a[i]; a[i]:=a[n-i+1]; a[n-i+1]:=t; end; for i:=1 to n-1 do write(a[i],' '); write(a[n]); end.

  15. 作业

  16. 数组元素的移动 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10] 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 第一步: 取出A[1]中的数放t中 1 第二步: 后面所有元素向前移动 第三步: 1 将t中的值放到A[10]处

More Related