user-0 提问: C语言救急！！

回复:
user: user-0
content: 引用 4 楼 cfjtaishan 的回复:[quote=引用 楼主 qq_41229894 的回复:] 我是想将输入的数转化为数字图形。程序不知道哪出了问题，真心求助大家！！  #include<stdio.h> #include<string.h> #include<math.h> char y[1000];//定义全局变量数组y用来存放之后拼接的符号。  char *m[10]; int main() { 	void sca(int a); 	int s,n=0,x; 	char a[20]={' ','#','#',' ','#',' ',' ','#','#',' ',' ','#','#',' ',' ','#',' ','#','#',' '}; 	char b[20]={' ','#',' ',' ','#','#',' ',' ',' ','#',' ',' ',' ','#',' ',' ','#','#','#',' '},c[20]={' ','#','#',' ','#',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ','#','#','#','#'}; 	char d[20]={' ','#','#',' ',' ',' ',' ','#',' ','#','#',' ','#',' ',' ','#',' ','#','#',' '},e[20]={'#',' ','#',' ','#',' ','#',' ','#','#','#',' ',' ',' ','#',' ',' ',' ','#',' '}; 	char f[20]={'#','#','#',' ','#',' ',' ',' ','#','#','#',' ',' ',' ','#',' ','#','#','#',' '},g[20]={' ',' ','#',' ',' ','#',' ',' ','#','#','#',' ','#',' ',' ','#',' ','#','#',' '}; 	char h[20]={'#','#','#','#',' ',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ',' '},i[20]={' ','#','#',' ','#',' ',' ','#',' ','#','#',' ','#',' ',' ','#',' ','#','#',' '}; 	char j[20]={' ','#','#',' ','#',' ',' ','#',' ','#','#','#',' ',' ',' ','#',' ',' ',' ','#'}; 	//定义0到9的符号数组分别存放在数组a到j中。  	m[0]=a,m[1]=b,m[2]=c,m[3]=d,m[4]=e,m[5]=f,m[6]=g,m[7]=h,m[8]=i,m[9]=j; 	//把a到j的首地址复制给指针数组m的0到9. 	scanf("%d",&s); 	sca(s); 	 	return 0; 	 } void sca(int a) { 	int n,c,d,i,p,k; 	char S[100]; 	sprintf(S,"%d",a);//把形参a转化为字符串赋值到数组s中。 	n=strlen(S);//计算长度即输入的整数位数。 	d=n; 	for(i=0;i<5;i++)//有5行所以循环5次。 	{n=d; 		for(;n>0;n--) 		{ 			c=pow(10,(n-1)); 			if(n!=d) 			{a=a-p*pow(10,n);} 			p=(a/c);//计算第1++位的数值。             strncpy(y,(m[p]+4*i),4);//把值输入到y中。		 			 		} 	 } 	 //printf("%d",d); 	 for(n=0;n<5;n++) 	 { 	 	for(i=0;i<20*d;i++) 	 	{   if(i%(4*d)==0) 	 		{printf("\n");} 	 		printf("%c",y[i]); 		 } 	  } }  此处应该是判断而不是赋值  if(i=5)  break;  改为： if(i == 5) break;   逻辑不清晰，不好修改；不知道你要实现怎么表示数字。[/quote]我改了那里现在只有最后一个数是对的，能看看那有错吗  引用 4 楼 cfjtaishan 的回复:[quote=引用 楼主 qq_41229894 的回复:] 我是想将输入的数转化为数字图形。程序不知道哪出了问题，真心求助大家！！  #include<stdio.h> #include<string.h> #include<math.h> char y[1000];//定义全局变量数组y用来存放之后拼接的符号。  char *m[10]; int main() { 	void sca(int a); 	int s,n=0,x; 	char a[20]={' ','#','#',' ','#',' ',' ','#','#',' ',' ','#','#',' ',' ','#',' ','#','#',' '}; 	char b[20]={' ','#',' ',' ','#','#',' ',' ',' ','#',' ',' ',' ','#',' ',' ','#','#','#',' '},c[20]={' ','#','#',' ','#',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ','#','#','#','#'}; 	char d[20]={' ','#','#',' ',' ',' ',' ','#',' ','#','#',' ','#',' ',' ','#',' ','#','#',' '},e[20]={'#',' ','#',' ','#',' ','#',' ','#','#','#',' ',' ',' ','#',' ',' ',' ','#',' '}; 	char f[20]={'#','#','#',' ','#',' ',' ',' ','#','#','#',' ',' ',' ','#',' ','#','#','#',' '},g[20]={' ',' ','#',' ',' ','#',' ',' ','#','#','#',' ','#',' ',' ','#',' ','#','#',' '}; 	char h[20]={'#','#','#','#',' ',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ',' '},i[20]={' ','#','#',' ','#',' ',' ','#',' ','#','#',' ','#',' ',' ','#',' ','#','#',' '}; 	char j[20]={' ','#','#',' ','#',' ',' ','#',' ','#','#','#',' ',' ',' ','#',' ',' ',' ','#'}; 	//定义0到9的符号数组分别存放在数组a到j中。  	m[0]=a,m[1]=b,m[2]=c,m[3]=d,m[4]=e,m[5]=f,m[6]=g,m[7]=h,m[8]=i,m[9]=j; 	//把a到j的首地址复制给指针数组m的0到9. 	scanf("%d",&s); 	sca(s); 	 	return 0; 	 } void sca(int a) { 	int n,c,d,i,p,k; 	char S[100]; 	sprintf(S,"%d",a);//把形参a转化为字符串赋值到数组s中。 	n=strlen(S);//计算长度即输入的整数位数。 	d=n; 	for(i=0;i<5;i++)//有5行所以循环5次。 	{n=d; 		for(;n>0;n--) 		{ 			c=pow(10,(n-1)); 			if(n!=d) 			{a=a-p*pow(10,n);} 			p=(a/c);//计算第1++位的数值。             strncpy(y,(m[p]+4*i),4);//把值输入到y中。		 			 		} 	 } 	 //printf("%d",d); 	 for(n=0;n<5;n++) 	 { 	 	for(i=0;i<20*d;i++) 	 	{   if(i%(4*d)==0) 	 		{printf("\n");} 	 		printf("%c",y[i]); 		 } 	  } }  此处应该是判断而不是赋值  if(i=5)  break;  改为： if(i == 5) break;   逻辑不清晰，不好修改；不知道你要实现怎么表示数字。[/quote]我改了那里现在只有最后一个数是对的，能看看哪有错吗？

