习题笔记 钱能 第3章节

目录

EX0301  //整数的二进制位码和F数的位码求法不一样,F数要先转换,把F数的地址转为int型的地址

EX0302//  sizeof 返回字节数  vector.size()返回装的数  vector.capacity()返回总的大小数

EX0303 // 遍历器遍历和普通遍历vector     vector的赋值  计算均方差的快速方法         整型变量的优化 

EX0304   //cin遇到enter space tab 终止,getline+istringstream适合一行未知的

EX0305  // 这个完全不知道怎么写,string可以类似数组一样使用

EX0306    遍历数组的五种方法  指针可以写成数组,数组也可理解为指针,str也可以为数组 

EX0307   指针和引用的区别


 

EX0301  //整数的二进制位码和F数的位码求法不一样,F数要先转换,把F数的地址转为int型的地址

#include<iostream>
using namespace std;
int main()
{
    float f=-1234567.0f;
    int* pa =(int*)&f;
    for(int i=31;i>=0;i--)
    { 

   cout<<(*pa>>i&1)<<(i==31||i==23 ? "-":"");
    
    }
    cout<<endl;
    for(int i=31;i>=0;i--)
    {    

cout<<(*pa>>i&1)<<(i==31||i==23 ? "-":"");

    }

    system("pause");
}

EX0302//  sizeof 返回字节数  vector.size()返回装的数  vector.capacity()返回总的大小数


#include<iostream>
using namespace std;
int main()
{
int a;
long int b;
char c;
float d;
int x;
cout<<"int :"<<sizeof(a)<<" byte"<<sizeof(a)*8<<" bits"<<endl;//对sizeof有正确的认识,其返回值是什么~开始时企图通过指针进行求解,暂无法得到
cout<<"int :"<<&b<<"byte"<<&a<<"bits"<<endl;
cout<<"int :"<<&c<<"byte"<<&a<<"bits"<<endl;
cout<<"int :"<<&d<<"byte"<<&a<<"bits"<<endl;
system("pause");

}

EX0303 // 遍历器遍历和普通遍历vector     vector的赋值  计算均方差的快速方法         整型变量的优化 

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;

int main()
{

    const int vector_size=10;
    int arr1[]={6,3,7,2,9,1,4,8,11,5};
    vector<int> arr2(arr1,arr1+vector_size);              //1.这一步的赋值,注意是(a.b) 共计b-a个数  2.用数组和用向量给向量赋值不同,数组是没有 arr1.begin() 这种东西的
    float aim_num,ave,temp=0;
     vector<int>::iterator it;                                           //遍历器的初次使用
    for(it = arr2.begin();it!=arr2.end();it++)                       //遍历器实现遍历,中断条件为什么是这样我不懂,就像上一个红字一样
        temp=temp+(*it);     
           cout<<"和为 "<<temp<<endl;      // 取到累积和
    ave=temp /vector_size;
    temp=0;
    for(it=arr2.begin();it!=arr2.end();++it)
        temp=temp+pow(((*it)-ave),2);    ;       //取到累计平方和
         aim_num=pow(temp/vector_size,0.5);                //这里 的pow如果幂写成1/2,取得是0次,故结果为1    
         cout<<aim_num<<endl;
         system("pause");
}

EX0304   //cin遇到enter space tab 终止,getline+istringstream适合一行未知的

/*=========================================
EX0304
=============================================*/

#include<iostream>
#include<string>
#include<fstream>
#include<algorithm>
using namespace std;

int main()
{
    int num_25=0;
    ifstream tin("abc.txt");
    string str;

    while(getline(tin,str))
    {
        if(str.find(". 25")!=-1)  
        { 
        num_25+=1;if(str.find('*')!=-1)  num_25+=1;

        }
    }
    cout<<"day is "<<num_25<<endl;
    system("pause");

}//使用了文件的输入输出流以及sring的函数,输入输出及getline的使用不熟练   abc。txt文件的存储位置放错耽误了很多时间

EX0305  // 这个完全不知道怎么写,string可以类似数组一样使用

/*============================================
EX0305 加密哈哈哈哈 interesting
================================================*/

#include<iostream>
#include<string>
using namespace std;
const char key[]="4962873";
string encode(string str)

{
string result(str);
for(int i=0;i<str.length();i++)
    {
        result[i]=result[i]+(key[i%7]);
        if (result[i]>'z') result[i]-=91;

     }
  return result;
}
int main()
{char ch;
    string str,temp;
const int max_size=100;    
cout<<"输入:"<<endl;
getline(cin,str);
   temp=encode(str);
   cout<<temp<<endl;

 system("pause");                       //  1.string型可以像数组一样操作 2.encode函数七位编码的变换

}

EX0306    遍历数组的五种方法  指针可以写成数组,数组也可理解为指针,str也可以为数组 

/*===============================================
EX0306
=========================================*/
#include<iostream>
using namespace std;

int main()
{
    int sum[5]={0};
    int iArray[]={1,4,2,7,13,32,21,48,16,30};
    int size =sizeof(iArray)/sizeof(*iArray);
    int *iPtr=iArray;
    for(int n=0;n<size;++n)
        sum[3]+=iPtr[n];          //累加和
    for(int n=0;n<size;++n)
        sum[2]+=*(iPtr+n);               //累加和
    for(int n=0;n<size;++n)
        sum[1]+=*iPtr++;                       //累加和
    for(int n=0;n<size;++n)
        sum[0]+=iArray[n];                 //累加和 
    for(int n=0;n<size;++n)
        sum[4]+=*(iArray+n);              //
    for(int i=0;i<5;++i)
        cout<<sum[i]<<endl;
    system("pause");


}


EX0307   指针和引用的区别

#include<iostream>
using namespace std;

void MYswap(int *a,int *b);

int main()
{
    int a=16,b=48;
    cout<<"a: "<<a<<",b: "<<b<<endl;
    MYswap(&a,&b);
    cout<<"after being swapped :  \n";

    cout<<"a: "<<a<<",b: "<<b<<endl;

}
void MYswap(int *a,int *b)
{
int temp=*a;
*a=*b;*b=temp;

}

猜你喜欢

转载自blog.csdn.net/mrlixuec/article/details/86770921