请帮助缩短此功能,以便拥有25行或更少的行! 它会打印0到99之间所有可能的数字组合,
EX:00 01,00 02,00,000 04,00 05,...,00 99,01 02,...,97 99,98 99
void dp_print_comb2(void)
{
char a;
char b;
char c;
char d;
a = '0';
b = '0';
while (a <= '9')
{
if (b > '9')
{
a++;
b = '0';
}
c = a;
if (b == '9')
c++;
d = b + 1;
if (b == '9')
d = '0';
while (c <= '9')
{
ok(a, b, c, d);
d++;
if (d > '9')
{
c++;
d = '0';
}
}
b++;
}
}
所以如果有办法分割这个功能或缩短请帮助我!谢谢!
如果需要主功能和其他功能,我也可以给它们!
ps:我开始学习C,并进行一些练习! (抱歉英语不好)
答案 0 :(得分:0)
void dp_print_comb2(void){
for(int ab = 0; ab < 100-1; ++ab)
for(int cd = ab + 1; cd < 100; ++cd)
printf("%02d %02d, ", ab, cd);
puts("");
}
答案 1 :(得分:-1)
如果你想让你的代码甚至更短,可以进行一次循环(未经测试但应该有效)。
void foo(){
for(int i=0,j=0;j<100;i=(i+1)%100,j+=!i)
printf("%02d %02d,",i,j);
}
如何运作
PS1:它不会更快,并且使用两个循环不太清楚,但它显示了一种不同的方式来做同样的事情。
PS2:甚至可以只使用一个变量(但它会更不清楚......)。
答案 2 :(得分:-1)
从您的示例中,当数字相同时,不要打印它们
您的问题不清楚任何其他限制。
这是我将使用的代码:
#include <stdio.h>
#define MAX_PLUS_ONE (100)
// prototype
void dp_print_comb2( void )
void dp_print_comb2()
{
for( unsigned ab=0; ab < MAX_PLUS_ONE; ab++)
{
for( unsigned cd=0; cd < MAX_PLUS_ONE; cd++)
{
if( ab != cd )
{ // then numbers are not the same
printf( "%02u %02u, ", ab, cd);
} // end if
} // end for
} // end for
} // end function: db_print_comb2