StackOverflow に関する最初の質問...C と Pascal の 2 つのプログラムがあり、同じ出力が得られるはずですが、そうではありません。
パスカル:
program ssgf108;
uses crt;
var n,q,r,s,i:integer;
var a:array[1..10] of integer;
begin
a[1]:=3;
a[2]:=-5;
a[3]:=12;
a[4]:=7;
a[5]:=-4;
a[6]:=-3;
a[7]:=2;
a[8]:=8;
a[9]:=4;
a[10]:=10;
readln(n);
q:=0;
r:=0;
s:=1;
for i:=1 to n do
begin
q:=i*a[i];
r:=i+a[i];
s:=s+q*r;
end;
writeln(q,' ',r,' ',s);
end.
子:
#include <stdio.h>
int main(){
int a[10],n,q,r,s,i;
scanf("%d",&n);
a[0]=3;
a[1]=-5;
a[2]=12;
a[3]=7;
a[4]=-4;
a[5]=-3;
a[6]=2;
a[7]=8;
a[8]=4;
a[9]=10;
q=0;
r=0;
s=1;
for (i=0;i<=n-1;i++){
q=i*a[i];
r=i+a[i];
s=s+q*r;
}
printf("%d %d %d",q,r,s);
return 0;
}
n として 5 を入力すると、Pascal は -20 1 871 を出力し、C は -16 0 567 を出力します。エラーはどこにあるのでしょうか? この質問の背景: 私は学校で問題解決コンテストを行っています。次の課題は近いです。プログラミングが必要な質問もあります。最初の 2 つの課題は Bash と Pascal で行いました。現在は C を学んでいるので、 C でそれらを行うのが好きですが、ポイントを失うことを意味するため、間違った結果を避ける必要があります。これは、コンテストのサイトで、疑似コードをコードに変換するためのトレーニングです。