1.水仙花数
描述:千以内的三位数中,有个位的三次方+十位的三次方+百位的三次方=这个三位数的数就是水仙花数
代码如下
int i=100;
do{
int a=i/100;
int b=i%10;
int c=(i/10)%10;
int sum=a*a*a + b*b*b + c*c*c;
if(i==sum){
cout << sum <<endl;
}
i++;
} while(i<1000);
2.break,continue,goto
break:是跳过当前的整个循环
continue:只是跳过当前循环的一条循环
goto:跳转到指定的位置
代码如下:
//break跳转语句
for(int i=0;i<10;i++){
if(i<8){
cout << i << " ";
}else{
break;
}
}
//运行结果:0 1 2 3 4 5 6 7
//continue
for(int i=0;i<10;i++){
if(i%2){
cout << i << " ";
}else{
continue;
}
}
运行结果:1 3 5 7 9
//goto
cout << "1.*****"<< endl;
goto FLAG;
cout << "2.*****"<< endl;
cout << "3.*****"<< endl;
FLAG:
cout << "4.*****"<< endl;
cout << "5.*****"<< endl;
运行结果:1.***** 4.***** 5.*****
数组
冒泡排序:
第一遍过后就会找到最大的数在最后的位置
第二次时又从第一位开始寻找第二大的数,放在length-2的位置,以此类推,完成排序的整个过程:代码如下
int arr[10]={22,4,59,7,8,1,2,90,56,12};
for(int i=0;i<9;i++){
for(int j=0;j<10-i-1;j++){
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(int j=0;j<10;j++){
cout << arr[j] << endl;
}
notes:
1.数字名表示的是数组的首地址
2.求数组的长度时可以用sizeof(arr)/sizeof(arr[0])这个方法
3.函数与指针
空指针:指针变量指向内存编号为0
野指针:指向非法的运行空间
值传递与地址传递
值传递:仅仅只是在函数中交换了值,但他们的地址并没有发生改变。
代码如下:
//值传递
int n1=3,n2=5;
cout << n1 << " ";
cout << n2 << endl;
swap(n1,n2);
cout << n1 << " ";
cout << n2 << endl;
//运行结果:3 5 5 3
地址传递:在传参数时是将参数的地址传给形参,所以最后操作时,改变的是地址,最终结果会改变
代码如下:
//地址传递
int a=1,b=2;
swap02(&a,&b);
cout << "a:"<<a <<endl;
cout << "b:"<<b << endl;
运行结果:swap02中a:2 swap02中b:1 a:2 b:1
常数指针:指针指向的常量不能发生改变,但是指针的指向可以发生改变
const int * p=&a;
* p=30;//错误
p=&b; //正确
指针常量:指针指向的数字可以发生改变,但指针的指向不可以发生变化
int * const p=&a;
p=&b;//错误
*p=30; //正确
4结构体
结构体指针:
当访问属性时用->来访问
//结构体指针
struct Student s={"李四",20,99};
struct Student * p = &s;//让p指向s的地址
//访问属性时 用->来访问
cout << "姓名:"<< p->name << "年龄:"<< p->age << "成绩:"<< p->scores <<endl;
结构体嵌套结构体:
注意的是,被嵌套的结构体是被调用者,所以一定要写在当前结构体之前。否则会出错。
未更新完。。