目錄
選擇題
(1)
解析:?
(2)
解析:?
(3)
解析:?
(4)
解析:?
(5)
解析:?
編程題
題一
描述
輸入描述:
輸出描述:
示例
解析?
代碼實現(xiàn)?
題二
描述
示例
?提示
解析?
代碼實現(xiàn)?
總結(jié)
?文章來源地址http://www.zghlxwxcb.cn/news/detail-612528.html
選擇題
(1)
1、以下對C語言函數(shù)的有關描述中,正確的有【多選】( )
A: 在C語言中,一個函數(shù)一般由兩個部分組成,它們是函數(shù)首部和函數(shù)體
B: 函數(shù)的實參和形參可以是相同的名字
C: 在main()中定義的變量都可以在其它被調(diào)函數(shù)中直接使用
D: 在C程序中,函數(shù)調(diào)用不能出現(xiàn)在表達式語句中
答案:A、B
解析:?
主函數(shù)中定義的局部變量只在主函數(shù)中有效,因為主函數(shù)也是一個函數(shù),它與其他函數(shù)是平行關系,C錯誤;當函數(shù)有返回值時,可以出現(xiàn)在表達式中,D錯誤
(2)
2、在C語言中,以下正確的說法是( )
A: 實參和與其對應的形參各占用獨立的存儲單元
B: 實參和與其對應的形參共占用一個存儲單元
C: 只有當實參和與其對應的形參同名時才共占用存儲單元
D: 形參是虛擬的,不占用存儲單元
答案:A
解析:?
在調(diào)用函數(shù)的時候,真實傳遞給函數(shù)的是實參,函數(shù)定義部分函數(shù)名后的參數(shù)是形參。形參和實參的名字是可以相同的,在函數(shù)調(diào)用的時候,形參是實參的一份臨時拷貝,分別占用不同的內(nèi)存空間,所以A正確,B錯誤,及時形參和實參的名字相同,也是占用不同的內(nèi)存空間,所以B錯誤;函數(shù)如果不被調(diào)用時,函數(shù)的形參是形式上存在的,但是函數(shù)在被調(diào)用的時候,形參是要分配內(nèi)存空間的,所以D錯誤。
(3)
3、在上下文及頭文件均正常的情況下,下列代碼的輸出是( )(注: print 已經(jīng)聲明過)
int main()
{
char str[] = "Geneius";
print(str);
return 0;
}
print(char *s)
{
if(*s)
{
print(++s);
printf("%c", *s);
}
}
A: suiene B: neius C: run-time error D: suieneG
答案: C
解析:?
代碼實現(xiàn)了遞歸倒序打印字符串的功能,但是++s使得s的值發(fā)生了變化,回不到'G'的位置上,故而沒有打印'G'
(4)
4、對于函數(shù) void f(int x); ,下面調(diào)用正確的是( )
A: int y=f(9);? B: f(9);? C: f(f(9));? D: x=f();
答案:B
解析:?
函數(shù)f是沒有返回值的,不能給int類型變量賦值,故A錯誤,同時需要一個整型參數(shù),C中f(9)不能作為f的參數(shù),也是錯的,D選項沒有傳參,也不能接收返回值也是錯誤的。
(5)
5、給定 fun 函數(shù)如下,那么 fun(10) 的輸出結(jié)果是( )
int fun(int x)
{
return (x==1) ? 1 : (x + fun(x-1));
}
?A: 0? B: 10? C: 55? D: 3628800
答案:C
解析:?
代碼是一個遞歸函數(shù),計算x+(x-1)+(x-2)+...+2+1即等差數(shù)列的和
編程題
題一
描述
Lily上課時使用字母數(shù)字圖片教小朋友們學習英語單詞,每次都需要把這些圖片按照大?。ˋSCII碼值從小到大)排列收好。請大家給Lily幫忙,通過代碼解決。
Lily使用的圖片使用字符"A"到"Z"、"a"到"z"、"0"到"9"表示。
數(shù)據(jù)范圍:每組輸入的字符串長度滿足?1≤?≤1000?1≤n≤1000?
輸入描述:
一行,一個字符串,字符串中的每個字符表示一張Lily使用的圖片。
輸出描述:
Lily的所有圖片按照從小到大的順序輸出
示例
解析?
這道題考察的其實就是字符排序,每個 ascii 字符在內(nèi)存都有一個對應的 ascii 值,通過內(nèi)存中數(shù)據(jù)的存儲進行排序就行。
冒泡排序:相鄰數(shù)據(jù)之間進行比較交換,將較大或較小的數(shù)據(jù)向后推到數(shù)組末尾,然后開始下一輪次大數(shù)據(jù)的冒泡過程
代碼實現(xiàn)?
#include <stdio.h>
int main()
{
char str[1024] = { 0 };
while (gets(str)) {
int len = strlen(str);
for (int i = 0; i < len; i++) {
for (int j = 1; j < len - i; j++) {
if (str[j] < str[j - 1]) {
char ch = str[j - 1];
str[j - 1] = str[j];
str[j] = ch;
}
}
}
printf("%s\n", str);
}
return 0;
}
題二
描述
給你一個整數(shù)數(shù)組?nums ,請計算數(shù)組的 中心下標 。
數(shù)組 中心下標 是數(shù)組的一個下標,其左側(cè)所有元素相加的和等于右側(cè)所有元素相加的和。
如果中心下標位于數(shù)組最左端,那么左側(cè)數(shù)之和視為 0 ,因為在下標的左側(cè)不存在元素。這一點對于中心下標位于數(shù)組最右端同樣適用。
如果數(shù)組有多個中心下標,應該返回 最靠近左邊 的那一個。如果數(shù)組不存在中心下標,返回 -1 。
示例
?提示
解析?
從數(shù)組的0下標處開始向后逐下標統(tǒng)計,計算當前下標左邊之和,和右邊之和,進行判斷,相等則為中心下標,如果數(shù)組循環(huán)結(jié)束都沒有找到中心下標,則返回-1,表示沒有中心下標
代碼實現(xiàn)?
int pivotIndex(int* nums, int numsSize) {
int i, j;
for (i = 0; i < numsSize; i++) {//從假設中心點為0開始進行統(tǒng)計判斷
int l_sum = 0, r_sum = 0;//初始化左邊之和和右邊之和為0
for (j = 0; j < numsSize; j++)
{
if (j < i) l_sum += nums[j]; //小于i坐標的都是左邊的數(shù)字
else if (j > i) r_sum += nums[j];//大于i坐標的都是右邊的數(shù)字
} if
(l_sum == r_sum) {//如果兩遍相等則i就是中心坐標
return i;
}
}
return - 1;
}
總結(jié)
關于今日練習講解到這兒,歡迎各位留言交流以及批評指正,如果文章對您有幫助或者覺得作者寫的還不錯可以點一下關注,點贊,收藏支持一下。文章來源:http://www.zghlxwxcb.cn/news/detail-612528.html
?
到了這里,關于【暑期每日一練】 day7的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!