| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1908 人关注过本帖
标题:小问题请教
取消只看楼主 加入收藏
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
结帖率:100%
收藏
 问题点数:0 回复次数:6 
小问题请教
请问用scanf();给一个变量赋值,如果输入的是回车,可以用什么语句判断出回车?
2008-02-01 18:33
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
其实是一个数组,但要处理的数据的元素个数不明确,我想当输入完所有元素时,直接回车,表示数据已经输入完毕.该怎么做好点呢?谢谢了
2008-02-01 19:31
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
谢谢了! 那是个数字的int a[]的数组啊.特征值的办法用数字的就知道(输入数字表示数组输入结束,进入下一步处理.好像觉得有点怪怪的...).那EOF怎么用?谢谢不吝指教啦~~~

刚看了雨中飞燕,你在别的帖子,说到最大流的最短增广路算法.建议你可以找一下<运筹学>的书,上面一般都会有很详细的最大流的最短增广路的数学理论,希望对你理解算法有所帮助~~~
2008-02-01 20:16
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
谢谢么么蝶,可是好像不行啊.while (scanf("%d",&n)!=EOF)输入回车还是会循环
谢谢死了都要C,CTRL+Z可以结束,但如果要打印出来好像打印到哪不好控制
比如,int a[5];for(i=0;i<5;i++){scanf("%d",a[i]);}
输入2个后,CTRL+Z结束.
for(i=0;i<5;i++){printf("%d",a[i]);}//这样会全都打印了.怎么控制到前两个元素呢?
偶是新手,麻烦的问题还真不少.

其实,比如,int a[5].而我输入的元素只有两个(N),
可以用for(i=0;i<N;i++)来控制scanf();和printf();

听一高手说可以创建动态数组
比如,N我输入的是2.
好像输入完2个元素了还没到下一步
scanf("%d",array+i)还继续循环
什么回事啊.第一次用动态的,不太好理解,让大虾们指点一下.谢谢了!
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
  int N;
  int i;
  scanf("%d",&N);
  int *array=(int*)malloc(sizeof(int)*N);
  for(i=0;i<N;i++)
  {scanf("%d",array+i);}
  for(i=0;i<N;i++);
  {printf("%d",*(array+i));}
   free(array);
  return 0;
}
2008-02-17 09:55
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
if(a=="/n")    好像不是判断回车符的......
试了,没有效果.回车了还是什么都没有.
#include<stdio.h>
main()
{
char a;
scanf("%c",&a);
if(a=="/n")
printf("OK!");
getchar();
getchar();
}
2008-02-17 11:15
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
12楼到16楼,谢谢你们.但是...
你们没有完全理解我的意思.像你们那样是对字符数组的操作了,而我希望是对一个int a[64]大小的整形做一些数学运算.比如,输入后.要每个元素*3或是什么别的之类的.
像我在9楼说的.麻烦大家再看一下.
呵呵~~~整形,不是字符,因为还要做运算的.
总之.问题有二.

1.先定义int a[64].前面没有scanf();来规定要输入元素的长度
(1)用CTRL+Z或CTRL+D可以结束,如何控制打印的元素.
比如,int a[5];for(i=0;i<5;i++){scanf("%d",a[i]);}
输入2个后,CTRL+Z或CTRL+D结束.
for(i=0;i<5;i++){printf("%d",a[i]);}//这样会全都打印了.怎么控制到前两个元素呢?
(2)如果不用CTRL+Z或CTRL+D.还有什么好的办法来控制打印呢?
(除在在前面scanf("%d",&N);来规定要输入元素的长度
然后用for(i=0;i<N;i++)来控制要运算的元素的语句)

2.创建动态数组
比如,N我输入的是2.
好像输入完2个元素了还没到下一步
scanf("%d",array+i)还继续循环
什么回事啊.第一次用动态的,不太好理解,让大虾们指点一下.谢谢了!
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
  int N;
  int i;
  scanf("%d",&N);
  int *array=(int*)malloc(sizeof(int)*N);
  for(i=0;i<N;i++)
  {scanf("%d",array+i);}
  for(i=0;i<N;i++);
  {printf("%d",*(array+i));}
   free(array);
  return 0;
}

再次感谢大虾们的指点,小弟一定努力学习
2008-02-18 15:14
meteor57
Rank: 1
来 自:银河系
等 级:新手上路
帖 子:267
专家分:0
注 册:2007-9-29
收藏
得分:0 
xianshizhe111,真是太感谢了~~~
array=(int*)malloc(sizeof(int)); /*最初值*/
array=(int*)realloc(array,N);  /*重新分配的值*/
/*如VC++ 编译器 N*4 */你的意思是:array=(int*)malloc(sizeof(int)*N); 是VC ++的用法么?
找了一下手上的C书,关于malloc的用法,少得可怜,半页纸,都只有=(int*)malloc(sizeof(int)之类的
小弟初学,还请各位大虾多多提携,小弟我一定加倍努力.
2008-02-18 20:02
快速回复:小问题请教
数据加载中...
 
   



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

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