user-0 提问: 格式错误求教怎么修改 输入下面多了一个空行但是如果去掉空行输出又不对，

回复:
user: user-1
content: 把scanf("%d",&n) 改为scanf("%d\n",&n); 同时再把for(i=0; i<n+1; i++) 改为for(i=0;i<n;i++) 即可。

user: user-2
content: 在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 int c; scanf("%c",&c); //时，都改为 char s[2]; int c; scanf("%1s",s); c=s[0];

user: user-3
content: 碰到会单独读入回车符（比如gets,scanf(%c,....)等等）的语句之前，最好清空输入缓冲区一下

user: user-4
content: 是因为回车符的原因,首先第一个空行是你输入n的时候加上去,然后gets遇到回车符结束,所以s[0] 就是'\n',后面每次都会有的换行是因为gets每次都会将'\n'带入你的缓存里.可以把它先去掉.  #include<stdio.h> #include<string.h>   #define     MAX_STR_LEN     64  int main() {     int n, i, j, len;     char str[MAX_STR_LEN];      scanf("%d", &n);     getchar();    /* receive '\n' */     for(i = 0; i < n; i++)     {         fgets(str, MAX_STR_LEN-1, stdin);         len = strlen(str)-1;         str[len] = 0;   /* equal '\0'. */         for(j = len - 1; j >= 0; j--)         {             printf("%c", str[j]);         }         printf("\n");     }      return 0; }  数据没必要申请那么大的,你测试一次性也输入不了1000个字符,建议不要这么做.栈的空间是有限并且宝贵的.应该根据需要而申请栈上的空间.

user: user-5
content: scanf("%d",&n);  后面加一句getchar();  将你输入完留在缓冲区中的换行符接收了，否则会被之后的gets接收了

user: user-5
content: 引用 7 楼 zuoside__lord 的回复:[quote=引用 6 楼 user-5 的回复:] [quote=引用 5 楼 zuoside__lord 的回复:]   题目描述 Sine的一个朋友疯了，最近他老爱说反话，别人说什么他就倒着说一遍，真是个奇怪的人。那他到底说了什么呢？  输入 第1行：一个整数n(0<n<=20)表示字符串数 第2到n+1行：每行一个字符串（字符串长度大于0不超过1000，字符均为“可打印”字符，32<=ASCII码<=126）  输出 输出逆序的字符串，每行一个。 样例输入 1 i am speaking 样例输出 gnikaeps ma i 提示 安徽大学第三届ACM/ICPC 程序设计竞赛现场赛    提交 这是题目，我按照各位建议加了getchar还是错的，答案错误  for(i=0; i<n+1; i++)  改成：  for(i=0; i<n; i++)[/quote] 还是错误输出的结果前面多了个空格，莫名其妙地多了，提交上去还是格式错误[/quote]  没懂你意思，这样改：  #include<stdio.h> #include<string.h> int main() { 	int n,i,j,len; 	char s[1001],b[1001]; 	scanf("%d",&n); 	getchar(); 	for(i=0; i<n; i++) 	{ 		gets(s); 		for(j=strlen(s)-1; j>=0; j--) 		{ 			printf("%c",s[j]); 		} 		printf("\n"); 	} } 引用 9 楼 zuoside__lord 的回复:[quote=引用 8 楼 user-5 的回复:] [quote=引用 7 楼 zuoside__lord 的回复:] [quote=引用 6 楼 user-5 的回复:] [quote=引用 5 楼 zuoside__lord 的回复:]   题目描述 Sine的一个朋友疯了，最近他老爱说反话，别人说什么他就倒着说一遍，真是个奇怪的人。那他到底说了什么呢？  输入 第1行：一个整数n(0<n<=20)表示字符串数 第2到n+1行：每行一个字符串（字符串长度大于0不超过1000，字符均为“可打印”字符，32<=ASCII码<=126）  输出 输出逆序的字符串，每行一个。 样例输入 1 i am speaking 样例输出 gnikaeps ma i 提示 安徽大学第三届ACM/ICPC 程序设计竞赛现场赛    提交 这是题目，我按照各位建议加了getchar还是错的，答案错误  for(i=0; i<n+1; i++)  改成：  for(i=0; i<n; i++)[/quote] 还是错误输出的结果前面多了个空格，莫名其妙地多了，提交上去还是格式错误[/quote]  没懂你意思，这样改：  #include<stdio.h> #include<string.h> int main() { 	int n,i,j,len; 	char s[1001],b[1001]; 	scanf("%d",&n); 	getchar(); 	for(i=0; i<n; i++) 	{ 		gets(s); 		for(j=strlen(s)-1; j>=0; j--) 		{ 			printf("%c",s[j]); 		} 		printf("\n"); 	} }[/quote] 谢谢，终于对了，为什么有时候要-1，有时候又不-1[/quote]  哪里有-1  你是说循环里不加+1吗？  这样i才是循环n次，i=0也算

