| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1067 人关注过本帖
标题:关于数组的题目,我觉得我的思路没错,但是肯定是莫个方面我没理解透,所以 ...
只看楼主 加入收藏
AntorDragon
Rank: 2
等 级:论坛游民
帖 子:45
专家分:12
注 册:2013-3-3
结帖率:86.67%
收藏
已结贴  问题点数:20 回复次数:14 
关于数组的题目,我觉得我的思路没错,但是肯定是莫个方面我没理解透,所以编不出,求大神帮助!,
嗯,是想编一个可以将一个字符串旋转输出,切每次输出一个的程序。如:
  fine  inef   nefi   efin
我的代码是
#include<stdio.h>
void main()
{
    char str[20],temp[20];
    int i=0,n=0,k,j;
    printf("请输入一串字符,在位一下\n");
    gets(str);
    while(str[i]!='\0')
      {
         n++;
         i++;
      }
    for(;i<n;i++)
      {
          temp[0]=str[0];
          for(k=0;k<n-1;k++)
          {   
            str[k]=str[k+1];
            
          }
          str[n-1]=temp[0];
          for(j=0;j<n;j++)
          {
              printf("%s\t",str[j]);
          }
        
     }
   

}

求指教,谢谢!
搜索更多相关主题的帖子: 字符串 include 
2013-06-02 09:57
hsjjgm
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:106
专家分:189
注 册:2013-4-27
收藏
得分:10 
同求,偶也搞不起来
#include<stdio.h>

int length(char str[]);
void rateArry(char str[], int n);

void main()
{
    char str[20] = {0};
    int len;
    printf("请输入一串字符,在位一下\n");
    gets(str);
    len = length(str);
    rateArry(str,len);   
}

//求长度
int length(char str[])
{
    int i = 0,n = 0;
    while(str[i]!='\0')
    {
         n++;
         i++;
    }

    return n;
}

//旋转
void rateArry(char str[], int n)
{
    char temp[20]={0};
    char *p = str,*q = temp;
    int i,j = 0;
    for(i = 0; i < n; i++)
    {
        //确定起点
        p = &str[i];
        //旋转
        while(*p != '\0')
        {
            *q = *p;
            p++;
            q++;
            j++;
        }

        for(; j < n; j++)
        {
            p = str;
            *q = *p;
            p++;
            q++;
        }
        *q = '\0';

        for(i = n; i > 0; i--)
        {
            printf("%c", *(q-n));
        }
    }
}
2013-06-02 11:26
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
不明白旋转输出是什麽意思

授人以渔,不授人以鱼。
2013-06-02 14:12
AntorDragon
Rank: 2
等 级:论坛游民
帖 子:45
专家分:12
注 册:2013-3-3
收藏
得分:0 
回复 3楼 TonyDeng
嗯,是想编一个可以将一个字符串旋转输出,切每次输出一个的程序。如:
  fine  inef   nefi   efin

就是说你输入fine 然后依次输出 inef nefi efin

那年京城大雪,或是天下大雪,我一骑绝尘
2013-06-02 14:38
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那很简单的,你的思路没整理好而已,用文字把实现原理描述一遍,然后按照写出的要求用代码实现就可以了。

授人以渔,不授人以鱼。
2013-06-02 14:42
AntorDragon
Rank: 2
等 级:论坛游民
帖 子:45
专家分:12
注 册:2013-3-3
收藏
得分:0 
回复 5楼 TonyDeng
唉,关键是这个程序要是哪里有问题显示出来就好了,但是它只执行一个输入的gets命令,就直接按任意键结束了,我都不知道该怎么办!求指教啊!!!!!!111111

那年京城大雪,或是天下大雪,我一骑绝尘
2013-06-02 14:58
AntorDragon
Rank: 2
等 级:论坛游民
帖 子:45
专家分:12
注 册:2013-3-3
收藏
得分:0 
回复 4楼 AntorDragon
哦,对的,我的想法一开始是对的,只是刚开始时,我给i就赋了常量0.到后面for循环时,我就把这个i赋初值省略掉了,所以程序运行不出来。我加了个初值,程序就出来了。

那年京城大雪,或是天下大雪,我一骑绝尘
2013-06-02 15:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
程序代码:
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <conio.h>

const char* str_turn(char* target_str, const char* source_str, unsigned int start);

void main(void)
{
    char source_str[81], str[81];

    scanf_s("%80s", source_str, _countof(source_str));
    putchar('\n');
    for (unsigned int index = 0; index < strlen(source_str); ++index)
    {
        printf_s("%s\n", str_turn(str, source_str, index));
    }
    _getch();
}

const char* str_turn(char* target_str, const char* source_str, unsigned int start)
{
    unsigned int index = start;
    unsigned int i = 0;

    while (source_str[index] != '\0')
    {
        target_str[i++] = source_str[index++];
    }
    index = 0;
    while (index < start)
    {
        target_str[i++] = source_str[index++];
    }
    target_str[i] = '\0';

    return target_str;
}



[ 本帖最后由 TonyDeng 于 2013-6-2 15:44 编辑 ]

授人以渔,不授人以鱼。
2013-06-02 15:26
bccn新
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:57
专家分:144
注 册:2013-5-10
收藏
得分:0 
#include<stdio.h>
#include<string.h>
void xuan(char s[])
{int i;char c;
  c=s[0];
  for(i=1;i<strlen(s);i++)
  s[i-1]=s[i];
  s[strlen(s)-1]=c;
}
void main()
{char s[20];int i;
  printf("请输入字符串:");
  gets(s);
  puts(s);
  for(i=1;i<=strlen(s)-1;i++)
  {xuan(s);
    puts(s);
  }
}
看看这个吧。
2013-06-02 19:30
dengjiajun
Rank: 2
来 自:广州
等 级:论坛游民
帖 子:13
专家分:45
注 册:2013-5-2
收藏
得分:0 
#include <stdio.h>
#include <string.h>
void main()
{
    char str[100];
    char tmp[100];
    int len,i,j;

if(gets(str)!=NULL)
    len=strlen(str);
else
    printf("wrong\n");

for(j=0;j<len;j++)
  tmp[j]=str[j];


for(j=0;j<len;j++)
{


   for(i=0;i<len-1;i++)
   {
      
       str[i]=str[i+1];
   }
   
   str[len-1]=tmp[j];
   str[len]='\0';
   puts(str);
}
2013-06-02 19:58
快速回复:关于数组的题目,我觉得我的思路没错,但是肯定是莫个方面我没理解透, ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018838 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved