C语言合法标识符 输入一个字符串,判断其是否是C的合法标识符。 输入数据包含多个测试实例,数据的第一行是一个整数n,表示测试实例的个数,然后是n行输入数据,每行是一个长度不超过50的字符串。 对于每组输入数据,输出一行。如果输入数据是C的合法标识符,则输出"yes",否则,输出“no”。 #include<iostream> using?namespace?std; int?main() { ????int?n,k; ????char?a[50]; ????cin>>n; ????getchar(); ????while(n--) ????{ ????????k=0; ????????gets(a); ????????if(a[0]>='0'&&a[0]<='9') ????????????cout<<"no"<<endl; ????????else ????????{ ????????????int?len=strlen(a); ????????????for(int?i=0;i<len;i++) ????????????{ ????????????????if((a[i]>='A'&&a[i]<='Z')||(a[i]>='a'&&a[i]<='z')) ????????????????????k==0; ????????????????else?if(a[i]=='_') ????????????????????k==0; ????????????????else?if(a[i]>='0'&&a[i]<='9') ????????????????????k==0; ????????????????else ????????????????????k++; ????????? ? } ????????????if(k==0) ????????????????cout<<"yes"<<endl; ????????????else ????????????????cout<<"no"<<endl; ????????} ????} ????return?0;
}
PS:C语言合法标识符只能由字母(A~Z,?a~z)、数字(0~9)和下划线(_)组成,并且第一个字符必须是字母或下划线,不能是数字。
Lowest?Common?Multiple?Plus 求n个数的最小公倍数。 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。 为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。 #include<iostream> using?namespace?std; int?main() { ????int?n,i; ????int?a[100]; ????while(cin>>n) ????{
????????__int64?sum=1;???????????????????//??将long?long?用?_int64?进行替换 ????????for(i=0;i<n;i++) ????????{ ????????????cin>>a[i]; ????????????sum=sum*a[i]; ????????} ????????for(int?j=1;j<=sum;j++) ????????{ ????????????int?k=1; ????????????for(i=0;i<n;i++) ????????????{ ????????????????if(j%a[i]!=0) ????????????????{ ????????????????????k=0; ????????????????????break; ????????????????} ????????????????if(k==1) ????????????????{ ????????????????????cout<<j<<endl; ????????????????????break; ????????????????} ????????????}
????} ????return?0; }
PS:在VC6中所使用的编译器是C90标准的,而此?long?long?型是在C99中新加入的(longlong?int双长整型是C?99扩充的数据类型,同时扩充的还有float_complex,double_complex,longlong_complex,bool等),故无法实现编译。
将long?long?用?_int64?进行替换,就可以解决
汉字统计 统计给定文本文件中汉字的个数。 输入文件首先包含一个整数n,表示测试实例的个数,然后是n段文本。 对于每一段文本,输出其中的汉字的个数,每个测试实例的输出占一行。 #include<iostream> using?namespace?std; int?main() { ????int?n,sum; ????char?a[100]; ????cin>>n; ????getchar(); ????while(n--) ????{ ????????sum=0; ????????gets(a); ????????int?len=strlen(a); ????????for(int?i=0;i<len;i++) ????????{ ????????????if(a[i]<0)??????????????????//汉字统计ascii码小于0的个数,一个汉字占两个字节,所以最后要除以2 ????????????sum++; ????????} ????????cout<<sum/2<<endl;??????????? ????} ????return?0; }
PS:在ASCII码中,汉字的条件是小于0,一个汉字占两个字节,所以在相关计算中最后要除以2.
今天又是挑战杭电OJ的一天,虽然也会有令人难以解决的代码题,但是每天都很充实。就这样不断地思索着解题思路,手指也在不断地敲打着键盘,炎炎夏日,与代码为伴。加油,代码人!
|