如果long s[20]变成char s[20]的话是可以的,注意结束加'\0'和数值不超界
其它。。。。
给新手出个题,加深一下印象吧。。。
----------------解决方案--------------------------------------------------------
楼主发贴后就一直沉默。
莫非。。。。。。。。。
----------------解决方案--------------------------------------------------------
LZ现身了`````
其实我的意思很简单``没什么希奇的啊```
就是`想在一个数组里面输入一些数``输入多少个数``又C来决定``
然后在把我输入的数输出``
scanf (" %l", &s[i]); 这里的错误已经发现```
但是不明白下面```我是这样想的``一个数组也是一个字符串吧```那么应该可以用字符串输出``
所以就用了printf ("%s",s);
但是好像不行```不知道是怎么了```
我下来改了下程序``
然后就没问题了``
这是我改的``
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int srsj (long *) ;
int main ( )
{
int i, c ;
long s[20] ;
c = srsj (s) ;
for ( i=0; i<c; i++ )
printf ("%ld ", s[i]);
getch();
return 0;
}
int srsj (long *s)
{
int i, c ;
printf ("请输入你想输入的数的个数: ");
scanf (" %d", &c ) ;
system ("cls") ;
printf ("请输入你想输入的数: ");
for ( i=0; i<c; i++ )
scanf (" %ld", &s[i]);
return c ;
}
看样子我对printf ("%s",s);这样的格式还不清楚```谁能给我讲解下吗?
谢谢`
----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main ( )
{
int i, c ;
long s[20] ;
printf ("请输入你想输入的数的个数: ");
scanf (" %d", &c ) ;
printf ("请输入你想输入的数:\n ");
for ( i=0; i<c; i++)
scanf (" %d", &s[i]);
for( i=0;i<c;i++)
printf ("%d",s[i]);
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
LZ现身了`````
其实我的意思很简单``没什么希奇的啊```
就是`想在一个数组里面输入一些数``输入多少个数``又C来决定``
然后在把我输入的数输出``
scanf (" %l", &s[i]); 这里的错误已经发现```
但是不明白下面```我是这样想的``一个数组也是一个字符串吧```那么应该可以用字符串输出``
所以就用了printf ("%s",s);
但是好像不行```不知道是怎么了```
我下来改了下程序``
然后就没问题了``
这是我改的``
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int srsj (long *) ;
int main ( )
{
int i, c ;
long s[20] ;
c = srsj (s) ;
for ( i=0; i<c; i++ )
printf ("%ld ", s[i]);
getch();
return 0;
}
int srsj (long *s)
{
int i, c ;
printf ("请输入你想输入的数的个数: ");
scanf (" %d", &c ) ;
system ("cls") ;
printf ("请输入你想输入的数: ");
for ( i=0; i<c; i++ )
scanf (" %ld", &s[i]);
return c ;
}
看样子我对printf ("%s",s);这样的格式还不清楚```谁能给我讲解下吗?
谢谢`
----------------解决方案--------------------------------------------------------
"%s"是按字节和ASCII规则一个一个输出的,而int的长度为两个字节,如数值2表示为 0x00 0x02而字符型表示为0x02
看一下下面的程序吧
#include <stdio.h>
main()
{ char a[]={'1','2','3','4','\0'};
int b[]={'1','2','3','4','\0'};
printf("a is %s\nb is %s",a,b);
getchar();
}
输出结果为:
B数组之所以只输出一个"1"是因为将其高位字0x00节当成'\0'了即结束了
明白???
----------------解决方案--------------------------------------------------------
for ( i=0; i<c; i++)
scanf (" %ld", &s[i]);
printf ("%s",s);
不执行是因为输入时格式d忘了写
至于printf ("%s",s);应该是3楼说的s是数组的首地址
----------------解决方案--------------------------------------------------------
因为你后面是单个输出所以用%s就是一片乱码,把c改为char c[N],最后输出行吧。单个输出并不能作为字符串输出。
----------------解决方案--------------------------------------------------------
16楼``问一下```
你说``"B数组之所以只输出一个"1"是因为将其高位字0x00节当成'\0'了即结束了"
这么说的话在INT里,1应该是0x00 0x01对吧`
那么程序把最高的0X00当成了'\0'``那么应该什么都不输出才对吧``怎么还回输出1呢?
----------------解决方案--------------------------------------------------------
哈哈 ..
是这样的,一个INT由两个字节组成,即高位字节和低位字节,我们的写法:高位在前,低位在后如 00 02
而机器中读取数值的时候是由低到高依次读取N个字节的,所以先读02再读00
----------------解决方案--------------------------------------------------------