pascal问题 20
1.某停车场放有自行车,三轮车和四轮车共30辆,其中三轮车不多于5辆,又数得他们的车轮共100个,试求他们各有多少?按自行车,三轮车顺序输出,每两数空一格。2.试求出1-...
1.某停车场放有自行车,三轮车和四轮车共30辆,其中三轮车不多于5辆,又数得他们的车轮共100个,试求他们各有多少?按自行车,三轮车顺序输出,每两数空一格。
2.试求出1--10000内所有10以内的素数的倍数,重复的只算一个,统计它们的和。
3.某班有48个学生,从1--48编号,并按学号顺序分成6组,求出所有学号为所在组号倍数的学生号,输出要求为1行,输出要两两空格。
答完后再奖励50分! 展开
2.试求出1--10000内所有10以内的素数的倍数,重复的只算一个,统计它们的和。
3.某班有48个学生,从1--48编号,并按学号顺序分成6组,求出所有学号为所在组号倍数的学生号,输出要求为1行,输出要两两空格。
答完后再奖励50分! 展开
1个回答
展开全部
1.先是第一题.程序:
Program prac1;{程序头}
Var
n,i,j,k:integer;{n表示当前方案的号数,i是自行车的数量,j是三轮车的数量,k是四轮车的数量}
Begin
n:=0;{先将n初始化为0}
For i:=0 to 30 do{数据比较弱,所以采取枚举的方式,从0一直枚举到其最大限度.自行车因为只有两个轮,所以说他的最大限度是30辆}
For j:=0 to 5 do{三轮车不多于五辆}
For k:=0 to 25 do{四轮车最多可以有100÷4=25辆}
If i+j+k=30 then
If i*2+j*3+k*4=100 then{如果符合总和三十辆,轮子一百个就输出}
Begin
Inc(n);
Writeln('Case ',n,':');
Writeln(i,' ',j,' ',k);{输出}
End;
End.{结束}
如果不符合输出之类的要求改一改就可以了,这个程序我还是有自信的.
第二题:
该题策略仍同上题一样.枚举
Program prac2;
Const{常量定义}
Prime:Array[1..4]of Byte=(2,3,5,7);{定义10以内的4个质数}
Maxn=10000;{最大范围}
Var
sum:LongInt;{总和}
i:Integer;{枚举用循环变量}
j:Byte;{枚举质数组Prime}
Bool:Array[2..10000]of Boolean;{判定某数是否已经出现过,出现过用True,否则用False}
Begin
Fillchar(Bool,Sizeof(Bool),false);{Fillchar函数将整个Bool赋为初值}
sum:=0;{这些数的总和}
For i:=2 to Maxn do{枚举}
For j:=1 to 4 do
If i Mod Prime[j]=0 then{先判定该数是否符合是素数的倍数的条件}
If Not Bool[i] then{再判定该数是否重复}
Begin
Inc(sum,i);{等效于Sum:=Sum+i;}
Bool[i]:=Not Bool[i];{将该数设为已重复过}
End;
Writeln(sum);{输出总和}
End.
至于第三题也是枚举,具体就不说明了,你看一看:
Program prac3;
Const
Maxn=48;
Var
n,tail,i:LongInt;
Que:Array[1..48]of LongInt;
Begin
n:=1;
tail:=0;
For i:=1 to Maxn do
Begin
If i Mod n=0 then
Begin
Inc(tail);
Que[tail]:=i;
End;
If i Mod 6=0 then
Inc(n);
End;
For i:=1 to tail-1 do
Write(Que[i],' ');
Writeln(Que[tail]);
End.
Program prac1;{程序头}
Var
n,i,j,k:integer;{n表示当前方案的号数,i是自行车的数量,j是三轮车的数量,k是四轮车的数量}
Begin
n:=0;{先将n初始化为0}
For i:=0 to 30 do{数据比较弱,所以采取枚举的方式,从0一直枚举到其最大限度.自行车因为只有两个轮,所以说他的最大限度是30辆}
For j:=0 to 5 do{三轮车不多于五辆}
For k:=0 to 25 do{四轮车最多可以有100÷4=25辆}
If i+j+k=30 then
If i*2+j*3+k*4=100 then{如果符合总和三十辆,轮子一百个就输出}
Begin
Inc(n);
Writeln('Case ',n,':');
Writeln(i,' ',j,' ',k);{输出}
End;
End.{结束}
如果不符合输出之类的要求改一改就可以了,这个程序我还是有自信的.
第二题:
该题策略仍同上题一样.枚举
Program prac2;
Const{常量定义}
Prime:Array[1..4]of Byte=(2,3,5,7);{定义10以内的4个质数}
Maxn=10000;{最大范围}
Var
sum:LongInt;{总和}
i:Integer;{枚举用循环变量}
j:Byte;{枚举质数组Prime}
Bool:Array[2..10000]of Boolean;{判定某数是否已经出现过,出现过用True,否则用False}
Begin
Fillchar(Bool,Sizeof(Bool),false);{Fillchar函数将整个Bool赋为初值}
sum:=0;{这些数的总和}
For i:=2 to Maxn do{枚举}
For j:=1 to 4 do
If i Mod Prime[j]=0 then{先判定该数是否符合是素数的倍数的条件}
If Not Bool[i] then{再判定该数是否重复}
Begin
Inc(sum,i);{等效于Sum:=Sum+i;}
Bool[i]:=Not Bool[i];{将该数设为已重复过}
End;
Writeln(sum);{输出总和}
End.
至于第三题也是枚举,具体就不说明了,你看一看:
Program prac3;
Const
Maxn=48;
Var
n,tail,i:LongInt;
Que:Array[1..48]of LongInt;
Begin
n:=1;
tail:=0;
For i:=1 to Maxn do
Begin
If i Mod n=0 then
Begin
Inc(tail);
Que[tail]:=i;
End;
If i Mod 6=0 then
Inc(n);
End;
For i:=1 to tail-1 do
Write(Que[i],' ');
Writeln(Que[tail]);
End.
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询