c语言循环问题
现在有四段不同的程序段我们先叫它们a,b,c,d。我想把它们放在一个while循环里,在while的条件满足时,它们按顺序循环执行,但哪段先执行不确定。比如,可以a,b,...
现在有四段不同的程序段我们先叫它们a,b,c,d。我想把它们放在一个while循环里,在while的条件满足时,它们按顺序循环执行,但哪段先执行不确定。比如,可以a,b,c,d,a,b,c,d...;也可以b,c,d,a,b,c,d,a,...; 也可以c,d,a,b,c,d,a,b,...; 也可以d,a,b,c,d,a,b,c,...。哪段先执行取决于输入。(比如输入a,b,c,d或1,2,3,4)怎么实现呢?希望大家给个思路,谢谢
展开
3个回答
展开全部
//将4个程序段封装成4个函数,用函数指针数组调用就行了。
//下面是个例子。
#include<stdio.h>
void a()
{
printf("执行函数a\n");
}
void b()
{
printf("执行函数b\n");
}
void c()
{
printf("执行函数c\n");
}
void d()
{
printf("执行函数d\n");
}
int main()
{
typedef void (*ptf)();
ptf allfunc[4];
int i,callorder[4];
allfunc[0]=a;
allfunc[1]=b;
allfunc[2]=c;
allfunc[3]=d;
while(1)
{
printf("请输入4个函数(a、b、c、d)的调用顺序");
printf("(1-a,2-b,3-c,4-d,如1 4 2 3):");
for(i=0;i<4;i++)
scanf("%d",callorder+i);
for(i=0;i<4;i++)
allfunc[callorder[i]-1]();
}
return 0;
}
//下面是个例子。
#include<stdio.h>
void a()
{
printf("执行函数a\n");
}
void b()
{
printf("执行函数b\n");
}
void c()
{
printf("执行函数c\n");
}
void d()
{
printf("执行函数d\n");
}
int main()
{
typedef void (*ptf)();
ptf allfunc[4];
int i,callorder[4];
allfunc[0]=a;
allfunc[1]=b;
allfunc[2]=c;
allfunc[3]=d;
while(1)
{
printf("请输入4个函数(a、b、c、d)的调用顺序");
printf("(1-a,2-b,3-c,4-d,如1 4 2 3):");
for(i=0;i<4;i++)
scanf("%d",callorder+i);
for(i=0;i<4;i++)
allfunc[callorder[i]-1]();
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int x=rand()%4;
while(1)
{switch(x)
{
case 0:
for(int a=0;a<10;a++)
printf("a%d ",a);
printf("\n");
case 1:
for(int b=0;b<10;b++)
printf("b%d ",b);
printf("\n");
case 2:
for(int c=0;c<10;c++)
printf("c%d ",c);
printf("\n");
case 3:
for(int d=0;d<10;d++)
printf("d%d ",d);
printf("\n");
x=0;
}
}
while(1)
{switch(x)
{
case 0:
for(int a=0;a<10;a++)
printf("a%d ",a);
printf("\n");
case 1:
for(int b=0;b<10;b++)
printf("b%d ",b);
printf("\n");
case 2:
for(int c=0;c<10;c++)
printf("c%d ",c);
printf("\n");
case 3:
for(int d=0;d<10;d++)
printf("d%d ",d);
printf("\n");
x=0;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for
(i=1;i<=100;i++)
{
if(!is_prime(i))
continue;
printf("%d\n",i);
}
因为你这里用的是continue;continue是跳出本次循环,执行下次循环,
不是break;break才是跳出全部循环。
(i=1;i<=100;i++)
{
if(!is_prime(i))
continue;
printf("%d\n",i);
}
因为你这里用的是continue;continue是跳出本次循环,执行下次循环,
不是break;break才是跳出全部循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询