目錄
一,選擇題
1.已知函數(shù)的原型是: int fun(char b[10], int *a);
2、請問下列表達式哪些會被編譯器禁止【多選】( )
3、以下程序的輸出結(jié)果為( )?
4、下面代碼段的輸出是( )?
5、下列不能實現(xiàn)死循環(huán)的是( )?
二,編程題
1.記負均正
2.旋轉(zhuǎn)數(shù)組的最小數(shù)字
一,選擇題
1.已知函數(shù)的原型是: int fun(char b[10], int *a);
設(shè)定義: char c[10];??int d; ,正確的調(diào)用語句是()
A: fun(c,&d);? ? ? ? ? ? B: fun(c,d);
C: fun(&c,&d); ????????D: fun(&c,d);
解析:
本體考察的是函數(shù)的調(diào)用和傳參;
數(shù)組名:
數(shù)組名就是地址,通常來說:數(shù)組名是數(shù)組首元素的地址
但是有2個例外:
- sizeof(數(shù)組名),這里的數(shù)組名表示的整個數(shù)組,計算的是整個數(shù)組的大小,單位是字節(jié)。
- &數(shù)組名,這里的數(shù)組名表示整個數(shù)組,取出的是整個數(shù)組的地址。
除此之外,所有遇到的數(shù)組名都是數(shù)組首元素的地址。
注:數(shù)組傳參的本質(zhì)是指針,傳遞的是數(shù)組首元素地址
但是形參也可以是數(shù)組接收,也可以指針接收。
正確答案:A
2、請問下列表達式哪些會被編譯器禁止【多選】( )
int a = 248, b = 4;
int const* c = 21;
const int* d = &a;
int* const e = &b;
int const* const f = &a;
A: *c = 32;? ? ?????????B: *d = 43 ????????C: e=&a ????????D: f=0x321f?
解析:
考察的是對const的理解
const修飾指針
修飾指針有兩種方法
counst int* p ;
int * counst p;
- const 放在的左邊
限制的指針指向的內(nèi)容,也就是說: 不能通過指針來修改指針指向的內(nèi)容
但是指針變量是可以修改的,也就是指針指向其他變量的
- const 放在的右邊
限制的是指針變量本身,指針變量不能再指向其他對象
但是可以通過指針變量來修改指向的內(nèi)容
正確答案:ABCD
3、以下程序的輸出結(jié)果為( )?
int i;
void prt()
{
for (i = 5; i < 8; i++)
printf("%c", '*');
printf("\t");
}
int main()
{
for (i = 5; i <= 8; i++)
prt();
return 0;
}
A:?***
?????????B:?*** *** *** ***
?????????C:?*** ***
?????????D:?* * *
?
解析:
本題考察的是,轉(zhuǎn)義字符和全局變量?
轉(zhuǎn)義字符:
'\t'? 代表為水平制表符,簡單來說就是在鍵盤上按了
TAB
的效果,也可以理解為縮進符?
全局變量
:作用域為整個程序且生命周期與主函數(shù)相同,只有程序結(jié)束,它才會銷毀
?在進入prt()后出來時 i? 被修改成了8,然后進行主函數(shù)的條件調(diào)整表達式;? i++;i變成了9;
不滿足主函數(shù)的條件判斷表達式,推出循環(huán)
正確答案:A
4、下面代碼段的輸出是( )?
int main()
{
int a = 3;
printf("%d\n", (a += a -= a * a));
return 0;
}
A:?-6
?????????????????B:?12
?????????????????C:?0??????
?D:?-12
?
解析:
考察:運算符優(yōu)先級,操作符(復(fù)合賦值符)的理解?
查看操作符優(yōu)先級表可以得知,'*'乘法的優(yōu)先級高于賦值操作符;
所以先算后面的? a-=a*a? -> a=a-a*a;? a=-6;
再算前面的? ?a+=a->? a=a+a;? ?a=-12;
正確答案:D
5、下列不能實現(xiàn)死循環(huán)的是( )?
?A: while(1){}? ? ? ????????? B:? for(;1;){}? ? ? ? ?????????C: do{}while(1); D: ????????for(;0;){}
?解析:
考察:循環(huán)條件判斷
C語言中規(guī)定:0為假,非0為真;
只有條件為真時才進行循環(huán),?ABC?中?1?為真,?D?中?0?為假
正確答案:D
二,編程題
1.記負均正
首先輸入要輸入的整數(shù)個數(shù)n,然后輸入n個整數(shù)。輸出為n個整數(shù)中負數(shù)的個數(shù),和所有正整數(shù)的平均值,結(jié)果保留一位小數(shù)。
0即不是正整數(shù),也不是負數(shù),不計入計算。如果沒有正數(shù),則平均值為0。
記負均正——??途W(wǎng)
int main()
{
int n = 0;
int arr[1000];
scanf("%d", &n);
int i = 0;
//往數(shù)組輸入元素
for (i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
//輸出負數(shù)
int num = 0; //記錄負數(shù)個數(shù)
//正整數(shù)的平均值
double pos = 0; //記錄正整數(shù)個數(shù)
double temp = 0;
double sum = 0; //平均數(shù)
int zero = 0; //記錄0的個數(shù)
for (i = 0; i < n; i++)
{
if (arr[i] < 0)
{
num++;
}
else if (arr[i] == 0)
zero++;
else
{
temp = temp + arr[i];
pos++;
}
}
if (zero == n)
{
printf("%d 0.0\n",num);
}
else {
{
sum = temp / pos;
printf("%d %.1lf",num, sum);
}
}
return 0;
}
2.旋轉(zhuǎn)數(shù)組的最小數(shù)字
有一個長度為 n 的非降序數(shù)組,比如[1,2,3,4,5],將它進行旋轉(zhuǎn),即把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,變成一個旋轉(zhuǎn)數(shù)組,比如變成了[3,4,5,1,2],或者[4,5,1,2,3]這樣的。請問,給定這樣一個旋轉(zhuǎn)數(shù)組,求數(shù)組中的最小值。
旋轉(zhuǎn)數(shù)組的最小值——??途W(wǎng)
static int min = 10000;
int minNumberInRotateArray(int* rotateArray, int rotateArrayLen ) {
// write code here
int i = 0;
for(i = 0; i < rotateArrayLen;i++)
{
if(rotateArray[i]< min)
{
min = rotateArray[i];
}
}
return min;
}
文章來源:http://www.zghlxwxcb.cn/news/detail-732915.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-732915.html
到了這里,關(guān)于【C語言】每日一題(半月斬)——day3的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!