首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

急求,哪位高手能给小弟我找出小弟我编的c错在那了。先多谢了

2012-02-23 
急求,谁能给我找出我编的c错在那了。先谢谢了以下是我编写的一个程序。目的是把a到z的26个字母先让他们返回1

急求,谁能给我找出我编的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

热点排行