注册 登录
编程论坛 C语言论坛

被多重循环折磨的一周[tk30]

小白程序 发布于 2023-04-14 15:34, 294 次点击
没想到看着挺简单的,上手这么难,感觉自己的头发丝少了一戳。
求解:输出以输入整数为边长的正方形;
***
***
***
    输出输入整数为边长的长方形,较小数为行。
*****
*****
*****
九九乘法表输出如下:
    |  1   2   3   4   5   6    7    8    9
——————————————————————
  1 |
  2 |                                            <-这里面是结果
  3 |
......
输出该格式的乘法表。
附带上详细的注解
如果可以的话,纠正一下我的错误(发在评论区)
积分全部奉上
9 回复
#2
rjsp2023-04-14 16:38
纠正一下我的错误
你的代码呢?

程序代码:
#include <stdio.h>

int main( void )
{
    unsigned n;
    scanf( "%u", &n );

    for( unsigned i=0; i!=n*(n+1); ++i )
        putchar( "*\n"[(i+1)%(n+1)==0] );
}


程序代码:
#include <stdio.h>

int main( void )
{
    unsigned a, b;
    scanf( "%u%u", &a, &b );

    if( a > b )
    {
        unsigned t = a;
        a = b;
        b = t;
    }

    for( unsigned i=0; i!=a*(b+1); ++i )
        putchar( "*\n"[(i+1)%(b+1)==0] );
}


程序代码:
#include <stdio.h>

int main( void )
{
    puts( "  |  1  2  3  4  5  6  7  8  9" );
    puts( "------------------------------" );
    for( unsigned r=1; r!=10; ++r )
    {
        printf( "%d |", r );
        for( unsigned c=1; c!=10; ++c )
            printf( "%3u", r*c );
        putchar( '\n' );
    }
}
#3
小白程序2023-04-14 16:55
回复 楼主 小白程序
代码没看懂啥意思,(等下我在细细看看)能不能注解一下;预操纵能定义变量?unsignedC语言里有吗
#4
小白程序2023-04-14 16:58
回复 楼主 小白程序
#include<stdio.h>
int main()
{
    int n;
    printf("请输入要打印的行数:");
    scanf_s("%d", &n);

    int i, j, num;
    for (i = 1; i <= n; i++){
        for (j = 1; num = i; j <= 9) j++, num += i) {
            printf("%d", num);
        }
        printf("\n");
    }return 0;
}
#5
小白程序2023-04-14 17:01
上面是不是编译器的问题呀
#6
东海ECS2023-04-15 09:32
输出以输入整数为边长的正方形的C语言代码如下:

#include<stdio.h> int main() { int n, i, j; scanf("%d", &n); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { printf("*"); } printf("\n"); } return 0; }


输出输入整数为边长的长方形的C语言代码如下:

#include<stdio.h> int main() { int m, n, i, j; scanf("%d%d", &m, &n); for (i = 0; i < m; i++) { for (j = 0; j < n; j++) { printf("*"); } printf("\n"); } return 0; }


输出九九乘法表的C语言代码如下:

#include<stdio.h> int main() { int i, j; printf(" |"); for (i = 1; i <= 9; i++) { printf("%4d", i); } printf("\n——————————————————————\n"); for (i = 1; i <= 9; i++) { printf("%2d |", i); for (j = 1; j <= 9; j++) { printf("%4d", i * j); } printf("\n"); } return 0; }


代码解释:

(1)输出以输入整数为边长的正方形

首先读入边长,然后使用两层循环,外层控制行数(i),内层控制列数(j),每输出一个*后换行。最终输出n行n列的正方形。

(2)输出输入整数为边长的长方形

读入长和宽,然后使用两层循环,外层控制行数(i),内层控制列数(j),每输出一个*后换行。最终输出m行n列的长方形。

(3)输出九九乘法表

首先输出表头,列标从1到9,间隔4个字符,行标从1到9,间隔2个字符。再使用两层循环,外层控制行数(i),内层控制列数(j),根据乘法的规则输出i*j,每个数字占4个字符位置,每行输满后换行。
#7
小白程序2023-04-15 18:22
太强了
#8
东海ECS2023-04-16 10:06
以下是引用小白程序在2023-4-15 18:22:32的发言:

太强了

这其实很简单,是最基础的算法题之一
#9
forever742023-04-16 16:48
既然感觉受到了多重循环的折磨(见标题),
那就不妨琢磨一下R版在2楼的前两个代码,其精髓是只有1层循环哦。
#10
小白程序2023-04-19 21:24
嗯嗯
1