1、下列代码的输出结果是什么
int i;
int main()
{
i--;
if (i > sizeof(i))
{
printf(">n");
}
else
{
printf("
return 0;
}
讲解:
2、求Sn = a + aa + aaa + aaaa + aaaaa的前5项之和,其中a是一个数字,
例如:2 + 22 + 222 + 2222 + 22222
讲解:
这道题的难点就是如何产生a,aa,aaa,aaaa……这样的数字。
我们发现,如果a乘以10在加上a便可以得到下一个数字。起始ret为0,便得到a本身,随后把得到的ret在赋值过去,循环往复,便可以得到前n项数。
最后进行相加得到sum。
3、写一个函数打印arr数组的内容,不使用数组下标,使用指针。arr是一个整形一维数组。
讲解:
运用for循环进行解题,注意题目要求,必须要用指针完成,因此创建int*类型的指针变量p存放arr首元素的地址,然后对地址解引用得到每个元素。
while循环解法
4、求出0~100000之间的所有“水仙花数”并输出。
“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,
如 : 153=1 ^ 3+5 ^ 3+3 ^ 3,则153是一个“水仙花数”。
讲解:“水仙花数”其实是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。本题意思也就是说在0~100000这些数中找到一个n位数abcd...,其a的n次幂+b的n次幂+c的n次幂+...=abcd...这个数自己。
也就是说得到一个数字 i 后,首先我们要先计算 i 这个数有几位数,然后在将 i 这个数的每一位拿出来求 n 次幂,最后将每一位的 n 次幂求和与 i 进行判断,如果相等则为水仙花数,如果不相等,在对下一位数字进行判断。
在这里要引用一个库函数pow(x,y),函数为计算x的y次幂,头文件为
之所以创建t变量来进行操作,是因为在真个for循环中,i是一个不断变化并且用来判断循环是否终止的一个变量,如果在程序内部进行i的变换,程序便会出现bug甚至无法停下循环。最终导致结果错误。
结果如图:
5、写一个函数,可以逆序一个字符串的内容
讲解:
逆序字符串的内容就是对首尾字符进行交换,循环往复。
运行结果:



