C语言字符串运算!

Python012

C语言字符串运算!,第1张

#include <iostream>

#include <string>

#include <algorithm>

using namespace std

void k_add(string a, string b, int k)

{

//将长的字符放在前面

if (a.size() <b.size())

{

string temp = a

a = b

b = temp

}

//对源字符串进行翻转

reverse(a.begin(), a.end())

reverse(b.begin(), b.end())

bool carry = false//进位

//字符串相加

size_t i = 0

for (i <b.size()i++)

{

if (i <b.size())

{

a[i] += b[i] - '0'

if (carry) a[i] += 1

carry = false

if (a[i] >= k + '0')

{

a[i] -= k

carry = true

}

}

}

for (i <a.size()i++)

{

if (carry) a[i] += 1

carry = false

if (a[i] >= k + '0')

{

a[i] -= k

carry = true

}

}

if (carry)

{

a.push_back('1')

}

//输出

bool begin = false

for (int j = a.size() - 1j >= 0 j--)

{

if (a[j] >'0')

{

begin = true

}

if (begin)

{

cout <<a[j]

}

}

cout <<endl

}

简单模拟即可

3进制测试

10进制测试

#include<stdio.h>

#include<stdlib.h>

int main()

{

int i,len,ok

char str[1024]={'\0'}

do

{

ok=1

printf("请输入一个字符串:\n")

gets(str)

i=0

while('\0'!=str[i])

{

if(!isalpha(str[i]))

{

ok=0

break

}

i++

}

}while(!ok)

len=strlen(str)

printf("字符串\"%s\"的长度是%d。\n",str,len)

//printf("字符串\"%s\"包含了以下元音字母:\n",str)

printf("字符串未进行元音字母循环加密(加密规则a->e->i->o->u->a)前是:\n%s。\n",str)

i=0

while('\0'!=str[i])

{

if('a'==str[i])

{

str[i]='e'

}

else if('e'==str[i])

{

str[i]='i'

}

else if('i'==str[i])

{

str[i]='o'

}

else if('o'==str[i])

{

str[i]='u'

}

else if('u'==str[i])

{

str[i]='a'

}

i++

}

printf("字符串进行元音字母循环加密(加密规则a->e->i->o->u->a)后是:\n%s。\n",str)

system("PAUSE")

return EXIT_SUCCESS

}

这就要从字符型数据在内存中的存储方式来解释了。在C语言中,实际上字符型数据在内存中是以二进制形式存放的,并不是真正的把一个字符存进内存里。在对字符型数据进行相加减运算的时候,系统会首先会将char型数据以隐形的方式转化成int型数据再进行相加减运算的。因此,由字符型数据在内存的存储方式来看,字符型数据是可以进行数值运算的,对字符型数据做数字运算实际上就是对字符本身对应的ASSIC码进行相应的数值运算。