C语言基础篇二

1.求一个数字的二进制中1的个数

#include<stdio.h>
int NumberOfOne(int n)
{
int count=0;
while (n!=0);
{
n=n&(n-1);//重点在运用&运算
count++;
}
return count;
}
void main()
{int s;
 s=NumberOfOne(-1);
 printf("%d\n",s);
 return ;
}

2.求一个数字是几位数?

int NumCount(int n)
{
int count =0;
while(n!=0)
{
	count++;
	n/=10;//n与10的商作为n的新值
}
return count;
}

1>顺序打印数字

void PrintOrder(int n)
{
	if(n==0)
     {
      printf("0");
      return;
     }
    if(n<0)
    {
     printf("-");
     n=-n;
    }
int figures=NumCount(n);
int power=(int)pow((float)10,(float)(figures-1));//pow(x,y),其作用是计算x的y次方。x,y不能同时为int型。
int tmp=0;
while(power!=0)
{
tmp=n/power;
printf("%d ",tmp);
n=n%power;
power=power/10;
}
}

2>逆序输出

void PrintRever(int n)
{
	if(n==0)
     {
      printf("0");
      return;
     }
    if(n<0)
    {
     printf("-");
     n=-n;
    }
int tmp=0;
while(n!=0)
{
tmp=n%10;
printf("%d ",tmp);
n=n/10;
}
}

3.斐波那契数列

int Fabonacci(int n)
{
int f1=1;
int f2=1;
int f3=1;
for(int i=3;i<=n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
}
return f3;
}

4.break语句和continue语句
说明:
break:使程序跳出它所在的循环结构,转向执行该循环结构后面的语句。(break语句只能跳出它所在的那一层循环,即在多层循环中,break语句只向外跳一层,而不能一下跳出最外层。)
continue: 该语句的功能是使本次循环提前结束,即跳出循环中continue语句后面尚未执行的循环体语句,继续执行下一次循环的条件判别。
continue语句与break语句的区别是,continue语句只结束本次循环,而不是终止整个循环的执行,break语句则是结束整个循环结构,不再判断循环条件是否成立。
5.数组
1>数组的定义
例如:int a[10]; 声明一个整型数组a,该数组由10个元素组成,其中每个元素都属于整型数据类型。数组a的各个数据元素依次是a[0],a[1],…,a[9]。
2>关于数组类型变量的声明:
(1)数组名的书写规则应符合标识符命名规则。
(2)数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
(3)数组名不能与其他变量名相同。
(4)方括号中的常量表达式表示数组元素的个数,其下标从0开始计算。例如a[4]表示数组a有4个元素,分别为a[0],a[1],a[2],a[3]。
(5)不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。
例如:
#define LEN 5
main()
{
int s[3+2],t[3+LEN];//数组声明是合法的
}

main()
{
int len=5;
int s[len];//数组声明的方式是错误的
}
(6)允许在同一个类型声明中同时声明多个数组和多个变量。
例如:
int a,s,d,p[10],c[20];
(7)c语言还规定,数组名是数组的首地址,即a=&a[0]。
3>一维数组的初始化
数组初始化赋值是指在数组定义时给数组元素赋予初值。
有两种方法:1.先定义数组,再用赋值语句或输入语句给数组中的元素赋值。
2.在定义数组的同时为数组元素设置初始值。
C语言对数组的初始化赋值还有以下几点规定:
(1)可以只给部分元素赋初值(只给前面部分元素赋值,剩下的元素自动赋值为0)
(2)只能给数组元素逐个赋值,不能给数组整体赋值
(3)当对全部元素赋初值时,可以不指定数组长度,c编译系统自动根据初值个数来决定数组长度。
例如:
int a[]={1,2,3,4,5};//系统自动确定数组长度是5
(4)整型数组在未赋值时,其数组元素的值是不确定的
例如:如果不进行初始化定义int a[5],那么数组a中各个元素的值是随机的,而不是默认值为0。
4>数组元素的引用
(1)“下标表达式”可以是整型常量,也可以使用变量。取值范围是0至(元素个数-1)
注意:在引用数组元素时,下标不能越界。
(2)在C语言中,数组作为一个整体,不能参加数据运算,只能对单个元素进行处理。
5>数组存放在哪个位置? 栈
6>数组什么时候确定大小? 编译
7>什么时候给数组分配内存? 运行
8>最多分配多大内存? 1M-2M
9>数组越界的原理是什么?
数组越界
由于栈是受保护的,一旦访问下标为5(或比5大)的元素,就会踩雷,系统就会崩溃,因此要特别注意!!

猜你喜欢

转载自blog.csdn.net/qq_43313035/article/details/83099535