?
目錄
??前言?
一.選擇題?
1.執(zhí)行下面程序,正確的輸出是(c)?
2.以下不正確的定義語句是( )
3.test.c 文件中包括如下語句,文件中定義的四個變量中,是指針類型的變量為【多選】( )?
4、有如下定義語句,則正確的輸入語句是【多選】( )?
5..?若給定條件表達(dá)式 (M)?(a++):(a--) ,則其中表達(dá)式 M ( )
二、編程題?
①打印從1到最大的n位數(shù)
②計算日期到天數(shù)轉(zhuǎn)換
?文章來源地址http://www.zghlxwxcb.cn/news/detail-724539.html
??前言?
開設(shè)這個專欄,是因為剛更新完【 C語言】初階的內(nèi)容,馬上邁入進(jìn)階,可以在學(xué)習(xí)進(jìn)階知識的時候,鞏固復(fù)習(xí)基礎(chǔ)。基礎(chǔ)要扎實?。?!
一.選擇題?
1.執(zhí)行下面程序,正確的輸出是(c)?
int x = 5, y = 7; //全局變量
void swap()
{
int z;
z = x;
x = y;
y = z;
}
int main()
{
int x = 3, y = 8;
swap();
printf("%d %d\n", x, y); // 3 8
}
A: 5,7 ????????B: 7,5???????? C: 3,8?????????D: 8,3??
解析:正確答案 C
swap()在調(diào)用的時候沒有傳參,所以函數(shù)內(nèi)交換的是全局變量,而當(dāng)全局變量和局部變量名字相同時,優(yōu)先使用局部變量;局部優(yōu)先原則?
1. ?作用域
通常來說,一段程序代碼中所用到的名字并不是總是有效/可用的而限定這個名字的可用性的代碼范圍就是這個名字的作用域。
(1)局部變量的作用域就是所在的局部范圍。(同一個{}內(nèi))
(2)全局變量的作用域就是整個工程(注:換一個.c文件使用全局變量,要聲明(extern)一下變量)
注意:當(dāng)全局變量與局部變量同名沖突時,遵循局部優(yōu)先的原則。
2.生命周期
變量的生命周期指的是變量的創(chuàng)建到變量的銷毀之間的一個時間段
(1) ?局部變量的生命周期是:進(jìn)入作用域生命周期開始,出作用域生命周期結(jié)束。
(2) ?全局變量的生命周期是:整個程序的生命周期。
?
?
2.以下不正確的定義語句是( )
A: double x[5] = {2.0, 4.0, 6.0, 8.0, 10.0};
B: char c2[] = {'\x10', '\xa', '\8'};
C: char c1[] = {'1','2','3','4','5'};
D: int y[5+3]={0, 1, 3, 5, 7, 9};
解析: 正確答案 B
選項B中考察是轉(zhuǎn)義字符,八進(jìn)制范圍是0~7,所以'\8' err
\ddd?ddd表示1到3個八進(jìn)制數(shù) 如:\130 轉(zhuǎn)義為 字符X
\xhh?hh表示1到2位十六進(jìn)制數(shù) 如:\x30 轉(zhuǎn)義為 字符0補(bǔ)充:字符型數(shù)據(jù)在內(nèi)存中存儲的是字符的ASCII碼值的二進(jìn)制形式,一個字符的存儲占用一個字節(jié)
3.test.c 文件中包括如下語句,文件中定義的四個變量中,是指針類型的變量為【多選】( )?
#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a, b;
int_ptr c, d;
A: a ????????B: b???????? C: c???????? D: d???
?解析:正確答案 ACD
4、有如下定義語句,則正確的輸入語句是【多選】( )?
int b;
char c[10];
A: scanf("%d%s",&b,&c); ????????B: scanf("%d%s",&b,c);
C: scanf("%d%s",b,c);???????? D: scanf("%d%s",b,&c);
解析:正確答案 AB
1.scanf()是輸入函數(shù)
scanf(格式控制,地址列表);
“格式控制”規(guī)定數(shù)據(jù)的輸入格式,必須用雙引號括起來,其內(nèi)容僅僅是格式說明。
“地址列表”則由一個或多個地址組成的列表,可以是變量的地址,或字符串的首地址。?
所以在scanf();中變量需要取地址,而數(shù)組名就表示首元素地址(有兩個例外)
2.數(shù)組名是什么?
①.數(shù)組名是首元素的地址。
②兩個例外:
1、sizeof(數(shù)組名),這里的數(shù)組名是表示整個數(shù)組,計算的是整個數(shù)組的大小,單位是字節(jié)。
2、&數(shù)組名,這里的數(shù)組名是表示整個數(shù)組,&數(shù)組名取出的是數(shù)組的地址。
5..?若給定條件表達(dá)式 (M)?(a++):(a--) ,則其中表達(dá)式 M ( )
A: 和(M==0)等價 ????????B: 和(M==1)等價???????? C: 和(M!=0)等價???????? D: 和(M!=1)等價?
解析: 正確答案C?
?考察的是三目運(yùn)算符,? exp1?exp2:exp3;
exp1為真,執(zhí)行exp2;
exp1為假,執(zhí)行exp3;
????????C語言規(guī)定:0為假,非0為真。
所以 若要求與M等價,則要滿足M取0時為假,取非0數(shù)值時為真。?
二、編程題?
①打印從1到最大的n位數(shù)
輸入數(shù)字 n,按順序打印出從 1 到最大的 n 位十進(jìn)制數(shù)。比如輸入 3,則打印出 1、2、3 ... ?一直到最大的 3 位數(shù) 999。
1. 用返回一個整數(shù)列表來代替打印
2. n 為正整數(shù),0 < n <= 5
打印從1到最大的n位數(shù)_??途W(wǎng)
int* printNumbers(int n, int* returnSize) {
static arr[100000];
int m = 9;
int i = 1;
int j = 0;
scanf("%d", &n);
if (n >= 1 && n <= 5)
{
//獲得最大位數(shù)字
for (i = 1; i < n; i++)
{
m = m * 10 + 9;
}
//將數(shù)據(jù)存進(jìn)數(shù)組
for (j = 1; j <= m; j++)
{
arr[j - 1] = j;
*returnSize = j; //returnSize返回數(shù)組元素個數(shù)
}
return arr;
}
else
{
return 0;
}
}
static修飾的全局變量——稱為靜態(tài)全局變量?
②計算日期到天數(shù)轉(zhuǎn)換
根據(jù)輸入的日期,計算是這一年的第幾天。輸入保證年份為4位數(shù)且日期合法。
輸入描述:輸入一行,每行空格分割,分別是年,月,日
輸出描述:輸出是這一年的第幾天
?計算日期到天數(shù)轉(zhuǎn)換_牛客網(wǎng)
int Isyear(int year)
{
if ((year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0))
{
return 1;
}
else {
return 0;
}
}
int main()
{
int year, month, date;
// 設(shè)0可以讓數(shù)組下標(biāo)和月份對齊
int month_day[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
scanf("%d %d %d", &year, &month, &date);
//獲取當(dāng)月天數(shù)
int day = date;
//累加之前月份天數(shù)
int i = 0;
for (i = 1; i < month; i++)
{
day += month_day[i];
}
//判斷是否閏年且大于二月+1
if ((Isyear(year)) && month > 2)
{
day++;
}
printf("%d", day);
return 0;
}
1、月大月小口訣:一月大,二月平,三月大,四月小,五月大,六月小,七月大,八月大,九月小,十月大,十一月小,十二月大(大:31,小:30,平:28)
2、判斷閏年的條件
①能被4整除,并不能被100整除。
②能被400整除
?
?文章來源:http://www.zghlxwxcb.cn/news/detail-724539.html
?
到了這里,關(guān)于【C語言】每日一題(半月斬)——day1的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!