delphi 7.0+XP SP3调试通过
1
var//变量部分,不用说了吧
i,j,k,count:integer;//定义循环变量和总数变量
begin//主程序开始
count:= 0;//总数为0
for i:=1 to 5 do//第一张牌(还要两张所以得有5长)
for j:=i+1 to 6 do//同理,最好把begin 和 end写明白,每个循环都加一个,可以提高程序可读性,避免人工阅读错误(机器是不会弄错的)
for k:=j+1 to 7 do begin
count:=count+1;//总数加1
writeln(i,j,k);//输出三个变量的值(freepascal不需要加inttostr,delphi最好加上,免得编译器提示出错)
end;
writeln('Gong You ',count,' Zong Qing Kuang');//输出总数(delphi的控制台应用程序可以输出汉字的,dos就不行
readln;//一个小技巧,在结束加上readln;可以避免看不到结果的情况
end. //程序结束
2
var
i,count:integer;//定义变量
begin
for i:=1 to 999 do begin//从1到999循环开始(个人建议把begin写在下面单独一行,看起来更方便
if (i mod 10=3) or (i div 100=3) or (i mod 100 div 10=3) then begin//or表示或者,就是if条件满足一个即执行下面语句,第一个括号表示个位为3(求余,被10除个位余3则个位为3),第二个括号表示百位为3,第三个表示十位为三(其实还可以用字符串函数来做,只要获得有“3”这个字符即可输出
count:=count+1;//总数加1
if i<10 then write(' ');//如果i小于10输出空格
if i<100 then write(' ');//如果i小于100输出空格
write(i,' ');//输出所求的数字
if count mod 10=0 then writeln;//当每行达到10个时换行(writeln和write的区别您也应该看出了)(还是求余算法)
end;//if段结束
end;//for循环结束
writeln;//换行
writeln('gong:',count);//输出总数
readln;//同1的用法
end. //结束程序
-------------把楼上的注释了----------
希望有所帮助
2010.8.11 9:54
1
var
i,j,k,count:integer;
begin
count:= 0;
for i:=1 to 5 do
for j:=i+1 to 6 do
for k:=j+1 to 7 do begin
count:=count+1;
writeln(i,j,k);
end;
writeln('Gong You ',count,' Zong Qing Kuang');
readln;
end.
2
var
i,count:integer;
begin
for i:=1 to 999 do begin
if (i mod 10=3) or (i div 100=3) or (i mod 100 div 10=3) then begin
count:=count+1;
if i<10 then write(' ');
if i<100 then write(' ');
write(i,' ');
if count mod 10=0 then writeln;
end;
end;
writeln;writeln('gong:',count);
readln;
end.
我学C的,没法写代码,只能给你讲算法。
1.用循环把所有的列法求出,并用计数器加。
2.数据范围不大,也用循环从1to1000,边循环边判断,如果含3,就用计数器记下。最后输出
,这种方法不太好,鉴于本人打字慢,而且百度沟通不便。你可以加1269058789,在QQ上讲。