杭电2028-2032总结

来源:互联网 发布:数据库怎么学习 编辑:程序博客网 时间:2024/04/29 02:52

本次练习是c语言程序设计练习的最后一套。

2028:本题的核心是编写一个求最大公约数的函数(利用欧几里得算法),求得了两个数的最大公约数,就可以求得两个数的最小公倍数。

多个数的最小公倍数,利用如下原理求得,求a1,a2...an 的最小公倍数,令N是 a1,a2...an-1 的最小公倍数,则要求的最小公倍数是N与an的最小公倍数。

2029:本题是验证字符串是否回文,不需要遍历整个字符串,只需要在strlen(s)/2 之前验证就可以了。

循环如下:while ( j < strlen(s) / 2 && s[ j ] != s[ strlen( s ) - 1 - j ] )  j++;

当跳出循环后,判断 j 的值,如果 j 等于strlen(s)/2 ,则在strlen(s)/2 之前的字符都是满足回文的条件的,所以可以断定该字符串是回文的。如果 j 的值不是 strlen(s)/2 ,则在strlen(s)/2 前就有字符不满足回文的条件了,所以可以断定该字符串不是回文的。

2030:一个汉字需要两个字节来表示,而且是两个复数来表示。因为除了汉字,没有字符对应的整数值是负数的,所以字符串中的负数一定是偶数个的,而且是两个相邻成对出现的。本题的本质就是遍历字符串,求出负整数的个数,然后除以2求得汉字的个数。

2031:简单的进制转换。对于负数,先把它转化成它的相反数,然后用一个布尔变量记录它的符号。如果是负数,就在输出的时候多输出一个负号,这样就把问题转化成只需要处理整数了。用一个整型数组记录转换后的整数值,在用一个字符串 "0123456789ABCDEF" ,对应每个整数值的输出。

2032:用二维数组。

 

原创粉丝点击