Sunny-smile 发表于 2014-8-22 21:55:10

倒着打印I am a student

本帖最后由 Sunny-smile 于 2014-8-23 09:12 编辑

#include <stdio.h>
int main()
{
      char a[]="I am a student.",b; //定义字符数组
      int i;      
      for (i=0;*(a+i)!='\0';i++)

                *(b+i)=*(a+i);      //将a的值赋给b
      
      *(b+i)='\0';                //在b数组的有效字符之后加'\0',做为字符串结束标志

                printf("string a is:%s\n",a);//输出a数组中全部有效字符
                printf("string b is:");
                for (i=0;b!='\0';i++)
                        printf("%c",b);      //逐个输出b数组中全部有效字符
                printf("\n");
                return 0;
}

calton007 发表于 2014-8-22 21:55:11

Sunny-smile 发表于 2014-8-22 22:34
就是不知道怎么倒

如果你要把a倒转赋值给b的话可以这么写
#include <stdio.h>
int main()
{
      char a[]="I am a student.",b; //定义字符数组
      int i,j;      
      for (i=sizeof(a)-2,j=0;i>=0;i--,j++)
                *(b+j)=*(a+i);      //将a的值赋给b      
      *(b+j)='\0';                //在b数组的有效字符之后加'\0',做为字符串结束标志
      printf("string a is:%s\n",a);
      printf("string b is:%s\n",b);
      return 0;
}

破ID 发表于 2014-8-22 22:02:59

我只是路过打酱油的。

calton007 发表于 2014-8-22 22:29:05

本帖最后由 calton007 于 2014-8-22 22:30 编辑

楼主你这么写只能让a和b两个数组相同,并没有将数组a倒转
#include <stdio.h>
int main()
{
      char a[]="I am a student."; //定义字符数组
      int i,len;      
      len=sizeof(a); //求出数组长度(包括'\0')
      for (i=len-2;i>=0;i--)
            print("%c",*(a+i));
      return 0;
}直接将数组a倒着输出就可以了

Sunny-smile 发表于 2014-8-22 22:34:11

calton007 发表于 2014-8-22 22:29
楼主你这么写只能让a和b两个数组相同,并没有将数组a倒转
直接将数组a倒着输出就可以了

就是不知道怎么倒

elvo 发表于 2014-8-22 22:46:26


#include <stdio.h>
int main()
{
      char a[]="I am a student.",b; //定义字符数组
      int i;      
      for (i=0;*(a+i)!='\0';i++)

                *(b+14-i)=*(a+i);      //将a的值赋给b
      
      *(b+15)='\0';                //在b数组的有效字符之后加'\0',做为字符串结束标志

                printf("string a is:%s\n",a);//输出a数组中全部有效字符
                printf("string b is:");
                for (i=0;b!='\0';i++)
                        printf("%c",b);      //逐个输出b数组中全部有效字符
                printf("\n");
                return 0;
}

/*
//也可以这样实现上面的程序
#include <stdio.h>
#include <string.h>

int main()
{
        const char arr[] = "I am a student.";
        int arrLen = strlen(arr)-1;
        for(; arrLen>=0; arrLen--)
        {
                printf("%c",arr);
        }
        return 0;
}

//也许你是想单词不变
#include <stdio.h>
#include <string.h>

void PrinfWord(char *arrWord,int index,int len)
{
        for(int i=0;i<len;i++)
        {
                printf("%c",arrWord);
        }
}

int main()
{
        char arr[] = "I am a student.";
        int arrLen = strlen(arr);
        int idxLen=1;
        while(arrLen-- >=0)
        {
                if(arr == ' ')
                {
                        PrinfWord(arr,arrLen+1,idxLen);
                        idxLen=0;
                }
                else if(arrLen == 0)
                {
                        PrinfWord(arr,arrLen,idxLen);
                        idxLen=0;
                }
                idxLen++;
        }
}
*/



:lol:自己动手也写了写

Sunny-smile 发表于 2014-8-22 22:49:18

elvo 发表于 2014-8-22 22:46
自己动手也写了写

好的,谢谢,能不能帮我解决另一个题目呢?

Sunny-smile 发表于 2014-8-22 22:50:57

elvo 发表于 2014-8-22 22:46
自己动手也写了写

#include <stdio.h>
int main()
{
      int a ={1,3,5,7,9,11,13,15,17,19,21,23};//定义两个二维数组,并将a初始化
      int*p;      //p是int*型指针变量
      for(p=a;p<a+12;p++)//使p依然指向下一个元素
      {
                if((p-a)%3==0)//p移动4次后换行。if语句的作用是使输出4个数据后换行
                        printf("\n");
                printf("%3d",*p);//输出P指向元素的值
      }
      printf("\n");

      return 0;

}

要求这样打印出来1   9   17   
                         3    11    19
                         5    13   21
                         7   15   23

elvo 发表于 2014-8-22 23:12:52

Sunny-smile 发表于 2014-8-22 22:50
要求这样打印出来1   9   17   
                         3    11    19
                     ...
#include <stdio.h>
int main()
{
      int a ={1,3,5,7,9,11,13,15,17,19,21,23};//定义两个二维数组,并将a初始化
      for(int i=0;i<4;i++)
      {
                for(int j=0;j<3;j++)
                        printf("%5d",a);
                printf("\n");
      }
      return 0;
}

Sunny-smile 发表于 2014-8-23 08:50:57

elvo 发表于 2014-8-22 23:12


亲,这编译出来是错的

elvo 发表于 2014-8-23 08:57:33

Sunny-smile 发表于 2014-8-23 08:50
亲,这编译出来是错的

    #include <stdio.h>
    int main()
    {
            int a ={1,3,5,7,9,11,13,15,17,19,21,23};//定义两个二维数组,并将a初始化
            for(int i=0;i<4;i++)
            {
                  for(int j=0;j<3;j++)
                            printf("%5d",a);///////////
                  printf("\n");
            }
            return 0;
    }
   

sorry printf里面是a,,,,
页: [1]
查看完整版本: 倒着打印I am a student