一、判断题
1-1 以下函数可以实现将数组a中的元素循环左移m位的功能(2分)
void func( int a[], int n, int m )
{
int i, j, temp;
for( i=0; i<m; i++ ){
temp = a[0];
for( j=1; j<n; j++){
a[j-1] = a[j];
}
a[n-1] = temp;
}
}
正确答案T,具体怎么做待查
1-3 关于C语言指针的运算:两个指针可以相减,其结果是两个地址值之差。
正确答案F
两个指针相减代表中间间隔的元素个数,又可理解为两个指针的距离。
二、单选题
2-4 对于以下递归函数f,调用f(5), 其返回值是___。(2分)
int f( int n )
{
if( n )
return f( n-1 ) * n;
else
return 1;
}
A.6 B.0 C.120 D.24
D错误,正确答案未知
2-6 凡是函数中未指定存储类别的局部变量,其隐含的存储类型为( )。(2分)
A.自动(auto) √
B.外部(extern)
C.静态(static) ×
D.寄存器(register)
自动(auto):
在调用函数时,系统会给这些变量分配储存空间,调用结束后就自动释放这些储存空间。
实际上,在定义自动变量时,关键字“auto”可以省略。不写“auto”则默认为“自动储存类别”。
静态(static):
函数中的静态局部变量在函数调用结束后不消失且继续保留原值,占用的储存单元不释放。
2-8 下列程序段执行后s
的值为( )。
int i=5, s=0;
while(i--)
if (i%2) continue;
else s+=i;
A.6 B.9
×
C.10 D.15
正确答案:待查
2-10 以下不正确的赋值或赋初值的方式是( )。(2分)
A.char str[7]={‘s’, ‘t’, ‘r’, ‘i’, ‘n’, ‘g’};
x
B.char str[]=“string”;
C.char str[10];str=“string”;
D.char str[7]={‘s’, ‘t’, ‘r’, ‘i’, ‘n’, ‘g’, ’\0’};√
待解析
三、程序填空题
5-1 小明刚刚看了一篇文章论身高对人的影响,说越高的人越容易成功。小明赶紧行动要拿下班里最高的同学做朋友,那就预示着以后自己就是成功人士的朋友了。请帮小明写一个程序输入班里20个同学的身高,然后找出最高身高并输出(身高以cm为单位,整型数据),请填空完成相应功能。
#include <stdio.h>
#define N 20 (1分)
int main(void)
{ int a[N],i,*p,max;
for(i=0; i<N; i++) //输入数据
{
scanf("%d",&a[i]);
}
`在这里插入代码片`;(1分)
max=*p;
for(p=&a[1]; `在这里插入代码片`(1分);p++)
{
if(`在这里插入代码片`)(1分) max=*p;
}
printf("%d\n",max);
return 0;
}
5-2 本题要求在一维数组a中将x插入到下标为i(i>=0)的元素前。如果i>=元素的个数,则x插入到末尾。
#include <stdio.h>
void insert(int a[ ], int *n, int x, int i)
{
int j;
if (`在这里插入代码片`(1分))
for (j=*n-1; `在这里插入代码片`(1分); j--)
`在这里插入代码片` = a[j];
else
i = *n;
a[i]= `在这里插入代码片`;
(*n)++;
}
int main()
{
int a[100],x,i,n;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &a[i]);
scanf("%d%d", &x, &i);
insert(a,&n,x,i);
for(i=0; i<n; i++)
printf("%d " , a[i]);
printf("\n");
return 0;
}
5-1 计算并输出一个非零整数序列(序列非空)中偶数的平均值。所有输入数据用空格隔开,用0结束输入。输出数据保留2位小数。
#include <stdio.h>
int main()
{
int number;
int sum,n;
double average;
n = 0;
sum = 0;
scanf("%d",&number);
while(`在这里插入代码片`(1分){
if(number%2 == 0){
sum += number;
n ++;
}
`在这里插入代码片`(2分);
}
`在这里插入代码片`(2分);
printf("%.2lf\n",average);
return 0;
}
5-4 求一个给定的m×n矩阵各列元素之和。
输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间以空格分隔。
输出格式:
每行输出对应矩阵列元素之和。
输入样例:
3 2
6 3
1 -8
3 12
输出样例:
10
7
#include <stdio.h>
#define MAXM 6
#define MAXN 6
int main()
{
int i, j, m, n, sum;
int a[MAXM][MAXN];
scanf("%d %d", &m, &n);
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
for `在这里插入代码片`(2分)
{
`在这里插入代码片`(1分)
for `在这里插入代码片`(2分)
{
sum += a[i][j];
}
printf("%d\n", sum);
}
return 0;
}