怎样在这个C程序中不是用goto

来源:百度知道 编辑:UC知道 时间:2024/09/28 10:15:08
老师说使用太多的goto不是很好,但是由于本人愚昧,怎么改也不能改好,郁闷.

还请给为看看,看看应该怎样更改

代码如下;
比较直观的代码请来这里看看
http://c-subjects.blogspot.com/2008/11/c_07.html

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int str[10],str2[10],strc[10];
int i,q,j,k;
printf("===一数组随机赋给另一数组===\n");
for(i=0;i<10;i++) //首先给存储p值得数组赋值
strc[i]=21;
for(i=0;i<10;i++)
{
printf("请输入第%d个数字:",i+1);
scanf("%d",&str[i]);
printf("\n");
srand(time(NULL)); //根据时间产生随机数
q=rand(); //把这个值赋值给q
be:
q+=1;
q%=10;
strc[i]=q; //把q值赋给strc数组
for(j=0;j<10;j++) //判断q值之前是否存在!
{
if(i==j)
continue;
if(q==strc[j]) //如果相等,重新得到q
goto be;
}
str2

#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
int str[10],str2[10],strc[10];
int i,q,j=0,k;
printf("===一数组随机赋给另一数组===\n");
for(i=0;i<10;i++) //首先给存储p值得数组赋值
strc[i]=21;
for(i=0;i<10;i++)
{
printf("请输入第%d个数字:",i+1);
scanf("%d",&str[i]);
printf("\n");
srand(time(NULL)); //根据时间产生随机数
q=rand(); //把这个值赋值给q
j=0;
while(j<10)
{
q+=1;
q%=10;
strc[i]=q; //把q值赋给strc数组
for(j=0;j<10;j++) //判断q值之前是否存在!
{
if(i==j)
continue;
if(q==strc[j]) //如果相等,重新得到q
break;
}

}
str2[q]=str[i]; //最后把str赋给str2
}
printf("\n输出第一个数组为:\n");
for(i=0;i<10;i++)
printf("%d ",str[i]);
printf("\n根据随机产生的对应规则:\n");
for(i=0,k=