CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

如何输出这样一个数字串(在线等,以解决马上给分)

楼主absolutelyzero()2004-12-02 20:42:48 在 C/C++ / C语言 提问

由键盘输入一个n,然后输入这样一个数字串  
  1234567891011121314151617181920212223242526272829…一直到n  
  多谢帮忙 问题点数:20、回复次数:25Top

1 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2004-12-02 20:52:19 得分 0

//   hehe.cpp   :   コンソール   アプリケーション用のエントリ   ポイントの定義  
  //  
   
  #include   <stdlib.h>  
  #include   <stdio.h>  
  int   main(int   argc,   char*   argv[])  
  {  
  int   n=0;  
  int   i=0;  
  scanf("%d",&n);  
  for(i=1;i<=n;++i)  
  {  
  printf("%d",i);  
  }  
  printf("\n");  
  return   0;  
  }  
   
  Top

2 楼absolutelyzero()回复于 2004-12-02 20:53:26 得分 0

你理解错啦我的意思是用字符串输出Top

3 楼carylin(林石)回复于 2004-12-02 20:55:55 得分 0

#include   <iostream>  
  using   namespace   std;  
   
  int   main()  
  {  
            unsigned   int   n;  
            cin   >>   n;  
            for   (int   i   =   0;   i   <   n;   ++i)   {cout   <<   i;}  
             
            return   0;  
  }Top

4 楼absolutelyzero()回复于 2004-12-02 20:57:11 得分 0

我的意思是将这一串东西放在字符数组里Top

5 楼carylin(林石)回复于 2004-12-02 21:02:42 得分 0

#include   <iostream>  
  #include   <string>  
  using   namespace   std;  
   
  int   main()  
  {  
            unsigned   int   n;  
            cin   >>   n;  
             
            string   str;  
            for   (int   i   =   0;   i   <   n;   ++i)    
            {  
                      char   buf[100];  
                      str   +=   itoa(i,   buf,   10);  
            }  
            cout   <<   str   <<   endl;  
             
            system("pause");  
            return   0;  
  }Top

6 楼Fashionxu()回复于 2004-12-02 21:08:41 得分 0

你还是说明白点,你所说的那个字符串,是“输入”还是“输出”?Top

7 楼absolutelyzero()回复于 2004-12-02 21:12:16 得分 0

可以用c来做吗?Top

8 楼tangtang0831(努力学习,加油加油)回复于 2004-12-02 21:12:25 得分 0

int   n;  
  scanf("%d",n);  
  char   *   cOutPut=NULL;  
  cOutPut=(char*)malloc(n);  
  for(unsigned   i=0;i<n,i++)  
          cOutPut[i]=i;  
  printf("%s",cOutPut);  
  可能要把i转换成字符串才可以,我忘了用什么函数了;Top

9 楼Michael_555(Nothing)回复于 2004-12-02 21:13:42 得分 20

#include   <stdio.h>  
  #include   <stdlib.h>  
   
   
  int   main()  
  {  
          char   *str   =   NULL;  
          int   n;  
   
          printf(   "Input   the   sum:"   );    
          scanf(   "%d",   n   );  
           
          str   =   (   char*   )malloc(   n+1   );  
           
          memset(   str,   0,   n+1   );  
           
          printf("Input   Your   Number   String:");  
          scanf(   "%s",   str   );  
           
          printf(   "You   inputed   Number   String   is:%s\n",   str   );  
               
          if(str!=NULL)  
          {  
                  free(str);  
                  str   =   NULL;  
          }      
          system("pause");  
          return   0;  
  }Top

10 楼LSYLSY(李思)回复于 2004-12-02 21:13:45 得分 0

void   main()  
  {  
  unsigned   int   n;  
  char   str[1000];  
  char   *p=str;  
  cin>>n;  
  for   (int   i=0;i<n;i++)  
  {  
      if   (i>9)   {kk=i/10,*p++=kk;}  
      *p++=i%10;  
  }  
  }Top

11 楼raulqlj(漠然面对漠然的世界!)回复于 2004-12-02 21:14:37 得分 0

真挑剔,  
  Top

12 楼Michael_555(Nothing)回复于 2004-12-02 21:15:10 得分 0

我的在DEV-C++上调试过了。Top

13 楼LSYLSY(李思)回复于 2004-12-02 21:15:59 得分 0

上面有个#include   "iostream.h"忘记了~~Top

14 楼absolutelyzero()回复于 2004-12-02 21:17:36 得分 0

多谢啦!Top

15 楼pig_liang(朱)回复于 2004-12-02 21:20:18 得分 0

最后一段代码是谁写的,好懒啊Top

16 楼pcboyxhy(-273.15℃)回复于 2004-12-02 21:20:53 得分 0

#include   <iostream.h>  
   
  int   main(int   argc,   char   *argv[])  
  {  
      int   n,   k=0;  
      char   out[500],   c;  
      cin>>n;  
      memset(out,   0,   500);  
      for(int   j=n,   p=n;   j>0;   j--,   p=j)  
      while(p){out[k++]=(p%10)+48;   p/=10;}  
      for(int   i=0,   p=k/2;   i<=p;   i++){   c=out[i];   out[i]=out[k-i-1];   out[k-i-1]=c;}  
      cout<<endl<<out;            
      return   0;  
  }Top

