解题思路:
1.有n+个待输入字符串;前面n个有空格,后面的字符串没有空格 (即后面:D O T CPP是四个字符串);
2.因为前面n个字符串原样输出,先用for循环输入( 用gets() )前n个字符串,每输入一串,输出一串用puts()(自带换行)注意但只是换到下一行让你输入,还需再输出一个换行符;
3.之后的字符串不带空格,则选用scanf("%s")并且没有说明结束标志(默认以文件末尾结束:EOF);
4.每输入一串,输出一串,并且换行;
注意事项:
1.输出每一行字符串后,都要输出空白一行,即换行;也就是两个回车;
2.带空格输入用gets(),输出用puts()(这是之前逆序输出的经验,用循环单个输入单个输出提示越界)
3.不带空格输入用scanf("%s",);输出printf("\n")即可;其它也行,最终两个换行符就行;
4.程序中getchar()用来读取输入整数后缓存区中的回车;
参考代码:
#include<stdio.h> #include<string.h> int main() { char a[1001]; int n; scanf("%d",&n); getchar(); for(int i=0;i<n;i++) {gets(a);puts(a);printf("\n");} while(scanf("%s",a)!=EOF) { printf("%s\n",a); printf("\n"); } return 0; }
0.0分
188 人评分
在CSDN上找了关于缓冲区的一些资料, https://blog.csdn.net/tonglin12138/article/details/85534308 以前没认真听课,甚至不知道缓冲区这个概念,看到了答主写的题解才去认真了解了一下,感谢答主。
while(scanf("%s",a)!=EOF) { printf("%s\n",a); printf("\n"); } 这里为什么带空格的会自动换行,我没看明白这里
Manchester 2020-03-26 17:27:13 |
%s 出入空格表示输入结束
Brynn 2021-01-21 14:14:01 |
好的,我也明白了
#include<stdio.h> int main() { int n,i; char a[1001][1001],c; scanf("%d",&n); c=getchar(); for(i=0;i<=n;i++) gets(a[i]); for(i=0;i<n;i++) { puts(a[i]); printf("\n"); } for(i=0;a[n][i];i++) { if(a[n][i]==' ') { printf("\n\n"); continue; } printf("%c",a[n][i]); } printf("\n\n"); return 0; }我这个为啥一直都是%33的错误呢,求大佬解答!!
djc35299 2020-02-17 16:43:14 |
我和你的很相似,他也是说33%的错误
无言声落 2021-03-29 19:46:59 |
@wqcs 行数的问题,你这样做只有这个问题的例子可行,换一下其他的例子就不行了。#include<stdio.h> int main() { int n,i; char a[1001][1001],c; scanf("%d",&n); c=getchar(); for(i=0;i<5;i++) gets(a[i]); for(i=0;i<n;i++) { puts(a[i]); printf(" "); } for(;n<5;n++) { for(i=0;a[n][i];i++) { if(a[n][i]==' ') { printf(" "); continue; } printf("%c",a[n][i]); } printf(" "); } printf(" "); return 0; } 这是我在你这个基础上改的,不过他要求的多行,我只规定了5行,这样方便我输入
这特么也叫对?这种思路搞个球,输入输出格式跟样例完全不一样,这个答案输入一个字符串就直接输出这个字符串,之后再重新输入一个,但是答案要求全部输出再以排序的形式全部输出,而不是一条条字符串输入再输出,这特么都错的很扯淡了
题中说输入需要满足(第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。)然后列出了输入样例,输入了n=2,然后输入了3行字符串,这里的3确实满足了3>2,但这是碰巧的还是只要满足输入行数大于n就行了。但是我感觉按照题目的意思是比如我输入n=2,然后我接着输入5行字符串,前面2行照样输出,后面的三行则以空格或回车分割依次按行输出。因为题目中的输出条件为(先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。)这里说的是余下的字符串以空格或回车分割。这个解答好像最多只能输入n+1行。是我钻牛角尖了还是本来应该这样的呢,求大神解答,谢谢了
getchar()换成fflush(stdin)可以吗?
小刘 2020-04-18 21:26:23 |
缓冲区了解一下
蓝边难孩 2021-02-01 21:21:09 |
为什么可以啊,我用VC++跑了下确实不合题意啊
佐佐木小次郎 2021-10-20 14:57:52 |
不同的编译器不一样吧