鱼C论坛

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

倒着打印I am a student

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

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

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

最佳答案

查看完整内容

如果你要把a倒转赋值给b的话可以这么写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[20]; //定义字符数组
        int i,j;        
        for (i=sizeof(a)-2,j=0;i>=0;i--,j++)
                *(b+j)=*(a+i);        //将a[i]的值赋给b[j]        
        *(b+j)='\0';                //在b数组的有效字符之后加'\0',做为字符串结束标志
        printf("string a is:%s\n",a);
        printf("string b is:%s\n",b);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-22 22:02:59 | 显示全部楼层
我只是路过打酱油的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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倒着输出就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

就是不知道怎么倒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-22 22:46:26 | 显示全部楼层
#include <stdio.h>
int main()
{
        char a[]="I am a student.",b[20]; //定义字符数组
        int i;        
        for (i=0;*(a+i)!='\0';i++)

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

                printf("string a is:%s\n",a);//输出a数组中全部有效字符
                printf("string b is:");
                for (i=0;b[i]!='\0';i++)
                        printf("%c",b[i]);        //逐个输出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[arrLen]);
        }
        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[i+index]);
        }
}

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


:lol:自己动手也写了写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

好的,谢谢,能不能帮我解决另一个题目呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-22 22:50:57 | 显示全部楼层
elvo 发表于 2014-8-22 22:46
自己动手也写了写
#include <stdio.h>
int main()
{
        int a [4][3]={1,3,5,7,9,11,13,15,17,19,21,23};//定义两个二维数组,并将a初始化
        int*p;        //p是int*型指针变量
        for(p=a[0];p<a[0]+12;p++)//使p依然指向下一个元素
        {
                if((p-a[0])%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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 [3][4]={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[j]);
                printf("\n");
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

亲,这编译出来是错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-23 08:57:33 | 显示全部楼层
Sunny-smile 发表于 2014-8-23 08:50
亲,这编译出来是错的
    #include <stdio.h>
    int main()
    {
            int a [3][4]={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[j][i]);  ///////////
                    printf("\n");
            }
            return 0;
    }
    

sorry printf里面是a[j][i],,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 21:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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