c語(yǔ)言數(shù)組可以放負(fù)數(shù)嗎 、給整型二維數(shù)組b[3][4]輸入12個(gè)數(shù)據(jù),計(jì)算并輸出數(shù)組中所有正數(shù)之和、所有負(fù)數(shù)之和?
、給整型二維數(shù)組b[3][4]輸入12個(gè)數(shù)據(jù),計(jì)算并輸出數(shù)組中所有正數(shù)之和、所有負(fù)數(shù)之和?#包括和限制。H>void main(){int i,J,B[3][4],S1=0,S2=0printf(
、給整型二維數(shù)組b[3][4]輸入12個(gè)數(shù)據(jù),計(jì)算并輸出數(shù)組中所有正數(shù)之和、所有負(fù)數(shù)之和?
#包括和限制。H>
void main()
{
int i,J,B[3][4],S1=0,S2=0
printf(“please input array:n”)
for(i=0I<3i)
for(J=0j<4j)
]{
scanf(%d”,&B[i][J])
if(B[i][J]>0)
S1=B[i][J
]else
S2=B[i][J
}]printf(“所有正數(shù)之和為%dn”,S1)
printf(“所有負(fù)數(shù)之和為%dn”,S2)
C語(yǔ)言中為什么將數(shù)組(數(shù)組內(nèi)都是數(shù)字)以字符串格式輸出會(huì)打印出中文?
此問(wèn)題涉及字符編碼和數(shù)組存儲(chǔ)機(jī)制。讓我們用一個(gè)例子來(lái)解釋。首先,讓我們看看下面這個(gè)簡(jiǎn)單的程序及其運(yùn)行結(jié)果,如下圖所示:
首先,我們定義了兩個(gè)數(shù)組STR1和STR2,一個(gè)是STR2它是以漢字的形式初始化的,代碼的第10行,另一個(gè)是以字節(jié)數(shù)的形式初始化的,見代碼的第11行。表面上看,這兩個(gè)陣列是完全不同的。讓我們以不同的方式輸出它們的內(nèi)容。首先,分別在第13行和第14行以字符串的形式輸出它們的內(nèi)容。右邊的程序執(zhí)行結(jié)果顯示,它們輸出的內(nèi)容相同——?dú)g迎來(lái)到西安。此外,我們還定義了一個(gè)數(shù)組Arr1并通過(guò)數(shù)字為其賦值。代碼是12行。在15行中,我們將Arr1轉(zhuǎn)換為字符串并輸出其內(nèi)容。我們也得到了同樣的結(jié)果。接下來(lái),我們以數(shù)字方式輸出STR1、STR2和pstr3的內(nèi)容。見本準(zhǔn)則第17-28行。在右邊的輸出結(jié)果中,我們可以看到相同的內(nèi)容以三種方式輸出。
從上面的程序可以看出,雖然數(shù)組以不同的方式初始化和分配,但是使用相同的輸出方法將獲得相同的輸出結(jié)果??梢娝鼈兊膶?shí)質(zhì)是一樣的。
為什么會(huì)這樣?它涉及到字符的存儲(chǔ)。我們知道,計(jì)算機(jī)內(nèi)部的數(shù)據(jù)是由0和1組成的二進(jìn)制數(shù)。為了表示字符,我們需要對(duì)它們進(jìn)行編碼。因?yàn)橛?jì)算機(jī)技術(shù)最初是從美國(guó)發(fā)展起來(lái)的,原來(lái)的ASCII編碼只包括英文字母、數(shù)字和控制字符,總共256個(gè)字符。后來(lái),隨著計(jì)算機(jī)的發(fā)展,應(yīng)用越來(lái)越廣泛,其他國(guó)家為了使計(jì)算機(jī)能夠處理自己的語(yǔ)言,他們發(fā)明了很多其他的編碼方法,各種編碼方法之間存在著嚴(yán)重的兼容性問(wèn)題,所以為了統(tǒng)一,后來(lái)人們提出了Unicode編碼。在這種編碼模式下,每個(gè)漢字存儲(chǔ)在兩個(gè)字節(jié)中。如果輸出為字符串,將顯示字符的內(nèi)容。如果輸出為數(shù)字,則顯示其編碼。
目前,大多數(shù)現(xiàn)代編譯器開始使用Unicode編碼字符串。例如,當(dāng)我使用vs2017時(shí),數(shù)組內(nèi)容是數(shù)字,但可以輸出中文字符。如果用一些舊的編譯器替換相同的代碼,可能無(wú)法輸出漢字,但會(huì)輸出一些亂七八糟的代碼。