| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4137 人关注过本帖
标题:字符数组:输入一个整数n和一个字符串,将字符串循环左移n个字符
只看楼主 加入收藏
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
结帖率:88.89%
收藏
已结贴  问题点数:50 回复次数:4 
字符数组:输入一个整数n和一个字符串,将字符串循环左移n个字符
#include<stdio.h>
main()
{
    char c[100],s[100];
    int i,j,k,n;

    printf("请输入字符串c\n");//请输入字符串
    gets(c);
    printf("输出未循环的字符串c\n");//统计字符串的个数
    for(i=0;c[i]!='\0';i++)
    printf("%c",c[i]);
    printf("\n请输入整数n=");//请输入整数n
    scanf("%d",&n);
    j=i;
    for(i=0;i<n;i++)//这有个大毛病
        for(k=0;k<n;k++)
            s[k]=c[i];
    for(i=n;i<j;i++)
        c[i-n]=c[i];
    printf("输出经过循环后的字符串\n");
    for(i=0;i<j-n;i++)
        printf("%c",c[i]);
    for(k=0;k<n;k++)
        printf("%c",s[k]);
}
大家帮我解决下
顺便用你自己的方法解决下这道题也算集思广益
搜索更多相关主题的帖子: 输入 字符 整数 
2009-11-30 15:27
tdy1006
Rank: 4
等 级:业余侠客
帖 子:173
专家分:240
注 册:2009-5-13
收藏
得分:16 
程序代码:
void main()
{
    char c[100],s[100];
    int i,j,k,n;
    
    printf("请输入字符串c\n");//请输入字符串
    gets(c);
    printf("输出未循环的字符串c\n");//统计字符串的个数
    for(i=0;c[i]!='\0';i++)
        printf("%c",c[i]);
    printf("\n请输入整数n=");//请输入整数n
    scanf("%d",&n);
    j=i;
    for(i=0;i<n;i++)//你那个双层循环用这很不合适
        s[i]=c[i];
    
    for(i=n;i<j;i++)
        c[i-n]=c[i];
    printf("输出经过循环后的字符串\n");
    for(i=0;i<j-n;i++)
        printf("%c",c[i]);
    for(k=0;k<n;k++)
        printf("%c",s[k]);
    printf("\n");
}
因为是双层循环,当i固定时,s[k]执行i次,最后s[k]
都是一个值
2009-11-30 16:31
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:0 
谢谢哈
期待解法呵呵·
2009-11-30 17:58
jcslt
Rank: 8Rank: 8
来 自:90-xx.com
等 级:蝙蝠侠
帖 子:251
专家分:975
注 册:2009-10-10
收藏
得分:16 
大家也来看看这个的毛病啊:
void main()
{int i,m,n;
char a[100],b[100];
printf("输入字符串a:\n");
gets(a);
m=strlen(a);
printf("输入n=");
scanf("%d ",&n);
for(i=0;i<n;i++)
b[i]=a[i];
for(i=n;i<m-1;i++)
a[i-n]=a[i];
for(i=0;i<n;i++)
a[m-1+i]=b[i];
for(i=0;i<m;i++)
printf("循环后的字符串 %s \n",a[i]);
}

[ 本帖最后由 jcslt 于 2009-12-1 08:10 编辑 ]

www.
2009-11-30 17:58
xy4919961
Rank: 5Rank: 5
等 级:职业侠客
帖 子:199
专家分:362
注 册:2009-10-24
收藏
得分:16 
void my(char *p,int n)
{   
   char *s=p,*s1;              /* s=p的首地址 */
   int j=0,i=0;
    while (*p!='\0')
      {
        j++;              /* 统计字符串个数 */
        p++;
      }
       p--;
     if(n > j)
        n-=j;
    s1=(char *)malloc(n);      /* 请求空间 */
  
    for (i=0;i < n;i++)         /* 进行移位 */
        s1[i]=s[j - n + i ];
      
    for (i=0;i<j - n;i++)
        s[j-i-1]=s[j - n - i - 1];
  
    for (i=0;i < n;i++)
        s[i] = s1[i];          /* 把移好的赋给p */
  
}   
main(void)
{   
    char a[10];
    int n;
    printf("string :");         /* 输入字符 */
     gets(a);
    printf("\nnubmer:");        /* 输入要移动的位数 */
     scanf("%d",&n);
     my(a,n);                 /* 调用函数 */
      puts(a);                 /*?输出 a */

     getch();
}

QQ群:96348241
2009-11-30 18:08
快速回复:字符数组:输入一个整数n和一个字符串,将字符串循环左移n个字符
数据加载中...
 
   



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

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