有人能给我解释一下这个代码怎么运行的吗(语言-c语言)

img


这个ret又是怎么运行的?我有点懵,有点看不懂了,感觉要长脑子了

求 1!+ 2!+ 3!的值
ret = ret * n // 就是 求 n 的阶乘【ret 每次循环都用到前面循环计算的结果】
n = 1,ret = 1 = 1!
n = 2,ret = 1* 2=2!
依次类推
sum = sum + ret // 就是 求 阶乘的和

供参考:
初始:ret = 1;
n = 1 时,ret = ret * n , ret = 1 * 1 = 1 = 1!
n = 2 时,ret = ret * n , ret = 1 * 2 = 2 = 2!
n = 3 时,ret = ret * n , ret = 2 * 3 = 6 = 3!
n = 4 时,ret = ret * n , ret = 6 * 4 = 24= 4!
n = 5 时,ret = ret * n , ret = 24 * 5 = 120 = 5!

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7498846
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C语言防止非法字符输入——ret的用法
  • 除此之外, 这篇博客: 扫雷游戏的实现——C语言版本(1万字超详细解析)中的 这个主要是需要在额外传入一个字符 ‘ *’  或者字符 ‘1’ 来对棋盘初始化ret进行赋值这样可以节约计算机的空间 用一个函数去初始化俩个棋盘 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • //打印棋盘
    void DisplayBoard(char board[ROWS][COLS], int row, int col)
    {
    	int i = 0;
    	for (i = 0; i <= row; i++)
    	{
    		printf("%d ", i);//打印 1 - 10个数来告诉玩家每个'*'的坐标
    	}
    	printf("\n");
    	for (i = 1; i <= row; i++)
    	{
    
    		int j = 0;
    		printf("%d ", i);//打印行方向的1-9个数
    		for (j = 1; j <= col; j++)
    		{
    			printf("%c ", board[i][j]);//将二维数组进行打印
    		}
    		printf("\n");
    	}
    }