C语言大神帮看这个问题该如何解决?
int main()
{int N,M,i,n;
scanf("%d %d",&N,&M);
static int number[100];
for(i=1;i<=N;i++)
{
for(n=1;n<=M;n++)
{
if(i%n==0)
{
if(number[i]==0) number[i]=1;
else number[i]=0;
}
}
}
for (i=1;i<=N;i++)
{if(number[i]==1) printf("%d ",i);
}
return 0;}
这个代码最后的部分会输出一系列的数入1 4 9
我想让这些数直接加上逗号1,4,9 我最后一步应该如何操作 展开
这个很简单,方法也有不少,这里给你提供一种思路:
设置一个变量作为标记,可以是bool类型,也可以是int类型。
在这里使用bool类型,初始bool变量为false,输出第一个后,把该标记设置为true就行。
学会了,就可以在这个基础上再进行演变。
要使用bool类型,必须支持ANSI C99标准。
代码的后面是修改过的,前面没修改。
下面是源码:
#include<stdio.h>
int main()
{
int N,M,i,n;
scanf("%d %d",&N,&M);
static int number[100];
for(i=1;i<=N;i++)
{
for(n=1;n<=M;n++)
{
if(i%n==0)
{
if(number[i]==0) number[i]=1;
else number[i]=0;
}
}
}
bool flag = false; // 作为输出的标记
for (i=1;i<=N;i++)
{
// 如果标记为false,输出第一个数字
if(!flag && number[i]==1)
{
printf("%d",i);
flag = true; // 设置标记为true
}
// 否则输出一个逗号,再输出一个数字
else if (flag && number[i]==1) printf(",%d",i);
}
return 0;
}
改好了
int main()
{int N,M,i,n;
scanf("%d %d",&N,&M);
static int number[100];
for(i=1;i<=N;i++)
{
for(n=1;n<=M;n++)
{
if(i%n==0)
{
if(number[i]==0) number[i]=1;
else number[i]=0;
}
}
}
for (i=1;i<=N;i++)
{if(number[i]==1) printf("%d, ",i);
}
return 0;}
那9后面也有逗号,9后面不应该有逗号