scanf("%[^\n]"读入一行数据 为何出现死循环 求解?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scanf("%[^\n]"读入一行数据 为何出现死循环 求解?相关的知识,希望对你有一定的参考价值。
参考技术A 你可以先看看scanf函数返回值的具体解释。scanf("%d
%d",&a,&b);
如果a和b都被成功读入,那么scanf的返回值就是2
如果只有a被成功读入,返回值为1
如果a和b都未被成功读入,返回值为0
如果遇到错误或遇到end
of
file,返回值为EOF。
也就是说,当它没有读取到数据的时候,其实返回的是0,而不是EOF,所以你的while循环的判断条件写错了,应该写成>0
UVA 12563 "Jin Ge Jin Qu hao" (背包)
debug了好一会,突然发现,输出错了,emmm.........
明天再写debug历程
贴身ac代码先
1 #include<bits/stdc++.h> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define memF(a,b,n) for(int i=0;i <= n;a[i++]=b); 6 const int maxn=1e5+50; 7 8 int n,T; 9 int t[60]; 10 int dp[maxn]; 11 12 void Solve() 13 14 memF(dp,-1,T); 15 dp[0]=0; 16 for(int i=1;i <= n;++i) 17 18 for(int j=T-1;j >= t[i];--j) 19 20 if(dp[j-t[i]] != -1) 21 dp[j]=max(dp[j],dp[j-t[i]]+1); 22 23 24 int ans=*max_element(dp,dp+T-1); 25 for(int i=T-1;i >= 0;--i) 26 if(dp[i] == ans) 27 28 printf("%d %d\n",dp[i]+1,i+678); 29 return ; 30 31 32 int main() 33 34 int test; 35 scanf("%d",&test); 36 for(int kase=1;kase <= test;++kase) 37 38 scanf("%d%d",&n,&T); 39 for(int i=1;i <= n;++i) 40 scanf("%d",t+i); 41 42 printf("Case %d: ",kase); 43 Solve(); 44 45 return 0; 46
以上是关于scanf("%[^\n]"读入一行数据 为何出现死循环 求解?的主要内容,如果未能解决你的问题,请参考以下文章
scanf("%[^\n]"读入一行数据 为何出现死循环 求解?
scanf("%[^\n]"读入一行数据 为何出现死循环 求解?
for(i=0;num[i]!='\n';i++) scanf("%c",&num[i]); 为啥无法结束输入?? num是浮点型的