#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\0');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
while(getchar()!='\0');
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
19 个解决方案
#1
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#2
输入五组字符串后判断是否继续输入,按y键继续输入
一直输入 y
那么就没有结束了
定义长度是5的数组根本不够
一直输入 y
那么就没有结束了
定义长度是5的数组根本不够
#3
1楼是错的~`
输入y后提示输入字符.可是输入字符后不再提示是否再输入y/n
输入y后提示输入字符.可是输入字符后不再提示是否再输入y/n
#4
while 的判断改下
#5
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\0');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
while(getchar()!='\0');
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
谁帮我改一下.
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\0');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
while(getchar()!='\0');
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
谁帮我改一下.
#6
一直输入Y也不是不行,5个就够了,就是后来输入的把以前的给覆盖了。不知道楼主是什么意思?想干什么?
#7
第9行和18行的 while(getchar()!='\0');很没道理。如果不输入EOF就阻塞,这真的是你所要的吗?
在这点上1楼是正解的!!
第二个问题在于你使用的gets()。你在调用getchar()后,输入y并回车,这个回车也是一个字符,并且被保存在缓冲里面,当for循环时,第一个循环中的gets()会从缓冲中把这个回车读出来,保存在a[0]中。也就是第一个gets()得到的是一个不想要的回车符。
另外,建议不要使用gets(),这个函数很不安全。scanf是很好的选择。
在这点上1楼是正解的!!
第二个问题在于你使用的gets()。你在调用getchar()后,输入y并回车,这个回车也是一个字符,并且被保存在缓冲里面,当for循环时,第一个循环中的gets()会从缓冲中把这个回车读出来,保存在a[0]中。也就是第一个gets()得到的是一个不想要的回车符。
另外,建议不要使用gets(),这个函数很不安全。scanf是很好的选择。
#8
新人,,,帮我看错在哪里?
???要新人看?
我不是新人了,就不凑热闹了
???要新人看?
我不是新人了,就不凑热闹了
#9
那大家帮我改改啊..
#10
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
// while(getchar()!='\0'); //死循环
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
scanf("%s",a[i]);
// while(getchar()!='\0'); //死循环
printf("是否继续输入(y/n)");
getchar();
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
把那两个while去去掉就行了
不过不知道怎么搞的
printf("是否继续输入(y/n)");
getchar();
b=getchar();
这里不加getchar()不行。。。。
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
// while(getchar()!='\0'); //死循环
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
scanf("%s",a[i]);
// while(getchar()!='\0'); //死循环
printf("是否继续输入(y/n)");
getchar();
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
把那两个while去去掉就行了
不过不知道怎么搞的
printf("是否继续输入(y/n)");
getchar();
b=getchar();
这里不加getchar()不行。。。。
#11
楼上的明显没认真看我的“大作”,你看一下第7楼我的说明就恍然大悟了
#12
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\0');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
while(getchar()!='\0');
printf("是否继续输入(y/n)");
b=getchar();
getchar();-------->不知道楼主这个程序的意图是什么,但这个程序要正常运行,这儿必须的加上!用来接受上一个getchar()遗留的换行符!
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\0');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
while(getchar()!='\0');
printf("是否继续输入(y/n)");
b=getchar();
getchar();-------->不知道楼主这个程序的意图是什么,但这个程序要正常运行,这儿必须的加上!用来接受上一个getchar()遗留的换行符!
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#13
我再来说清楚一点
在调用b = getchar()的时候,输入了一个字符,并加上一个回车。这个字符被getchar()获得了并付值给了b,但是getchar()只能获得一个字符,也就是说这个回车符还留在缓冲区里面没有被提取。在后面调用scanf()的时候,scanf()是以回车符作为输入结束标识的,因此第一个scanf()从缓冲区中把上次留下的回车符提取出来,正好满足结束输入的条件,于是scanf()就成功返回了,把回车符拷贝到给a[0]的内存空间中
在调用b = getchar()的时候,输入了一个字符,并加上一个回车。这个字符被getchar()获得了并付值给了b,但是getchar()只能获得一个字符,也就是说这个回车符还留在缓冲区里面没有被提取。在后面调用scanf()的时候,scanf()是以回车符作为输入结束标识的,因此第一个scanf()从缓冲区中把上次留下的回车符提取出来,正好满足结束输入的条件,于是scanf()就成功返回了,把回车符拷贝到给a[0]的内存空间中
#14
最好不要用getchar,直接用cin就可以了
#15
还有,尽量少用低级的数组,用vector要方便得多
#16
//功能:输入字符串,按y键开始输入,输入五组字符串后判断是否继续输入,按y键继续输入。按n键结束输入。// ==>这个功能好像在你的程序里没有体现出来哦,每输入一整组数据都把原来的数据给 覆盖了,不知道楼主的用意是什么.可以这样改程序,使得它输出最后输入的那组数据,以前输入的都被覆盖掉了,呵呵
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
// while(getchar()!='\0');==>想干嘛呀?呵呵
while(b=='y')
{
char temp;
scanf("%c",&temp);//过滤掉回车
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
//while(getchar()!='\0');//这一句也可以免了吧
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
// while(getchar()!='\0');==>想干嘛呀?呵呵
while(b=='y')
{
char temp;
scanf("%c",&temp);//过滤掉回车
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
//while(getchar()!='\0');//这一句也可以免了吧
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#17
都是 gets()惹得祸 换scanf 就好了 哪位兄弟能 讲解一下缓冲阿
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
scanf("%c",&b);
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
scanf("%c",&b);
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
scanf("%c",&b);
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
scanf("%c",&b);
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#18
人家楼主那两个while(getchar.....是用来去掉回车符的,不能去掉了,只不过错在判断的字符不对,不应该用'\0'判断,要用'\n'判断。还有第二个while(getchar....要改放在b=getchar()后面,修改后的代码如下:
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\n');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
b=getchar();
while(getchar()!='\n');
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\n');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
b=getchar();
while(getchar()!='\n');
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#19
字符串我也没有学好,好多函数也不能自己来实现
#20
#1
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#2
输入五组字符串后判断是否继续输入,按y键继续输入
一直输入 y
那么就没有结束了
定义长度是5的数组根本不够
一直输入 y
那么就没有结束了
定义长度是5的数组根本不够
#3
1楼是错的~`
输入y后提示输入字符.可是输入字符后不再提示是否再输入y/n
输入y后提示输入字符.可是输入字符后不再提示是否再输入y/n
#4
while 的判断改下
#5
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\0');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
while(getchar()!='\0');
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
谁帮我改一下.
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\0');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
while(getchar()!='\0');
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
谁帮我改一下.
#6
一直输入Y也不是不行,5个就够了,就是后来输入的把以前的给覆盖了。不知道楼主是什么意思?想干什么?
#7
第9行和18行的 while(getchar()!='\0');很没道理。如果不输入EOF就阻塞,这真的是你所要的吗?
在这点上1楼是正解的!!
第二个问题在于你使用的gets()。你在调用getchar()后,输入y并回车,这个回车也是一个字符,并且被保存在缓冲里面,当for循环时,第一个循环中的gets()会从缓冲中把这个回车读出来,保存在a[0]中。也就是第一个gets()得到的是一个不想要的回车符。
另外,建议不要使用gets(),这个函数很不安全。scanf是很好的选择。
在这点上1楼是正解的!!
第二个问题在于你使用的gets()。你在调用getchar()后,输入y并回车,这个回车也是一个字符,并且被保存在缓冲里面,当for循环时,第一个循环中的gets()会从缓冲中把这个回车读出来,保存在a[0]中。也就是第一个gets()得到的是一个不想要的回车符。
另外,建议不要使用gets(),这个函数很不安全。scanf是很好的选择。
#8
新人,,,帮我看错在哪里?
???要新人看?
我不是新人了,就不凑热闹了
???要新人看?
我不是新人了,就不凑热闹了
#9
那大家帮我改改啊..
#10
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
// while(getchar()!='\0'); //死循环
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
scanf("%s",a[i]);
// while(getchar()!='\0'); //死循环
printf("是否继续输入(y/n)");
getchar();
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
把那两个while去去掉就行了
不过不知道怎么搞的
printf("是否继续输入(y/n)");
getchar();
b=getchar();
这里不加getchar()不行。。。。
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
// while(getchar()!='\0'); //死循环
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
scanf("%s",a[i]);
// while(getchar()!='\0'); //死循环
printf("是否继续输入(y/n)");
getchar();
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
把那两个while去去掉就行了
不过不知道怎么搞的
printf("是否继续输入(y/n)");
getchar();
b=getchar();
这里不加getchar()不行。。。。
#11
楼上的明显没认真看我的“大作”,你看一下第7楼我的说明就恍然大悟了
#12
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\0');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
while(getchar()!='\0');
printf("是否继续输入(y/n)");
b=getchar();
getchar();-------->不知道楼主这个程序的意图是什么,但这个程序要正常运行,这儿必须的加上!用来接受上一个getchar()遗留的换行符!
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\0');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
while(getchar()!='\0');
printf("是否继续输入(y/n)");
b=getchar();
getchar();-------->不知道楼主这个程序的意图是什么,但这个程序要正常运行,这儿必须的加上!用来接受上一个getchar()遗留的换行符!
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#13
我再来说清楚一点
在调用b = getchar()的时候,输入了一个字符,并加上一个回车。这个字符被getchar()获得了并付值给了b,但是getchar()只能获得一个字符,也就是说这个回车符还留在缓冲区里面没有被提取。在后面调用scanf()的时候,scanf()是以回车符作为输入结束标识的,因此第一个scanf()从缓冲区中把上次留下的回车符提取出来,正好满足结束输入的条件,于是scanf()就成功返回了,把回车符拷贝到给a[0]的内存空间中
在调用b = getchar()的时候,输入了一个字符,并加上一个回车。这个字符被getchar()获得了并付值给了b,但是getchar()只能获得一个字符,也就是说这个回车符还留在缓冲区里面没有被提取。在后面调用scanf()的时候,scanf()是以回车符作为输入结束标识的,因此第一个scanf()从缓冲区中把上次留下的回车符提取出来,正好满足结束输入的条件,于是scanf()就成功返回了,把回车符拷贝到给a[0]的内存空间中
#14
最好不要用getchar,直接用cin就可以了
#15
还有,尽量少用低级的数组,用vector要方便得多
#16
//功能:输入字符串,按y键开始输入,输入五组字符串后判断是否继续输入,按y键继续输入。按n键结束输入。// ==>这个功能好像在你的程序里没有体现出来哦,每输入一整组数据都把原来的数据给 覆盖了,不知道楼主的用意是什么.可以这样改程序,使得它输出最后输入的那组数据,以前输入的都被覆盖掉了,呵呵
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
// while(getchar()!='\0');==>想干嘛呀?呵呵
while(b=='y')
{
char temp;
scanf("%c",&temp);//过滤掉回车
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
//while(getchar()!='\0');//这一句也可以免了吧
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
// while(getchar()!='\0');==>想干嘛呀?呵呵
while(b=='y')
{
char temp;
scanf("%c",&temp);//过滤掉回车
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
//while(getchar()!='\0');//这一句也可以免了吧
printf("是否继续输入(y/n)");
b=getchar();
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#17
都是 gets()惹得祸 换scanf 就好了 哪位兄弟能 讲解一下缓冲阿
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
scanf("%c",&b);
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
scanf("%c",&b);
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
scanf("%c",&b);
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
scanf("%c",&b);
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#18
人家楼主那两个while(getchar.....是用来去掉回车符的,不能去掉了,只不过错在判断的字符不对,不应该用'\0'判断,要用'\n'判断。还有第二个while(getchar....要改放在b=getchar()后面,修改后的代码如下:
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\n');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
b=getchar();
while(getchar()!='\n');
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#include<stdio.h>
void main()
{
int i;
char a[5][100],b;
printf("是否开始输入(y/n)");
b=getchar();
while(getchar()!='\n');
while(b=='y')
{
printf("请输入5组字符串:\n");
for(i=0;i<5;i++)
gets(a[i]);
printf("是否继续输入(y/n)");
b=getchar();
while(getchar()!='\n');
}
for(i=0;i<5;i++)
printf("%s\n",a[i]);
}
#19
字符串我也没有学好,好多函数也不能自己来实现