1樓:匿名使用者
1、字元型(character)資料是不具計算能力的文字資料型別,用char表示。它包括中文字元、英文字元、數字字元和其他ascⅱ字元,其長度(即字元個數)範圍是0-254個字元。
2、字元型變數是用來儲存單字元的一種變數:如:char a='a'; 而字串就是用來保佑多個字元的變數,c語言中用字元陣列來表式一個字串 如:
char name=。字元和字串的區別在於是用雙引號,還是單引號,雙引號表字串,單引號表字元,如:"a"和'a' 第一個是字串,而第二個是字元。
2樓:匿名使用者
字元長度是一位元組 帶符號 範圍也就是-128~127,也就是你定義一個字元變數的時候他的值範圍是這個 注意是變數 而ascii碼是字元常量對定的,就是ascii是一些固定的字元常量對應在計算機中的儲存,比如鍵盤上面的一個輸入鍵 比如你定義char a='a'; 這裡a只是個變數名,他的值是'a',也就是ascii 碼65char a=-'a';這裡a在計算機中的儲存則是-65 就是1(這裡接65的二進位制表示)但是 要是你定義char a='a'+'a';則會報錯 因為a的值超出了127定義 unsigned char a='a'+'a';則是正錯的,因為a的值沒有超出範圍 不知道這樣你理解了嗎
3樓:匿名使用者
有符號char的數值範圍是-128~127,可是字元的ascii碼怎麼會沒有負數的呢?自己編個**看看有沒有吧,將整型(正負)轉換為字元型,我只知道字元值有255個,是什麼字元我就不記得啦!有一些字元時不可列印的,你要知道這個東西。。。。
至於unsigned char ,也編個看看吧,要記住用無符號字元型。
4樓:匿名使用者
ls說的很對,lz告訴你一個容易理解的:int與char通用
c語言問題字元加減操作
5樓:匿名使用者
我沒有給你解答出來 但是我發現了你的程式一個小錯誤自定義函式
void nz(char *s)//將字串逆置}你忽略了改字元陣列個數的奇偶問題了
我的如下稍有改動
void nz(char *s)//將字串逆置}if(l%2==0)
for(i=0;i==j;i++)
}希望對你有所幫助!
6樓:匿名使用者
首先:你的這個程式,沒有處理a==b的情況,這一個需要加上;其次、你的輸出有問題,你的陣列h[max+1]是字元型的,你卻用整形輸出,這顯然是不對的。還有,判斷裡面的迴圈有問題:
h[i]=s[i]+r[i],應該改寫為:h[i]=s[i]+r[i]-'0';還有、滿十進一那最好寫成加一個常數c=1;還有最後一點:最後的輸出應該寫成,printf("%c",h[k-1]);把我說的這些改了就ok了。
我已經改好了,祝你成功!
7樓:水晶扇
nz函式是沒有問題的。
其他的我在除錯中,稍等
第一種方法,按字元進行計算:
#define max 1000
/*1. 大整數加法計算兩個整數m、n的和,0<=m,n<=10的50次方。
輸入輸出格式:本題只有1組輸入資料,每組資料只有1行,每組資料包含兩個0到10的50次方之間的大整數,兩個整數中間用1個空格分隔。
對於每組資料,輸出一行,表示兩個大整數的和。*/void nz(char *s)//將字串逆置}}else if(a'9') //字元判斷》=10的方法是》'9'}}puts("\n");
for(k=((a>b)?a:b);k>=0;k--)}
c語言中關於字串長度的問題
8樓:幻形術
char str; //這是錯誤的,沒有初始化列表時必須指定陣列長度。
char str[10]; //指定了長度為10,不過沒有初始化,所以10個元素值是偽隨機值
char str[10] = ; //指定了長度為10,對每個元素都初始化了
char str[10] = ; //指定了長度為10,顯示初始化了前面幾個元素,後面的元素預設為0
char str = ; //沒有指定長度,但有初始化列表,陣列長度由初始化列表元素個數決定,所以長度是10
9樓:
不,若不在填數字,就必須在初始化這個str,在等號右邊寫具體資料,有幾個資料,編譯器就自動在中填幾了。所以char str這樣寫是錯誤的,要寫成char str=;這樣的形式,編譯器就會認為中是3了。另,char型陣列還可以char str="1234567";這樣來定義,但這時中並不是7而是8,原來編譯器把str作為字串對待了,要在7後自動加一個結束符'\0'。
10樓:戈恆史樂
1.a2.b
3.\034
表示八進位制34所代表的ascii碼字元
4.\\
表示一個\
5.\x79
表示16進位制79所代表的ascii碼字元
所以長度為5
1.a2.\045
ascii碼為八進位制45的字元
3.空格
4.05.4
6.57.\'
表示一個單引號8.b
11樓:璩楚華橋
第1個輸出是8
10。sizeof運算子得到的是陣列的佔用位元組的大小,在定義陣列a的時候沒有指明大小,編譯器根據初始化的內容來決定a的大小,"abcdefg"是個字串,連同表示字串結束的'\0'共有8個字元,1個字元型別佔用1個位元組,所以sizeof(a)是8。在定義陣列b的時候已經指明瞭大小,所以sizeof(b)是10。
第2個輸出是5
20。strlen函式是計算字串的長度,字串以'\0'表示結束,所以strlen在遇到hello後面的'\0'時就會返回。sizeof跟第1個問題一樣。
12樓:
錯誤有兩個!
1.char型的字元變數a只代表一個字元,不能代表一個字串。
2.用scanf輸入字串時,出了個控制符要用%s外,後面的應是個地址。若a是個字元陣列,應該用a,而不是&a。況且用scanf輸入時不能輸入空格。
你可以這樣編:
#include
#include
void main()
visual c++編譯通過,希望能幫助你
13樓:匿名使用者
你的**出現問題的原因是scanf("%s",&a); ,a是一個char型別的變數,系統為它分配了一個位元組的記憶體空間,但是你卻輸入了一個字串到以a的地址為首地址的一段連續的記憶體空間裡,這樣就出現了越界錯誤.但是printf函式並不檢查越界錯誤,它會按正常的方法執行,然後程式統計出長度,列印出來結果.但是返回到呼叫main函式的作業系統後,系統會發現越界錯誤,所以在結果顯示出來後才出錯.
至於你說的輸入5個以下不會出錯,也許是偶然,也許跟你的編譯器有關.我用vs2005測試,只要輸入就會出錯。
如果你是隻想求出輸入的字串的長度而不要求儲存輸入的字串,下面的**更好。你的標準輸入緩衝區有多大,那麼它就可以求出多長的字串的長度,不會有越界。
#include
int main()
14樓:
#include
main() 這樣
15樓:在太平塔笨豬跳的三角楓
#include
main()
編譯通過.
c語言字元陣列與字串問題
16樓:渿河
這是在定義時初始化 如果你的右邊花括號內的字元個數少於【陣列元素個數】 那麼其餘的陣列元素將會初始化為0 , 』\0'的ascii碼的值就是0 ;
如果你不指定陣列元素個數 編譯器會自動幫你計算出元素個數的
17樓:
char c[10]=;這個是已經給定了陣列的大小,達不到陣列大小的長度的話會自動添零的
c語言字元型變數的問題
18樓:匿名使用者
答案是c!第一個選項兩個單引號之間有兩個字元,這樣的寫法是錯的!第二個和第四個是雙引號代表字串,第三個選項賦給他整型97,就是賦給他碼為97的那個字元,所以是對的!
19樓:匿名使用者
正確答案c,
分析:a,絕對錯誤, c只能容納一個字元,'97'這是一種語法錯誤,沒有這種寫法
b,錯誤,c只是一個字元變數,不能容納一個字串指標的地址d,錯誤同b
c,你可以理解為將數值97轉換為ascii對應為97的字元'a'然後賦值給c
20樓:匿名使用者
選a 啊 字元變數的賦值要單引號
21樓:
汗噠噠...
應該是 c
字元在記憶體中的存放方式都是轉變成一個整型數 也就是所謂的ascii碼小寫a的ascii碼值為97 所以你給一個字元型變數一個整型數字 列印時 它就會用ascii碼轉換成相應的字元了
a 為什麼錯了呢? 因為 97 被認為是2個字元 也就是字串 變數c只會接收第一個數字 9
b 字串賦值 錯
d 同b
22樓:跌落的殘片
c每個字元都有個編碼
23樓:匿名使用者
a..給字元型變數賦值
C語言字串問題,C語言字元陣列與字串問題
字串初始化,如果逐個賦值的話,系統不是會自動新增 0 嗎不是。圖一就是長度為4的陣列,圖二長度為5圖三會是新增 0,但是是會把後面所有的都設為 0因為圖一和圖四不以 0結尾,所以不能用strlen和strcmp,會越界 圖四也可以用char str 4 stop 這樣賦值。如果不手動加長度就會是5了...
C語言字元陣列與字串問題,C語言中將字串賦值給字元陣列的問題
渿河 這是在定義時初始化 如果你的右邊花括號內的字元個數少於 陣列元素個數 那麼其餘的陣列元素將會初始化為0 0 的ascii碼的值就是0 如果你不指定陣列元素個數 編譯器會自動幫你計算出元素個數的 char c 10 這個是已經給定了陣列的大小,達不到陣列大小的長度的話會自動添零的 c語言中將字串...
c語言怎麼加密字元,C語言怎麼加密字元
自我程式設計 我沒注意只要小寫,我寫的是大小寫都可以的,另外附送輸入驗證。include include int main else printf 原字串為 s n加密後的字串為 s n str,str2 return 0 c語言本身是不能加密字元的,但你可以寫一個加密程式來加密。為敘述方便,不妨設...