二、填空題(本大題共10小題,每小題2分,共20分)
請在每小題的空格中填上正確答案。錯填、不填均無分。
16.設(shè)int x=14;,則表達(dá)式x++%-5的值為__________。
17.設(shè)typedef char CHA;CHA ax;, 則變量ax 占用的內(nèi)存字節(jié)數(shù)是__________。
18.設(shè)int u, v;, 則表示“u、v中至少有一個是5的倍數(shù)”的表達(dá)式是__________。
19.設(shè)int x=5;, 則表達(dá)式2/(float)(x)+3/x的結(jié)果是__________。
20.程序中調(diào)用sin(3.14)函數(shù)時,需要包含的頭文件是__________。
21.若對一個非空文本文件進行讀取和修改,則在fopen中的“使用方式”應(yīng)是__________。
22.設(shè) struct
{ int a;
int b;
}x[2]={{1,2},{3,4}}, *p=x;
則表達(dá)式(++p)->a的值是__________。
23.設(shè)int i, j;
for(i=5;i;i--)
for(j=0; j<4;j++) {…}
則循環(huán)體的執(zhí)行次數(shù)是__________。
24.設(shè)int a[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}};
則表達(dá)式a[1][2]+a[2][3]的值是__________。
25.設(shè)char *p=″abcdABCD″;, 則執(zhí)行 printf(″% s″, p+4); 后輸出結(jié)果是__________。
三、程序分析題(本大題共4小題,每小題4分,共16分)
閱讀下列程序,請將輸出結(jié)果寫到各題右側(cè)的空白處。
26.main()
{int i, j, k; char a[5]={′*′,′*′,′*′,′*′,′*′};
for(i=0;i<4;i++)
{printf(″\n″);
for(j=0;j<=3*i;j++)printf(″$″);
for(k=0;k<5;k++)printf(″% c″,a[k]);
}
}
27.int fib(int n)
{if(n==0||n==1)return 1;
else return fib(n-1)+fib(n-2);
}
main()
{ int i;
for(i=0; i<=4;i++)printf(″%5d″,fib(i));
printf(″\n″);
}
28.main()
{int n=0; char str[80]=″Abc+mNp-xyZ″;
printf(″%s\n″,str);
while(str[n]!=′\0′)
str[n++]=str[n]>=′a′&& str[n]<=′z′? str[n]-′a′+′A′:str[n];
printf(″%s\n″, str);
}
29.int f(int n)
{ static int a=0;
int b=0;
a+=n;
b+=a;
return b;
}
main ()
{
printf(″%d\n″,f(5));
printf(″%d\n″,f(10));
}
四、程序填充題(本大題共3小題,每小題6分,共18分)
請將下列程序橫線處缺少的部分補上,使其能正確運行。
30.分別統(tǒng)計并輸出17、18、19和20歲各年齡的學(xué)生人數(shù)。
main()
{ int i, n, age, a[30];
for(i=0; i<30; i++) a[i]=0;
scanf(″%d″,&n); /* 輸入人數(shù)<30 */
for (i=0; i { scanf(″%d″,&age); /* 輸入年齡 */
if(age<17||age>20) _________; /* 第一空 */
else
switch(________) /* 第二空 */
{case 17:
case 18:
case 19:
case 20: a[age-17] ++;
}
}
for (i=0, i<=3; i++)
printf(″age=%d number=%d\n″,i+17,________); /* 第三空 */
}
31.將從鍵盤輸入的字符串逆序顯示。
#include
main()
{int n;
char str[80], *p;
printf(″Input a string:″);
gets(str);/*輸入字符串*/
n=strlen(________); /* 第一空 */
p=str+________-1; /* 第二空 */
while (p>=str)
{printf(″%c″, *p);
________; /* 第三空 */
}
printf(″/n″);
}
32.從鍵盤輸入一個星期幾(0~6),轉(zhuǎn)換為對應(yīng)的英文輸出(Sunday, Monday,…),當(dāng)輸入小于0或大于6的數(shù)字時程序結(jié)束。
main()
{int week;
static char *weekname[]={″Sunday″,″Monday″,″Tuesday″,″Wednesday″,
″Thrusday″,″Friday″,″Saturday″};
while(1)
{ printf(″Input weekday:″);
scanf(″%d″,__________); /* 第一空 */
if(________)break; /* 第二空 */
printf(″weekday:%d→%s\n″, week,__________); /* 第三空 */
}
}
五、程序設(shè)計題(本大題共2小題,每小題8分,共16分)
33.從鍵盤輸入100個整數(shù),輸出其中的數(shù)及其對應(yīng)的數(shù)組下標(biāo)值。
34.從鍵盤輸入某學(xué)生的成績(0≤score≤100)后,先輸出該同學(xué)的成績,再按下列條件
輸出
請在每小題的空格中填上正確答案。錯填、不填均無分。
16.設(shè)int x=14;,則表達(dá)式x++%-5的值為__________。
17.設(shè)typedef char CHA;CHA ax;, 則變量ax 占用的內(nèi)存字節(jié)數(shù)是__________。
18.設(shè)int u, v;, 則表示“u、v中至少有一個是5的倍數(shù)”的表達(dá)式是__________。
19.設(shè)int x=5;, 則表達(dá)式2/(float)(x)+3/x的結(jié)果是__________。
20.程序中調(diào)用sin(3.14)函數(shù)時,需要包含的頭文件是__________。
21.若對一個非空文本文件進行讀取和修改,則在fopen中的“使用方式”應(yīng)是__________。
22.設(shè) struct
{ int a;
int b;
}x[2]={{1,2},{3,4}}, *p=x;
則表達(dá)式(++p)->a的值是__________。
23.設(shè)int i, j;
for(i=5;i;i--)
for(j=0; j<4;j++) {…}
則循環(huán)體的執(zhí)行次數(shù)是__________。
24.設(shè)int a[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}};
則表達(dá)式a[1][2]+a[2][3]的值是__________。
25.設(shè)char *p=″abcdABCD″;, 則執(zhí)行 printf(″% s″, p+4); 后輸出結(jié)果是__________。
三、程序分析題(本大題共4小題,每小題4分,共16分)
閱讀下列程序,請將輸出結(jié)果寫到各題右側(cè)的空白處。
26.main()
{int i, j, k; char a[5]={′*′,′*′,′*′,′*′,′*′};
for(i=0;i<4;i++)
{printf(″\n″);
for(j=0;j<=3*i;j++)printf(″$″);
for(k=0;k<5;k++)printf(″% c″,a[k]);
}
}
27.int fib(int n)
{if(n==0||n==1)return 1;
else return fib(n-1)+fib(n-2);
}
main()
{ int i;
for(i=0; i<=4;i++)printf(″%5d″,fib(i));
printf(″\n″);
}
28.main()
{int n=0; char str[80]=″Abc+mNp-xyZ″;
printf(″%s\n″,str);
while(str[n]!=′\0′)
str[n++]=str[n]>=′a′&& str[n]<=′z′? str[n]-′a′+′A′:str[n];
printf(″%s\n″, str);
}
29.int f(int n)
{ static int a=0;
int b=0;
a+=n;
b+=a;
return b;
}
main ()
{
printf(″%d\n″,f(5));
printf(″%d\n″,f(10));
}
四、程序填充題(本大題共3小題,每小題6分,共18分)
請將下列程序橫線處缺少的部分補上,使其能正確運行。
30.分別統(tǒng)計并輸出17、18、19和20歲各年齡的學(xué)生人數(shù)。
main()
{ int i, n, age, a[30];
for(i=0; i<30; i++) a[i]=0;
scanf(″%d″,&n); /* 輸入人數(shù)<30 */
for (i=0; i
if(age<17||age>20) _________; /* 第一空 */
else
switch(________) /* 第二空 */
{case 17:
case 18:
case 19:
case 20: a[age-17] ++;
}
}
for (i=0, i<=3; i++)
printf(″age=%d number=%d\n″,i+17,________); /* 第三空 */
}
31.將從鍵盤輸入的字符串逆序顯示。
#include
main()
{int n;
char str[80], *p;
printf(″Input a string:″);
gets(str);/*輸入字符串*/
n=strlen(________); /* 第一空 */
p=str+________-1; /* 第二空 */
while (p>=str)
{printf(″%c″, *p);
________; /* 第三空 */
}
printf(″/n″);
}
32.從鍵盤輸入一個星期幾(0~6),轉(zhuǎn)換為對應(yīng)的英文輸出(Sunday, Monday,…),當(dāng)輸入小于0或大于6的數(shù)字時程序結(jié)束。
main()
{int week;
static char *weekname[]={″Sunday″,″Monday″,″Tuesday″,″Wednesday″,
″Thrusday″,″Friday″,″Saturday″};
while(1)
{ printf(″Input weekday:″);
scanf(″%d″,__________); /* 第一空 */
if(________)break; /* 第二空 */
printf(″weekday:%d→%s\n″, week,__________); /* 第三空 */
}
}
五、程序設(shè)計題(本大題共2小題,每小題8分,共16分)
33.從鍵盤輸入100個整數(shù),輸出其中的數(shù)及其對應(yīng)的數(shù)組下標(biāo)值。
34.從鍵盤輸入某學(xué)生的成績(0≤score≤100)后,先輸出該同學(xué)的成績,再按下列條件
輸出