程序運(yùn)行后的輸出結(jié)果是()
int main() {
int a[3][3], *p, i;
p = &a[0][0];
for(i = 0; i < 9; i++) p[i] = i;
for(i = 0; i < 3; i++) printf("%d ", a[1][i]);
}
解析:
程序運(yùn)行后的輸出結(jié)果將是數(shù)組?a
?的第二行元素的值。讓我們逐步分析這個(gè)程序:
聲明了一個(gè) 3x3 的整型數(shù)組?a
,一個(gè)整型指針?p
,和一個(gè)整型變量?i
。
將指針?p
?指向數(shù)組?a
?的第一個(gè)元素,即?a[0][0]
。
使用一個(gè)循環(huán),通過(guò)指針?p
?為數(shù)組?a
?的所有元素賦值,從 0 到 8。數(shù)組?a
?將會(huì)是這樣的:
a[0][0] = 0, a[0][1] = 1, a[0][2] = 2, | |
a[1][0] = 3, a[1][1] = 4, a[1][2] = 5, | |
a[2][0] = 6, a[2][1] = 7, a[2][2] = 8 |
第二個(gè)循環(huán)遍歷數(shù)組?a
?的第二行,即?a[1][i]
,并打印每個(gè)元素。
所以,程序?qū)⒋蛴〉诙械娜齻€(gè)元素:3, 4, 5。
完整的輸出結(jié)果是:復(fù)制代碼
3 4 5 |
2.以下程序段中,不能正確賦字符串(編譯時(shí)系統(tǒng)會(huì)提示錯(cuò)誤)的是( )
A?char s[10]="abcdefg";
B?char t[]="abcdefg",*s=t;
C?char s[10];s="abcdefg";
D?char s[10];strcpy(s,"abcdefg");
解析:
在C語(yǔ)言中,字符串的賦值是一個(gè)常見(jiàn)的操作,但需要遵循一定的規(guī)則。
A.?char s[10]="abcdefg";
這是正確的。這里定義了一個(gè)字符數(shù)組s
,并初始化為字符串"abcdefg"
。數(shù)組大小為10,足夠存儲(chǔ)該字符串及其終止符。
B.?char t[]="abcdefg",*s=t;
這也是正確的。這里定義了一個(gè)字符數(shù)組t
并初始化為字符串"abcdefg"
,同時(shí)定義了一個(gè)字符指針s
,并將其指向數(shù)組t
的首地址。這樣,指針s
就指向了字符串"abcdefg"
。
C.?char s[10];s="abcdefg";
這是錯(cuò)誤的。在這里,s
是一個(gè)字符數(shù)組,而不是字符指針。數(shù)組名(在這里是s
)在大多數(shù)表達(dá)式中會(huì)被轉(zhuǎn)換為指向數(shù)組首元素的指針,但它本身是一個(gè)常量,不能被賦值。嘗試將字符串字面量的地址賦給數(shù)組名s
是不合法的,編譯時(shí)會(huì)報(bào)錯(cuò)。
D.?char s[10];strcpy(s,"abcdefg");
這是正確的。這里使用strcpy
函數(shù)將字符串"abcdefg"
復(fù)制到字符數(shù)組s
中。strcpy
函數(shù)是標(biāo)準(zhǔn)庫(kù)函數(shù),用于復(fù)制字符串,包括終止符。數(shù)組大小為10,足夠存儲(chǔ)該字符串及其終止符。
綜上所述,不能正確賦字符串,并且編譯時(shí)系統(tǒng)會(huì)提示錯(cuò)誤的選項(xiàng)是C。在C語(yǔ)言中,不能直接將字符串字面量賦給字符數(shù)組名,而應(yīng)該使用初始化(如選項(xiàng)A)或字符串復(fù)制函數(shù)(如選項(xiàng)D)。
3.C語(yǔ)言中break和continue語(yǔ)句說(shuō)法正確的是()。
A?break語(yǔ)句只應(yīng)用于循環(huán)體中
B?continue語(yǔ)句只應(yīng)用于循環(huán)體中
C?break是無(wú)條件跳轉(zhuǎn)語(yǔ)句,continue不是
D?break和continue的跳轉(zhuǎn)范圍不夠明確,容易產(chǎn)生問(wèn)題
解析:
在C語(yǔ)言中,break
和continue
是兩個(gè)用于控制流程的關(guān)鍵字,它們主要在循環(huán)和switch
語(yǔ)句中使用。接下來(lái),我們將逐一分析每個(gè)選項(xiàng)的正確性:
A.?break
語(yǔ)句只應(yīng)用于循環(huán)體中
這是不正確的。break
語(yǔ)句不僅可以在循環(huán)體中使用,還可以在switch
語(yǔ)句中使用,用于跳出當(dāng)前的switch
分支或循環(huán)體。
B.?continue
語(yǔ)句只應(yīng)用于循環(huán)體中
這是正確的。continue
語(yǔ)句只能在循環(huán)體中使用,它的作用是跳過(guò)當(dāng)前循環(huán)的剩余部分,并立即開(kāi)始下一次循環(huán)迭代。
C.?break
是無(wú)條件跳轉(zhuǎn)語(yǔ)句,continue
不是
這個(gè)說(shuō)法部分正確,但不完全準(zhǔn)確。break
確實(shí)是無(wú)條件地跳出當(dāng)前的循環(huán)或switch
語(yǔ)句,可以認(rèn)為是一種無(wú)條件跳轉(zhuǎn)。然而,continue
也可以被視為一種“有條件”的跳轉(zhuǎn),因?yàn)樗鼤?huì)跳過(guò)當(dāng)前循環(huán)的剩余部分,但并不是無(wú)條件地跳出整個(gè)循環(huán)或程序塊。更準(zhǔn)確地說(shuō),continue
是控制循環(huán)迭代的語(yǔ)句,而不是傳統(tǒng)意義上的跳轉(zhuǎn)語(yǔ)句。
D.?break
和continue
的跳轉(zhuǎn)范圍不夠明確,容易產(chǎn)生問(wèn)題
這是不正確的。在C語(yǔ)言中,break
和continue
的跳轉(zhuǎn)范圍是明確的。break
會(huì)跳出最近的包圍它的循環(huán)或switch
語(yǔ)句,而continue
會(huì)跳過(guò)當(dāng)前循環(huán)的剩余部分并繼續(xù)下一次迭代。只要程序員理解了這些語(yǔ)句的作用和范圍,它們就不會(huì)產(chǎn)生混淆或問(wèn)題。
綜上所述,正確的選項(xiàng)是B:continue
語(yǔ)句只應(yīng)用于循環(huán)體中。
4.fseek函數(shù)的正確調(diào)用形式是()
A?fseek(文件類型指針,起始點(diǎn),位移量)
B?fseek(文件類型指針,位移量,起始點(diǎn))
C?fseek(位移量,起始點(diǎn),文件類型指針)
D?fseek(起始點(diǎn),位移量,文件類型指針)
解析:
在C語(yǔ)言中,fseek
函數(shù)用于移動(dòng)文件指針到指定的位置。其正確的調(diào)用形式非常重要,因?yàn)樗鼪Q定了函數(shù)如何以及在哪里移動(dòng)文件指針。
fseek
函數(shù)的原型通常是這樣的:c
復(fù)制代碼
int fseek(FILE *stream, long offset, int whence); |
從原型中我們可以看出,fseek
函數(shù)需要三個(gè)參數(shù):
FILE *stream
:這是一個(gè)指向文件的指針,它標(biāo)識(shí)了要操作的文件。
long offset
:這是位移量,表示要從起始點(diǎn)移動(dòng)多少字節(jié)。
int whence
:這是起始點(diǎn),用于指定從哪里開(kāi)始計(jì)算位移。它通常是以下幾個(gè)宏之一:SEEK_SET
(從文件開(kāi)始)、SEEK_CUR
(從當(dāng)前位置)或SEEK_END
(從文件末尾)。
根據(jù)這個(gè)原型,我們可以對(duì)比給出的選項(xiàng):
A.?fseek(文件類型指針,起始點(diǎn),位移量)
這是錯(cuò)誤的,因?yàn)閰?shù)的順序不正確。
B.?fseek(文件類型指針,位移量,起始點(diǎn))
這是正確的,它匹配了fseek
函數(shù)的原型。
C.?fseek(位移量,起始點(diǎn),文件類型指針)
這是錯(cuò)誤的,因?yàn)閰?shù)的順序和類型都不正確。
D.?fseek(起始點(diǎn),位移量,文件類型指針)
這也是錯(cuò)誤的,因?yàn)閰?shù)的順序不正確。
因此,正確的選項(xiàng)是B:fseek(文件類型指針,位移量,起始點(diǎn))
。這符合fseek
函數(shù)的定義和用法。
未完待續(xù),持續(xù)更新!以防后邊找不到可以點(diǎn)贊收藏下!