目錄
選擇題:
題一:
題二:
題三:
題四:
題五:
編程題:
題一:最大連續(xù)1的個數(shù)
思路一:
題二:完全數(shù)計算?
思路二:
本人實力有限可能對一些地方解釋和理解的不夠清晰,可以自己嘗試讀代碼,或者評論區(qū)指出錯誤,望海涵!
感謝大佬們的一鍵三連!?感謝大佬們的一鍵三連!?感謝大佬們的一鍵三連!
選擇題:
題一:
1、聲明以下變量,則表達式: ch/i + (f*d – i) 的結(jié)果類型為( )
char ch;
int i;
float f;
double d;
A: char? ? B: int? ? C: float? ? D: double
答案解析:
????????基本數(shù)據(jù)類型的等級從低到高如下:char int long float double運算的時候是從低轉(zhuǎn)到高的,表達式的類型會自動提升或者轉(zhuǎn)換為參與表達式求值的最上級類型。
題二:
2、關(guān)于代碼的說法正確的是( )
#include <stdio.h>
int main()
{
????????int x = -1;
????????unsigned int y = 2;
????????if (x > y)
????????{
????????????????printf("x is greater");
????????}????????else
????????{
????????????????printf("y is greater");
????????}????????return 0;
}
A: x is greater? ? B: y is greater? ? C: 依賴實現(xiàn)? ? D: 隨機
答案解析:
????????x是有符號數(shù)-1,內(nèi)存中是全1,當(dāng)有符號的x和無符號數(shù)進行比較時,x會隱式類型轉(zhuǎn)換被當(dāng)做無符號數(shù),是一個很大的數(shù),這時就選擇A了。
題三:
3、已知有如下各變量的類型說明,則以下不符合C語言語法的表達式是( )
int k, a, b;
unsigned int w = 5;
double x = 1.42;
A: x%3? ? B: w+=-20? ? C: k=(a=200,b=300)? ? D: a+=a-=a=9
答案解析:
????????A選項,取余操作兩邊必須是整數(shù)。
題四:
4、下面函數(shù)的輸出結(jié)果是( )
void func()
{
????????int k = 1^(1 << 31 >> 31);
????????printf("%d\n", k);
}
A: 0? ? B: -1? ? C: -2? ? D: 1
答案解析:
????????(1 << 31 );左移31位,并在右側(cè)填充0,得到0x80000000,即符號位為1,其他為0,即-2147483648int k = 1^(1 << 31 >> 31);注意,這里在右移的時候,符號位保持為1,右移后填充1,結(jié)果為0xFFFFFFFF,即-1,0x00000001^0xFFFFFFFF,即0xFFFFFFFE(-2)。
題五:
5、如下代碼的輸出結(jié)果是( )
#include <stdio.h>
int main()
{
????????int i = 1;
????????sizeof(i++);
????????printf("%d\n", i);
????????return 0;
}
A: 1? ? B: 4? ? C: 2? ? D: 8
答案解析:
????????一般表達式的運算是在運行時執(zhí)行的,而sizeof是一個編譯階段就執(zhí)行的運算符,在其內(nèi)的任何運算都不執(zhí)行,只推測出其中表達式結(jié)果的類型求其大小,故前后i的值不變。
編程題:
題一:最大連續(xù)1的個數(shù)
485. 最大連續(xù) 1 的個數(shù) - 力扣(LeetCode)
思路一:
? ? ? ? 第一步:定義記錄數(shù)count和記錄數(shù)最大值max;
? ? ? ? 第二步:遍歷數(shù)組,不為“1”時,記錄數(shù)重置,為一時,記錄數(shù)+1,當(dāng)記錄數(shù)最多次數(shù)小于記錄數(shù)時,將記錄數(shù)賦值給max;
????????第三步:遍歷完整個數(shù)組后,將記錄數(shù)最大值返回。
int findMaxConsecutiveOnes(int* nums, int numsSize)
{
//記錄數(shù)
int count = 0;
//記錄數(shù)最大值
int max = 0;
//遍歷一遍數(shù)組
for(int i = 0;i < numsSize;i++)
{
//不相同時將記錄數(shù)置0
if(nums[i] != 1)
{
count = 0;
}
//相同記錄數(shù)+1
if(nums[i] == 1)
{
count++;
}
//記錄最大值
if(max < count )
{
max = count;
}
}
return max;
}
題二:完全數(shù)計算?
完全數(shù)計算_牛客題霸_??途W(wǎng) (nowcoder.com)
示例1
????????輸入:
????????1000????????輸出:
????????3
思路一:
理解題目:題目意思是,在[1,n]之間的數(shù)有多少個是完全數(shù)!??!
? ? ? ? 第一步:定義一個n接收輸入值;
? ? ? ? 第二步:從“1”開始遍歷到“n”,然后判斷此時這個數(shù)“ i ”是不是完全數(shù):將每次取余為“0”的數(shù)加起來,當(dāng)和等于“ i ”時,就是完全數(shù),記錄數(shù)count就+1;
????????第三步:遍歷完數(shù)組,打印記錄數(shù)count。文章來源:http://www.zghlxwxcb.cn/news/detail-708465.html
#include <stdio.h>
//題目意思是,在[1,n]之間的數(shù)有多少個是完全數(shù)
int main()
{
int n = 0;
scanf("%d",&n);
int count = 0;
//遍歷一遍題目范圍
for(int i = 1;i <= n;i++)
{
int sum = 0;
//判斷此時的i是不是完全數(shù)
for(int j = 1;j < i;j++)
{
if(i % j == 0)
{
sum += j;
}
}
//和=此時的i就是完全數(shù)
if(sum == i)
{
count++;
}
}
printf("%d",count);
return 0;
}
本人實力有限可能對一些地方解釋和理解的不夠清晰,可以自己嘗試讀代碼,或者評論區(qū)指出錯誤,望海涵!
感謝大佬們的一鍵三連!?感謝大佬們的一鍵三連!?感謝大佬們的一鍵三連!
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??文章來源地址http://www.zghlxwxcb.cn/news/detail-708465.html
到了這里,關(guān)于C語言:選擇+編程(每日一練Day11)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!