搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 为什么我的程序的循环次数要比输入的数字少一次
标题:
为什么我的程序的循环次数要比输入的数字少一次
只看楼主
刷题c
等 级:
新手上路
帖 子:12
专家分:7
注 册:2015-11-13
结帖率:
66.67%
楼主
已结贴
√
问题点数:10 回复次数:9
为什么我的程序的循环次数要比输入的数字少一次
#include <stdio.h>
#include <string.h>
int main()
{
char a[1111][1111];
int i,j,k,n;
scanf("%d",&n);
int sum=0;
for(i=0;i<n;i++)
{
gets(a[i]);
j=strlen(a[i]);
sum=sum+j;
}
printf("%d",sum);
return 0;
}
我输入数字5却只循环4次
搜索更多相关主题的帖子:
include
2015-11-30 15:02
wp231957
来 自:神界
等 级:
版主
威 望:
422
帖 子:13681
专家分:53296
注 册:2012-10-18
第
2
楼
得分:0
scanf(
"
%d
"
,&n); fflush(stdin);
加一句代码 看看
DO IT YOURSELF !
2015-11-30 15:23
rjsp
等 级:
版主
威 望:
507
帖 子:8890
专家分:53117
注 册:2011-1-18
第
3
楼
得分:4
以下是引用
wp231957
在2015-11-30 15:23:14的发言:
scanf("%d",&n);
fflush(stdin);
加一句代码 看看
其实 fflush(stdin),从来都是未定义行为。
曾经有人提议将之加入到C标准中,但后来页不了了之
2015-11-30 16:03
wp231957
来 自:神界
等 级:
版主
威 望:
422
帖 子:13681
专家分:53296
注 册:2012-10-18
第
4
楼
得分:4
回复 3楼 rjsp
那应该怎么消那个回车呢 getchar() ???
DO IT YOURSELF !
2015-11-30 16:05
rjsp
等 级:
版主
威 望:
507
帖 子:8890
专家分:53117
注 册:2011-1-18
第
5
楼
得分:0
以下是引用
wp231957
在2015-11-30 16:05:23的发言:
那应该怎么消那个回车呢 getchar() ???
取决于楼主要不要数字那行后面的字符串
假如不要,我也没有什么好办法,但我常用
scanf( "%*[^\n]" );
scanf( "%*c" );
这两句。(注意,这两句不能写在一起scanf( "%*[^\n]%*c" ),因为第一句可能失败)
2015-11-30 16:29
刷题c
等 级:
新手上路
帖 子:12
专家分:7
注 册:2015-11-13
第
6
楼
得分:0
回复 5楼 rjsp
那为什么循环会少一次呢 是因为gets与语句吗?
你指的数字后面的字符串是那个?
2015-12-01 12:54
rjsp
等 级:
版主
威 望:
507
帖 子:8890
专家分:53117
注 册:2011-1-18
第
7
楼
得分:0
以下是引用
刷题c
在2015-12-1 12:54:38的发言:
那为什么循环会少一次呢 是因为gets与语句吗?
你指的数字后面的字符串是那个?
指的是
2 abc
def
中的 abc
2015-12-01 13:05
刷题c
等 级:
新手上路
帖 子:12
专家分:7
注 册:2015-11-13
第
8
楼
得分:0
回复 7楼 rjsp
想要的 你的意思是说 输入数字后不能用 回车 来隔吗 要用空格是吗
把那个gets(a) 换成scanf("%s",a) 就没有那个问题了 这是为什么啊
2015-12-01 13:53
刷题c
等 级:
新手上路
帖 子:12
专家分:7
注 册:2015-11-13
第
9
楼
得分:0
回复 7楼 rjsp
scanf( "%*[^\n]" );
scanf( "%*c" );
这两个是两种输入字符串的方法吗?
2015-12-01 13:55
孤狼A组
等 级:
论坛游侠
威 望:
2
帖 子:73
专家分:121
注 册:2015-9-8
第
10
楼
得分:4
#include <stdio.h>
#include <string.h>
int main()
{
char a[10][10];
int i,j,k,n;
int sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%s",&a[i]);//改成 scanf输入就可以,具体原因可能是和第四次输入后的那个回车有关
j=strlen(a[i]);
sum=sum+j;
}
printf("%d\n",sum);
return 0;
}
2015-12-01 21:35
10
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-459750-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 1.780033 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved