Ⅰ c語言字元串計算
這就要從字元型數據在內存中的存儲方式來解釋了。在C語言中,實際上字元型數據在內存中是以二進制形式存放的,並不是真正的把一個字元存進內存里。在對字元型數據進行相加減運算的時候,系統會首先會將char型數據以隱形的方式轉化成int型數據再進行相加減運算的。因此,由字元型數據在內存的存儲方式來看,字元型數據是可以進行數值運算的,對字元型數據做數字運算實際上就是對字元本身對應的ASSIC碼進行相應的數值運算。
Ⅱ 如何使用C語言求解最長公共子字元串問題及相關的演算法
假定字元串採用堆分配方式,編寫一個程序,求兩個字元串S和T的一個最長公共子串
本題的思路:
本題要實現的演算法掃描兩個字元串。其中index指出最長公共子串在s中的序號,length指出最長公共子串的長度
堆分配存儲表示如下:
typedef struct{
char *ch;
int length;
}Hstring;
Status MaxComString(Hstring S,Hstring T,int &length){
index=0;
length=0;
i=0;
//令i作為掃描字元串S的指針
while(i<S.length){
j=0;
//令j作為掃描字元串T的指針
while(j<T.length){
if(s.ch[i]==T.ch[j]){
//找一個子串,其在字元串S中的序號為i,長度為length1
length1=i;
for(k=1;S.ch[i+k]==T.ch[j+k];k++)length1++;
if(length1>length){
//將較大長度值賦給index與length
index=i;
length=length1;
}
j=j+length1;//繼續掃描字元串T中第j=length1個字元之後的字元
}else{
j++;
}
}//while
i++;
}//while
printf("最長公共子串:");
for(i=0;i<length;i++)printf("%c",S.ch[index+i]);
return OK;
}
Ⅲ C語言計算字元串長度的幾種方法
加頭文件 string.h 代碼如下:
charstr[]="HelloWorld!";
intlen=strlen(str);
Ⅳ C語言 字元串長度計算
使用strlen函數,包含在頭文件string.h里,功能就是計算字元串s的(unsigned
int型)不包括'\0'在內的長度,我不敢貼代碼,你自己網路下。我一貼網路就抽了,屏蔽我的回答!
Ⅳ c語言字元串長度計算
什麼都不填,把橫線刪除就可以了。for的()中的3個表達式都可以省略,但分號不能省略。這里循環體len++;和()中的前兩個表達式已經構成了完整的測字元串長度功能,所以橫線上沒有必要填了。
Ⅵ c語言字元串運算
#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語言怎麼計算字元串的字元個數
一般有三種辦法可以計算英文字元的個數:
1)使用strlen()函數
2)從首字元開始,邊掃描邊計數,到'\0'為止('\0'不計數)
3)從首字元開始,掃描到'\0'為止,'\0'地址與字元串首地址的差。
Ⅷ c語言中的字元型的運算。
#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() - 1; j >= 0 ; j--)
{
if (a[j] > '0')
{
begin = true;
}
if (begin)
{
cout << a[j];
}
}
cout << endl;
}
簡單模擬即可
10進制測試
Ⅸ c語言字元串長度的計算
用sizeof()來求位元組數時,還要多加一個'\0'的一位元組。因此為8個位元組
而用strlen()求字元串長度時,不理那個'\0',長度為7
你是要怎麼樣的?
書上默認的一般都是不管'\0'的,都是問你長度多大。