※ 引述《dbox90 (微风)》之铭言:
: 如题,小弟利用C语言撰写forward star(前星法)问题
: 因老板要求需有两种的写法,小弟是用for循环写成
: 不知是否能运用while 或 do 循环撰写,恳请各位大大,给予指导
: 以下使小弟所撰写的程式码
^^^^
: http://codepad.org/3P5NzZnF
: 题目如下
: 1 2 6
: 1 4 3
: 2 3 2
: 2 6 1
: 2 5 2
: 3 6 3
: 4 5 1
: 5 2 3
: 5 6 5
: ===================
: for((A)前置处理;(B)条件式;(C)循环变动)
: {
: .
: (D)内容
: .
: }
: ===================
: 替换成while
:
: (A)
: while((B))
: {
: (D)
: (C)
: }
:
: ===================
: 替换成 do...while
:
: (A)
: do
: {
: if((B)) break;\\这行是要避免do..while 先斩后奏的问题
: \\有可能在不符合条件式做 造成一些问题
: (D)
: (C)
: }while((B));
这篇是小弟发文 站内信却是"小女子"?
乡民的性别真是难以捉摸
你的Code有三个部份的for循环
重点是只有单层 要替换一点都不难 =ˇ=
就女子心帮帮你
=================================
for(i=1; i<allink; i++)
{ scanf("%d %d %d", &k[i], &a[i], &c[i]);
}
for(i=1; i<allink; i++)
{
if(k[i] == k[i+1])
{ b[i] = num;
count++;
}
else if(k[i] <= k[allink-3])
{ b[i] = num;
num = b[i] + count;
count = 1;
}
else
{ b[i] = num;
}
}
for(i=1; i<allink; i++)
{ printf("b[%2d]= %2d a[%2d]= %2d c[%2d]= %2d\n",
k[i], b[i], i,a[i], i, c[i]);
}
==============================================
while版本
i=1;
while(i<allink)
{ scanf("%d %d %d", &k[i], &a[i], &c[i]);
i++;
}
i=1;
while(i<allink)
{
if(k[i] == k[i+1])
{ b[i] = num;
count++;
}
else if(k[i] <= k[allink-3])
{ b[i] = num;
num = b[i] + count;
count = 1;
}
else
{ b[i] = num;
}
i++;
}
i=1;
while(i<allink)
{ printf("b[%2d]= %2d a[%2d]= %2d c[%2d]= %2d\n",
k[i], b[i], i,a[i], i, c[i]);
i++;
}
=======================================
do....while 版本
i=1;
do
{
if(i<allink) break;
scanf("%d %d %d", &k[i], &a[i], &c[i]);
i++;
}while(i<allink);
i=1;
do
{
if(i<allink) break;
if(k[i] == k[i+1])
{ b[i] = num;
count++;
}
else if(k[i] <= k[allink-3])
{ b[i] = num;
num = b[i] + count;
count = 1;
}
else
{ b[i] = num;
}
i++;
}while(i<allink);
i=1;
do
{
if(i<allink) break;
printf("b[%2d]= %2d a[%2d]= %2d c[%2d]= %2d\n",
k[i], b[i], i,a[i], i, c[i]);
i++;
}while(i<allink);
========================
自己对照一下,不小心手打错就请见谅了(挖鼻)。