-
2019-08-29 09:48:48
实现思路:通过比较输入的行和空字符串是否相等,如果相等则退出输入,实现代码如下:
#include "stdio.h" #include "stdlib.h" #include "string.h" #define N 1000 int main() { char str[N][12]; int i=0; while(gets(str[i])) { if(strcmp(str[i],"")==0) //判断如果这个输入的字符串为空则退出 { break; } i++; } puts(str[0]); return 0; }
更多相关内容 -
C语言多行字符串输入问题
2022-04-10 16:52:41C语言多行字符串输入问题 不明确具体输入行数 对于没有确定的输入行数时,一般采用Ctrl+Z结束输入。 对于输入多个字符串,可以保存在二维数组中 1.~scanf方式 char str[100][100]; int i=0; while(~scanf("%s",str...C语言多行字符串输入问题
不明确具体输入行数
对于没有确定的输入行数时,一般采用Ctrl+Z结束输入。
对于输入多个字符串,可以保存在二维数组中
1.~scanf方式
char str[100][100]; int i=0; while(~scanf("%s",str[i])) { i++; }
scanf函数的返回值为正确输入值的个数,如果没有正确输入,scanf返回值为-1,然后取反,就为0,退出循环
但是,这会产生一个问题,当输入空格也会结束输入使的行数增加
下面进行改进
while(gets(a[i])) { if(strcmp(a[i]," ")==0) { break; } i++; }
**实现思路:**通过比较输入行和空字符串是否相等,如果相等则退出输入
2.EOF
EOF即:End of file,文件结束符
char str[100][100]; int i=0; while(scanf("%s",str[i])==1) { i++; }
这里的1代表的是输入的元素的个数,表示输入元素个数不为1则结束循环
3.scanf
char a[30]; scanf("%[^\n]",a);
scanf中的*[^\n]\表示遇到换行才结束输入*
\
-
C语言读取多行字符串
2019-03-25 03:28:22/*scanf()函数接受输入以后,回车被保存在输入流中了,在scanf()后面加一个 getchar()就好了。这样会吃掉多余的回车符,后面的gets()就可以接受输入了。*/ for (int i = 0; i ; i++) { fgets(lst[i], 500, stdin); ...例题:基因相关性
描述
为了获知基因序列在功能和结构上的相似性,经常需要将几条不同序列的DNA进行比对,以判断该比对的DNA是否具有相关性。
现比对两条长度相同的DNA序列。首先定义两条DNA序列相同位置的碱基为一个碱基对,如果一个碱基对中的两个碱基相同的话,则称为相同碱基对。接着计算相同碱基对占总碱基对数量的比例,如果该比例大于等于给定阈值时则判定该两条DNA序列是相关的,否则不相关。
输入
有三行,第一行是用来判定出两条DNA序列是否相关的阈值,随后2行是两条DNA序列(长度不大于500)。
输出
若两条DNA序列相关,则输出“yes”,否则输出“no”。
样例输入:
0.85
ATCGCCGTAAGTAACGGTTTTAAATAGGCC
ATCGCCGGAAGTAACGGTCTTAAATAGGCC
样例输出
yes
错误代码:
#include <stdio.h> #include <string.h> int main() { double x; char lst[2][500]; scanf_s("%lf", &x); for (int i = 0; i < 2; i++) { fgets(lst[i], 500, stdin); } int same = 0, all = 0; while (lst[0][all] != NULL) { if (lst[0][all] == lst[1][all]) same++; all++; } if (same*1.0 / all < x) printf("%s", "no"); else printf("%s", "yes"); return 0; }
正确代码:
#include <stdio.h> #include <string.h> int main() { double x; char lst[2][500]; scanf_s("%lf", &x); getchar(); /*scanf()函数接受输入以后,回车被保存在输入流中了,在scanf()后面加一个 getchar()就好了。这样会吃掉多余的回车符,后面的gets()就可以接受输入了。*/ for (int i = 0; i < 2; i++) { fgets(lst[i], 500, stdin); } int same = 0, all = 0; while (lst[0][all] != NULL) { if (lst[0][all] == lst[1][all]) same++; all++; } if (same * 1.0 / all < x) printf("%s", "no"); else printf("%s", "yes"); return 0; }
-
C语言多行字符串eof问题如何解决?
2021-05-19 08:09:42C语言多行字符串eof问题如何解决?#includevoid main(){ printf("input a sentence \n");char a[80],*p;int i=0,lowercase=0,uppercase=0,space=0,tab=0,enter=0;printf("ps: input ctrl+z to end of the input and ...C语言多行字符串eof问题如何解决?
#include
void main()
{ printf("input a sentence \n");
char a[80],*p;
int i=0,lowercase=0,uppercase=0,space=0,tab=0,enter=0;
printf("ps: input ctrl+z to end of the input and press enter to show the result\n");
printf("=====================================\n");
while(1)
{ if((a[i]=getchar())==EOF)
break;
i++;
}
p=&a[0];
while(1)
{if(*p==EOF)
break;
if((*p>='a')&&(*p<='z'))
lowercase++;
else if(*p==' ')
space++;
else if(*p==' ')
tab++;
else if(*p=='\n')
enter++;
else if((*p>='A')&&(*p<='Z'))
uppercase++;
p++;
}
printf("=====================================\n");
printf("lowercase %d\n",lowercase);
printf("uppercase %d\n",uppercase);
printf("space %d\n",space);
printf("tab %d\n",tab);
printf("enter %d\n",enter);
}
程序已经算是成功了
可是有很多让我不爽的地方
首先是ctrl+z必须在行首输入
然后就是当输入ctrl+z之后 还需要输入回车才会显示结果
高手们能不能帮忙改改
让一旦输入ctrl+z 就能使之输出结果
而且因为输入ctrl+z结束时需要按回车 似乎enter的统计也有问题
古冶
发布
2个回答
精华知识
-
C语言中的多行输入问题
2021-11-15 17:28:13牛客网和LeetCode的竞赛题中经常会遇到多行输入,以前不熟悉这种写...如:输入多个字符串,保存在二维数组中,可以采用以下两种方式: 1、~scanf方式 char str[10][10];//定义二维数组,保存多个字符串 int i = 0; w -
【C语言】如何实现多行字符串的输入 并 将文本打印在屏幕上?
2016-11-11 03:03:19使用字符串数组作为一个简单的文本编辑器的基础。 接受多行输入,直到接受一个空行,结束输入,将输入的所有行打印在屏幕上。实现的精彩瞬间: 1.宏定义将该字符的大小确定 2.字符串函数的使用gets_s(text[t],100... -
【C语言】分类统计字符个数(多行输入字符串)
2020-07-20 12:29:52本题要求实现一个函数,统计给定字符串中英文字母、空格或回车、数字字符和其他字符的个数。 裁判测试样例: #include <stdio.h> #define MAXS 15 void StringCount( char s[] ); void ReadString( char s[]... -
c语言输入字符串有空格怎么办
2020-05-14 14:07:08printf("输入一段字符串:"); fgets(str,50,stdin); 采用fgets输入可以识别空格,如输入hello world,输出hello world 若采用scanf,空格就相当于一个结束符,识别不了 如输入hello world,只能输出hello 只不过用... -
C语言上机刷题 输入多个字符串并倒序输出字符串
2020-04-04 15:35:04#include<stdio.h> #include<string.h> int main(){ void reverse(char arr[]); char cs[20];... while(scanf("%s",cs)!=EOF){ //输入多行字符串 reverse(cs);//调用倒序输出字符串的函数 pri... -
关于c语言中 scanf 对多行字符的输入问题
2021-05-19 10:46:55如果想直接看解决办法,直接点击目录中的结果处文章目录前言:问题:原因:尝试改进:新问题:原因:最后解决办法:思路:结果前言:我想大家在做一些PTA题的时候,有的时候需要输入多行字符,例如:ABC DWQ在这些... -
c语言中从键盘输入N个字符串,将字符串按从小到大的顺序排列并输出
2021-05-19 10:23:14运行代码: 执行结果: 扩展资料 在C语言编程中,常常需要对字符串比较和排序,经常遇到对字符串整体的控等操作,strcmp 比较str1和str2的大小,而其它的c函数strlen(),字符串拷贝函数strcpy()/strncpy(),字符串... -
c语言实现多行输入输出数据
2020-09-07 10:10:56刷题中遇到的要求多行输入与输出 -
拯救小a c语言 字符串多行输入
2020-12-06 21:33:29拯救小a c语言 字符串多行输入 链接:https://ac.nowcoder.com/acm/contest/9692/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 小a... -
C++如何输入多行字符串(含空格)
2014-07-10 18:58:52输入一个整数n,表示接下来要输入n行字符串,每一行字符串带有空格,按回车表示结束该行的输入 程序1: #include #include using namespace std; int main() { string s; int n; cin>>n; for(int i=... -
C语言如何输入带空格的字符串?
2021-08-02 15:58:33可以看到,gets()用于从标准输入流读入一个整行(以’\n’或EOF)结束,写入ptr指向的字符数组,并返回这个指针;出错或遇到文件结束时则返回NULL。行末的’\n’从流中取出,但不写入数组。gets()不检查被写入的数组... -
C语言中怎么一次性的输入多行(不确定是多少行的)字符串,然后把它们全反过来输出,比如输入 wo s
2021-05-19 08:19:43满意答案blue797992013.11.04采纳率:44%等级:6已帮助:657人【首先】是多行字符串的输入和保存。可以:开设一个字符串数组如下,其中N定义最多可记录多少行,M定义每行可保存多少个字符,改变#define定义可以调整... -
语言技巧——scanf读入多行字符串
2020-03-24 08:45:05#include <bits/stdc++.h> using namespace std; int main(){ char s[100004]; scanf("%[^EOF]",&s); cout<<s; } 注意这里&s和s都可 -
C语言使用scanf连续输入字符串出现的问题
2021-05-19 08:06:32#includeint main(){char ...可是在运行的时候却出现了问题:①输入a后按下回车②用空格隔开之后再按下回车相信和我一样的大部分初学者,看着自己天衣无缝的代码,百思不得其解。让我们先来看看,在百度百科中,对于... -
C/C++读入多行字符串string
2016-09-30 14:11:00这样当我们输入一行带空格的字符串,就要考虑getline函数,从流中读入一行字符串。1. 读入不含空格字符串 首先我要介绍一下标准C++字符串类string,它包含在”string”头文件中,记住不是string.h或者cstring头文件... -
解决未知行数的多行字符串输入问题
2021-10-11 19:34:23解决未知行数的多行字符串输入问题 类似问题描述 解决方案: 第一种 第二种: 对应的 #include <stdio.h> int main() { //To read numbers int n; while(~(scanf("%d",&n)!=EOF)) { printf("%d",n)... -
c语言将若干字符串按字母顺序(由小到大)输出,利用指针数组知识完成。
2022-02-08 17:38:16定义一个指针数组,用各字符串对它进行初始化,然后用选择法排序,但不是移动字符串,而是改变指针数组的各元素的指向 -
C语言输入带空格的字符串
2017-12-08 12:52:431.用 gets() ,它可以接收带空格的字符串, 直到回车才结束输入 char buf[80]={0}; gets(buf); //可以读取空格, 回车结束输入 2.使用"%[^\n]" 也是可以接收输入一个带空格的字符串,直到回车结束接收 ... -
objc 中最好的多行字符串声明方式
2021-05-21 03:04:40这是非常典型的问题,传统的多行字符串声明有没有方法很好的解决? 2.常见多行声明方式 利用@""包裹起来,换行 NSString *a = @"[AppHost] " @"It is called \"jsbridge\"." @"like window.ah('ready') = function... -
C语言-字符排序,输入三个字符串,按由小到大的顺序输出
2020-03-19 20:21:40输入三个字符串,按由小到大的顺序输出 输入 3行字符串 输出 按照从小到大输出成3行 样例输入 cde afg abc 样例输出 abc afg cde # include<stdio.h> # include<string.h> int main() { char ch1[1000]... -
关于c语言的scanf()和gets()输入字符串
2019-04-11 13:06:10gets() 认为空格也是字符串的一部分,只有遇到回车键时才认为字符串输入结束,所以,不管输入了多少个空格,只要不按下回车键,对 gets() 来说就是一个完整的字符串。换句话说,gets() 用来读取一整行字符串。 ... -
输入三个字符串,按由小到大的顺序输出(指针)(C语言的实现)
2021-05-19 08:46:02* * 作 者: 曾舜尧 * * 完成日期:2013 年 05 月 11 日 * * 工 具:VC6.0 * * * * 输入描述: * * 问题描述: 输入三个字符串,按由小到大的顺序输出(指针) * * 程序输出: * * 问题分析:略 * * 算法设计:略 *...