鱼C论坛

 找回密码
 立即注册
查看: 3294|回复: 10

倒着打印I am a student

[复制链接]
发表于 2014-8-22 21:55:10 | 显示全部楼层 |阅读模式
1鱼币
本帖最后由 Sunny-smile 于 2014-8-23 09:12 编辑
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char a[]="I am a student.",b[20]; //定义字符数组
  5.         int i;        
  6.         for (i=0;*(a+i)!='\0';i++)

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

  10.                 printf("string a is:%s\n",a);//输出a数组中全部有效字符
  11.                 printf("string b is:");
  12.                 for (i=0;b[i]!='\0';i++)
  13.                         printf("%c",b[i]);        //逐个输出b数组中全部有效字符
  14.                 printf("\n");
  15.                 return 0;
  16. }
复制代码


最佳答案

查看完整内容

如果你要把a倒转赋值给b的话可以这么写
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-22 21:55:11 | 显示全部楼层
Sunny-smile 发表于 2014-8-22 22:34
就是不知道怎么倒

如果你要把a倒转赋值给b的话可以这么写
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char a[]="I am a student.",b[20]; //定义字符数组
  5.         int i,j;        
  6.         for (i=sizeof(a)-2,j=0;i>=0;i--,j++)
  7.                 *(b+j)=*(a+i);        //将a[i]的值赋给b[j]        
  8.         *(b+j)='\0';                //在b数组的有效字符之后加'\0',做为字符串结束标志
  9.         printf("string a is:%s\n",a);
  10.         printf("string b is:%s\n",b);
  11.         return 0;
  12. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-22 22:02:59 | 显示全部楼层
我只是路过打酱油的。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-22 22:29:05 | 显示全部楼层
本帖最后由 calton007 于 2014-8-22 22:30 编辑

楼主你这么写只能让a和b两个数组相同,并没有将数组a倒转
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char a[]="I am a student."; //定义字符数组
  5.         int i,len;      
  6.         len=sizeof(a); //求出数组长度(包括'\0')
  7.         for (i=len-2;i>=0;i--)
  8.               print("%c",*(a+i));
  9.         return 0;
  10. }
复制代码
直接将数组a倒着输出就可以了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

就是不知道怎么倒
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-22 22:46:26 | 显示全部楼层

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

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

  10.                 printf("string a is:%s\n",a);//输出a数组中全部有效字符
  11.                 printf("string b is:");
  12.                 for (i=0;b[i]!='\0';i++)
  13.                         printf("%c",b[i]);        //逐个输出b数组中全部有效字符
  14.                 printf("\n");
  15.                 return 0;
  16. }

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

  21. int main()
  22. {
  23.         const char arr[] = "I am a student.";
  24.         int arrLen = strlen(arr)-1;
  25.         for(; arrLen>=0; arrLen--)
  26.         {
  27.                 printf("%c",arr[arrLen]);
  28.         }
  29.         return 0;
  30. }

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

  34. void PrinfWord(char *arrWord,int index,int len)
  35. {
  36.         for(int i=0;i<len;i++)
  37.         {
  38.                 printf("%c",arrWord[i+index]);
  39.         }
  40. }

  41. int main()
  42. {
  43.         char arr[] = "I am a student.";
  44.         int arrLen = strlen(arr);
  45.         int idxLen=1;
  46.         while(arrLen-- >=0)
  47.         {
  48.                 if(arr[arrLen] == ' ')
  49.                 {
  50.                         PrinfWord(arr,arrLen+1,idxLen);
  51.                         idxLen=0;
  52.                 }
  53.                 else if(arrLen == 0)
  54.                 {
  55.                         PrinfWord(arr,arrLen,idxLen);
  56.                         idxLen=0;
  57.                 }
  58.                 idxLen++;
  59.         }
  60. }
  61. */
复制代码



:lol:自己动手也写了写
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-22 22:49:18 | 显示全部楼层
elvo 发表于 2014-8-22 22:46
自己动手也写了写

好的,谢谢,能不能帮我解决另一个题目呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-22 22:50:57 | 显示全部楼层
elvo 发表于 2014-8-22 22:46
自己动手也写了写
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int a [4][3]={1,3,5,7,9,11,13,15,17,19,21,23};//定义两个二维数组,并将a初始化
  5.         int*p;        //p是int*型指针变量
  6.         for(p=a[0];p<a[0]+12;p++)//使p依然指向下一个元素
  7.         {
  8.                 if((p-a[0])%3==0)//p移动4次后换行。if语句的作用是使输出4个数据后换行
  9.                         printf("\n");
  10.                 printf("%3d",*p);//输出P指向元素的值
  11.         }
  12.         printf("\n");

  13.         return 0;

  14. }
复制代码

要求这样打印出来1     9     17   
                         3    11    19
                         5    13     21
                         7     15     23
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-23 08:50:57 | 显示全部楼层

亲,这编译出来是错的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-23 08:57:33 | 显示全部楼层
Sunny-smile 发表于 2014-8-23 08:50
亲,这编译出来是错的
  1.     #include <stdio.h>
  2.     int main()
  3.     {
  4.             int a [3][4]={1,3,5,7,9,11,13,15,17,19,21,23};//定义两个二维数组,并将a初始化
  5.             for(int i=0;i<4;i++)
  6.             {
  7.                     for(int j=0;j<3;j++)
  8.                             printf("%5d",a[j][i]);  ///////////
  9.                     printf("\n");
  10.             }
  11.             return 0;
  12.     }
  13.    
复制代码


sorry printf里面是a[j][i],,,,
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-12 20:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表