如何输出这样一个数字串(在线等,以解决马上给分)
由键盘输入一个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




