gpt4 book ai didi

c - 编写循环的更简单方法

转载 作者:行者123 更新时间:2023-12-04 12:31:55 26 4
gpt4 key购买 nike

你好写了一个程序输出这个;

0

01

012

0123

01234

012345

01234

0123

012

01

0

我很确定我的方法又长又蠢,下面是它的样子

#include <stdio.h>

int main(void)
{

int first = -1, second = -1, third = -1, fourth = -1, fifth = -1, sixth = -1, seventh = -1, eight = -1, nine = -1, ten = -1, elleven = -1;

while(first < 0){
first += 1;
printf("%d\n", first);

while(second < 1){
second += 1;
printf("%d", second);
}
printf("\n");
while(third < 2 ){
third += 1;
printf("%d", third);
}
printf("\n");
while(fourth < 3){
fourth += 1;
printf("%d", fourth);
}
printf("\n");
while(fifth < 4){
fifth += 1;
printf("%d", fifth);
}
printf("\n");
while(sixth < 5){
sixth += 1;
printf("%d", sixth);
}
printf("\n");
while(seventh < 4){
seventh += 1;
printf("%d", seventh);
}
printf("\n");
while(eight < 3){
eight += 1;
printf("%d", eight);
}
printf("\n");
while(nine < 2) {
nine += 1;
printf("%d", nine);
}
printf("\n");
while(ten < 1){
ten += 1;
printf("%d", ten);
}
printf("\n");
while(elleven < 0){
elleven += 1;
printf("%d", elleven);
}
}

return 0;
}

如果有人愿意告诉我如何更容易地做到这一点? :)

最佳答案

这些产生三角形输出的问题在数学上处理它们时总是最简单的。考虑绝对值函数(例如:|x|abs(x))。

#include <stdio.h>
#include <stdlib.h>
#define LARGEST_NUMBER (5)
#define MAX_VAL (LARGEST_NUMBER+1)

int main(void) {
int i,j;
for(i=0; i<2*MAX_VAL; i++) {
for(j=0; j<MAX_VAL-abs(MAX_VAL-i); j++) {
printf("%d",j);
}
printf("\n");
}
return 0;
}

输出:

0
01
012
0123
01234
012345
01234
0123
012
01
0

我觉得这是解决此类问题的最简洁的数学方法。我过去曾向学生提供过这个确切的问题,并坚持使用 abs() 函数的解决方案,以便尽可能多地对函数进行分解(即:最少的循环、变量、代码行和函数调用)。

这是关于数学函数本身的 wiki 文章:

http://en.wikipedia.org/wiki/Absolute_value#Absolute_value_function

尽情享受吧!

关于c - 编写循环的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13148061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com