• C语言输入多组问题~ungetc回退字符到stdin


    题目描述

    输入数组长度 n 输入数组      a[1...n] 输入查找个数m 输入查找数字b[1...m]   输出 YES or NO  查找有则YES 否则NO 。 
    输入描述:
    输入有多组数据。
    每组输入n,然后输入n个整数,再输入m,然后再输入m个整数(1<=m,n<=100)。
    输出描述:
    如果在n个数组中输出YES否则输出NO。
    输入例子:
    5
    1 5 2 4 3
    3
    2 5 6
    
    输出例子:
    YES
    YES
    NO

    感觉挺简单的, 提交了3次才成功, while(1) 循环出错或者复杂度过大, 谢了个快排算法还是一样,
    使用getchar和ungetc判断结尾EOF才通过,其实直接while(scanf("%d", &n) != EOF就可以了)
    #include <stdio.h>                                                                                                                                                                             
    void find(int a[], int n);                                                                                                                                                                                               
    int main()                                                                                                                                                                                     
    {                                                                                                                                                                                              
        int n, a[100], m, b[100];                                                                                                                                                                  
        char ch;                                                                                                                                                                                   
        while (1)                                                                                                                                                                                  
        {                                                                                                                                                                                          
            scanf("%d", &n);                                                                                                                                                                       
            for (int i = 0; i < n; i++)                                                                                                                                                            
                scanf("%d", &a[i]);                                                                                                                                                                
            scanf("%d", &m);                                                                                                                                                                       
            for (int i = 0; i < m; i++)                                                                                                                                                            
                scanf("%d", &b[i]);                                                                                                                                                                
                                                                                                                                                                                                   
            find(a, n, b, m);                                                                                                                                                                      
            ch = getchar();                                                                                                                                                                        
            ch = getchar();                                                                                                                                                                        
            if (ch == EOF) break;                                                                                                                                                                  
            else ungetc(ch, stdin);                                                                                                                                                                
        }                                                                                                                                                                                          
        return 0;                                                                                                                                                                                  
    } 
    
    int main()                                                                                                                                                                                     
    {                                                                                                                                                                                              
        int n, a[100], m, b[100];                                                                                                                                                                  
        while (scanf("%d", &n) != EOF)                                                                                                                                                             
        {                                                                                                                                                                                          
            for (int i = 0; i < n; i++)                                                                                                                                                            
                scanf("%d", &a[i]);                                                                                                                                                                
            scanf("%d", &m);                                                                                                                                                                       
            for (int i = 0; i < m; i++)                                                                                                                                                            
                scanf("%d", &b[i]);                                                                                                                                                                
                                                                                                                                                                                                   
            find(a, n, b, m);                                                                                                                                                                      
        }                                                                                                                                                                                          
        return 0;                                                                                                                                                                                  
    } 
    

      

      

  • 相关阅读:
    Android手势锁实现
    网页模板pug基本语法
    React入门看这篇就够了
    我曾站在离你最近的天涯
    一文看懂浏览器事件循环
    Vi编辑网卡
    2019.6.11_MySQL进阶二:主键与外键
    2019.6.13_笔试题目及答案
    2019.6.13_MySQL简单命令的使用
    2019.6.13_SQL语句中----删除表数据drop、truncate和delete的用法
  • 原文地址:https://www.cnblogs.com/sanghai/p/6182603.html
Copyright © 2020-2023  润新知