2011年全國高級語言程序設(shè)計(jì)模擬試卷(十)
一、單項(xiàng)選擇題(本大題共20小題,每小題1分,共20分)在每小題列出的四個選項(xiàng)中只有一個選項(xiàng)是符合題目要求的,請將正確選項(xiàng)前的字母填在題后的括號內(nèi)。
1. 以下能正確定義且賦初值的語句是()
A. int n1=n2=10;
B. char c=32;
C. float f=f+1.1;
D. double x=12.3E2.5;
答案:B
2. 若給定條件表達(dá)式:“(a)?(b++):(b--),”則與表達(dá)式 a 等價的表達(dá)式是()
A. a==0
B. a==1
C. a!=0
D. a!=1
答案:C
3. 函數(shù)調(diào)用語句“f(1,2+3,(4,5));”的實(shí)參數(shù)目是()
A. 1
B. 2
C. 3
D. 4
答案:C
4. 運(yùn)行下列程序后,輸出結(jié)果是()
int f(int a,int *b)
{ return(a+*b);}
main()
{ int x=1,y=2,z=3;
printf(″%d\n″,f(f(x,&y),&z));
}
A. 3
B. 5
C. 6
D. 7
答案:C
5. 設(shè)有下列數(shù)據(jù)定義語句,則表達(dá)式“sizeof(abc)”的值是()
struct { char a; short b; float c[2]; }abc;
A. 4
B. 7
C. 8
D. 11
答案:D
6. 設(shè)x和y均為int型變量,則執(zhí)行下面的循環(huán)后,y的值為()
for(y=1;x=1;y<=50;y++)
if(x>=10) break;
A. 10
B. 9
C. 11
D. 8
答案:A
7. 函數(shù)調(diào)用“strcmp(″333″,″300″)”的返回值是 ()
A. 0
B. 1
C. 任意負(fù)整數(shù)
D. 任意正整數(shù)
答案:D
8. 下列程序的輸出結(jié)果是()
struct abc
{int a,b,c;};
main()
{struct abc s[2]={{1,2,3},{4,5,6}};int t;
t=s[0].a+s[1].b;
printf(″%d\n″,t);
}
A. 5
B. 6
C. 7
D. 8
答案:B
9. 如果打開文件時,選用的文件操作方式為″wb+″,則下列說法中錯誤的是()
A. 要打開的文件必須存在
B. 要打開的文件可以不存在
C. 打開文件后可以讀取數(shù)據(jù)
D. 要打開的文件是二進(jìn)制文件
答案:A
10. 若已定義:int a[9],*p=a,并在以后的語句中未改變 p 的值,不能表示 a[1]地址的表達(dá)式是()
A. p+1
B. a+1
C. a++
D. ++p
答案:C
11. 以下程序的輸出結(jié)果是()
main()
{int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf(″%d %d″,x--,y);
}
A. 10192
B. 9876
C. 10990
D. 101091
答案:D
12. 能正確定義一個用來向打開文件的文件型指針變量 fp 的語句是()
A. file fp
B. file *fp
C. FILE fp
D. FILE *fp
答案:D
13. 下列程序段的輸出結(jié)果是 ()
char s[10];s=″abcd″;printf(″%s\n″,s);
A. abcd
B. a
C. abcd\0
D. 語法有錯誤
答案:D
解析:語法有錯誤
14. 存儲整數(shù)-12345時,在二進(jìn)制文件和文本文件中占用的字節(jié)數(shù)分別是 ()
A. 2和2
B. 2和6
C. 6和6
D. 6和2
答案:B
解析:2和6
15. 設(shè)有定義“ int x=8;”, 則表達(dá)式 “x+++1/3”的值是()
A. 0
B. 2
C. 3
D. 8
答案:D
解析:8
16. 設(shè)有條件表達(dá)式“(x)?1∶2”,則和表達(dá)式“(x)”作用相同的表達(dá)式是 ()
A. (x==0)
B. (x!=0)
C. (x==1)
D. (x!=1)
答案:B
解析:(x!=0)
17. 設(shè)有定義“short x[5]={1,2,3};”,則數(shù)組x占用的內(nèi)存字節(jié)數(shù)是()
A. 10
B. 6
C. 5
D. 3
答案:
解析:10
18. 設(shè)有整型變量x值為1,表達(dá)式x+++x+(++x)的值是 ()
A. 3
B. 4
C. 5
D. 6
答案:B
解析:6
19. 設(shè)整型變量m的值為0,表達(dá)式!!!++m的值是()
A. -1
B. 0
C. 1
D. 2
答案:
解析:0
20. 若有以下定義,則數(shù)值為4的表達(dá)式是()
int w[3][4]={{0,1},{2,4}{5,8}},(*p)[4]=w;
A. *w[1]+1
B. p++,*(p+1)
C. w[2][2]
D. p[1][1]
答案:D
解析:p[1][1]
二、填空題(本大題共10小題,每小題2分,共20分)請?jiān)诿啃☆}的空格中填上正確答案。錯填,不填均無分。
1. 若使用fopen函數(shù)打開一個新的二進(jìn)制文件,對該文件進(jìn)行讀寫操作,則文件使用方式字符 串應(yīng)該是___。答案:″wb+″
2. 設(shè)m是整型變量,能表示“m是奇數(shù)”的C語言表達(dá)式是___。
答案:if (m%2==1)
printf("m是奇數(shù)")
else printf("m是偶數(shù)")
3. 若有定義:char c=′\010′;則變量 c 中包含的字符個數(shù)為___。
答案:1個
4. 設(shè) int a[2][3]={{2},{3}};則數(shù)組元素___的值為3。
答案:a[1][0]
5. 若 a 是 int 型變量,則執(zhí)行a=25/3%3后 a 的值為___。
答案:2
6. 在C語言中,如果某個邏輯表達(dá)式為假,則該邏輯表達(dá)式的值是___。
答案:0
7. C語言中的標(biāo)識符只能由三種字符組成,它們是字母、數(shù)字和。_________
答案:下劃線
8. 設(shè)有下列數(shù)據(jù)定義語句,則表達(dá)式“++p->b”的值是_________。
struct AB { int a; float b; } ab[2]={{4,3},{2,1}},*p=ab;答案:40
9. 設(shè)int i=5;則循環(huán)語句while(i>=1)i--;執(zhí)行后,i的值為______
答案:0
10. 執(zhí)行語句“if (x=0) x=1;”后,變量x的值是______
答案:0
三、程序分析題(本大題共5小題,每小題5分,共25分)閱讀下列程序,將輸出結(jié)果寫到各題右側(cè)的空白處。
1. # include
main()
{int s=0,k;
for(k=7;k>=0;k--)
{ switch(k)
{case1:
case 4:
case 7:s++;break;
case 2:
case 3:
case 6:break;
case 0:
case 5:s+=2;break;
}
}
printf(″s=%d\n″,s);
}
輸出結(jié)果為?
答案:s=7
2. #include ″string.h″
main()
{ int n,i,j;
char s[]={″1,2,3,4,5,6,7″},temp;
n=strlen(s);
for (i=0;i
{ j=n-1-i;
temp=s[i];s[i]=s[j];s[j]=temp;
}
printf(″%s″,s);
}
輸出結(jié)果為?
答案:7,6,5,4,3,2,1
3. main()
{char *a[6]={″AB″,″CD″,″EF″,″GH″,″IJ″,″KL″};
int i;
for (i=0;i<4;i++) printf(″%s″,a[i]);
printf(″\n″);
}
答案:ABCDEFGH
4. # include
main( )
{ int s,i,sum;
for(i=1,i<=10;i++)s=sum(i);
printf(″s=%d\n″,s);
}
sum(int k){static int x=0;return(x+=k);}
答案:s=55
5. main()
{ int a[]={1,2,3,4,5,6};
int *p;
int i;
p=a;
*(p+3)+=2;
printf(″%d,%d\n″,*p,*(p+3));
}
答案:1,6
四、程序填充題(本大題共3小題,每小題6分,共18分)給出下列程序,將橫線處缺少的部分補(bǔ)上,使其能正確運(yùn)行。
1. 圖中空白處答案應(yīng)為:___,___,___。
答案:j=i+1
2. 下面程序的功能是根據(jù)以下公式求π的近似值(精度為10-6)。
π2=1+13+13×25+13×25×37+13×25×37×49+…
main()
{ double s=0.0,t=______;
int n;
for (n=2;t>=1E-6;n++)
{ s+=t;
;
}
printf(″%f\n″,);
}
答案:10
t=t*(n-1)/(2*(n-1)+1)
2*s
3. 下面程序輸出兩個字符串對應(yīng)位置相等的字符。
# include ″stdio.h″
main( )
{ char a[___]=″programming″,b[___]=″fortran″;
int i=0;
while(a[i]!=′\0′&&)
if(a[i]==b[i])printf(″%c″,);
else;
}
答案:
五、程序設(shè)計(jì)題(第1小題5分,第2、3小題各6分,共17分)
1.
答案:# include
# define N 50
main()
{ int i,s[N][3];
float s0=0,s1=0,s2=0;
for(i=0;i
{ scanf(″%d,%d,%d″,&s[i][0],&s[i][1],&s[i][2]);
s0=s0+s[i][0];s1=s1+s[i][1];s2=s2+s[i][2];
}
s0=s0/N;s1=s1/N;s2=s2/N;
printf(″%f,%f,%f″,s0,s1,s2);
}
2. 編一個程序,將兩個字符串連接起來,不要用 strcat 函數(shù)。
答案:# include
main()
{
char s1[80],s2[40];
int i=0,j=0;
printf(″\n input string1:″);
scanf(″%s″,s1);
printf(″\n input string2:″);
scanf(″%s″,s2);
while(s1[i]!=′\0′)
i++;
while(s2[j]!=′\0′)
s1[i++]=s2[j++];
s1[i]=′\0′;
printf(″\n new string:%s″,s1);
}
3. 從文件r.exe中讀10個浮點(diǎn)數(shù)并存入數(shù)組b中。
答案:# include ″stdio.h″
FILE *fp;/*定義文件型指針變量*/
main()
{ float b[10];
clrscr();/*清屏*/
if(! (fp=fopen(″r.exe″,″rb″)))/*文件打開失敗*/
{ printf(″cannot open file\n″);
exit(1);/*退出*/
}
if((fread(b,sizeof(float),10,fp))==10)/*從 fp 指向的文件讀10個數(shù)據(jù)成功*/if(! feof(fp))printf(″premature end of file″);/*文件沒讀完*/else printf(″file read end″);
getch();
fclose(fp);/*關(guān)閉文件*/
}