user: user-0
content: 我修改了一下 现在无论输入几位数都能显示出他们的第一行，但是其他四行的都出不来 真心希望得到帮助#include<stdio.h> #include<string.h> #include<math.h> char y[1000];//定义全局变量数组y用来存放之后拼接的符号。  char *m[10]; int main() {     void sca(int a);     int s,x;     char a[20]={' ','#','#',' ','#',' ',' ','#','#',' ',' ','#','#',' ',' ','#',' ','#','#',' '};     char b[20]={' ','#',' ',' ','#','#',' ',' ',' ','#',' ',' ',' ','#',' ',' ','#','#','#',' '},c[20]={' ','#','#',' ','#',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ','#','#','#','#'};     char d[20]={' ','#','#',' ',' ',' ',' ','#',' ','#','#',' ','#',' ',' ','#',' ','#','#',' '},e[20]={'#',' ','#',' ','#',' ','#',' ','#','#','#',' ',' ',' ','#',' ',' ',' ','#',' '};     char f[20]={'#','#','#',' ','#',' ',' ',' ','#','#','#',' ',' ',' ','#',' ','#','#','#',' '},g[20]={' ',' ','#',' ',' ','#',' ',' ','#','#','#',' ','#',' ',' ','#',' ','#','#',' '};     char h[20]={'#','#','#','#',' ',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ',' '},i[20]={' ','#','#',' ','#',' ',' ','#',' ','#','#',' ','#',' ',' ','#',' ','#','#',' '};     char j[20]={' ','#','#',' ','#',' ',' ','#',' ','#','#','#',' ',' ',' ','#',' ',' ',' ','#'};     //定义0到9的符号数组分别存放在数组a到j中。      m[0]=a,m[1]=b,m[2]=c,m[3]=d,m[4]=e,m[5]=f,m[6]=g,m[7]=h,m[8]=i,m[9]=j;     //把a到j的首地址复制给指针数组m的0到9.     scanf("%d",&s);     sca(s);           return 0;       } void sca(int a) {     int n,c,d,i,p,k=0;     char S[100];     sprintf(S,"%d",a);//把形参a转化为字符串赋值到数组s中。     n=strlen(S);//计算长度即输入的整数位数。     d=n;//赋值给d。      while(1)     {	 		n=d; 		for(i=0;i<5;i++) 		{     		for(;n>0;n--)     		{ 				c=pow(10,(n-1));     			if(n!=d)     			{a=a-p*pow(10,n);}     			p=(a/c);  				for(k;k<4;k++) 				{ 					static int b=0; 					y[b++]=*(*(m+p)+k+i*4); 				 } 				 k=0;      		}         }if(i=5) break;	 	}      for(n=0;n<(d*20);n++)      {      	if((n%(4*d)==0)&&(n!=0)) printf("\n");      	printf("%c",y[n]); 	 } }

