T
F
row=i
colum=j
row=i
colum=j
F
T
图9传统流程图图10N-S流程图
6.定义二维数组,存放5个字符串"dog"、"tiger"、"wolf"、"cat"、"horse",然后用选择法将这5个字符串按由小到大的顺序排序并输出。
解:
(1)算法传统流程图如图11所示,N-S流程图如图12所示。
开始
c[5][10]={"dog","tiger","wolf","cat","horse"}
j=i+1
结束
i<5
i=0
j<5
k=j
T
F
T
F
j=j+1
i=i+1
输出c[i]串
k=i
c[k]串>c[j]串
T
F
c[k]串c[i]串
k=j
c[5][10]={"dog","tiger","wolf","cat","horse"}
fori=0to4
forj=i+1to4
c[k]串>c[j]串
输出c[i]串
k=i
k≠i
c[k]串c[i]串
k≠i
T
F
F
T
T
F
图11传统流程图图12N-S流程图
(2)程序和运行结果如下:
#include
#include
voidmain()
{inti,j,k;
charc[5][10]={"dog","tiger","wolf","cat","horse"};
chart[10];
for(i=0;i<5;i++)
{k=i;
for(j=i+1;j<5;j++)
if(strcmp(c[k],c[j])>0)k=j;
if(k!
=i)
{strcpy(t,c[k]);
strcpy(c[k],c[i]);
strcpy(c[i],t);}
printf("%s\n",c[i]);
}
}
结果如下:
cat
dog
horse
tiger
wolf
7.求s=
的准确值(结果:
s=16158688114800553828940313)。
解:
(1)算法传统流程图如图13所示,N-S流程图如图14所示。
结束
输出s[i]
开始
t[30]={1},s[30]={0}
t[i]=t[i]*n
n≤25
n=1
i<30
i=0
T
F
T
F
i=i+1
i=0
t[i+1]=t[i+1]+t[i]/10
i<29
T
F
t[i]=t[i]%10
i=i+1
s[i]=s[i]+t[i]
i<30
i=0
T
F
i=i+1
i=0
s[i+1]=s[i+1]+s[i]/10
i<29
T
F
s[i]=s[i]%10
i=i+1
n=n+1
break
i≥0
T
F
i=i–1
i=29
s[i]≠0
i≥0
T
F
i=i–1
F
T
t[30]={1},s[30]={0}
forn=1to25
fori=0to29
t[i]=t[i]*n
输出s[i]
s[i]≠0
break
T
F
fori=0to29
t[i+1]=t[i+1]+t[i]/10
t[i]=t[i]%10
fori=0to29
s[i]=s[i]+t[i]
fori=0to29
s[i+1]=s[i+1]+s[i]/10
s[i]=s[i]%10
fori=29to0step–1
forito0step–1
图13传统流程图图14N-S流程图
(2)程序和运行结果如下:
#include
#include
voidmain()
{inti,n;
intt[30]={1},s[30]={0};
for(n=1;n<=25;n++)
{for(i=0;i<30;i++)t[i]=t[i]*n;
for(i=0;i<29;i++)
{t[i+1]=t[i+1]+t[i]/10;t[i]=t[i]%10;}
for(i=0;i<30;i++)s[i]=s[i]+t[i];
for(i=0;i<29;i++)
{s[i+1]=s[i+1]+s[i]/10;s[i]=s[i]%10;}
}
for(i=29;i>=0;i--)if(s[i]!
=0)break;
for(;i>=0;i--)printf("s=%d",s[i]);
}
结果如下:
s=16158688114800553828940313
8.定义3个指向含有4个元素的一维整型数组的指针变量,用其求A矩阵与B矩阵的和矩阵C。
其中:
。
解:
(1)算法传统流程图如图15所示,N-S流程图如图16所示。
(2)程序和运行结果如下:
#include
voidmain()
{inti,j;
int(*p1)[4],(*p2)[4],(*p3)[4];
inta[][4]={{1,1,2,1},{2,2,1,3},{4,2,3,1}};
intb[][4]={{2,3,5,2},{3,1,6,1},{1,1,5,0}},c[3][4];
p1=a;p2=b;p3=c;
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
{*(*(p3+i)+j)=*(*(p1+i)+j)+*(*(p2+i)+j);
printf("%3d",*(*(p3+i)+j));}
printf("\n");}}
结果如下:
ㄩㄩ3ㄩㄩ4ㄩㄩ7ㄩㄩ3
ㄩㄩ5ㄩㄩ3ㄩㄩ7ㄩㄩ4
ㄩㄩ5ㄩㄩ3ㄩㄩ8ㄩㄩ1
a[3][4]={1,1,2,1,2,2,1,3,4,2,3,1}
fori=0to2
b[3][4]={2,3,5,2,3,1,6,1,1,1,5,0}
forj=0to3
输出*(*(p3+i)+j))
*(*(p3+i)+j)=*(*(p1+i)+j)+*(*(p2+i)+j)
输出"\n"
开始
a[3][4]={1,1,2,1,2,2,1,3,4,2,3,1}
j=0
结束
i<3
i=0
j<4
*(*(p3+i)+j)=*(*(p1+i)+j)+*(*(p2+i)+j)
输出*(*(p3+i)+j))
T
F
T
F
j=j+1
i=i+1
输出"\n"
b[3][4]={2,3,5,2,3,1,6,1,1,1,5,0}
p1=a,p2=b,p3=c
p1=a,p2=b,p3=c
图15传统流程图图16N-S流程图
9.定义一个含有5个元素的一维字符指针数组,再定义二维字符数组,存放5个字符串"dog"、"tiger"、"wolf"、"cat"、"horse",然后用该一维字符指针数组并采用选择法将这5个字符串按由小到大的顺序排序并输出。
要求排序后二维数组中的字符串不允许改变。
解:
(1)算法传统流程图如图17所示,N-S流程图如图18所示。
开始
c[5][10]={"dog","tiger","wolf","cat","horse"}
j=i+1
结束
i<5
i=0
j<5
k=j
T
F
T
F
j=j+1
i=i+1
输出p[i]串
k=i
p[k]串>p[j]串
T
F
p[k]p[i]
k≠i
T
F
i=0
i<5
p[i]=c[i]
T
F
i=i+1
T
k=j
c[5][10]={"dog","tiger","wolf","cat","horse"}
fori=0to4
forj=i+1to4
p[k]串>p[j]串
输出p[i]串
k=i
k≠i
p[k]p[i]
F
T
T
F
fori=0to4
p[i]=c[i]
图17传统流程图图18N-S流程图
(2)程序和运行结果如下:
#include
#include
voidmain()
{inti,j,k;
char*p[5],*t;
charc[5][10]={"dog","tiger","wolf","cat","horse"};
for(i=0;i<5;i++)p[i]=c[i];
for(i=0;i<5;i++)
{k=i;
for(j=i+1;j<5;j++)
if(strcmp(p[k],p[j])>0)k=j;
if(k!
=i)
{t=p[k];
p[k]=p[i];
p[i]=t;}
printf("%s\n",p[i]);
}
}
结果如下:
cat
dog
horse
tiger
wolf