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
abcdefg(max)fedcba x(max)x(max)x(max)x(max)x(max)