字元陣列中包含了長度為n的字串,則該字串首尾字元的陣列下標分別是什麼

2021-03-21 18:34:10 字數 6469 閱讀 8151

1樓:無聲的硝煙

正確答案選c。

根據題目意思,字串的長度為n,則字元陣列的長度為n+1,其中最後一位表示結束標誌'\0'。而一個長度為n+1的陣列,下標從0開始到n,因此第一個和最後一個字元的位置是0和n-1(最後一個不是字元)。

在一個字元陣列中查詢一個指定的字元,若陣列中含有該字元,則輸出該字 符在陣列第一次出現的位置(下標值

2樓:永不止步

#include

#include

#include

int main( )

if(i>=strlen(s))

printf("沒找到\n");

return 0;}

c語言試題: 若一個字串的長度為n,則儲存它的字元陣列的長度至少為_____。

3樓:匿名使用者

【正確答案】n+1

【解析】在c語言中,字串是以『\0』結尾的, 所以如果字串長度為n。也就是有n個字元,那麼加上『\0』就是有 n+1個字元。

望採納~ 有問題再問哦~ o(∩_∩)o

4樓:xz巨集定義

c語言試題: 若一個字串的長度為n,則儲存它的字元陣列的長度至少為_____。

char [3]=;n

5樓:匿名使用者

n+1 如果用少於這個長度的來儲存。。如果是初始化賦值的話會報錯,,如果是用scanf或gets輸入,再輸出的時候由於沒有\0 字串後面會有一些奇奇怪怪的字元

6樓:匿名使用者

n+1字串是以\0結尾的, 所以如果字串長度為n。

也就是有n個字元,那麼加上\0就是有 n+1個字元。

7樓:靚仔

n+1個

字串都是以\0結束的,只有遇到\0他才識別這個字串結束,所以就是n個,在加結束字元\0總共就是n+1個字元長度

8樓:匿名使用者

n+1,n個字元,加一個字串結束標記「\0」

9樓:匿名使用者

至少為 n +1,應為後邊還有一個 『/0『

10樓:匿名使用者

n+1,n個字元最後加一個'\0'

11樓:匿名使用者

n+1 ,還有一個結束符。

12樓:t上1官6雲1天

n+1因為最後的/0也佔一個

5. 下面程式的功能是在一個字元陣列中查詢一個指定的字元,若陣列中含有該字元則輸出該字元在陣列中第一次

13樓:虞明明

#include

main()

程式執行結果如下:

input a string:12345abcdeposition is : 5 //輸出a的下標5再次執行程式:

input a string:12345

position is : -1 //由於沒有a,所以輸出-1

假定一個字串的長度為n,則定義儲存該字串的字元陣列的長度至少為

14樓:

xiongwei630003 兄弟講錯了!

正確答案是:n+1

原因:字串是以'\0'結尾的, 所以如果字串長度為n,也就是有n個字元,那麼加上'\0'就是有 n+1 個字元。故定義陣列大小時候至少需要 n+1 位元組大小的記憶體空間。

即:char string[n+1];

15樓:匿名使用者

char a[n];

包含的字元下標就是a[0]a[1]..a[n-1]一共n個字元,後面系統給你的字串加一個『\0』

16樓:完顏雪市子

【正確答案】n+1

【解析】在c語言中,字串是以『\0』結尾的,所以如果字串長度為n。也就是有n個字元,那麼加上『\0』就是有n+1個字元。

望採納~

有問題再問哦~

o(∩_∩)o

c語言陣列,從鍵盤輸入一字串,編一函式,其功能是將字串下標為偶數的字串構成一新串。

17樓:戀v天真

#include

#include //為strlen()函式提供原型int main()

}printf("輸入的字串為: ");

puts(str);

printf("新的的字串為: ");

for(i=0;i

return 0;}

c語言中關於字元陣列的長度問題

18樓:匿名使用者

r=;這是個字元陣列,系統只為它分配了3個位元組的空間,但是strlen只有遇到'\0'才會返回

