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

请教此程序错在哪里?(小弟百思不得其解)

2012-03-21 
请问此程序错在哪里?(小弟百思不得其解)#includestdio.h #includestdlib.h intmain(){intx,y,i,count[

请问此程序错在哪里?(小弟百思不得其解)
#include   "stdio.h "
#include   "stdlib.h "
int   main()
{int   x,y,i,count[10];
  char   *p;
  clrscr();
  scanf( "%d%d ",&x,&y);
  for   (;x <=y;x++)
      {itoa(x,p,10);
          while(*p)
              {switch(*p)
                  {case   '0 ':count[0]++;break;
                    case   '1 ':count[1]++;break;
                    case   '2 ':count[2]++;break;
                    case   '3 ':count[3]++;break;
                    case   '4 ':count[4]++;break;
                    case   '5 ':count[5]++;break;
                    case   '6 ':count[6]++;break;
                    case   '7 ':count[7]++;break;
                    case   '8 ':count[8]++;break;
                    case   '9 ':count[9]++;break;
                  }
                  p++;
                }
            }
        for   (i=0;i <=9;i++)
                  printf( "%d\n ",count[i]);
            getch();
            return   0;
        }




[解决办法]
char *p = (char*)malloc(sizeof(char)*10);
count[10];
memset(count, 10, 0);

[解决办法]
你的p是野指针,很危险的东西...
这样吧,

#include <iostream>
#include <stdlib.h>
#include <conio.h>
using namespace std;


int main()
{int x,y,i,count[10]={0};
char *p=(char*)malloc(sizeof(char)*50);
char *savep=p;//保存指针p的状态,以便最后释放
// clrscr();
scanf( "%d%d ",&x,&y);
for (;x <=y;x++)
{itoa(x,p,10);
while(*p)
{switch(*p)
{case '0 ':count[0]++;break;
case '1 ':count[1]++;break;
case '2 ':count[2]++;break;
case '3 ':count[3]++;break;
case '4 ':count[4]++;break;
case '5 ':count[5]++;break;
case '6 ':count[6]++;break;
case '7 ':count[7]++;break;
case '8 ':count[8]++;break;
case '9 ':count[9]++;break;
}
p++;
}
}
for (i=0;i <=9;i++)
printf( "%d\n ",count[i]);
p=savep;//恢复p为申请内存时的状态
free(p);
getch();
return 0;
}


[解决办法]
1,数组要初始化
2,指针要分配内存,不然itoa之后字符存在那呢?

热点排行