一、單項選擇題(本大題共20小題,每小題2分,共40分。在每小題給出的四個備選項中,選出一個正確的答案,并將所選項前的字母填寫在答題紙的相應位置上。)
- 若 x 為int 型變量,則執行以下語句后,x的值為()
x=5; x=x*x;
A. 25
B.-20
C. 20
D.-25
- 若x、i、j、k都是 int型變量,則計算下面表達式后, x的值為()x=(i=4,j=6,k-16
A. 4
B. 8
C. 16
D. 32
- 定義 int x=10,y=20,z;執行 y=z-xx=y-2后,變量 x 的值為()
A. 1
B. 10
C.16
D. 20
- 下列程序段執行后 k 值為()
int k=0,i,j;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
k=k+1;
A. 15
B. 3
C. 5
D. 12
5,數學上的關系式x2y22,應使用C語言表達式()
A. (x>=y)&&(y>=z)
B. (x>=y)AND(y>=z)
C. (x>=y>=z)
D. (x>=y) & (y>=z)
6.若有變量定義double x;int a;要給x和a輸入數據,正確的輸入語句是()
A. scanf(“%d%d”,&x,&a);
B. scanf(“%f%d”,&x,&a);
C. scanf(“%f%f”,&x,&a);
D. scanf(“%lf%d”,&x,&a);
7·關系表達式15!=5的值是()
A. true
B. false
C. 0
D. 1
8,字符串"I 'm jerry."的長度是()
A. 11
B. 10
C. 12
D. 13
9.若char str[10]= “I am happy”,則 str[3]的值為()
A. T
B. ‘a’
C. "
D. ‘m’
10.設x, y和z是int型變量,且x=3, y=4, z-5,則下面表達式中值為0的是()
A. ‘x’&&'y
B. x<=y
C. xllytz && y-z
D. !((x<y) && !zl1)
11函數int max(inty,ingy)geturn(x>y?xy); }的功能是()
A.求3個數的最大數
B. 求 3 個數的最小數
C. 求 2 個數的較大數
D. 求 2 個數的較小數
12,若x,y,z均為int型變量,則執行以下語句后的輸出為()
x=(y=(z=10)+5)-5; printf(“x=%d,y=%d,z=%d\n”,x,y,z);
A. x=10,y=15,z=15
B. x=10,y=10,z=10
C. x=10,y=15,z=10
D. x=10,y=10,z=10
- 函數調用語句: d-max(c,max(a,b));中實參的個數為()
A. 1
B. 2
C. 3
D. 4
14,以下能正確定義數組并正確賦初值的語句是()
A. int n=3,b[n][n];
B. int a[1][2]={{1},{3}};
C.int c[2]0={{1,2},{3,4)}
D. int a[3][2]={{1,2},{3,4}}
15,在執行int a][3]-{1,2,3,4,5,6};語句后, a[1][0]的值是()
A. 4
B. 1
C. 2
D. 5
16,程序段如下,則以下說法中正確的是()
int k=10;
while(k=0)k=k+1;
A. while循環執行10次
B. 循環是無限循環
C. 循環體語句一次也不執行
D. 循環體語句執行一次
- C語言允許定義函數值類型為空類型,表示函數值為空類型的類型名是()
A. float
B. int
C. void
D. double
- 有如下程序段int*p,a=10,b=1; p=&a; a=*p+b;執行該程序段后,a的值為()
A. 12
B. 11
C. 10
D. 編譯出錯
19.設a=3,b=2,則表達式 a^b>>2 的值的二進制表示為()
A. 00000110
B. 00000011
C. 00000100
D. 00000010
20,假定w、x、y、2、m均為int型變量,有如下程序段:m=(m<y)?m:y; m=(m<z)?m:z;則該程序段執行后,m 的值是()
A. 4
B. 3
C. 2
D. 1
二、程序閱讀題(本大題共5小題,每小題6分,共30分。請將程序的運行結果填寫在答題紙的相應位置上。)
1._______
#include <stdio.h>int main() {int a = 7, b = 5;printf("%d\n", b = b / a);return 0;
}
2______
#include <stdio.h>int func(int x, int y);int main() {int a = 1, b = 2, c = 3, d = 4, e = 5;printf("%d\n", func((a + b, b + c, c + a), (d + e)));return 0;
}int func(int x, int y) {return (x + y);
}
3______
#include <stdio.h>void main() {int i = 0, s = 0;do {s += i * 2 + 1;printf("i=%d, s=%d\n", i, s);i++;} while (s < 10);
}
4_______
#include <stdio.h>void func(int *a, int b[]) {b[0] = *a + 6;
}void main() {int a, b[5];a = 0;b[0] = 3;func(&a, b);printf("%d \n", b[0]);
}
5_______
#include <stdio.h>#define PR(ar) printf("%d", ar)void main() {int j, a[] = {1, 3, 5, 7, 9, 11, 13, 15}, *p = a + 5;for (j = 3; j; j--)switch (j) {case 1:case 2:PR(*p++);break;case 3:PR(*(-p));}
}
三、程序填空題(每空5分,共35分。請將答案填寫在答題紙的相應位置上
-
打印出楊輝三角形(要求打印出 10 行).
注意:不可以增加或刪除程序行,也不可以更改程序的結構。
#include"stdio.h"
void main(){
int ij;
int a[10][10];
printf(“\n”);
for(i=0;i<10;i++)
{
① ;
a[i][i]=1;
}
for(i=0;i<10;i++)
forj=1;②;j++)
a[i][i]=③
for(i=0;i<10;i++)
{
for(j=0:j<=i:j++)
printf(“%5d”,a[i][i]);
printf(“n”);
}
}
2.一球從 100 米高度自由落下,每次落地后反跳回原來高度的一半,再落下,求它在第十次落地時,共經過多少米?第十次反彈多高?
#include <stdio.h>
void main
{
float Sn=100.0,hn=Sn/2;
int n;
for (n=2;n<=10;n++)
{
Sn=;hn=_;
printf"第10次落地時共經過%f米n",Sn);
printf(“第 10 次反彈%f 米\n”,hn);、
}
3,下面函數的功能是對n個整數利用選擇法進行由小到大排序。所謂選擇法是指:先將n個數中的最小的數與a[0]對換;再將a[1]到a[9]中的最小數與a[1]對換;如此往復……請填空。
void sort(int a [], int n)
{
inti,j,k,t;
for(i = 0; i<n -1; i++)
{
①;
for (j=i+l; j<n; j++)
{ if (②) k=j; }
t=a[k]; a[k]=a[i]; a[i]=t
}
}四、編程題(本大題共3小題,每小題15分,共45分。請在答題紙的相應位置上作答。)
1.編寫函數copy(char str1D,char str20),實現字符串的復制。
(1) 用 for 循環編寫函數 copy(char str10,char str20),不允許用 strepy0函數。
(2)編寫主函數調用copy(char strl0,char str20)2,現有10個城市名及其春、夏、秋、冬四個季節的平均溫度值,編寫程序,定義合適的結構體,輸入10個城市名和四季溫度,計算各個城市的全年平均溫度,并按照平均溫度從低到高的順序輸出城市名、四季溫度及全年平均溫度。
3.用遞歸的方法將一個整數n轉換成字符串。例如,輸入1234S而輸出字符串234954的位!數不確定,可以是任意位數的整數。