目录
4 打印菱形
1 知识点
(1)野指针不能正常使用 (野指针有三种类型)
(2)32位系统下,使用的最大内存空间是2^32。(2^32Byte == 2^32/1024KB ==2^32/1024/1024MB==2^32/1024/1024/1024GB == 4GB)64位系统下,使用的最大空间是2^64
(3)指针可以比较大小,指针中存储的是地址,地址可以看成一个数据,因此是可以比较大小的。
(4)两个指针相减,指针必须指向一段连续空间,减完之后的结构代表两个指针之间相差元素的个数。
(5)指针数组,落到数组上面,还是一个数组,数组里面存放的是都是指针。
(6)sizeof不可以在函数内,strlen可以在函数内
(7)在循环体中,尽量不要改变循环变量i ,j ,k 这样的值,否则影响循环。
2 写一个函数,可以逆序一个字符串的内容。
数据范围:1≤len(str)≤10000
代码展示:
#include <stdio.h>
#include <string.h>
int main()
{
char arr[1000] = { 0 };
gets(arr);
char* left = arr;
char* right = arr + strlen(arr) - 1;
while (left < right)
{
char ret = *left;
*left = *right;
*right = ret;
left++;
right--;
}
printf("%s", arr);
return 0;
}
知识点: gets(arr)表示输入一个字符串到数组arr
3 打印水仙花数
求出0~100000之间的所有“水仙花数”并输出。 “水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3,则153是一个“水仙花数”。
代码展示:
#include <stdio.h>
#include <math.h>
int main()
{
int i = 0;
for (i = 0; i <= 100000; i++)
{
int n = 1;
int tmp = i;
while (tmp /= 10)
{
n++;
}
tmp = i;
int sum = 0;
while (tmp)
{
sum = sum + (int)pow(tmp % 10, n);
tmp /= 10;
}
if (sum == i)
{
printf("%d ", i);
}
}
return 0;
}
知识点:(1)pow(a,n)返回值double,注意类型转换 头文件为math,h
注意:(1)在循环体中,尽量不要改变循环变量i ,j ,k 这样的值,否则影响循环,如果需要用的话,可以将循环变量赋给中间值。
(2)while 循环,注意条件,学会尝试应用0为假和其他数为真
4 打印菱形
代码展示:
#include <stdio.h>
int main()
{
int line = 0;
scanf("%d", &line);
int i = 0;
for (i = 0; i < line; i++)
{
int j = 0;
for (j = 0; j < line - 1 - i; j++)
{
printf(" ");
}
for (j = 0; j < 2 * i + 1; j++)
{
printf("*");
}
printf("\n");
}
for (i = 0; i < line - 1; i++)
{
int j = 0;
for (j = 0; j < i + 1; j++)
{
printf(" ");
}
for (j = 0; j < 2 * (line - 2 - i) + 1; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}