鱼C论坛

 找回密码
 立即注册
查看: 477|回复: 1

[已解决]代码异同求助

[复制链接]
发表于 2023-12-14 19:34:27 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>//晶体管显示数字
#include <string.h>

#define max 10;

void line(char i[]);
void line(char i[])
{
        int l = strlen(i) ;
        printf("%d\n",strlen(i));
        int u = 0;
        while(i[u] != '\0')
        {
                printf("%c\n",i[u]);
                u++;
        }
        printf("%d\n",u);
        char *k = &i[0];
        int line[10][7] = {{1,1,1,1,1,1,0},//0
                                           {0,1,1,0,0,0,0},//1
                                           {1,1,0,1,1,0,1},//2
                                           {1,1,1,1,0,0,1},//3
                                           {0,1,1,0,0,1,1},//4
                                           {1,0,1,1,0,1,1},//5
                                           {1,0,1,1,1,1,1},//6
                                           {1,1,1,0,0,0,0},//7
                                           {1,1,1,1,1,1,1},//8
                                           {1,1,1,1,0,1,1}};//9
        while(k-&i[0] < l)//第一行
        {
        if(line[*k-0x30][0] == 1)
        printf(" _");
        else putchar(' ');
        putchar('\t');
        *k++;
        }
        k = k-l;
        putchar('\n');
       
        while(k-&i[0] < l){      //第二行
        if(line[*k-0x30][5] == 1)
        printf("|");
        else putchar(' ');
        if(line[*k-0x30][6] == 1)
        printf("_");
        else putchar(' ');
        if(line[*k-0x30][1] == 1)
        printf("|");
        putchar('\t');
        *k++;
        }
        k = k-1;
        putchar('\n');
       
        while(k-&i[0] < l){  //第三行
        if(line[*k-0x30][4] == 1)
        printf("|");
        else putchar(' ');
        if(line[*k-0x30][3] == 1)
        printf("_");
        else putchar(' ');
        if(line[*k-0x30][2] == 1)
        printf("|");
        putchar('\t');
        *k++;
        }
        k = k-1;
        putchar('\n');
}

int main()
{
        int i;
        char u[5];
        printf("请输入数字;");
        for(i = 0;i < 10;i++)
        {
        scanf("%c",&u[i]);
        }
        line(u);
               
        return 0;
}



#include <stdio.h>//晶体管显示数字
#include <string.h>

#define max 10;

void line(char i[]);
void line(char i[])
{
        int l = strlen(i) ;
        printf("%d\n",strlen(i));
        int u = 0;
        while(i[u] != '\0')
        {
                printf("%c\n",i[u]);
                u++;
        }
        printf("%d\n",u);
        char *k = &i[0];
        int line[10][7] = {{1,1,1,1,1,1,0},//0
                                           {0,1,1,0,0,0,0},//1
                                           {1,1,0,1,1,0,1},//2
                                           {1,1,1,1,0,0,1},//3
                                           {0,1,1,0,0,1,1},//4
                                           {1,0,1,1,0,1,1},//5
                                           {1,0,1,1,1,1,1},//6
                                           {1,1,1,0,0,0,0},//7
                                           {1,1,1,1,1,1,1},//8
                                           {1,1,1,1,0,1,1}};//9
        while(k-&i[0] < l)//第一行
        {
        if(line[*k-0x30][0] == 1)
        printf(" _");
        else putchar(' ');
        putchar('\t');
        *k++;
        }
        k = k-l;
        putchar('\n');
       
        while(k-&i[0] < l){      //第二行
        if(line[*k-0x30][5] == 1)
        printf("|");
        else putchar(' ');
        if(line[*k-0x30][6] == 1)
        printf("_");
        else putchar(' ');
        if(line[*k-0x30][1] == 1)
        printf("|");
        putchar('\t');
        *k++;
        }
        k = k-l;
        putchar('\n');
       
        while(k-&i[0] < l){  //第三行
        if(line[*k-0x30][4] == 1)
        printf("|");
        else putchar(' ');
        if(line[*k-0x30][3] == 1)
        printf("_");
        else putchar(' ');
        if(line[*k-0x30][2] == 1)
        printf("|");
        putchar('\t');
        *k++;
        }
        k = k-1;
        putchar('\n');
}

int main()
{
        int i;
        char u[5];
        printf("请输入数字;");
        for(i = 0;i < 10;i++)
        {
        scanf("%c",&u[i]);
        }
        line(u);
               
        return 0;
}

