鱼C论坛

 找回密码
 立即注册
查看: 1537|回复: 5

[已解决]s1e14动动手3,题目不能同时显示问题

[复制链接]
发表于 2022-6-11 19:19:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
课后作业s1e14第3题,要求各种姿势打印“九九乘法表”,不知道大家是怎么完成的。我想偷点懒,把4个乘法表放到一段程序里。结果发现第3种不能打印出来(换句话说,不给运行)。当把其他几段程序屏蔽掉(前面加//)后,打印没有问题。来回折腾好几遍没找到问题所在。求助各位,帮忙看看什么原因。谢谢。
  1. #include<stdio.h>

  2. int main()
  3. {
  4.     int i,j,k;
  5.     for(i=1;i<=9;i++)
  6.     {
  7.          for(j=1;j<=i;j++)
  8.         {
  9.       printf("%d*%d=%-2d  ",i,j,i*j);//左下
  10.         }
  11.         printf("\n");
  12.   }       

  13.         printf("左下\n");
  14.         printf("\n");
  15.         printf("\n");

  16.   for(i=1;i<=9;i++)
  17.         {
  18.         for(j=i;j<=9;j++)
  19.         {
  20.         printf("%d*%d=%-2d  ",i,j,i*j);  //左上
  21.         }
  22.         printf("\n");
  23.         }
  24.         printf("左上\n");
  25.         printf("\n");

  26. for(i=1;j<=9;i++)
  27.      {
  28.         for(k=9-i;k>=1;k--)printf("        ");


  29.         for(j=1;j<=i;j++)
  30.       {

  31.         printf("%d*%d=%-2d  ",i,j,i*j);//右下
  32.         }            
  33.                 printf("\n");
  34.     }
  35.         printf("右下\n");
  36.         printf("\n");
  37.         printf("\n");
  38.         printf("\n");
  39. for(i=1;i<=9;i++)
  40. {

  41.    for(k=1;k<i;k++)
  42.     {
  43.          printf("        ");
  44.     }   
  45.    for(j=i;j<=9;j++)
  46.      {
  47.         printf("%d*%d=%-2d  ",i,j,i*j);//右上
  48.      }
  49.         printf("\n");
  50. }
  51. printf("右上\n");
  52. return 0;
  53. }
复制代码
最佳答案
2022-6-11 19:35:12
顶级太阳 发表于 2022-6-11 19:32
每一段程序我都单独运行过,结果没有问题。但是现在的问题是4个放到一起,第3段就不给结果了。看看什么原 ...

我这不是改了吗,第三段for条件i写成了j
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-6-11 19:26:27 | 显示全部楼层
for(i=1;j<=9;i++)
i<=9
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-11 19:32:43 | 显示全部楼层

每一段程序我都单独运行过,结果没有问题。但是现在的问题是4个放到一起,第3段就不给结果了。看看什么原因?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-11 19:35:12 | 显示全部楼层    本楼为最佳答案   
顶级太阳 发表于 2022-6-11 19:32
每一段程序我都单独运行过,结果没有问题。但是现在的问题是4个放到一起,第3段就不给结果了。看看什么原 ...

我这不是改了吗,第三段for条件i写成了j
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-11 19:38:11 | 显示全部楼层
确实,谢谢。但是为什么把前面的程序段都屏蔽掉之后还可以运行呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-6-11 19:58:51 | 显示全部楼层
顶级太阳 发表于 2022-6-11 19:38
确实,谢谢。但是为什么把前面的程序段都屏蔽掉之后还可以运行呢?

首先,之所以四种放在一起不会运行,是因为前面的循环中,j的值最终变为了10,走到第三段判断 j<=9 为假,直接跳过。
其次,单独运行第三段,因为 j 没有初始化,变量j的内存中是脏数据,符号位的部分数据使得这个数据被解释为一个极大的负数,所以第一次循环中 j<=9成立,之后进入内层循环 j=1后,就正常运行了。
你可以在不初始化的情况下,直接打印 j 的值就知道了。

有的编译器在使用未初始化的变量时会直接警告报错,显然你使用的编译器并不会这样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 05:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表