首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包

编程及测试技术讨论团队 [加入]

JAVA/C#讨论,本改组重点研究JAVA技术,望高手能加入本群组,一起研究。也欢迎有其它方面特长的人员加入。
一道"简单"的C语言问题
发表时间:2007-05-10 11:29:57   楼主:tedtse

这是一个很简单的程序:

#include<stdio.h>
main()
{ int t;
  char a[5];
  scanf("%s,%d",a,&t);
  printf("%d",&t);
}

运行后(我用的是VC++ 6.0),键入aaaaaa,4 或是 aaaaaa 空格 4  或是 aaaaaa tab 4 所得的结果都不是4

这个句子可能有歧义,但是我想知道是不是我的输入方法不对,有办法能让它的答案是4吗?





 
发表时间:2007-05-10 12:24:25 1 楼:wearebugs

#include<stdio.h>
main()
{ int t;
  char a[5];
  scanf("%s%d",a,&t);
  printf("%d",t);
}

这个可不可以啊,输入:aaaaa 4

输出:4

 

发表时间:2007-05-16 22:25:58 2 楼:icepure
输入aaaa,4
发表时间:2007-05-18 20:17:09 3 楼:xyfs0712

为什么

int t;

printf("%d",t);

 

 输出的就是 37814176

发表时间:2007-05-19 01:02:31 4 楼:zhoudawei

#include <stdio.h>

int main(void)
{
 int t=1;
 char a[5];

 scanf("%s %d",a,&t);
 printf("%d\n",t);
}
输入aaaa enter  4

输出4

发表时间:2007-05-19 12:25:19 5 楼:JMS520

 #include<stdio.h>
main()
{ int t;
  char a[5];
  scanf("%s,%d",&a,&t);
  printf("%d",t);
}

输入aaaa 4

输出4

发表时间:2007-05-19 18:50:23 6 楼:Homer_rain
4楼和五楼的结果都是不对的~~
发表时间:2007-05-20 09:21:23 7 楼:huangfeng080

#include<stdio.h>

main()
{ int t = 0;
  char a[5];
  scanf("%s %d", &a, &t);
  printf("%s\n", a);
 
  printf("%d\n",t);
}

 

输出一下 a 就什么都明白拉, 自己多试试嘛

发表时间:2007-05-20 19:10:33 8 楼:limeir

对树组不能直接用字符串附值,除非是初始化的时候

发表时间:2007-05-20 19:12:54 9 楼:limeir
还有就是你的数组是a[5],aaaaaa,6个a就更不对了
发表时间:2007-05-20 19:37:15 10 楼:toxxj

#include<stdio.h>
main()
{ int t;
  char a[5];

  clrscr();
  scanf("%s%d",a,&t); 

/*输入1个a或多于5个的字符,中间必须用空格隔开,  如  aaaaa 4 或aaaaaa 4,a 4,建议看下谭浩强的C程序设计第二版,很详细的*/
  printf("t=%d",t);/*&t,"&"号是表示内存的地址,&t指向变量t的内存地址号*/
}

 

aaaaa  4 

 

t=4

 

 

发表时间:2007-05-24 09:07:03 11 楼:xzyxxzj

#include<stdio.h>

main()

{int t;

 char a[5];

scanf("%s",a);

scanf("%d",&t);

printf("%d",t);

}

输入:aaaaaa 4

结果:4

发表时间:2007-05-24 16:55:31 12 楼:chenlanmin

#include <stdio.h>

main()

{

char* inputchar;

char  mychar[5];

int  myint;

scanf("%s",inputchar);

ssanf(inputchar,"%s-%d",mychar,myint);

printf("%s\n",mychar);

printf("%d\n",myint);

}

 通过输入字符串的分离得到字符和数字,当中用-就可以实现了.

 

发表时间:2007-06-08 20:11:31 13 楼:moonxue

在输入的是字符的时候,空格,回车也算是一个字符计算

发表时间:2007-06-10 14:44:19 14 楼:great_ghoul
非常基础的错误呀。
发表时间:2007-06-10 23:26:15 15 楼:study_hack

#include<stdio.h>
main()
{ int t;
  char a[5];
  scanf("%s,%d",a,&t);这里有问题这里是将字符放入T的地址中,而在C中变量地址并不是固定的
  printf("%d",&t);这里读取的是T变量的新地址,而前面的赋值并没有真实的赋给T

}

发表时间:2007-06-12 09:23:57 16 楼:liuxingbin

#include<stdio.h>

void main()
{
 int t;

 char a[5];

 scanf("%s",a);

 scanf("%d",&t);

 printf("%d",t);

}

 

这样可以输出真确的,原来就是输出的是地址

发表时间:2007-06-13 14:52:21 17 楼:zhongyunde
8 楼说的有道理
发表时间:2007-06-14 12:24:17 18 楼:xiaoxiong1212

10楼说的比较好啊   你现在得看看基础的知识啊

 

发表时间:2007-06-14 12:30:01 19 楼:hanqianmu

你用,号隔开输入的时候要对应的隔开!