各位大佬过目,两份代码有何异同?为何跑出来的结果不相同
最佳答案
2023-12-14 19:35:17
这两份代码有很多问题。首先,你在代码开头的 #include 后没有包含任何头文件,应该根据你需要使用的函数和类型来添加相应的头文件。

其次,在声明宏 max 时,不需要添加分号。应该将代码改为:

#define max 10

接下来,在 line 函数的参数列表中,字符 i 应该改为字符数组 char i[],并且去掉函数内部的 strlen(i) 和 while 循环,因为你已经声明了字符数组作为函数参数,在函数内部可以直接操作字符数组的长度和内容。

另外,你定义了一个二维整型数组 line 来存储数字的显示方式,但是你在代码中使用了一个整型变量 line 来作为循环条件,会引起错误。你应该将 int line 修改为 int digit,并在循环中使用 digit 作为循环变量。

最后,你在主函数中使用了一个 for 循环来输入数字,并将数字存放在变量 u 中,但是你在 line 函数中只传递了变量 u,而没有传递数字的显示方式。你需要修改代码,使得主函数能够根据输入的数字调用 line 函数,并且传递正确的参数。

以下是修改过的代码示例:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define max 10
  4. void line(char i[]);
  5. void line(char i[])
  6. {
  7.     int l = strlen(i);
  8.     printf("%d\n", l);
  9.     int u = 0;
  10.     while (i[u] != '\0')
  11.     {
  12.         printf("%c\n", i[u]);
  13.         u++;
  14.     }
  15.     printf("%d\n", u);
  16.   
  17.     char *k = i;
  18.     int digit[10][7] = {{1, 1, 1, 1, 1, 1, 0},    //0
  19.                        {0, 1, 1, 0, 0, 0, 0},    //1
  20.                        {1, 1, 0, 1, 1, 0, 1},    //2
  21.                        {1, 1, 1, 1, 0, 0, 1},    //3
  22.                        {0, 1, 1, 0, 0, 1, 1},    //4
  23.                        {1, 0, 1, 1, 0, 1, 1},    //5
  24.                        {1, 0, 1, 1, 1, 1, 1},    //6
  25.                        {1, 1, 1, 0, 0, 0, 0},    //7
  26.                        {1, 1, 1, 1, 1, 1, 1},    //8
  27.                        {1, 1, 1, 1, 0, 1, 1}};   //9
  28.     int j;
  29.     for (j = 0; j < l; j++)
  30.     {
  31.         int num = i[j] - '0';
  32.         int n;
  33.         for (n = 0; n < 7; n++)
  34.         {
  35.             if (digit[num][n] == 1)
  36.                 printf("_");
  37.             else
  38.                 putchar(' ');
  39.         }
  40.         putchar('\t');
  41.     }
  42.     putchar('\n');
  43.     for (j = 0; j < l; j++)
  44.     {
  45.         int num = i[j] - '0';
  46.         int n;
  47.         for (n = 0; n < 7; n++)
  48.         {
  49.             if (n == 1 || n == 2 || n == 4 || n == 5)
  50.                 printf("|");
  51.             else
  52.                 putchar(' ');
  53.             if (digit[num][n] == 1)
  54.                 printf("_");
  55.             else
  56.                 putchar(' ');
  57.             if (n == 0 || n == 1 || n == 3 || n == 4)
  58.                 printf("|");
  59.             else
  60.                 putchar(' ');
  61.         }
  62.         putchar('\t');
  63.     }
  64.     putchar('\n');
  65.     for (j = 0; j < l; j++)
  66.     {
  67.         int num = i[j] - '0';
  68.         int n;
  69.         for (n = 0; n < 7; n++)
  70.         {
  71.             if (n == 1 || n == 2 || n == 4 || n == 5)
  72.                 printf("|");
  73.             else
  74.                 putchar(' ');
  75.             if (digit[num][n] == 1)
  76.                 printf("_");
  77.             else
  78.                 putchar(' ');
  79.             if (n == 0 || n == 1 || n == 3 || n == 4)
  80.                 printf("|");
  81.             else
  82.                 putchar(' ');
  83.         }
  84.         putchar('\t');
  85.     }
  86.     putchar('\n');
  87. }
  88. int main()
  89. {
  90.     char u[max];
  91.     printf("请输入数字:");
  92.     scanf("%s", u);
  93.     line(u);
  94.     return 0;
  95. }
复制代码