user: user-0
content: 引用 8 楼 user-5 的回复:[quote=引用 7 楼 zuoside__lord 的回复:] [quote=引用 6 楼 user-5 的回复:] [quote=引用 5 楼 zuoside__lord 的回复:]   题目描述 Sine的一个朋友疯了，最近他老爱说反话，别人说什么他就倒着说一遍，真是个奇怪的人。那他到底说了什么呢？  输入 第1行：一个整数n(0<n<=20)表示字符串数 第2到n+1行：每行一个字符串（字符串长度大于0不超过1000，字符均为“可打印”字符，32<=ASCII码<=126）  输出 输出逆序的字符串，每行一个。 样例输入 1 i am speaking 样例输出 gnikaeps ma i 提示 安徽大学第三届ACM/ICPC 程序设计竞赛现场赛    提交 这是题目，我按照各位建议加了getchar还是错的，答案错误  for(i=0; i<n+1; i++)  改成：  for(i=0; i<n; i++)[/quote] 还是错误输出的结果前面多了个空格，莫名其妙地多了，提交上去还是格式错误[/quote]  没懂你意思，这样改：  #include<stdio.h> #include<string.h> int main() { 	int n,i,j,len; 	char s[1001],b[1001]; 	scanf("%d",&n); 	getchar(); 	for(i=0; i<n; i++) 	{ 		gets(s); 		for(j=strlen(s)-1; j>=0; j--) 		{ 			printf("%c",s[j]); 		} 		printf("\n"); 	} }[/quote] 谢谢，终于对了，为什么有时候要-1，有时候又不-1

user: user-5
content: 引用 7 楼 zuoside__lord 的回复:[quote=引用 6 楼 user-5 的回复:] [quote=引用 5 楼 zuoside__lord 的回复:]   题目描述 Sine的一个朋友疯了，最近他老爱说反话，别人说什么他就倒着说一遍，真是个奇怪的人。那他到底说了什么呢？  输入 第1行：一个整数n(0<n<=20)表示字符串数 第2到n+1行：每行一个字符串（字符串长度大于0不超过1000，字符均为“可打印”字符，32<=ASCII码<=126）  输出 输出逆序的字符串，每行一个。 样例输入 1 i am speaking 样例输出 gnikaeps ma i 提示 安徽大学第三届ACM/ICPC 程序设计竞赛现场赛    提交 这是题目，我按照各位建议加了getchar还是错的，答案错误  for(i=0; i<n+1; i++)  改成：  for(i=0; i<n; i++)[/quote] 还是错误输出的结果前面多了个空格，莫名其妙地多了，提交上去还是格式错误[/quote]  没懂你意思，这样改：  #include<stdio.h> #include<string.h> int main() { 	int n,i,j,len; 	char s[1001],b[1001]; 	scanf("%d",&n); 	getchar(); 	for(i=0; i<n; i++) 	{ 		gets(s); 		for(j=strlen(s)-1; j>=0; j--) 		{ 			printf("%c",s[j]); 		} 		printf("\n"); 	} }

user: user-0
content: 引用 6 楼 user-5 的回复:[quote=引用 5 楼 zuoside__lord 的回复:]   题目描述 Sine的一个朋友疯了，最近他老爱说反话，别人说什么他就倒着说一遍，真是个奇怪的人。那他到底说了什么呢？  输入 第1行：一个整数n(0<n<=20)表示字符串数 第2到n+1行：每行一个字符串（字符串长度大于0不超过1000，字符均为“可打印”字符，32<=ASCII码<=126）  输出 输出逆序的字符串，每行一个。 样例输入 1 i am speaking 样例输出 gnikaeps ma i 提示 安徽大学第三届ACM/ICPC 程序设计竞赛现场赛    提交 这是题目，我按照各位建议加了getchar还是错的，答案错误  for(i=0; i<n+1; i++)  改成：  for(i=0; i<n; i++)[/quote] 还是错误输出的结果前面多了个空格，莫名其妙地多了，提交上去还是格式错误

user: user-5
content: 引用 5 楼 zuoside__lord 的回复:题目描述 Sine的一个朋友疯了，最近他老爱说反话，别人说什么他就倒着说一遍，真是个奇怪的人。那他到底说了什么呢？  输入 第1行：一个整数n(0<n<=20)表示字符串数 第2到n+1行：每行一个字符串（字符串长度大于0不超过1000，字符均为“可打印”字符，32<=ASCII码<=126）  输出 输出逆序的字符串，每行一个。 样例输入 1 i am speaking 样例输出 gnikaeps ma i 提示 安徽大学第三届ACM/ICPC 程序设计竞赛现场赛    提交 这是题目，我按照各位建议加了getchar还是错的，答案错误  for(i=0; i<n+1; i++)  改成：  for(i=0; i<n; i++)

user: user-0
content: 题目描述 Sine的一个朋友疯了，最近他老爱说反话，别人说什么他就倒着说一遍，真是个奇怪的人。那他到底说了什么呢？  输入 第1行：一个整数n(0<n<=20)表示字符串数 第2到n+1行：每行一个字符串（字符串长度大于0不超过1000，字符均为“可打印”字符，32<=ASCII码<=126）  输出 输出逆序的字符串，每行一个。 样例输入 1 i am speaking 样例输出 gnikaeps ma i 提示 安徽大学第三届ACM/ICPC 程序设计竞赛现场赛    提交 这是题目，我按照各位建议加了getchar还是错的，答案错误