发表时间:2007-06-27 17:20:54 20 楼:shui106
差点让你给蒙住,^_^
发表时间:2007-06-27 21:51:50 21 楼:jinjiangdongfang
怎么做测试还有这样的基础题目吗?
发表时间:2007-06-28 11:57:38 22 楼:duxiaoxiang
大基础了,基本知识不到位~`
发表时间:2007-06-28 12:11:09 23 楼:yaoruoxu_HOH
来晚拉,本来还想说说的,都被你们说完了
发表时间:2007-07-01 08:35:08 24 楼:axie972700

这是一个很简单的程序:

#include<stdio.h>
main()
{ int t;
  char a[5];
  scanf("%s,%d",a,&t);
  printf("%d",&t);
}

 你这道题首先在语句scanf("%s,%d",a,&t);的%s后加一个空格然后再按格式输入,因为scanf在输入一个字符串时是一空格作为输入的结束标志;

其次,你是要输出t的值,那么你就不该再输出语句printf("%d",&t);的t前面加&符号;

关于这程序你有这两处错;你再输入是要注意这个一维数组织有五个元数,你再输入是不能超过五个字符;

 修改后的程序是:#include<stdio.h>
main()
{ int t;
  char a[5];
  scanf("%s ,%d",a,&t);
  printf("%d",t);
}

正确的形式是:aaaaa ,4则结果是4;

发表时间:2007-07-02 21:07:57 25 楼:jeffsui

飘过,看拉!@

发表时间:2007-07-08 03:08:27 26 楼:kaisaiz
24楼的是一个高手啊!牛!
发表时间:2007-07-10 09:20:53 27 楼:subuser

最关键的是在字符数组上的错误,一个字符数组的每个字符只能容纳一个字母,多了会报错或者输出的结果不对。所以,你输入时要注意一次只能输入一个字符然后回车,接着在输下一个。

发表时间:2007-07-12 01:12:46 28 楼:haisujiang
%s把,也算进去了,所以scanf()中不要用逗号隔开输入字符串与数字。输入时用空格隔开即可
发表时间:2007-07-12 09:06:03 29 楼:pig_zhuzhu

1) 就是scanf中不要以“,”隔开“%s”和“%d”,否则你在输完第一个占位符的值时要加上一个“,”

2) &t是t的地址,即变量t所在的内存的编号

3) 数组不要越界,a[5]当然不能存入6个a

4) 一般写成1楼的形式最好,简单也不容易处错

发表时间:2007-07-20 22:58:41 30 楼:hailang163

这个贴相当的。。强。。牛

 

 

#include<stdio.h>

main(){

  scanf("%d", &t);
  printf("%d\n",t);
}

我就想不通了,这个程序跟a有什么关系?

迷茫!

发表时间:2007-07-27 08:41:39 31 楼:xiaoxiao108

路过

发表时间:2007-08-03 16:36:36 32 楼:lammle
期待
发表时间:2007-08-23 11:31:37 33 楼:jam_sz

好多方法,呵呵

发表时间:2007-09-06 17:29:38 34 楼:xzh945
24楼的强
发表时间:2007-09-13 19:15:35 35 楼:hcs2007

强人  24楼的说得很透

发表时间:2007-09-23 12:47:38 36 楼:koc111

 

http://www.KingOfCoder.com   純編程文章網


【相关链接】: http://www.KingOfCoder.com   (本网站不保证链接的安全性)
发表时间:2007-10-02 11:13:36 37 楼:poter1
应该是printf("%d",&t);这一句错了吧。应该是printf("%d",t);你多写了个&哦。
发表时间:2007-10-10 13:14:11 38 楼:chenguang_cao
C不对数组下标越界进行检查。
发表时间:2007-10-11 09:28:53 39 楼:huaidanvsyeren

#include<stdio.h>

main()
{ int t = 0;
  char a[5];
  scanf("%s %d", &a, &t);
  printf("%s", a);
 
  printf("%d\n",t);

 

因该可以的

 

发表时间:2007-10-18 17:54:19 40 楼:lhx417087234000

你直接输入4试试

发表时间:2007-10-23 11:49:13 41 楼:feizhuangxuan
你是不是想说明那个字符串数组是怎么溢出的?还是有其他的想法?
发表时间:2007-11-12 16:39:20 42 楼:blc_042642

会出错地

 

发表时间:2007-11-13 16:19:35 43 楼:kym520

#include<stdio.h>

main()
{ int t = 0;
  char a[5];
  scanf("%s %d", &a, &t);
  scanf("%s", a);
  printf("%d\n",t);

发表时间:2007-11-26 12:30:55 44 楼:koc100
编程网站 www.kingofcoder.com
发表时间:2007-11-27 16:59:36 45 楼:edwin_huang

呵呵, 受教了. 看来要多加强一下基础了.

发表时间:2007-11-29 17:24:45 46 楼:axie972700

#include<stdio.h>
main()
{ int t;
  char a[5];
  scanf("%s,%d",a,&t);
  printf("%d",&t);
}

 你这道题首先在语句scanf("%s,%d",a,&t);的%s后加一个空格然后再按格式输入,因为scanf在输入一个字符串时是一空格作为输入的结束标志;

其次,你是要输出t的值,而不是t变量的地址!所以你就不该再输出语句printf("%d",&t);的t前面加&符号;

关于这程序你有这两处错;你再输入是要注意这个一维数组织有五个元数,你再输入是不能超过五个字符;

 修改后的程序是:#include<stdio.h>
main()
{ int t;
  char a[5];
  scanf("%s ,%d",a,&t);
  printf("%d",t);
}

正确的形式是:aaaaa ,4则结果是4;

发表时间:2007-12-08 12:50:14 47 楼:xiaoyi247

数组越界了呢

同学

发表时间:2008-01-01 15:09:36 48 楼:w94j8

你的printf语法错了,printf("%d",&t)等于是输出变量t在内存中的地址值了,应该为printf("%d",t)就好了。