【发布时间】:2016-05-20 06:08:05
【问题描述】:
https://www.codechef.com/problems/LADDU 无法在代码第 12 行扫描数组“work”中的字符串。
#include<stdio.h>
int main()
{
long long int i,j,T,actv,points,a,b,c;
char origin[100],work[100];
scanf("%lld",&T);
while(T--)
{
points=0;
scanf("%lld %s",&actv,origin);
for(i=0;i<actv;i++)
{
printf("hie\n");
scanf("%[^\n]s",work);
printf("hello\n");
}
}
return 0;
}
【问题讨论】:
-
scanf("%[^\n]s",work);-->scanf(" %99[^\n]%*c", work); -
速度是这个 codechef 问题的一个重要考虑因素。 (size_t 而不是
int -
根据问题集,没有要输入的带空格的字符串。
-
为了便于阅读和理解:1) 通过空行分隔代码块(for、if、else、while、do...while、switch、case、default) 2) 遵循公理:每行只有一个语句,并且(最多)每个语句有一个变量声明。 3) 变量名称应该表明内容或用法(或者更好,两者兼而有之)。
-
不要使用制表符进行缩进。因为每个文字处理器/编辑器的制表位/制表宽度设置不同。建议为每个缩进级别使用 4 个空格,因为即使使用可变宽度字体也是如此。强烈建议:不要省略可选的大括号“{”和“}”,因为它们使代码更易于阅读/理解,并在将来执行编辑时最大限度地减少某些类型的格式错误。