解题思路:
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 人评分
想问一下这个代码为啥超出限额 #include<stdio.h> #include<string.h> int main() { char arr[10001]; int a,i; scanf("%d",&a); getchar(); for(i=0;i<a;i++) { gets(arr);puts(arr);printf("\n"); } while(scanf("%s",arr)!="of") { printf("%s\n",arr);printf("\n"); } return 0; }
uq_36512047158 2022-01-21 15:56:21 |
仿照着楼主写的,但是一直显示超出限额
星空之泪 2022-02-02 13:39:58 |
"of"应该写成EOF
lantern 2024-08-07 16:52:42 |
while(scanf("%s",arr)!="of")这句改成while(scanf("%s",arr)!='EOF')或者while(~scanf("%s",arr)!)
试试我这个程序,符合题目,易懂易理解! #include<stdio.h> #include<string.h> int main() { char a[100][1001]; char b[1001]; int n,k=1,i=0; scanf("%d",&n); getchar(); //getchar()用来读取输入整数后缓存区中的回车; for(i=0;i<n;i++) { gets(a[i]); } while(scanf("%s",b)!=EOF) { if(k==1) { printf("\n"); for(i=0;i<n;i++) { puts(a[i]); printf("\n"); } } printf("%s\n",b); printf("\n"); k=k+1; } return 0; }
uq_82461063612 2021-06-20 14:38:24 |
哥们,为什么要用二维数组
怀念的季节 2022-02-11 20:57:18 |
应该是s[1001][1001]。看作1001个一维数组,一维数组的数组元素是字符串常量。含空格的字符串最多100行,而含空格以及不含空格的字符串最多有1001行。只有为什么是1001,而不是1000,是因为字符串结束标志占一个位置
想飞的鱼 2023-01-31 20:23:23 |
妙啊,学到了
while(scanf("%s",a)!=EOF) { printf("%s\n",a); printf("\n"); } 这里我不是很懂,为什么空格会自动下去?
我的严格按照题目格式要求,简单易懂。点个赞哦 # include <stdio.h> # include<string.h> int main () { int i, j,N,n,k=0; char str[100][1000]; char a[100][1000]; scanf("%d",&N); getchar(); for(i=0;i<N;i++) { gets(str[i]); } while(scanf("%s",a[k])!=EOF) { k++; } for(i=0;i<N;i++) printf("%s\n\n",str[i]); for(i=0;i<k;i++) printf("%s\n\n",a[i]); }
Kohler 2021-03-18 21:55:37 |
看了这么几个,感觉还是你的最好
追寻 2021-04-15 12:39:22 |
没有用到string相应的函数为什么还要写这个头文件啊?
uq_82461063612 2021-06-20 14:42:14 |
大佬,为什么要用二维数组啊?不懂
ssnsk 2021-07-24 11:16:03 |
@fengkaobiguo666 一般会用的头文件都写在上面,反正用不到又不影响
鹤白白 2021-08-05 18:54:30 |
我想问一下,可不可以把最后一个循环改成从N开始一直到k,就不用定义两个数组,但是我看了几个题解,都是从0开始的,好像没有用这个思路,是我理解错了吗求大神解答
wzwz 2021-11-18 09:39:12 |
不行啊,输入后都输出不了
quite 2021-12-03 20:21:44 |
@wzwz 要退出while循环,按ctrl+z
多喝热水y 2022-01-07 15:01:35 |
厉害厉害,这个的确好
宋宏宇 2022-01-14 19:18:48 |
#include<stdio.h> #include<string.h> int main() { char s[101][1024]; int N,m,i; scanf("%d",&N); getchar(); for(i=0;i<=N;i++) { gets(s[i]); } for(i=0;i<N;i++) { puts(*(s+i)); printf(" "); } m=strlen(s[N]); for(i=0;i<m;i++) { if(s[N][i]==32) { printf(" "); printf(" "); }else printf("%c",s[N][i]); }printf(" "); return 0;
C语言程序设计教程(第三版)课后习题1.5 (C++代码)浏览:778 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:644 |
C语言训练-大、小写问题 (C语言代码)浏览:792 |
哥德巴赫曾猜测 (C语言代码)浏览:2562 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:583 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:573 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:904 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:561 |
陈教主的三角形 (C语言代码)浏览:1196 |
大神老白 (C语言代码)浏览:637 |