希望这样的修改能够解决你的问题。如果还有其他问题,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-14 19:35:17 | 显示全部楼层    本楼为最佳答案   
这两份代码有很多问题。首先,你在代码开头的 #include 后没有包含任何头文件,应该根据你需要使用的函数和类型来添加相应的头文件。

其次,在声明宏 max 时,不需要添加分号。应该将代码改为:

#define max 10

接下来,在 line 函数的参数列表中,字符 i 应该改为字符数组 char i[],并且去掉函数内部的 strlen(i) 和 while 循环,因为你已经声明了字符数组作为函数参数,在函数内部可以直接操作字符数组的长度和内容。

另外,你定义了一个二维整型数组 line 来存储数字的显示方式,但是你在代码中使用了一个整型变量 line 来作为循环条件,会引起错误。你应该将 int line 修改为 int digit,并在循环中使用 digit 作为循环变量。

最后,你在主函数中使用了一个 for 循环来输入数字,并将数字存放在变量 u 中,但是你在 line 函数中只传递了变量 u,而没有传递数字的显示方式。你需要修改代码,使得主函数能够根据输入的数字调用 line 函数,并且传递正确的参数。

以下是修改过的代码示例:
  1. #include <stdio.h>
  2. #include <string.h>
  3. #define max 10
  4. void line(char i[]);
  5. void line(char i[])
  6. {
  7.     int l = strlen(i);
  8.     printf("%d\n", l);
  9.     int u = 0;
  10.     while (i[u] != '\0')
  11.     {
  12.         printf("%c\n", i[u]);
  13.         u++;
  14.     }
  15.     printf("%d\n", u);
  16.   
  17.     char *k = i;
  18.     int digit[10][7] = {{1, 1, 1, 1, 1, 1, 0},    //0
  19.                        {0, 1, 1, 0, 0, 0, 0},    //1
  20.                        {1, 1, 0, 1, 1, 0, 1},    //2
  21.                        {1, 1, 1, 1, 0, 0, 1},    //3
  22.                        {0, 1, 1, 0, 0, 1, 1},    //4
  23.                        {1, 0, 1, 1, 0, 1, 1},    //5
  24.                        {1, 0, 1, 1, 1, 1, 1},    //6
  25.                        {1, 1, 1, 0, 0, 0, 0},    //7
  26.                        {1, 1, 1, 1, 1, 1, 1},    //8
  27.                        {1, 1, 1, 1, 0, 1, 1}};   //9
  28.     int j;
  29.     for (j = 0; j < l; j++)
  30.     {
  31.         int num = i[j] - '0';
  32.         int n;
  33.         for (n = 0; n < 7; n++)
  34.         {
  35.             if (digit[num][n] == 1)
  36.                 printf("_");
  37.             else
  38.                 putchar(' ');
  39.         }
  40.         putchar('\t');
  41.     }
  42.     putchar('\n');
  43.     for (j = 0; j < l; j++)
  44.     {
  45.         int num = i[j] - '0';
  46.         int n;
  47.         for (n = 0; n < 7; n++)
  48.         {
  49.             if (n == 1 || n == 2 || n == 4 || n == 5)
  50.                 printf("|");
  51.             else
  52.                 putchar(' ');
  53.             if (digit[num][n] == 1)
  54.                 printf("_");
  55.             else
  56.                 putchar(' ');
  57.             if (n == 0 || n == 1 || n == 3 || n == 4)
  58.                 printf("|");
  59.             else
  60.                 putchar(' ');
  61.         }
  62.         putchar('\t');
  63.     }
  64.     putchar('\n');
  65.     for (j = 0; j < l; j++)
  66.     {
  67.         int num = i[j] - '0';
  68.         int n;
  69.         for (n = 0; n < 7; n++)
  70.         {
  71.             if (n == 1 || n == 2 || n == 4 || n == 5)
  72.                 printf("|");
  73.             else
  74.                 putchar(' ');
  75.             if (digit[num][n] == 1)
  76.                 printf("_");
  77.             else
  78.                 putchar(' ');
  79.             if (n == 0 || n == 1 || n == 3 || n == 4)
  80.                 printf("|");
  81.             else
  82.                 putchar(' ');
  83.         }
  84.         putchar('\t');
  85.     }
  86.     putchar('\n');
  87. }
  88. int main()
  89. {
  90.     char u[max];
  91.     printf("请输入数字:");
  92.     scanf("%s", u);
  93.     line(u);
  94.     return 0;
  95. }
复制代码

希望这样的修改能够解决你的问题。如果还有其他问题,请随时向我提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-4 20:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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