第5章 第4节:数组的应用举例(练习)-《编程语言基础—C语言》(高教版第5版)同步精品课堂
|
2份
|
21页
|
51人阅读
|
2人下载
内容正文:
5.4节:数组的应用举例
一、单项选择题
1.执行语句char str[] = "abcde"; printf("%d", strlen(str)); 输出( )
A. 5 B. 6
C. 不确定 D. 编译错误
2.以下代码段输出结果是()
int a[3][3] = {1,2,3,4,5,6,7,8,9};
printf("%d", a[1][2]);
A. 2 B. 4 C. 6 D. 8
3.以下关于strcpy函数的说法正确的是()
A. strcpy会检查目标数组空间是否足够
B. strcpy会自动在目标字符串末尾添加'\0'
C. strcpy可以用于连接两个字符串
D. strcpy的第一个参数是源字符串
4.以下代码段输出结果是()
char s1[] = "abc", s2[] = "def";
strcat(s1, s2);
printf("%s", s1);
A. abc B. def
C. abcdef D. 运行时错误
5.以下代码段输出结果是()
int a[5] = {1,2,3,4,5}, i, sum = 0;
for(i = 0; i < 5; i++) sum += a[i];
printf("%d", sum);
A. 15 B. 10 C. 5 D. 不确定
6.以下关于字符数组的说法错误的是()
A. 字符数组可以存储字符串
B. 字符数组可以用%s格式输出
C. 字符数组名表示数组首地址
D. 字符数组可以用=运算符整体赋值
7.以下关于数组的说法正确的是()
A. 数组元素在内存中连续存放
B. 数组名可以赋值给另一个数组名
C. 数组下标可以是负数
D. 数组定义时大小必须是常量表达式
8.以下代码段输出结果是()
char s[] = "abc\0def";
printf("%d", strlen(s));
A. 3 B. 7 C. 6 D. 不确定
二、程序运行结果题
9.执行以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[5] = {1,2,3,4,5}, i, j;
for(i = 0; i < 5; i++)
{
for(j = 0; j < i; j++)
printf("*");
printf("
");
}
}
10.执行以下程序的输出结果是()
#include <stdio.h>
#include <string.h>
main()
{
char s[] = "12345";
printf("%c", s[strlen(s)-1]);
}
11.执行以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[5] = {1,2,3,4,5}, i, sum = 0;
for(i = 0; i < 5; i++)
{
if(i % 2 == 0) sum += a[i];
else sum -= a[i];
}
printf("%d", sum);
}
12.执行以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[3][3] = {1,2,3,4,5,6,7,8,9}, i, j;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
printf("%d ", a[j][i]);
printf("
");
}
}
13.执行以下程序的输出结果是()
#include <stdio.h>
#include <string.h>
main()
{
char s1[10] = "123", s2[10] = "456";
strcat(s1 + 1, s2 + 1);
printf("%s", s1);
}
14.执行以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}, i, sum = 0;
for(i = 0; i < 3; i++)
sum += a[i][i % 2 + 1];
printf("%d", sum);
}
15.执行以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}, i, j;
for(i = 0; i < 3; i++)
{
for(j = 0; j <= i; j++)
printf("%d ", a[i][j]);
printf("
");
}
}
16.执行以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[5] = {1,2,3,4,5}, i, sum = 0;
for(i = 0; i < 5; i++)
{
if(a[i] % 2 == 0)
continue;
sum += a[i];
}
printf("%d", sum);
}
17.执行以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}, i, j;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
if(i == j)
printf("%d ", a[i][j]);
printf("
");
}
}
18.执行以下程序的输出结果是()
#include <stdio.h>
main()
{
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}, b[3][3], i, j;
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
b[j][i] = a[i][j];
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
printf("%d ", b[i][j]);
printf("
");
}
}
19.执行以下程序的输出结果是()
#include <stdio.h>
#include <string.h>
main()
{
char s1[20] = "hello", s2[20] = "world";
int len1 = strlen(s1), len2 = strlen(s2), i;
for(i = 0; i < len2; i++)
s1[len1 + i] = s2[i];
s1[len1 + len2] = '\0';
printf("%s", s1);
}
20.执行以下程序的输出结果是()
#include <stdio.h>
#include <string.h>
main()
{
char s[20] = "Programming", result[20];
int i, j = 0;
for(i = 0; s[i] != '\0'; i++)
if(s[i]!= 'a' && s[i] != 'e'&& s[i] != 'i' && s[i] != 'o' && s[i] != 'u')
result[j++] = s[i];
result[j] = '\0';
printf("%s", result);
}
三、编程题
1.编写程序,在有序数列{1,3,5,7,9}中插入一个数,使数列仍然有序。
2.编写程序,输入5个学生的3门课程成绩,计算每个学生的平均成绩。
3.编写程序,输入一个5×5矩阵,求副对角线元素之和。
4.编写程序,输入10个学生的成绩,找出最高分和最低分,并计算去掉最高分和最低分后的平均分。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
5.4节:数组的应用举例
一、单项选择题
1.执行语句char str[] = "abcde"; printf("%d", strlen(str)); 输出( )
A. 5 B. 6
C. 不确定 D. 编译错误
【答案】A
2.以下代码段输出结果是( )
int a[3][3] = {1,2,3,4,5,6,7,8,9};
printf("%d", a[1][2]);
A. 2 B. 4 C. 6 D. 8
【答案】C
3.以下关于strcpy函数的说法正确的是( )
A. strcpy会检查目标数组空间是否足够
B. strcpy会自动在目标字符串末尾添加'\0'
C. strcpy可以用于连接两个字符串
D. strcpy的第一个参数是源字符串
【答案】B
4.以下代码段输出结果是( )
char s1[] = "abc", s2[] = "def";
strcat(s1, s2);
printf("%s", s1);
A. abc B. def
C. abcdef D. 运行时错误
【答案】D s1空间不足,连接后可能导致缓冲区溢出
5.以下代码段输出结果是( )
int a[5] = {1,2,3,4,5}, i, sum = 0;
for(i = 0; i < 5; i++) sum += a[i];
printf("%d", sum);
A. 15 B. 10 C. 5 D. 不确定
【答案】A
6.以下关于字符数组的说法错误的是( )
A. 字符数组可以存储字符串
B. 字符数组可以用%s格式输出
C. 字符数组名表示数组首地址
D. 字符数组可以用=运算符整体赋值
【答案】D
7.以下关于数组的说法正确的是( )
A. 数组元素在内存中连续存放
B. 数组名可以赋值给另一个数组名
C. 数组下标可以是负数
D. 数组定义时大小必须是常量表达式
【答案】A
8.以下代码段输出结果是( )
char s[] = "abc\0def";
printf("%d", strlen(s));
A. 3 B. 7 C. 6 D. 不确定
【答案】A
二、程序运行结果题
9.执行以下程序的输出结果是( )
#include <stdio.h>
main()
{
int a[5] = {1,2,3,4,5}, i, j;
for(i = 0; i < 5; i++)
{
for(j = 0; j < i; j++)
printf("*");
printf("
");
}
}
【答案】
*
**
***
****
10.执行以下程序的输出结果是( )
#include <stdio.h>
#include <string.h>
main()
{
char s[] = "12345";
printf("%c", s[strlen(s)-1]);
}
【答案】5
11.执行以下程序的输出结果是( )
#include <stdio.h>
main()
{
int a[5] = {1,2,3,4,5}, i, sum = 0;
for(i = 0; i < 5; i++)
{
if(i % 2 == 0) sum += a[i];
else sum -= a[i];
}
printf("%d", sum);
}
【答案】3
12.执行以下程序的输出结果是( )
#include <stdio.h>
main()
{
int a[3][3] = {1,2,3,4,5,6,7,8,9}, i, j;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
printf("%d ", a[j][i]);
printf("
");
}
}
【答案】
1 4 7
2 5 8
3 6 9
13.执行以下程序的输出结果是( )
#include <stdio.h>
#include <string.h>
main()
{
char s1[10] = "123", s2[10] = "456";
strcat(s1 + 1, s2 + 1);
printf("%s", s1);
}
【答案】12356
14.执行以下程序的输出结果是( )
#include <stdio.h>
main()
{
int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}, i, sum = 0;
for(i = 0; i < 3; i++)
sum += a[i][i % 2 + 1];
printf("%d", sum);
}
【答案】19
15.执行以下程序的输出结果是( )
#include <stdio.h>
main()
{
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}, i, j;
for(i = 0; i < 3; i++)
{
for(j = 0; j <= i; j++)
printf("%d ", a[i][j]);
printf("
");
}
}
【答案】
1
4 5
7 8 9
16.执行以下程序的输出结果是( )
#include <stdio.h>
main()
{
int a[5] = {1,2,3,4,5}, i, sum = 0;
for(i = 0; i < 5; i++)
{
if(a[i] % 2 == 0)
continue;
sum += a[i];
}
printf("%d", sum);
}
【答案】9
17.执行以下程序的输出结果是( )
#include <stdio.h>
main()
{
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}, i, j;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
if(i == j)
printf("%d ", a[i][j]);
printf("
");
}
}
【答案】
1
5
9
18.执行以下程序的输出结果是( )
#include <stdio.h>
main()
{
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}}, b[3][3], i, j;
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
b[j][i] = a[i][j];
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
printf("%d ", b[i][j]);
printf("
");
}
}
【答案】
1 4 7
2 5 8
3 6 9
19.执行以下程序的输出结果是( )
#include <stdio.h>
#include <string.h>
main()
{
char s1[20] = "hello", s2[20] = "world";
int len1 = strlen(s1), len2 = strlen(s2), i;
for(i = 0; i < len2; i++)
s1[len1 + i] = s2[i];
s1[len1 + len2] = '\0';
printf("%s", s1);
}
【答案】helloworld
20.执行以下程序的输出结果是( )
#include <stdio.h>
#include <string.h>
main()
{
char s[20] = "Programming", result[20];
int i, j = 0;
for(i = 0; s[i] != '\0'; i++)
if(s[i]!= 'a' && s[i] != 'e'&& s[i] != 'i' && s[i] != 'o' && s[i] != 'u')
result[j++] = s[i];
result[j] = '\0';
printf("%s", result);
}
【答案】Prgrmmng
三、编程题
1.编写程序,在有序数列{1,3,5,7,9}中插入一个数,使数列仍然有序。
【答案】
#include <stdio.h>
main()
{
int a[6] = {1,3,5,7,9}, n, i, pos = 5;
scanf("%d", &n);
for(i = 4; i >= 0; i--)
{
if(a[i] > n)
{
a[i+1] = a[i];
pos = i;
} else break;
}
a[pos] = n;
for(i = 0; i < 6; i++) printf("%d ", a[i]);
}
2.编写程序,输入5个学生的3门课程成绩,计算每个学生的平均成绩。
【答案】
#include <stdio.h>
main()
{
float score[5][3], avg[5];
int i, j;
for(i = 0; i < 5; i++)
{
avg[i] = 0;
for(j = 0; j < 3; j++)
{
scanf("%f", &score[i][j]);
avg[i] += score[i][j];
}
avg[i] /= 3;
}
for(i = 0; i < 5; i++)
printf("学生%d平均分:%.2f
", i+1, avg[i]);
}
3.编写程序,输入一个5×5矩阵,求副对角线元素之和。
【答案】
#include <stdio.h>
main()
{
int a[5][5], i, j, sum = 0;
for(i = 0; i < 5; i++)
for(j = 0; j < 5; j++)
scanf("%d", &a[i][j]);
for(i = 0; i < 5; i++)
sum += a[i][4-i];
printf("副对角线元素之和:%d
", sum);
}
4.编写程序,输入10个学生的成绩,找出最高分和最低分,并计算去掉最高分和最低分后的平均分。
【答案】
#include <stdio.h>
main()
{
float score[10], max, min, sum = 0, avg;
int i;
for(i = 0; i < 10; i++)
{
scanf("%f", &score[i]);
sum += score[i];
}
max = min = score[0];
for(i = 1; i < 10; i++)
{
if(score[i] > max)
max = score[i];
if(score[i] < min)
min = score[i];
}
avg = (sum - max - min) / 8;
printf("最高分:%.2f,最低分:%.2f,平均分:%.2f
", max, min, avg);
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$