首页 > 其他分享 >HDUOJ 2000-2100

HDUOJ 2000-2100

时间:2023-02-21 19:44:30浏览次数:73  
标签:字符 max 字母 HDUOJ 2000 && 字符串 2100 输入

2024C语言合法标识符 Problem Description 输入一个字符串,判断其是否是C的合法标识符。   Input 输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。   Output 对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。   Sample Input 3 12ajf fi8x_a ff  ai_2   Sample Output no yes no

是否何发法的判断标准:如果每个字符数组的第一个字符为非字母或非下划线,则字符串不合法;如果整个字符数组中存在不是字母、数字、下划线的字符,则字符串不合法;

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    int i,j;
    int flag;
    char a[101];
    scanf("%d",&n);
    getchar();
    for(j=0;j<n;j++)
    {
        gets(a);
        if((a[0]>='a'&&a[0]<='z')||(a[0]>='A'&&a[0]<='Z')||(a[0]=='_'))
        {
            flag=1;
            for(i=1;a[i]!='\0';i++)
            {
                if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')||(a[i]=='_')||(a[i]>='0'&&a[i]<='9'))
                {
                    flag=1;
                }
                else
                {
                    flag=0;
                    break;
                }
            }
        }
        else flag=0;
        if(flag==0) printf("no\n");
        if(flag==1) printf("yes\n");
    }
}

语法:

①输入n,并用getchar()清空缓存区,建立循环,控制测试次数

在scanf输入n后,回车也被放到了缓冲区,但是scanf读取了回车之前的内容,却把回车符号留在了缓冲区,这就造成缓冲区是有东西的,因而后面的gets(a)直接读取了这个回车符。

 

     把第九行的getchar()注释后运行,得到如下,发现回车被当成了一次输入的字符串,并返回了no

②用gets()给字符数组赋值,用scanf会忽略空格字符。

 https://blog.csdn.net/qq_63519366/article/details/125897779

https://www.jianshu.com/p/415250a15054


 2025查找最大元素

Problem Description

 

对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。  

 

Input

 

输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。

 

  Output

 

对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。

 

  Sample Input

 

abcdefgfedcba xxxxx

 

 


Sample Output

 

abcdefg(max)fedcba x(max)x(max)x(max)x(max)x(max)



标签:字符,max,字母,HDUOJ,2000,&&,字符串,2100,输入
From: https://www.cnblogs.com/elegantcloud/p/17142110.html

相关文章