二、填空題(本大題共10小題,每小題2分,共20分)
請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無(wú)分。
21.一個(gè)C語(yǔ)言程序的執(zhí)行起點(diǎn)是__________。
22.設(shè)int x=3,y=5;,則執(zhí)行printf(″%d\n″,x^y);后輸出__________。
23.設(shè)int s[3][2]={1,2,3,4,5,6},(*p)[2]=s;,則*(*(p+1)+1)的值是__________。
24.C語(yǔ)言中,可以處理的兩類文件分別是文本文件和__________。
25.設(shè)int a=2;,則執(zhí)行a+=a*=15;后,變量a的值是__________。
26.設(shè)double y[4][5];,則數(shù)組y中元素的個(gè)數(shù)是__________。
27.設(shè)int x=7,y=3,則表達(dá)式x%y+x/y的值是__________。
28.設(shè)char s[]={″apple″};,則執(zhí)行printf(″%d\n″,strlen(s));后輸出的值是__________。
29.設(shè) union{int i;char j[10];float k;}u;則sizeof(u)的值是__________。
30.設(shè) #define MOD(a,b)a%bmain(){ int x=4,y=16,z;z=MOD(y,x);printf(″%d\n″,z++);}則程序執(zhí)行的結(jié)果是__________。
三、程序分析題(本大題共5小題,每小題5分,共25分)
閱讀下列程序,將輸出結(jié)果寫(xiě)到各題右側(cè)的空白處。
31.main()
{int x=15;
while(x<20)
{x++
if(x/3!=0){x++;break;}
else continue;
}
printf(″%d\n″,x);
}
32.fun(int a[],int i,int j)
{int t;
if(i {t=a[i];a[i]=a[j];a[j]=t;
i++;j--;
fun(a,i,j);
}
}
main()
{int x[]={2,4,6},i;
fun(x,0,2);
for(i=0;i<3;i++) printf(″%2d″,x[i]);
printf(″\n″);
}
33./*程序運(yùn)行時(shí),輸入一個(gè)整數(shù)5*/
main()
{int a,b[10],c,i=0;
printf(″輸入一個(gè)整數(shù)\n″);
scanf(″%d″,&a);
while(a!=0)
{c=a%2;
a=a/2;
b[i]=c;
i++;
}
for(;i>0;i--)printf(″%d″,b[i-1]);
}
34.# include
main()
{int a,b,i;
a=b=0;
for(i=0;i<=10;i+=2)
{a+=i;
b+=i+1;
}
printf(″a=%d\n″,a);
printf(″b=%d\n″,b-11);
}
35.int a=100;
s()
{static int a=20;
a++
printf(″%d\n″,a);
}
main()
{int i;
for(i=1;i<=3;i++)
{a++;
printf(″%d,″,a);
s();
}
}
四、程序填充題(本大題共3小題,每小題6分,共18分)
給出下列程序,將橫線處缺少的部分補(bǔ)上,使其能正確運(yùn)行。
36.對(duì)含有10個(gè)元素的數(shù)組a先按元素的存儲(chǔ)次序倒序輸入,再按其正序輸出。
#define_______/*第一空*/
main()
{int i,a[N];
for(i=N-1; _______;i--)/*第二空*/
scanf(″%d″, _______);/*第三空*/
for(i=0;i printf(″\n″);
}
37.學(xué)生成績(jī)的字母等級(jí)和分?jǐn)?shù)范圍如下:
字母等級(jí) 分?jǐn)?shù)范圍
A 90~100
B 80~89
C 70~79
D 60~69
E 0~59
其它字母 輸入錯(cuò)誤
輸入字母等級(jí)之后,輸出相應(yīng)的分?jǐn)?shù)范圍。
main()
{
_______;/*第一空*/
scanf(″%c″,&score);
switch(score)
{
case′A′:printf(″A:90~100\n″);_________;/*第二空*/
case′B′:printf (″B:80~89\n″);break;
case′C′:printf (″C:70~79\n″);break;
case′D′:printf (″D:60~69\n″);break;
case′E′:printf (″E: 0~59\n″);break;
_______:printf(″輸入錯(cuò)誤\n″);/*第三空*/
}
}
38.文本文件num.dat中含有若干個(gè)整數(shù),將這些數(shù)據(jù)讀出后求出它們的和,再將這些數(shù)據(jù)與它們的和分別顯示到屏幕上。
#include
main()
{int num;long int sum=0L;
FILE*fp;
fp=fopen(″num.dat″, ″r″);
do
{
fscanf(________,&num);/*第一空*/
sum+=_________;/*第二空*/
printf(″%5d″,num);
}while(_______);/*第三空*/
printf(″\nsum=%ld\n″,sum);
fclose(fp);
}
五、程序設(shè)計(jì)題(本大題共3小題,第39小題5分,第40、41小題各6分,共17分)
39.輸入兩個(gè)實(shí)型數(shù)x和y,計(jì)算并輸出它們的和、差、積和商。
40.輸入自變量x的值后,計(jì)算并輸出y的值。
計(jì)算公式:y=
41.用循環(huán)結(jié)構(gòu)輸出下列數(shù)字金字塔(共9行)。
1
121
12321
1234321
……………
12345678987654321
請(qǐng)?jiān)诿啃☆}的空格中填上正確答案。錯(cuò)填、不填均無(wú)分。
21.一個(gè)C語(yǔ)言程序的執(zhí)行起點(diǎn)是__________。
22.設(shè)int x=3,y=5;,則執(zhí)行printf(″%d\n″,x^y);后輸出__________。
23.設(shè)int s[3][2]={1,2,3,4,5,6},(*p)[2]=s;,則*(*(p+1)+1)的值是__________。
24.C語(yǔ)言中,可以處理的兩類文件分別是文本文件和__________。
25.設(shè)int a=2;,則執(zhí)行a+=a*=15;后,變量a的值是__________。
26.設(shè)double y[4][5];,則數(shù)組y中元素的個(gè)數(shù)是__________。
27.設(shè)int x=7,y=3,則表達(dá)式x%y+x/y的值是__________。
28.設(shè)char s[]={″apple″};,則執(zhí)行printf(″%d\n″,strlen(s));后輸出的值是__________。
29.設(shè) union{int i;char j[10];float k;}u;則sizeof(u)的值是__________。
30.設(shè) #define MOD(a,b)a%bmain(){ int x=4,y=16,z;z=MOD(y,x);printf(″%d\n″,z++);}則程序執(zhí)行的結(jié)果是__________。
三、程序分析題(本大題共5小題,每小題5分,共25分)
閱讀下列程序,將輸出結(jié)果寫(xiě)到各題右側(cè)的空白處。
31.main()
{int x=15;
while(x<20)
{x++
if(x/3!=0){x++;break;}
else continue;
}
printf(″%d\n″,x);
}
32.fun(int a[],int i,int j)
{int t;
if(i
i++;j--;
fun(a,i,j);
}
}
main()
{int x[]={2,4,6},i;
fun(x,0,2);
for(i=0;i<3;i++) printf(″%2d″,x[i]);
printf(″\n″);
}
33./*程序運(yùn)行時(shí),輸入一個(gè)整數(shù)5*/
main()
{int a,b[10],c,i=0;
printf(″輸入一個(gè)整數(shù)\n″);
scanf(″%d″,&a);
while(a!=0)
{c=a%2;
a=a/2;
b[i]=c;
i++;
}
for(;i>0;i--)printf(″%d″,b[i-1]);
}
34.# include
main()
{int a,b,i;
a=b=0;
for(i=0;i<=10;i+=2)
{a+=i;
b+=i+1;
}
printf(″a=%d\n″,a);
printf(″b=%d\n″,b-11);
}
35.int a=100;
s()
{static int a=20;
a++
printf(″%d\n″,a);
}
main()
{int i;
for(i=1;i<=3;i++)
{a++;
printf(″%d,″,a);
s();
}
}
四、程序填充題(本大題共3小題,每小題6分,共18分)
給出下列程序,將橫線處缺少的部分補(bǔ)上,使其能正確運(yùn)行。
36.對(duì)含有10個(gè)元素的數(shù)組a先按元素的存儲(chǔ)次序倒序輸入,再按其正序輸出。
#define_______/*第一空*/
main()
{int i,a[N];
for(i=N-1; _______;i--)/*第二空*/
scanf(″%d″, _______);/*第三空*/
for(i=0;i
}
37.學(xué)生成績(jī)的字母等級(jí)和分?jǐn)?shù)范圍如下:
字母等級(jí) 分?jǐn)?shù)范圍
A 90~100
B 80~89
C 70~79
D 60~69
E 0~59
其它字母 輸入錯(cuò)誤
輸入字母等級(jí)之后,輸出相應(yīng)的分?jǐn)?shù)范圍。
main()
{
_______;/*第一空*/
scanf(″%c″,&score);
switch(score)
{
case′A′:printf(″A:90~100\n″);_________;/*第二空*/
case′B′:printf (″B:80~89\n″);break;
case′C′:printf (″C:70~79\n″);break;
case′D′:printf (″D:60~69\n″);break;
case′E′:printf (″E: 0~59\n″);break;
_______:printf(″輸入錯(cuò)誤\n″);/*第三空*/
}
}
38.文本文件num.dat中含有若干個(gè)整數(shù),將這些數(shù)據(jù)讀出后求出它們的和,再將這些數(shù)據(jù)與它們的和分別顯示到屏幕上。
#include
main()
{int num;long int sum=0L;
FILE*fp;
fp=fopen(″num.dat″, ″r″);
do
{
fscanf(________,&num);/*第一空*/
sum+=_________;/*第二空*/
printf(″%5d″,num);
}while(_______);/*第三空*/
printf(″\nsum=%ld\n″,sum);
fclose(fp);
}
五、程序設(shè)計(jì)題(本大題共3小題,第39小題5分,第40、41小題各6分,共17分)
39.輸入兩個(gè)實(shí)型數(shù)x和y,計(jì)算并輸出它們的和、差、積和商。
40.輸入自變量x的值后,計(jì)算并輸出y的值。
計(jì)算公式:y=
41.用循環(huán)結(jié)構(gòu)輸出下列數(shù)字金字塔(共9行)。
1
121
12321
1234321
……………
12345678987654321