C/C++编程题开头字符串数据输入几种写法
Posted 无鞋童鞋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++编程题开头字符串数据输入几种写法相关的知识,希望对你有一定的参考价值。
1、题设
在IT公司编程题中,多数会让你一并写上测试数据输入和结果输出的Demo,这也是程序员基本的功底。想一想如果连自己的测试数据都无法给入,后面的算法写的再好,也无法测试它的准确性和效果。下面分别从c、c++,以及字符串输入和数组输入,来谈谈几种常见写法。
2、程序分析
2.1 正常字符串输入
2.1.1 C语言做法
一个不包括空格的字符串写法很简单,不再赘述,下面直接上程序: char nzArr[100];
scanf("%s",nzArr);
或者动态分配地址,不用字符串数组,但记得在最后释放空间:
(记得添加头文件,malloc函数接口是声明在stdlib.h头文件中)
char *nzArr1 = (char*)malloc(100*sizeof(char)); //分配100个保存char类型数据空间
scanf("%s",nzArr1);
... ...
free(nzArr1);
这两种都行,如果题目没让先输入具体字符串长度,可以使用第一种字符串数组,简单,申请空间视情况而定。但是如果题设让先输入字符串长度,然后下一行输入一行字符串,第二组更省内存和好理解,即:
int nLen;
scanf("%d",&nLen);
char *nzArr1 = (char*)malloc(nLen*sizeof(char));
scanf("%s",nzArr);
注:使用VS调试的朋友一定需要注意,标准scanf和printf函数接口是声明在stdio.h中,但是在VS可能因为内嵌其它标准库中原因,你未添加stdio.h头文件也能运行,但是gcc编译环境不添加会直接报错。所以自己无论什么时候调试,最好加上stdio.h头文件。
2.1.2 C++做法
C++其实更多的输入和输出是从流的角度去考虑,也不再细说,直接看程序:
char nzArr[100];
int nLen;
cin>>nLen;
char *nzArr1 = (char*)malloc(nLen*sizeof(char));
cin>>nzArr;
cin>>nzArr1;
但是需要记住头文件#include<iostream>,#include<cstdlib>,以及命名空间using namespace std。这样cin和cout才能被编译器找到和识别。
这块细心的朋友可能发现,我前后写malloc所声明的头文件不一样。c中是stdlib.h,而c++中是cstdlib。这主要是c++像c兼容,为了以示区别,c++库头文件都将.h的头文件名修改成了c开头文件名。这样的还有如math.h和cmath。实质是一样的,因为兼容性,在c++中,你添加stdlib.h也能找到对应函数的声明。所以c和c++慢慢的已经融合到一起使用。
2.2 输入一段字符串语句
这里我不再区分c和c++的写法,上面已说明。这里直接进入正题,有些编程题让你输入一段字符串语句保存在字符串数组中,而且并没告诉你包含多少字符,以及还包含空格。所以这里就不能简单的像上面那样去处理了。因为保存一个字符串会在空格处断开,后面直接舍弃。如果用流的方式读入,这就设计申请二位字符串数组,很麻烦。
这里我们需要调用流读入一整行的方式,具体程序如下:
char nzArr[100];
cin.getline(nzArr,100);//当换行后获得流中100个字符,如果没有提前加上字符串结束符'\\n'。
如果想知道自己输入了多少个字符(包括空格),可以调用计算字符串长度的函数:
#include<cstring>
//或者#include<string.h>,但是不可以<string>,这是另外一个头文件,以后再详细描述
int nLen = strlen(nzArr);
strlen计算字符串长度是到结束符'\\n'为止,所以与你开始保存的字符串申请空间大小无关。上面也是一样,也可以调用该函数计算字符串长度。
2.3 数字数据输入
数字数据获得就简单一些,一次一次从流中读入即可。也是一样,这里我不在分c和c++讲解,与上文一样。一般输入数字数据,会让你先输入数据个数,然后另起一行,隔个空格输入一个数据。具体程序实现如下:
int nLen;
cin>>nLen;
int nArr[100];
//或者动态申请地址也是一样。
for(int i=0; i<nLen;i++)
cin>>nArr[i];
//或者scanf("%d",&nArr[i]);
你只需要每隔一个空格输入一个数据即可,当你输入完成换行,for语句会依次从流中读入你输入的每个数据。哪怕你输入超过nLen,它也只读取前nLen个。
转载请注明出处:CSDN 无鞋童鞋。
以上是关于C/C++编程题开头字符串数据输入几种写法的主要内容,如果未能解决你的问题,请参考以下文章
C语言编程:10以内加减法,根据输入题数出题,判断做题是不是正确,最后计算分数。