A. int a[]=“string”; B. int a[5]={0,1,2,3,4,5}; C. char a=“string”; D. char a[]={0,1,2,3,4,5}; 8. 若有定义和语句:
static char s1[]=”abcd”; char s2[10]; s2=s1; printf(“%s\\n”,s2); 则结果是(以下□代表空格) 。
A.输出abcd B. 输出a C. 输出abcd□□□□□ D. 编译不通过
9. 函数调用:strcat(strcpy(str1,str2),str3)的功能是 。
A.将串str1复制到串str2中后再连接到串str3之后。 B.将串str1连接到串str2之后再复制到串str3之后。
C.将串str2复制到串str1中后再将串str3连接到串str1之后。 D.将串str2连接到串str1之后再将串str1复制到串str3中。
10. 以下程序段给数组所有元素输入数据,应在下划线处填入的是 。
A. a+(++i) B. &a[i++] C. a+i D. &a[++i] main()
{ int a[10],i=0;
while (i<10) scanf(“%d”, ); …… }
11. 以下程序的输出结果是:
A. 不确定的值 B. 3 C. 2 D. 1 main ( )
{ int n[2]={0},i,j,k=2; for (i=0; i 12.当运行以下程序时输入三行,每行都是在第一列上开始, 则程序的输出结果是 。 # include “stdio.h” # define N 6 main () { char c[N]; int i=0; for (i=0; i 21 for (i=0; i } A. abcdef B. a C. a D. a b b b c cd cdef d e f 13.以下程序的输出结果是 。 main() { int i, j, row, col, m; int arr[3][3]={ { 100,200,300 }, { 28,72,-30 }, { -850, 2, 6 } }; m=arr[0][0]; for (i=0; i<3; i++) for (j=0; j<3; j++) if ( arr[i][j] { m=arr[i][j]; row=i; col=j; } printf( “%d, %d, %d\\n”, m, row, col ); } A. –850,2,0 B. -850 C. 值不确定 D. 编译不通过 2 0 二、 填空题: 1.若有以下定义: double w[10]; 则w数组元素下标的上限为 ,下限为 。 2.以下定义 static int a[10]={1}; 只初始化数组元素 ,其它数组元素值为 。 3.字符数组的输入输出有两种方法: a. 用格式符 逐个字符输入或输出。 b. 用格式符 将整个字符串一次输入或输出。 4. strlwr(字符串)的作用是将字符串中的 字母转换成 字母。 5. 若有定义static int a[3][4]={{1,2},{0},{4,6,8,10}};则a[1][2]初值为 。a[2][1] 初值为 。 6.在C语言中,二维数组元素在内存中的存放顺序是 。 三、 判断题: 1.C允许对数组的大小作动态定义,即可用变量定义数组的大小。( ) 2.字符数组不要求它的最后一个字符为?\\0?,甚至可以不包含?\\0?。( ) 22 3. 数组定义 int a[10]; 也可以写成 int a(10); 。( ) 4.在对全部数组元素赋初值时,可以不指定数组长度。( ) 5.定义s为5×6(5行6列)的数组可写成 float a[5,6]; ( ) 6.数组定义 int a[10]; 表示数组名为a,此数组有10个元素。( ) 7.上题中,第10个元素为a[10]。 ( ) 8.static char c[]={“a book”}; 与static char c[]=“a book”; 等价。( ) 9.static char c[]={?a? , ? ? , ?b?, ?o?, ?o?, ?k?, ?\\0?};与 static char c[]={?a? , ? ? , ?b?, ?o?, ?o?, ?k?}; 等价。 ( ) 10.设已有说明:static char c1[10],c2[10]; 下面程序片段是合法的。 c1={“book”}; c2=c1; ( ) 四、 程序阅读题: 1.#define N 8 main() { int i,j,min,temp,a[N]; printf(“ 请输入八个数:\\n”) for (i=0;i { printf(“a[%d]=”,i); scanf(“%d”,&a[i]); } printf(“\\n”); for (i=0;i /* 数据整理 */ for (i=0;i for (j=i;j if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } /* 输出 */ for (i=0;i 假设输入的8个数据为:-5 10 20 40 –100 0 –50 60 该程序的运行结果是: 2.程序: main ( ) { static char a[5]={?*?, ?*?, ?*?, ?*?, ?*?}; int i,j,k; char space=? ?; 23 for (i=0;i<5;i++) { printf(“\\n”); for (j=1;j<=3*i;j++) printf(“”,space); for (k=0;k<5;k++) printf(“<”,a[k]); } } 该程序的运行结果是: 3. 程序:main ( ) { char ch[7]={“65ab21”}; int i,s=0; for (i=0;ch[i]>= ?0?&&ch[i]<= ?9?;i++) s=10*s+ch[i]-?0?; printf(“%d\\n”,s); } 该程序的运行结果是: 4. 程序如下: #define N 7 main() { int i,j,a[N][N]; for (i=1;i { a[i][i]=1; a[i][1]=1;} for (i=3;i for (j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for (i=1;i { for (j=1;j<=i;j++) printf(“m”,a[i][j]); printf(“\\n”); } printf(“\\n”); } 运行结果是: 五、 程序填空题: 1.统计从终端输入字符中每个大写字母的个数。用#号作为输入结束标志。程序如下: #include 24 { int num[26],i; char c; for (i=0;i<26;i++) num[i]=0; while ( ① != ?#?) /* 统计从终端输入的大写字母个数*/ if (isupper(c)) num[c-65] ② ; for (i=0;i<26;i++) /* 输出大写字母和该字母的个数*/ if (num[i])printf(“%c;%d\\n”,i ③ ,num[i]); } 2.对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdefg和abceef,则输出为-1。程序如下: #include { char str1[100],str2[100],c; int i,s; printf(“\\n Input string 1:\\n”);gets(str1); printf(“\\n Input string 2:\\n”);gets(str2); i= ① ; while((str1[i]==str2[i])&&(str1[i]!= ② )) i++; s= ③ ; printf(“%d\\n”,s); } 3. 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空: main( ) { float x[1000], sum=0.0, ave, a; int n=0, i; printf (“Enter mark : \\n”) ; scanf(“%f”, &a); while (a>=0.0 && n<1000) { sum+= ① ; x[n]= ② ; n++; scanf(“%f”, &a); } ave= ③ ; printf (“Output : \\n”); printf (“ave = %f\\n”, ave); for (i=0; i if ( ④ ) printf(“%f\\n”, x[i]); } 25