代码异同求助
#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 != '\0')
{
printf("%c\n",i);
u++;
}
printf("%d\n",u);
char *k = &i;
int line = {{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 < l)//第一行
{
if(line[*k-0x30] == 1)
printf(" _");
else putchar(' ');
putchar('\t');
*k++;
}
k = k-l;
putchar('\n');
while(k-&i < l){ //第二行
if(line[*k-0x30] == 1)
printf("|");
else putchar(' ');
if(line[*k-0x30] == 1)
printf("_");
else putchar(' ');
if(line[*k-0x30] == 1)
printf("|");
putchar('\t');
*k++;
}
k = k-1;
putchar('\n');
while(k-&i < l){//第三行
if(line[*k-0x30] == 1)
printf("|");
else putchar(' ');
if(line[*k-0x30] == 1)
printf("_");
else putchar(' ');
if(line[*k-0x30] == 1)
printf("|");
putchar('\t');
*k++;
}
k = k-1;
putchar('\n');
}
int main()
{
int i;
char u;
printf("请输入数字;");
for(i = 0;i < 10;i++)
{
scanf("%c",&u);
}
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 != '\0')
{
printf("%c\n",i);
u++;
}
printf("%d\n",u);
char *k = &i;
int line = {{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 < l)//第一行
{
if(line[*k-0x30] == 1)
printf(" _");
else putchar(' ');
putchar('\t');
*k++;
}
k = k-l;
putchar('\n');
while(k-&i < l){ //第二行
if(line[*k-0x30] == 1)
printf("|");
else putchar(' ');
if(line[*k-0x30] == 1)
printf("_");
else putchar(' ');
if(line[*k-0x30] == 1)
printf("|");
putchar('\t');
*k++;
}
k = k-l;
putchar('\n');
while(k-&i < l){//第三行
if(line[*k-0x30] == 1)
printf("|");
else putchar(' ');
if(line[*k-0x30] == 1)
printf("_");
else putchar(' ');
if(line[*k-0x30] == 1)
printf("|");
putchar('\t');
*k++;
}
k = k-1;
putchar('\n');
}
int main()
{
int i;
char u;
printf("请输入数字;");
for(i = 0;i < 10;i++)
{
scanf("%c",&u);
}
line(u);
return 0;
}
各位大佬过目,两份代码有何异同?为何跑出来的结果不相同 这两份代码有很多问题。首先,你在代码开头的 #include 后没有包含任何头文件,应该根据你需要使用的函数和类型来添加相应的头文件。
其次,在声明宏 max 时,不需要添加分号。应该将代码改为:
#define max 10
接下来,在 line 函数的参数列表中,字符 i 应该改为字符数组 char i[],并且去掉函数内部的 strlen(i) 和 while 循环,因为你已经声明了字符数组作为函数参数,在函数内部可以直接操作字符数组的长度和内容。
另外,你定义了一个二维整型数组 line 来存储数字的显示方式,但是你在代码中使用了一个整型变量 line 来作为循环条件,会引起错误。你应该将 int line 修改为 int digit,并在循环中使用 digit 作为循环变量。
最后,你在主函数中使用了一个 for 循环来输入数字,并将数字存放在变量 u 中,但是你在 line 函数中只传递了变量 u,而没有传递数字的显示方式。你需要修改代码,使得主函数能够根据输入的数字调用 line 函数,并且传递正确的参数。
以下是修改过的代码示例:
#include <stdio.h>
#include <string.h>
#define max 10
void line(char i[]);
void line(char i[])
{
int l = strlen(i);
printf("%d\n", l);
int u = 0;
while (i != '\0')
{
printf("%c\n", i);
u++;
}
printf("%d\n", u);
char *k = i;
int digit = {{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
int j;
for (j = 0; j < l; j++)
{
int num = i - '0';
int n;
for (n = 0; n < 7; n++)
{
if (digit == 1)
printf("_");
else
putchar(' ');
}
putchar('\t');
}
putchar('\n');
for (j = 0; j < l; j++)
{
int num = i - '0';
int n;
for (n = 0; n < 7; n++)
{
if (n == 1 || n == 2 || n == 4 || n == 5)
printf("|");
else
putchar(' ');
if (digit == 1)
printf("_");
else
putchar(' ');
if (n == 0 || n == 1 || n == 3 || n == 4)
printf("|");
else
putchar(' ');
}
putchar('\t');
}
putchar('\n');
for (j = 0; j < l; j++)
{
int num = i - '0';
int n;
for (n = 0; n < 7; n++)
{
if (n == 1 || n == 2 || n == 4 || n == 5)
printf("|");
else
putchar(' ');
if (digit == 1)
printf("_");
else
putchar(' ');
if (n == 0 || n == 1 || n == 3 || n == 4)
printf("|");
else
putchar(' ');
}
putchar('\t');
}
putchar('\n');
}
int main()
{
char u;
printf("请输入数字:");
scanf("%s", u);
line(u);
return 0;
}
希望这样的修改能够解决你的问题。如果还有其他问题,请随时向我提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]