读书人

急求哪位高手能给小弟我找出小弟我编

发布时间: 2012-02-23 22:01:36 作者: rapoo

急求,谁能给我找出我编的c错在那了。先谢谢了
以下是我编写的一个程序。目的是把a到z的26个字母先让他们返回1到26个数字,然后经过以下运算:
b k o w
2 11 15 23
\ /\ /\/\/
3 2 7 5
\/ \/ \/
5 9 2
\/ \/
4 1
能看的懂吗?以下是我编写的程序,但怎么也运算不对。请高手指教:
#include <stdio.h>
main()
{
char a[20],*b,*p,*q;
printf( "Please enter your name :\n ");
gets(a);
number(a);
puts(a);
if(a[0]!= '\0 ')
do
{
for(n=0,p=a,q=p+1;*q!= '\0 ';n++,p++,q++)
if((*p+*q- '0 ')> '9 ') *p=*p+*q- '0 '-10;
else *p=*p+*q- '0 ';
*p= '\0 ';
printf( "your probability are: %s%\n ",a);

}
number(char a[20])
{ char *p,*q,b[20];
int i;
p=a;q=b;
for(;*p!= '\0 ';p++,q++)
{ if( 'j '> *p && *p> = 'a ')
*q=*p-48;
else if( 't '> *p && *p> = 'j ')
{ *q=49;
q++;
*q=*p-58;
}
else{ *q=50;
q++;
*q=*p-68;
}
}
for(i=0;b[i]!= '\0 ';i++)
a[i]=b[i];
return(a[20]);
}

[解决办法]
#include <stdio.h>
main()
{
char a[20];
printf( "Please enter your name :\n ");
gets(a);
number(a);
puts(a);
if(a[0]!= '\0 '){
cal(a);
printf( "your probability are: %s%\n ",a);
}

}
void number(char a[20])
{ char *p,*q,b[20];
int i;
p=a;q=b;
for(;*p!= '\0 ';p++,q++){
if(*p> 'A '&&*p < 'Z '){
*q=*p-16;
}
else
if(*p> = 'a ' &&*p < 'z '){
*q=*p-48;
}
}
for(i=0;b[i]!= '\0 ';i++)
a[i]=b[i];
}

int cal(char a[20])
{
int result,i,j,len=0,b[20];


char *p;
p=a;
while(*p!= '\0 '){
b[len++]=*p++;
}

do{
for (i=0;i <len ;i++ ){
if(b[0]/10> 0){
b[0]=b[0]/10+b[0]%10;
}
if(b[len]%10> 0){
b[len]=b[len]/10+b[len]%10;
len++;
}
b[i+1]=b[i]%10+b[i+1]/10;
}
if (b[i]/10 <0&&b[i+1]/10 <0)
break;
}while (1);

return b[i]+b[i+1];
}
[解决办法]

if (b[i]/10 <0&&b[i+1]/10 <0)
break;
改一下:
增加一个函数
bool uique(int *b,int len)
{
for(int i=0;i <len;i++){
if (b[i]/10 <0&&b[i+1]/10 <0)
return 1;
}
return 0;
}
/////////////然后
if(uique(b,len))
break;


}
[解决办法]
呵呵
恕本人驽钝,程序的规律都还看懂
[解决办法]
不考虑语法之类的话
for(n=0,p=a,q=p+1;*q!= '\0 ';n++,p++,q++)
if((*p+*q- '0 ')> '9 ') *p=*p+*q- '0 '-10;
else *p=*p+*q- '0 ';
的思路所得出的结果是连续2个数的和
b k o w
2 11 15 23按上面的计算是:
2 1 1 1 5 2 3
\ /\/\/\/\/\/
3 2 2 6 7 5

读书人网 >C语言

热点推荐