目錄
選擇題:
題一:
題二:
題三:
題四:
題五:
編程題:
題一:圖片整理
思路一:
思路二:?
題二:尋找數(shù)組的中心下標(biāo)?
思路一:
本人實(shí)力有限可能對(duì)一些地方解釋和理解的不夠清晰,可以自己嘗試讀代碼,或者評(píng)論區(qū)指出錯(cuò)誤,望海涵!
感謝大佬們的一鍵三連!?感謝大佬們的一鍵三連!?感謝大佬們的一鍵三連!
選擇題:
題一:
1、以下對(duì)C語言函數(shù)的有關(guān)描述中,正確的有【多選】( )
A: 在C語言中,一個(gè)函數(shù)一般由兩個(gè)部分組成,它們是函數(shù)首部和函數(shù)體
B: 函數(shù)的實(shí)參和形參可以是相同的名字
C: 在main()中定義的變量都可以在其它被調(diào)函數(shù)中直接使用
D: 在C程序中,函數(shù)調(diào)用不能出現(xiàn)在表達(dá)式語句中
答案解析:
????????主函數(shù)中定義的局部變量只在主函數(shù)中有效,因?yàn)橹骱瘮?shù)也是一個(gè)函數(shù),它與其他函數(shù)是平行關(guān)系,C錯(cuò)誤;當(dāng)函數(shù)有返回值時(shí),可以出現(xiàn)在表達(dá)式中,D錯(cuò)誤。
題二:
2、在C語言中,以下正確的說法是( )
A: 實(shí)參和與其對(duì)應(yīng)的形參各占用獨(dú)立的存儲(chǔ)單元
B: 實(shí)參和與其對(duì)應(yīng)的形參共占用一個(gè)存儲(chǔ)單元
C: 只有當(dāng)實(shí)參和與其對(duì)應(yīng)的形參同名時(shí)才共占用存儲(chǔ)單元
D: 形參是虛擬的,不占用存儲(chǔ)單元
答案解析:
????????在調(diào)用函數(shù)的時(shí)候,真實(shí)傳遞給函數(shù)的是實(shí)參,函數(shù)定義部分函數(shù)名后的參數(shù)是形參。形參和實(shí)參的名字是可以相同的,在函數(shù)調(diào)用的時(shí)候,形參是實(shí)參的一份臨時(shí)拷貝,分別占用不同的內(nèi)存空間,所以A正確,B錯(cuò)誤,及時(shí)形參和實(shí)參的名字相同,也是占用不同的內(nèi)存空間,所以B錯(cuò)誤;函數(shù)如果不被調(diào)用時(shí),函數(shù)的形參是形式上存在的,但是函數(shù)在被調(diào)用的時(shí)候,形參是要分配內(nèi)存空間的,所以D錯(cuò)誤。
題三:
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
答案解析:
????????代碼實(shí)現(xiàn)了遞歸倒序打印字符串的功能,但是++s使得s的值發(fā)生了變化,回不到'G'的位置上,故而沒有打印'G'。
題四:
4、對(duì)于函數(shù) void f(int x); ,下面調(diào)用正確的是( )
A: int y=f(9);? ? B: f(9);? ??C: f(f(9));? ??D: x=f();
答案解析:
????????函數(shù)f是沒有返回值的,不能給int類型變量賦值,故A錯(cuò)誤,同時(shí)需要一個(gè)整型參數(shù),C中f(9)不能作為f的參數(shù),也是錯(cuò)的,D選項(xiàng)沒有傳參,也不能接收返回值也是錯(cuò)誤的。
題五:
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
答案解析:
????????代碼是一個(gè)遞歸函數(shù),計(jì)算x+(x-1)+(x-2)+...+2+1即等差數(shù)列的和。
編程題:
題一:圖片整理
圖片整理_牛客題霸_??途W(wǎng) (nowcoder.com)
示例:
? ?輸入:
Ihave1nose2hands10fingers? ?輸出:
0112Iaadeeefghhinnnorsssv
思路一:
冒泡排序:
? ? ? ? 第一步:定義數(shù)組arr,執(zhí)行輸入數(shù)組元素的scanf(),計(jì)算數(shù)組元素的個(gè)數(shù);
? ? ? ? 第二步:冒泡排序,整個(gè)數(shù)組(遍歷n-1次,每次與n-1-i個(gè)元素比較,前大于后,交換位置);
????????第三步:打印arr數(shù)組。
#include <stdio.h>
#include <string.h>
int main()
{
//方法一
//定義足夠大小數(shù)組
char arr[1000] = { 0 };
//是否有數(shù)組輸入
while (scanf("%s", &arr) != EOF)
{
//計(jì)算字符串長度
int n = strlen(arr+0);
int i = 0;
int j = 0;
//冒泡排序
for (i = 0; i < n-1; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (strcmp(arr + j, arr + j+1) > 0)
{
char tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
//打印
printf("%s\n", arr);
}
return 0;
}
思路二:?
qsort排序:
? ? ? ??第一步:定義數(shù)組arr,執(zhí)行輸入數(shù)組元素的scanf(),計(jì)算數(shù)組元素的個(gè)數(shù);
? ? ? ? 第二步:寫一個(gè)讓數(shù)組升序排列的my_cmp()函數(shù),讓arr直接升序排序;
????????第三步:打印arr數(shù)組。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//比較函數(shù)
int my_cmp(const void* p1, const void* p2)
{
return strcmp((char*)p1, (char*)p2);
}
int main()
{
//方法二
char arr[1000] = { 0 };
scanf("%s", &arr);
//計(jì)算長度
int n = strlen(arr);
//升序排序
qsort(arr, n, sizeof(arr[0]), my_cmp);
printf("%s\n", arr);
return 0;
}
題二:尋找數(shù)組的中心下標(biāo)?
力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長平臺(tái)
示例: 輸入:nums = [1, 7, 3, 6, 5, 6] 輸出:3 解釋: 中心下標(biāo)是 3 。 左側(cè)數(shù)之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 , 右側(cè)數(shù)之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。
思路一:
前綴和:
? ? ? ? 第一步:將數(shù)組所有元素求和sum;
? ? ? ? 第二步:遍歷數(shù)組:?當(dāng)左右和相同時(shí)為2*sumleft加上中間數(shù)等于數(shù)組和,此時(shí)的中間數(shù)下標(biāo)為“ i ”否則就一直加到數(shù)組結(jié)束。結(jié)束“ -1 ”。
int pivotIndex(int* nums, int numsSize)
{
int sum = 0;
int i = 0;
//將數(shù)組的元素求和
for(i = 0;i < numsSize;i++)
{
sum += nums[i];
}
//記錄當(dāng)前左側(cè)的和
int sumleft = 0;
for(i = 0;i < numsSize;i++)
{
//當(dāng)左右和相同時(shí)為2*sumleft加上中間數(shù)等于數(shù)組和
//此時(shí)的中間數(shù)下標(biāo)為i
if(2 * sumleft + nums[i] == sum)
{
return i;
}
sumleft += nums[i];
}
return -1;
}
本人實(shí)力有限可能對(duì)一些地方解釋和理解的不夠清晰,可以自己嘗試讀代碼,或者評(píng)論區(qū)指出錯(cuò)誤,望海涵!
感謝大佬們的一鍵三連!?感謝大佬們的一鍵三連!?感謝大佬們的一鍵三連!
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?文章來源地址http://www.zghlxwxcb.cn/news/detail-670037.html文章來源:http://www.zghlxwxcb.cn/news/detail-670037.html
?
到了這里,關(guān)于C語言:選擇+編程(每日一練Day7)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!