|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
}
各位大佬过目,两份代码有何异同?为何跑出来的结果不相同
这两份代码有很多问题。首先,你在代码开头的 #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 10void line(char i[]);void line(char i[]){ int l = strlen(i); printf("%d\n", l); int u = 0; while (i[u] != '\0') { printf("%c\n", i[u]); u++; } printf("%d\n", u); char *k = i; int digit[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 int j; for (j = 0; j < l; j++) { int num = i[j] - '0'; int n; for (n = 0; n < 7; n++) { if (digit[num][n] == 1) printf("_"); else putchar(' '); } putchar('\t'); } putchar('\n'); for (j = 0; j < l; j++) { int num = i[j] - '0'; int n; for (n = 0; n < 7; n++) { if (n == 1 || n == 2 || n == 4 || n == 5) printf("|"); else putchar(' '); if (digit[num][n] == 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[j] - '0'; int n; for (n = 0; n < 7; n++) { if (n == 1 || n == 2 || n == 4 || n == 5) printf("|"); else putchar(' '); if (digit[num][n] == 1) printf("_"); else putchar(' '); if (n == 0 || n == 1 || n == 3 || n == 4) printf("|"); else putchar(' '); } putchar('\t'); } putchar('\n');}int main(){ char u[max]; printf("请输入数字:"); scanf("%s", u); line(u); return 0;}
希望这样的修改能够解决你的问题。如果还有其他问题,请随时向我提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|