4.2 填充題
1.根據(jù)變量定義“static int b[5], a[][3]={1,2,3,4,5,6};”,b[4]=_____,a[1][2]
【解】系統(tǒng)規(guī)定,靜態(tài)變量定義時,若末初始化,系統(tǒng)自動給定二進制代碼全0的值。所以態(tài)數(shù)組b的元素全為0,當然包括b[4]也為幾靜態(tài)數(shù)組a是二維數(shù)組,每行有三個元素,在初始化中結(jié)出了六個初值,所以數(shù)組a有2行。由于數(shù)組的元素按行順序存儲,并按行順序初始化。前三個值是第一行,后三個值是第二行。a[1][2]是第二行的第三列元素,也是 a的最后一個元素,所以其值是6。
2.設(shè)有定義語句“static int a[3][4]={{1},{2},{3}};”則a[l][l]值為_,a[2][1]的值為_。
【解】給二維數(shù)組初始化時,可按行給出初值,并且每行可以只給前面部分的元素給出初值。系統(tǒng)規(guī)定,對哪些未給出初值的部分元素,系統(tǒng)自動置二進制代碼全0的值。由于定義語句只給a[0][0]給定初值l、a[l][0]給定初值2、a[2][0]給定初值3。這樣,其它元素都為0值。所以,a[1][1]= 0,a[2][1]= 0。
3.若在程序中用到“putchar( )”函數(shù)時,應(yīng)在程序開頭寫上包含命令_____,若在程序中用到“strlen( )”函數(shù)時,應(yīng)在程序開頭寫上包含命令______。
【解】putchar()是系統(tǒng)提供的頭文件stdio.h中定義的宏,所以程序要使用它,必須寫上包含命令:#include
4.下面程序的功能是輸出數(shù)組s中最大元素的下標,請?zhí)羁铡?
main()
{int k, p ;
int s[]={1,-9,7,2,-10,3};
for(p=0, k=p;p<6; p++)
if(s[p]>s[k])____________
printf("%d\n" ,k);
}
【解】為要尋找數(shù)組中的最大元素的下標,需先預(yù)設(shè)1個臨時最大元素的下標,并順序逐一考察數(shù)組的元素,當發(fā)現(xiàn)當前元素比臨時最大元素更大時,就用當前元素的下標更新臨時最大元素下標。直至考察了數(shù)組的全部元素后,這臨時最大元素下標就是數(shù)組的最大元素下標。通常預(yù)設(shè)的最大元素下標是數(shù)組的首元素下標,考察是從首元素開始順序向后繼元素考察。程序中,存儲臨時最大元素下標的變量是k,變量p控制順序考察的循環(huán)控制變量。當發(fā)現(xiàn)當前元素s[p]比臨時最大元素s[k]更大時,應(yīng)該用p更新k。所以在空框處應(yīng)填入代碼“k=p;”。
5.下面程序的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?
# include
main()
{int i, j,_____________;
char str[]={"1234567"};
for(i=0,j=strlen(str); i
printf("%s\n", str);
}
【解】顛倒一個字符串中的字符,就是首尾對應(yīng)的元素兩兩交換。簡單地可用兩個游標變量i和j, j是前端元素的下標, j是后端元素的下標, 交換以這兩個變量值為下標的元素str[i]和 str[j]。開始時,i的值為 0,j的值為字符率未元素的不標(字符串長度減1)。每次交換后,i增 1,j減1。繼續(xù)交換的條件是str[i]還位于str[j]的前面,即i
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |