char *p;变量p指向一个字符串,不使用其它变量以及有返回值的函数,仅用p,求出p指向的字符串的字节数!今天碰见这个问题,觉得有点意思,发过来让大家把玩把玩!下面是我做的控制台程序,关键代码都已去掉!你填上你自己的吧!#include <iostream>
using namespace std;void main()
{
while(1)
{
char *p=new char[300];//注意此处是300,你的代码要能够支持300个字符的字符串;
cin>>p;  //此处填上你的代码!
delete [] p;}
return ;
}

解决方案 »

  1.   


               p[0]=1;
       while (*p++!='\0')
       {
       p[0]=p[0]+1;
       }
      // p[0]=p[0]+1;
       printf("num:%d",p[0]);呵呵
      

  2.   

    我的!#include <iostream>
    using namespace std;void main()
    {
    while(1)
    {
    char *p=new char[300];
    cin>>p;
    if (p==NULL)
    {
    cout<<"the count is 0"<<endl;
    }
    else 
    if (*p==NULL)
    {
    cout<<"the count is 1"<<endl;
    }
    else
    if (*(p+1)==NULL)
    {
    cout<<"the count is 2"<<endl;
    }
    else
    {
    *((short *)p)=2;
    p=p+2;

    while(true)
    {
    if (*p==NULL)
    {
    cout<<*((short *)(p-2))+1<<endl;
    p=p-*((short *)(p-2));
    break;
    } p=p+1;
    if (*p!=NULL)
    {
    *((short *)(p-1))=*((short *)(p-3))+2;
    p=p+1;
    }
    else
    {
    *((short *)(p-3))+=1;
    cout<<*((short *)(p-3))+1<<endl;
    p=p-*((short *)(p-3));
    break;
    }
    }
    }delete [] p;

    }
    return ;
    }
      

  3.   

    刚刚写了个:#include <iostream>
    using namespace std;int main()
    {
    while(1)
    {
        char *p=new char[300];//注意此处是300,你的代码要能够支持300个字符的字符串;
        cin>>p;

       //此处填上你的代码!
    if(*p == '\0')
    {
    cout<<"字符串长度:0"<<endl;
    }
    else if(*(p+1) == '\0')
    {
    cout<<"字符串长度:1"<<endl;
    }
    else
    {
    *((short *)p) = 2;
    p += 2;
    while(*p != '\0' && *(p+1) != '\0')
    {
    *((short *)p) = *((short *)p - 1) + 2;
    p += 2;
    }
    if(*p == '\0')
    {
    cout<<"字符串长度:"<<*((short *)p-1)<<endl;
    }
    else
    {
    cout<<"字符串长度:"<<*((short *)p-1)+1<<endl;
    }
    }  

        delete [] p;

    }
    return 0;
    }
      

  4.   


    原题地址:http://www.sqlite.com.cn/bbs/topicdisp.asp?tid=110
      几个很有挑战性的编程题偶然看见的真的很不错!大家看看!过几天我给答案! 
    (以下题目皆不得始用已有库函数) 1. 不另申请变量,交换两个整型变量,要求两种方法。 2. 不另申请变量,统计指定字符串的长度。 3. 不用if、三目运算符以及其它条件判断语句,写一个求两个数中较大值的函数。
      

  5.   

    服了。那人没用数组。在C或C++中,指针和数组是一回事。
    因为编译器就是把数组当指针来看和对待的。char *p = new char[300];那么 p[0] 和 *p 完全一样。都是第一个元素的值。p[1] 和 *(p+1)就是第二个元素的值知道了这个差别。那你的问题应该很容易。你的程序太长没时间看。(看来你是做了功课的,不该批评你。呵呵)上面那个人答案有问题。他 用p[0]来放计算结果,把人家本来放字符串的地方给冲掉了一个位置。
      

  6.   

    再给你出个题目研究吧,用一个指针实现二维数组。
    void* pArray;
      

  7.   

    我目前认为,在内存中二维数组和一维数组没有什么区别,都是按顺序一个一个排列的,用一个指针也可以访问任何维任何位置的元素!数组a[2][3],如果pArray=a,那么pArray[6]==a[1][2]为真。
      

  8.   


    1. 不另申请变量,交换两个整型变量,要求两种方法。  x^=y;
    y^=x;
    x^=y;x+=y;
    y=x-y;
    x-=y;
    2. 不另申请变量,统计指定字符串的长度。  
    数组那个不对,指针已经移位了,p[0]不是原数组头指针
    3. 不用if、三目运算符以及其它条件判断语句,写一个求两个数中较大值的函数。
    (a+b+fabs(a-b))/2
      

  9.   

    有  delete [] p; 这句就是一个用c/c++不可能完成的任务