,於是它會向後繼續進行,直到有'\0',這其實是越界(或許沒有,可能訪問的是q[10])了.

你可以這樣

printf("%s\n", r);來檢視下列印的資訊。

在我的上面(tc)是

3 3 3 9

19樓:

哎。strlen()是在string.h裡面的,getch()是在conio.h裡面的,

不過,我用的是cfree,至於其它的編譯器,我就不知道了。

至於你的問題,當你仔細看看他們的結果,你就會有結論了。

很明顯,strlen(q)的值是一樣的,不同的是p的字元長度

而它們的區別,就在於,它們一個有陣列的長度,另一個沒有。

陣列q,它的長度是10,所以一開始就會分配10個大小為sizeof(char)的空間,然後,就把a,b,c分別放進從分配的第一個,第二個,第三個空間裡面,然後,剩下的變為0()也就是'\0'。

所以用strlen(q)的時候,就是3

而沒有長度的p,它預設了長度,所以系統就會按你給的元素個數分配,這裡p有3個元素,所以就分配3個大小為sizeof(char)的空間,當你用strlen(p)的時候,因為strlen()是以字串終結符'\0'來判定字串長度的,所以呢,strlen(p)是一個不確定值。

如果你還沒能理解為什麼是一個不確定值,那就繼續看下去。

在c中,是不會檢測是否越界的,你可以順著陣列一直訪問下去,比如你定義一個 int a[10]

你可以訪問a[12],a[13](當然也可以訪問a[-1],a[-100]),只是這些值是不確定的。它訪問的方式,是從陣列的起始地址開始,按照陣列下標值,進行相對位移(它們所跳過的長度是陣列型別的長度,比如上面,是跳過sizeof(int)的長度)。

而strlen()就是從它首地址開始,一個個開始檢測,是否達到'\0『,然後返回長度值。

當你呼叫strlen()的時候,如果沒有終止符'\0』,它就會越界檢查,直到找到'\0『。

就像 char a[3]=,它也是一個不確定值。

明白了沒,不懂繼續追問。

寫這麼多,真的好累。。。

20樓:匿名使用者

這。。。

我的結果是15 3

因為字串p沒有結尾符\0

因此結果不定,和原來的儲存的資料有關

如圖,是除錯結果,可以看到,p後面是亂碼

21樓:匿名使用者

前兩個明顯是3、3

因為 strlen 求的是字串長度,遇到 '\0',就結束,字串 "abc" 的長度就是3

後兩個都沒有賦值 '\0' ,因此不確定長度,可以是比3大的任何數

22樓:思人思國

// baidu.cpp : 定義控制檯應用程式的入口點。

//#include "stdafx.h"

#include "iostream"

#include "fstream"

using namespace std;

int _tmain(int argc, _tchar* argv)

,q[10]=;

printf("%d %d\n",strlen(p),strlen(q));

//while(p[i]!='\0')

//{// cout<照你說的我也測試過了,我用vs2008平臺輸出的是12 3.。

首先可以看一下strlen()這個function,他是測試字串的實際長度,現在我們是用字元陣列當作字串用,也就是把字元陣列的首指標當做字串的首指標,但是在不同平臺中字串的長度在一定的範圍內是給定的,因為對於處理變長的字串還是比較難的。所以測試的時候出現了這樣的情況。你按照這個理解就好。

我另外測試了,像這種的情況,一般在vs2008中是實際長度+9,所以我測出來的是12。

23樓:匿名使用者

我在 linux下列印為 6, 3;

在因為在 p 的最後沒有加上 '\0', 所以 strlen(p)時會把 q中的字元也算上.

你試著把 q中的 a,b,c 改為 d,e,f , 然後再 printf(p), 此時列印就為 abcdef.

把 char p=, q[10]=; 即可.

或者不要那麼費力,直接寫為

char p = "abc" ; // 它會在後面加 '\0'; 此時sizeof(p) 為 4 ;

char q[10] ="def" ;

結果就是你想要的.

24樓:匿名使用者

p[10]是有10個字元的陣列,