user: user-1
content: i, j, k都用于数组名了，代码的可读性，coding style不利于阅读。

user: user-1
content: 引用 楼主 qq_41229894 的回复:我是想将输入的数转化为数字图形。程序不知道哪出了问题，真心求助大家！！ #include<stdio.h> #include<string.h> #include<math.h> char y[1000];//定义全局变量数组y用来存放之后拼接的符号。  char *m[10]; int main() { 	void sca(int a); 	int s,n=0,x; 	char a[20]={' ','#','#',' ','#',' ',' ','#','#',' ',' ','#','#',' ',' ','#',' ','#','#',' '}; 	char b[20]={' ','#',' ',' ','#','#',' ',' ',' ','#',' ',' ',' ','#',' ',' ','#','#','#',' '},c[20]={' ','#','#',' ','#',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ','#','#','#','#'}; 	char d[20]={' ','#','#',' ',' ',' ',' ','#',' ','#','#',' ','#',' ',' ','#',' ','#','#',' '},e[20]={'#',' ','#',' ','#',' ','#',' ','#','#','#',' ',' ',' ','#',' ',' ',' ','#',' '}; 	char f[20]={'#','#','#',' ','#',' ',' ',' ','#','#','#',' ',' ',' ','#',' ','#','#','#',' '},g[20]={' ',' ','#',' ',' ','#',' ',' ','#','#','#',' ','#',' ',' ','#',' ','#','#',' '}; 	char h[20]={'#','#','#','#',' ',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ','#',' ',' ',' '},i[20]={' ','#','#',' ','#',' ',' ','#',' ','#','#',' ','#',' ',' ','#',' ','#','#',' '}; 	char j[20]={' ','#','#',' ','#',' ',' ','#',' ','#','#','#',' ',' ',' ','#',' ',' ',' ','#'}; 	//定义0到9的符号数组分别存放在数组a到j中。  	m[0]=a,m[1]=b,m[2]=c,m[3]=d,m[4]=e,m[5]=f,m[6]=g,m[7]=h,m[8]=i,m[9]=j; 	//把a到j的首地址复制给指针数组m的0到9. 	scanf("%d",&s); 	sca(s); 	 	return 0; 	 } void sca(int a) { 	int n,c,d,i,p,k; 	char S[100]; 	sprintf(S,"%d",a);//把形参a转化为字符串赋值到数组s中。 	n=strlen(S);//计算长度即输入的整数位数。 	d=n; 	for(i=0;i<5;i++)//有5行所以循环5次。 	{n=d; 		for(;n>0;n--) 		{ 			c=pow(10,(n-1)); 			if(n!=d) 			{a=a-p*pow(10,n);} 			p=(a/c);//计算第1++位的数值。             strncpy(y,(m[p]+4*i),4);//把值输入到y中。		 			 		} 	 } 	 //printf("%d",d); 	 for(n=0;n<5;n++) 	 { 	 	for(i=0;i<20*d;i++) 	 	{   if(i%(4*d)==0) 	 		{printf("\n");} 	 		printf("%c",y[i]); 		 } 	  } }  此处应该是判断而不是赋值  if(i=5)  break;  改为： if(i == 5) break;   逻辑不清晰，不好修改；不知道你要实现怎么表示数字。

user: user-0
content: 谢谢大家。1!!!

user: user-0
content: 我找到错误了这个a变了，应该在这个for语句之前把a定义回原值

user: user-2
content: 冉冉升起的巨星，加油！！！！！！

user: user-0
content: 引用 5 楼 cfjtaishan 的回复:i, j, k都用于数组名了，代码的可读性，coding style不利于阅读。我的运行数字图在下面

user: user-0
content: 好像是这里表达有问题，但是我也不知道该怎么表达，感觉逻辑没问题。

user: user-3
content: 单步跟踪程序运行，观察变量变化情况，看是哪里与你期望的不一致，分析原因