使用字符常量需要注意以下几点:
-
字符常量只能用单撇号括起来,不能使用单引号或其他括号。
-
字符常量中只能包括一个字符,不能是字符串。
-
字符常量是区分大小写的。
-
单撇号只是界限符,不属于字符常量中旳一部分,字符常量只能是一个字符,不包括单撇号。
-
单撇号里面可以是数字、字母等C语言字符集中除’和\以外所有可现实的单个字符,但是数字被定义为字符之后则不能参与数值运算。
合法的浮点数有两种表示形式:
-
十进制小数形式。他有数字和小数点组成,必须有小数点。例如(123.)(123.0)(.123)。
-
指数形式。如123e3。字母e(或E)之前必须有数字,e后面的指数必须为整数。
-
规范化的指数形式里面,小数点前面有且只有一位非零的数字。如1.2345e8
不包含continue
2.define 不是关键字 是一种预指令
3.选c
3.
我们由定义可知 pulptr是与pulArray这个数组一个类型的
所以它指针加一 移动指向正好是它的一个元素大小距离
举个例子吧
int*p 整形指针p加一 向后偏移一个整形的大小
puplptr加三指向9解引用得到它的内容 +=3使它的内容发生改变变成12
4.B
D 4或8个字节
5.
B 需要初始数组的大小
6.录入一个字符串并且逆序
这里的str接收数组的首元素地址
目的是逆序字符串
那么把第一位和最后一位交换
第二位与倒数第二位交换
直到交换完即可
7.计算2+22+222+2222+22222
8.打印1到100中所有整数中出现多少个数字9
public class work {
public static void main(String[] args) {
int num = 0;
int count = 0;
for (int i = 1; i <= 100; i++) {
num = i;//把每一次要看的数先备份一下
while (num > 0) {
//检查个位是否为9
if (num % 10 == 9) {
count++;
}
//把个位消除 然后循环上去看是否十位也为9
num /= 10;
}
}
System.out.println(count);
}
}
9.打印乘法口诀表
public class work {
public static void main(String[] args) {
int n=0;
Scanner scanner=new Scanner(System.in);
n=scanner.nextInt();
//遍历每一行
for(int i=1;i<=n;i++){
//每一行打印的列数由行决定
//举个例子 第一行1 则表示只打印一列因此为j<=i控制列数
for(int j=1;j<=i;j++){
System.out.println(i*j);
}
}
}
}
区域
递归与栈空间的关系
我们每一次递归都会第一次通过main时会在栈上开辟内存空间
之后每一次递归调用Fun函数都会往上递加空间
当递归到某一次的时候不再递加的时候开始返回
每返回一次 上面的空间都会销毁
如图每当红色箭头表示返回时 都会销毁占用的空间
当返回完成之后 栈空间又重新被归还回来了
但是注意:
递归不可以无限递归下去
因为当往上增加时 有可能会导致栈空间不够而栈溢出
1.
#include<stdio.h>
//计算字符串的长度
int my_strlen(char* str1)
{
int count = 0;
while (*str1 != '\0')
{
count++;
str1++;
}
return count;
}
int reserve(char* str)
{
char* left = str;
char* right = str + my_strlen(str) - 1;
while (left < right)
{
int temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main()
{
//定义一个字符数组
char arr[] = "abcdef";
reserve(arr);
return 0;
}
方法二用递归的方法
第一步把第一个位置的元素拿出来
第二步把最后一个元素放到最前面
第三步把拿出来的最后一个元素那一个位置放入\0作为中间字符串的结束标志
第四步逆序中间的字符串 递归下去
第五步把拿出来的第一个元素覆盖第三步给\0的位置
递归的要素:
1.找到限制条件
2.不断的靠近这个限制条件
实现n的k次方
注意考虑k<0的情况
当k<0的时候 我们算出来的是小数 因此要用double
我们把这个小数形式转换为正数形式再递归去算
如 2的负1次方等于1/2
好好想想else的那种情况
不创建临时变量求字符串长度
#include<stdio.h>
int my_strlen(char* str)
{
if (*str != '\0')
{
return 1 + my_strlen(str + 1);
}
else
{
return 0;
}
}
int main()
{
char arr[] = "abcdef";
my_strlen(arr);
return 0;
}
用递归写n的阶乘
int fac(int n)
{
if (n<= 1)
{
return 1;
}
else
{
return n * fac(n - 1);
}
}
斐波那契
1.递归
int fabonaqie(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else
{
return fabonaqie(n - 1) + fabonaqie(n - 2);
}
}
2.迭代
int fib(int n)
{
int a = 1;//第一位数
int b = 1;//第二位数
int c = 1;
while (n > 2)
{
c = a + b;
//迭代
a = b;
b = c;
n--;
}
}
把1234的每一位按位输出
递归实现
int leo(int n)
{
if (n > 9)
{
leo(n / 10);
}
else
{
printf("%d", n % 10);
}
}