"abc"就是一個字串,長度為三個字元。所以strlen(p)=3s是不固定長度的陣列,「abc」這個字串雖然只是陣列的一個長度,但佔據三個字元的空間

是陣列的三個值,陣列長度為3,但總字元數是3q[10]固定陣列長度所以三個值儲存時每個字元佔據一個位r不固定長度所以每個值佔據兩個位,最後還要關閉一個位,所以就是7

25樓:匿名使用者

strlen用來計算字串的,直到碰到第一個字串結束符'\0'為止,在你的陣列p中,你沒有給定陣列長度,由於有3個字元,所以實際長度為3,但是由於沒有'\0'結束,所以根據strlen的工作原理,你還是得不出它的實際長度,所以出現了未定義的結果。你可以用sizeof操作符。而q陣列的長度為10,但是隻存入了3個值,其它的元素都是\0,因此用strlen可以計算出它的實際長度。

如果你將p找長度設為4,你會發現可以得出正確的結果!

26樓:匿名使用者

不對吧,最後一個會報錯的,strlen(r),r根本沒有『\0'結束符

有一字串,包含n個字元。寫一函式,將此字串中從第m個字元開始的全部字元複製成為另一個字串 5

27樓:凌亂心扉

#include

using namespace std;

int main()

else

return 0;

}void copy1(char*str1,char*str2,int m)

while(*str1!='\0')

*str2='\0';

}include用法:

#include命令預處理命令的一種,預處理命令可以將別的源**內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程式**;可以定義類似識別符號功能的巨集,在編譯時,前處理器會用別的文字取代該巨集。

插入標頭檔案的內容

#include命令告訴前處理器將指定標頭檔案的內容插入到前處理器命令的相應位置。有兩種方式可以指定插入標頭檔案:

1、#include《檔名》

2、#include"檔名"

如果需要包含標準庫標頭檔案或者實現版本所提供的標頭檔案,應該使用第一種格式。如下例所示:

#include//一些數學函式的原型,以及相關的型別和巨集

如果需要包含針對程式所開發的原始檔,則應該使用第二種格式。

採用#include命令所插入的檔案,通常副檔名是.h,檔案包括函式原型、巨集定義和型別定義。只要使用#include命令,這些定義就可被任何原始檔使用。如下例所示:

#include"myproject.h"//用在當前專案中的函式原型、型別定義和巨集

你可以在#include命令中使用巨集。如果使用巨集,該巨集的取代結果必須確保生成正確的#include命令。例1展示了這樣的#include命令。

【例1】在#include命令中的巨集

#ifdef _debug_

#define my_header"myproject_dbg.h"

#else

#define my_header"myproject.h"

#endif

#include my_header

當上述程式**進入預處理時,如果_debug_巨集已被定義,那麼前處理器會插入myproject_dbg.h的內容;如果還沒定義,則插入myproject.h的內容。

字元通常被視為長度為1的字串

不相等。容量不同 字元常量只能是單個字元,字串常量則可以含一個或多個字元。佔用記憶體空間大小不同 字元常量佔一個位元組的記憶體空間,字串常量佔的記憶體位元組數等於字串中位元組數加1。增加的一個位元組用來存放字元 0 作為字串的結束標誌。不是。輸出僅由0和1組成的長度為n的字串,並且其中不可含有三個連...

asp程式裡如何判斷字串中存在包含了另一

1.判斷是否包含某某字元函式是 instr 和instrrev 2.具體使用如下 你可以用instr 或者instrrev 來判斷if instr ab,a 0 then或if instrrev ab,a 0 then有else 無3.具體 如下 dim ly request ly if instr...

如何提取字串中的字元為新的變數

c語言字元處理把一個字串中指定字元賦值給另一字串可以使用substr函式提取子串。基本使用方法 substr 原字串,起始位置,提取字元個數 例如輸入一段文字 一隻小狐狸拒絕被人圈養 str1把小狐狸複製給另一字串str2substr str1,5,6 怎樣獲取某字串中的部分字串,作為變數 用sub...