| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 487 人关注过本帖
标题:字符串数组的一个问题
只看楼主 加入收藏
gmac
Rank: 2
等 级:论坛游民
帖 子:174
专家分:85
注 册:2010-9-28
结帖率:96.67%
收藏
已结贴  问题点数:15 回复次数:7 
字符串数组的一个问题
#include <stdio.h>
#include <string.h>
void fact_calc(int m,char str1[]);
int jiecheng (int s);

int main()
{  
    char str[20];
    int n,
        i;
    printf("Enter an integer between 0 ");
    printf("and 9 or -1 to quit => ");
    scanf("%d",&n);
    fact_calc(n,str);
    printf("%d",n);
    for(i=0;i<strlen(str);i++)
    printf("%c",str[i]);

    printf("  = %d\n",jiecheng(n));
   
         
   
}
void fact_calc(int m,char str1[])
{
    int l,
        n;
    char c[20];
    char chucun[20];
    char insert[]="X";
    int i;
    n=m+48;
    str1[0] = '!';
    str1[1] = '=' ;
    str1[2] = '\0';
for(l=0;l<m;l++,n--)
chucun[l]=n;
chucun[l+1]='\0';
for(i=1;i<=9;i+=2)
{
strcpy(c,&chucun[i]);
strcpy(&chucun[i],insert);
strcat(chucun,c);
}   
strcat(str1,chucun);
str1[strlen(str1)]='\0';
}
int jiecheng (int s)
{
   
if(s==0)
return 1;
else {
    int result = jiecheng(s-1)*s;
    return result;
}
}
输入6,输出"6!=6x5x4x3x2x1=720",我的代码为甚么只有在输入六的时候运行,别的数不行,并且=号前面一个问号?求解!
搜索更多相关主题的帖子: 字符 
2010-10-13 19:23
gmac
Rank: 2
等 级:论坛游民
帖 子:174
专家分:85
注 册:2010-9-28
收藏
得分:0 
#include <stdio.h>
#include <string.h>
void fact_calc(int m,char str1[]);
int jiecheng (int s);

int main()
{  
    char str[20];
    int n,
        i;
    printf("Enter an integer between 0 ");
    printf("and 9 or -1 to quit => ");
    scanf("%d",&n);
    fact_calc(n,str);
    printf("%d",n);
    str[strlen(str)]='\0';
    for(i=0;i<strlen(str);i++)
    printf("%c",str[i]);
    printf(" = %d\n",jiecheng(n));
   
}
void fact_calc(int m,char str1[])
{
    int l,
        n;
    char c[20];
    char chucun[20];
    char insert[]="X";
    int i;
    n=m+48;
    str1[0] = '!';
    str1[1] = '=' ;
    str1[2] = '\0';
for(l=0;l<m;l++,n--)
chucun[l]=n;
chucun[l+1]='\0';
for(i=1;i<=2*m-3;i+=2)
{
strcpy(c,&chucun[i]);
strcpy(&chucun[i],insert);
strcat(chucun,c);
}   
strcat(str1,chucun);

}
int jiecheng (int s)
{
   
if(s==0)
return 1;
else {
    int result = jiecheng(s-1)*s;
    return result;
}
}
自己修改了修改,只剩下=前面出现?这个问题了,请知道的帮帮忙
2010-10-13 19:43
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
 for(i=0;i<strlen(str)-1;i++)//长度减一
    printf("%c",str[i]);
    printf(" = %d\n",jiecheng(n));
    
相信这个是楼主粗心造成的!最后一个是字符串结束符!另外楼主的方法个人认为很巧妙

[ 本帖最后由 遮天云 于 2010-10-13 19:49 编辑 ]
2010-10-13 19:47
gmac
Rank: 2
等 级:论坛游民
帖 子:174
专家分:85
注 册:2010-9-28
收藏
得分:0 
回复 3楼 遮天云
不明白,解释下。。。

[ 本帖最后由 gmac 于 2010-10-13 21:46 编辑 ]
2010-10-13 19:53
gmac
Rank: 2
等 级:论坛游民
帖 子:174
专家分:85
注 册:2010-9-28
收藏
得分:0 
回复 3楼 遮天云
为什么加个=号也可以了?
2010-10-13 20:07
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:15 
    str1[2] = '\0';
for(l=0;l<m;l++,n--)
chucun[l]=n;
chucun[l]='\0';//问题就出在这~,把l+1,改成l就行了~,你仔细分析应该会懂的。(改了这处,那么那个<strlen(str)也不用改了
2010-10-14 11:23
gmac
Rank: 2
等 级:论坛游民
帖 子:174
专家分:85
注 册:2010-9-28
收藏
得分:0 
回复 6楼 遮天云
3 K U,以后还望多多指教!
2010-10-14 13:15
想变强
Rank: 1
等 级:新手上路
帖 子:12
专家分:9
注 册:2010-10-15
收藏
得分:0 
#include<stdio.h>
int main()
{
    int jiecheng (int s);
    int m,n;
    printf("Enter an integer between 0and 9 or -1 to quit => ");
    scanf("%d",&n);
    m=n;
    printf("%d!=",m);
    while(n-1)  printf("%dX",n--);
    printf("1=%d",jiecheng(m));
}
int jiecheng (int s)
{
    if(s==0)
    return 1;
    else
        {
            int result = jiecheng(s-1)*s;
            return result;
        }
}
觉得楼主的程序有点复杂。
2010-10-15 20:24
快速回复:字符串数组的一个问题
数据加载中...
 
   



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

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