1.題1
我們來思考一下它的結(jié)果是什么?
我們來分析一下:\\是轉(zhuǎn)義為字符'\',\123表示的是一個八進(jìn)制,算一個字符,\t算一個字符,加上\0,應(yīng)該有13個,但是strlen只計算\0前的字符個數(shù)。所以結(jié)果應(yīng)該是12.我們來看看:
?2.題2
大家來思考一下結(jié)果是什么呢?
我們來分析一下:前兩個#define定義了兩個常量,后面的#define定義了一個宏,當(dāng)我們代碼運行時會直接進(jìn)行替換:(N+1+1)*N+1/2 這個式子運算結(jié)果為8.5,但是我們編譯器會默認(rèn)整型存入,我們后來使用%d打印出來,結(jié)果應(yīng)該為8.我們運行看看:
?3.題3
這題是一個遞歸,這個代碼的運行結(jié)果會是多少呢?在每次的調(diào)用中我們的i的數(shù)是一直在改變的,每次的調(diào)用都會加1,最后一次調(diào)用時i=3,n=4,所以結(jié)果應(yīng)該為7,這是因為static修飾局部變量使之成為全局變量,它的值只有到程序結(jié)束才會銷毀,如果我們將static去掉的話,每次調(diào)用f()函數(shù)時,i都會初始為1,并不會隨著調(diào)用的次數(shù)數(shù)值跟著增加。如果是這樣的話結(jié)果應(yīng)該為5。
我們來看一下結(jié)果:
?
?4.題4
我們先來分析一下:我們創(chuàng)建了一個char類型的數(shù)組,并使用循環(huán)來將其賦值,那么arr中的數(shù)值將是:-1 -2 -3....-128 127 126 125.....0 ,有人會問為啥-128減1等于127呢?這個問題大家可以看我之前的篇章——數(shù)據(jù)在內(nèi)存中的存儲。那這樣的話strlern的計算結(jié)果是多少呢?我們知道strlen是計算\0之前的字符的個數(shù),其實就是在找0,我們只要計算0之前有多少個字符即可,那樣的話應(yīng)該就是255。
我們運行看看:
5.題5.實現(xiàn)代碼(輸入一行,每行空格分割,分別是年,月,日,輸出是這一年的第幾天)
int leapyear(int year)
{
if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
{
return 1;
}
else
return 0;
}
int getday(int year, int month, int day)
{
int arr[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
// 0 1 2 3 4 5 6 7 8 9 10 11 12
int num = 0;
int n = month;
while (month)
{
num = num + arr[month--];
}
if (leapyear(year) == 1 && n >= 2)
{
num++;
}
num = num + day;
return num;
}
int main()
{
int year, month, day = 0;
scanf("%d %d %d", &year, &month, &day);
int ret=getday(year,month,day);
printf("共%d天",ret);
return 0;
}
大家可以思索一下為何要這樣寫,當(dāng)然這只是一種方法,大家可以發(fā)揮自己的想象力試一試。文章來源:http://www.zghlxwxcb.cn/news/detail-835951.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-835951.html

到了這里,關(guān)于c語言經(jīng)典測試題2的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!