机试必备的输入输出函数

在机试时,通常都是根据输入数据,做一些处理,然后输出,从而就导致输入输出这种基本的东西显得尤为重要,我简单说一下机试的时候该怎么用

1.针对int类型的输入输出

比如要求是根据两个输入的数据进行处理,然后输出一个数据,下面代码我用a和b代表输入,c代表输出那么我可以这样使用scanf和printf

while(scanf("%d%d,&a,&b") != EOF) //注意双引号中的%d%d中间不要有逗号

printf("%d\n",c);

scanf此处这么用很常见,机会所有的机试我都是这么处理的,这样可以一直循环等待输入数据,再做处理,最后输出

printf这块要注意题中输出格式要求,上面我是加了一个换行符,有时候是需要用空格的。

2.输入一个字符

把上面那种情况中的%d换成%c就可以了

3.针对字符串的输入输出

这种也是比较简单的,直接使用下面的代码即可

char str[100];

scanf("%s",str)

不过这个时候要注意str所开辟的空间是100,这个要根据题目描述,一般机试题都会说这个长度的,要是没有说长度,就需要动态开辟空间的方式是最保险

4.获取有空格的字符串

这个时候可以使用gets,不能采用scanf,或者采用多个scanf来获取有空格的字符串,只是这种情况下,会获取多个字符串,但在处理的时候要考虑这多个字符串实际上是一个字符串的情况,下面我们就看一个这种列子

第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符,写出一个程序,输出输入字符串中该字符的出现次数。(不区分大小写字母),数据范围1 <= n <= 1000

下面是对应的代码:

#include "stdlib.h"
#include "stdio.h"
 
int main()
{
    char str[1000] = {'\0'};
    char c = 0;
    int i = 0;
    int num = 0;
    gets(str);
     
    scanf("%c", &c);
     
    while(str[i] != '\0')
    {
       //number
       if(c >= 'a')
       {
           if((str[i] == c) || (str[i] == c - ('a' - 'A')))
           {
               num++;
           }
       }
        else if(c >= 'A')
        {
            if((str[i] == c) || (str[i] == c + ('a' - 'A')))
            {
                num++;
            }
        }
        else
        {
            if(str[i] == c)
                num++;
        }
        i++;
         
    }
    printf("%d \n", num);
    return 0;
}

从代码看,输入输出有三个地方,分别是第10行和第12行,第39行

第10行,gets(str),采用gets是因为输入数据含有空格,为了处理上的简化,采用了gets,不过这个函数也有自己的弊端,不是强烈推荐的方式,应付机试还是可以采用的,此处的str就是在刚开始就开辟了空间,这个就是根据题目描述的数据范围不大于1000,为了符合极端情况,就采用char str[1000] = {'\0'}来开辟空间了,这样处理省事些

第12行,这个比较简单,就是获取一个字符,采用上面说的第一种情况的方式,直接 scanf("%c", &c)获取就可以了

第39行,此处我的输出函数printf("%d \n", num);中特意加了一个空格和换行符,这个就是提醒大家,在输出时一定要看清楚题中要,特别是输出数据较多的情况下,要针对什么时候加空格,什么时候加换行

实际上scanf比我上面说的要复杂,但基本上能应付机试,祝大家机试都顺利

#机试#
全部评论
应付下,应该够用
点赞 回复
分享
发布于 2022-11-30 20:17 陕西
听我说~谢谢你~
点赞 回复
分享
发布于 2022-12-01 16:11 广西
博乐游戏
校招火热招聘中
官网直投
先马住慢慢看!
点赞 回复
分享
发布于 2022-12-01 16:23 广西

相关推荐

点赞 评论 收藏
转发
8 12 评论
分享
牛客网
牛客企业服务