2020/7/6期末PTA

一、判断题

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;
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值