17 楼Michael_555(Nothing)回复于 2004-12-02 21:21:31 得分 0

不好意思,修一修。加入越界保护。  
   
  #include   <stdio.h>  
  #include   <stdlib.h>  
   
   
  int   main()  
  {  
          char   *str   =   NULL;  
          int   n;  
   
          printf(   "Input   the   sum:"   );    
          scanf(   "%d",   &n   );  
           
          str   =   (   char*   )malloc(   n+1   );  
           
          memset(   str,   0,   n+1   );  
           
          printf("Input   Your   Number   String:");  
          scanf(   "%s",   str   );  
           
          /*   越界保护   */  
          if(str[n]   !=   '\0')  
          {  
              str[n]='\0';  
          }  
           
          printf(   "You   inputed   Number   String   is:%s\n",   str   );  
               
          if(str!=NULL)  
          {  
                  free(str);  
                  str   =   NULL;  
          }      
          system("pause");  
          return   0;  
  }Top

18 楼pig_liang(朱)回复于 2004-12-02 21:25:03 得分 0

错了,不好意思,刚才我的屏幕上还没有显示完,我表示歉意Top

19 楼pcboyxhy(-273.15℃)回复于 2004-12-02 21:28:47 得分 0

Michael_555(Stack)   (   )   信誉:100    
  你的代码只能输出一个数。  
  比如n=100;  
  你只输出100,  
  题目要求好像是输出123456789101112.......9898100Top

20 楼pcboyxhy(-273.15℃)回复于 2004-12-02 21:31:56 得分 0

LSYLSY(李思)   ,  
  你的代码也是错的。  
  Top

21 楼Michael_555(Nothing)回复于 2004-12-02 21:41:05 得分 0

pcboyxhy(-273.15℃)  
   
  Michael_555(Stack)   (   )   信誉:100    
  你的代码只能输出一个数。  
  比如n=100;  
  你只输出100,  
  题目要求好像是输出123456789101112.......9898100  
  ======================================================  
  你试试我的代码就知道了。Top

22 楼knocker(小克)回复于 2004-12-02 22:04:24 得分 0

#include   <stdio.h>  
  #include   <string.h>  
  #include   <alloc.h>  
  #include   <math.h>    
  int   main(void)  
  {  
      char   *str,*str1;  
      int   i,n;  
      int   t=0;  
      int   s=0;  
   
      scanf("%d",&n);  
   
      i=n;  
      while(i)t++,i/=10;  
   
      str1   =   calloc((t+1),   sizeof(char));  
   
      i=n;  
   
      while(t)  
      {  
          s+=(i-((int)pow10(t-1)-1))*t;  
          i=(int)pow10(t-1)-1;  
          t--;  
      }  
   
      str   =   calloc((s+1),   sizeof(char));  
   
      for(i=1;i<=n;i++)  
      {  
              itoa(i,str1,10);  
              strcat(str,str1);  
      }  
   
      printf("\n\n%s",str);  
   
   
  return   0;  
  }Top

23 楼LSYLSY(李思)回复于 2004-12-02 22:26:22 得分 0

假设   数字121   ,其中1,2,1分别算一个字符的话,  
  那就很麻烦了。如果一个数字比如12345,那么1,2,3,4,5分别占用一个字符。  
  我把自己刚才写的稍微改一下(的确有错误)  
  下面的程序只满足i<100的情况。  
  #include   "iostream.h"  
   
  void   main()  
  {  
  int   n;  
  char   str[1000];  
   
  int   c,k=0;  
  char   *p=str;  
   
  cin>>n;  
   
  for   (int   i=1;i<=n;i++)  
  {  
      if   (i>9)   {c=i/10,*p++=c;k++;}  
      *p++=i%10;k++;  
  }  
  *p='\0';  
   
  for   (int   j=0;j<k;j++)  
  {        
  cout<<int(str[j]);  
  }  
  }Top

24 楼pcboyxhy(-273.15℃)回复于 2004-12-03 09:56:34 得分 0

Michael_555(Stack)   (   )   信誉:100    
  你试试我的代码就知道了。  
       
     
  我试过了,  
  比如:输入   100     20  
  你的输出就是   20  
  而不是   1234567891011121314151617181920.  
   
  你拿我的代码测试一下就知道了Top

25 楼pcboyxhy(-273.15℃)回复于 2004-12-03 10:00:13 得分 0

输入100,  
  应该输出:12345678910111213141516171819202122232425262728293031323334353637383940414243444  
  54647484950515235545556575859606162636465666768697071727374757677787980818283848  
  58687888990919293949596979899100Top

相关问题

  • 请问怎样分割数字串?
  • 连连看^_^数字串连统计!
  • C++ 返回长数字串的问题
  • 请教诸位:如何生成指定长度的数字串?
  • Foxpro简单问题:替换字符(数字)串中前导“0”
  • 怎么把一个CString类的数字串转换成数字
  • 如何判断是字符串还是数字串?
  • MySQL中如何实现数字串的连接?
  • 怎么批量获取16位的数字串!
  • 怎样获取链接页面的url以及参数字串?

关键词

  • 代码
  • null
  • 输出
  • scanf
  • str
  • cin
  • memset
  • printf
  • main
  • inputed

得分解答快速导航

  • 帖主:absolutelyzero
  • Michael_555

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo