2011年8月30日

不开辟用于交换数据的临时空间,如何完成字符串的逆序

摘要: //不开辟用于交换数据的临时空间,如何完成字符串的逆序(在技术一轮面试中,有些面试官会这样问)#include "stdafx.h"void change(char *str) { for(int i=0,j=strlen(str)-1; i<j; i++, j--){ str[i] ^= str[j] ^= str[i] ^= str[j];//等价于str[i] ^= str[j];str[j] ^= str[i];str[i] ^= str[j];str[i] += str[j];str[j] = str[i]-str[j];str[i] = str[i]-st 阅读全文

posted @ 2011-08-30 17:22 原来... 阅读(1569) 评论(0) 推荐(1)

深入理解按位异或运算符

摘要: 深入理解按位异或运算符参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。即: 0^0 = 0, 1^0 = 1, 0^1 = 1, 1^1 = 0按位异或的3个特点:(1) 0^0=0,0^1=1 0异或任何数=任何数(2) 1^0=1,1^1=0 1异或任何数-任何数取反(3) 任何数异或自己=把自己置0按位异或的几个常见用途:(1) 使某些特定的位翻转 例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。 10100001^00000110 = 10100111(2) 实现两个值的交换,而不必使用临时变量。 例如交换两... 阅读全文

posted @ 2011-08-30 17:20 原来... 阅读(38904) 评论(0) 推荐(11)

删除串中指定的字符

摘要: #include<iostream>using namespace std;int main(){int i,j,k;char s[]="asdfgd";cout<<"输入一个你想删除的字符:"<<endl;char c;cin>>c;k=0;for(i=0;s[i];i++){if(s[i]!=c){s[k++]=s[i];}}s[k]='\0';cout<<s<<endl;} 阅读全文

posted @ 2011-08-30 16:36 原来... 阅读(455) 评论(0) 推荐(0)

实现N*N矩阵的乘法,矩阵有一维数组表示

摘要: 下面是一个实现3*3维数组的乘法!#include<iostream>#include<vector>using namespace std;int k=0;vector<int> c;void array(int a[],int n,int b[]){for(int i=0;i<n*n;){for(int j=0;j<n;j++){k=a[i]*b[j]+a[i+1]*b[j+3]+a[i+2]*b[j+6];c.push_back(k);} i=i+n;}for(int m=0;m<n*n;m++)cout<<c[m]< 阅读全文

posted @ 2011-08-30 08:49 原来... 阅读(757) 评论(0) 推荐(0)

导航