10.4复习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

复习ing

1.选择题

1.以下程序段的输出结果是( )

#include<stdio.h>
int main()
{
  char s[] = "\\123456\123456\t";
  printf("%d\n", strlen(s));
  return 0;
}

答案解析:
正确答案:12
这里考查转义字符,注意:\ 表示字符’‘,\123表示字符’{',\t表示制表符,这些都是一个字符

1.2若有以下程序,则运行后的输出结果是( )

#include <stdio.h>
#define N 2
#define M N + 1
#define NUM (M + 1) * M / 2
int main()
{
  printf("%d\n", NUM);
return 0;
}

答案解析:
宏只是替换,替换后NUM的样子是(2+1+1)*2+1/2,计算得8

1.3如下函数的 f(1) 的值为( )

nt f(int n)
{
  static int i = 1;
  if(n >= 5)
    return n;
  n = n + i;
  i++;
  return f(n);
}

答案解析:
正确答案:7
此题注意静态局部变量的使用,static改变了i的生命周期,第一次调用函数:i初值是1,递归第二次调用函数时,i还是第一次那个变量,值已经变成了2,再一次调用函数时i就是3,依次类推 n=1+1 n=2+2 n=4+3 f(1)=7

1.4 下面3段程序代码的效果一样吗( )

int b;
(1)const int *a = &b;
(2)int const *a = &b;
(3)int *const a = &b;

答案解析:
const在的左边,则指针指向的变量的值不可直接通过指针改变(可以通过其他途径改变);在的右边,则指针的指向不可变。简记为"左定值,右定向",(1)和(2)const都在的左边,(3)中const在的右边,所以1=2

1.5对于下面的说法,正确的是( )

A: 对于 struct X{short s;int i;char c;}sizeof(X)等于sizeof(s) + sizeof(i) + sizeof(c)
B: 对于某个double变量 a,可以使用 a == 0.0 来判断其是否为零
C: 初始化方式 char a[14] = "Hello, world!";char a[14]; a = "Hello, world!";的效果相同
D: 以上说法都不对

案解析:
正确答案:D
A选项,没有考虑内存对齐。B选项,考察double类型的比较,由于浮点数存在误差,不能直接判断两个数是否相等,通常采用比较两数之差的绝对值是否小于一个很小的数字(具体的可自己设定这样一个数,作为误差)来确定是否相等。C选项,a为数组首地址是常量不能改变,所以A,B,C都是错的,选择D

在这里插入图片描述
A 2+2+4+1+3=12 内存对齐课参考这 内存对齐

2.编程题

1.第一题

在这里插入图片描述

#include<stdio.h>
#include<math.h>
int main()
{
	int m = 0;
	scanf("%d", &m);
	int k = pow(m, 3);
	int i = 0;
	int j = 0;
	for (i = 0; i <=k; i++)
	{
		if (i % 2 == 1 && k == i * m + (m - 1) * m)
		{
			for (j = 0; j < m-1; j++)
			{
				printf("%d+", i + 2 * j);
			}
			printf("%d",i + (m - 1) * 2);

			
		}
		
	}

}

2 第二题

在这里插入图片描述

#include<stdio.h>
int main()
{
    int n;
    int ret = 0;
    while (scanf("%d", &n) != EOF)
    {
         ret = (2 + 2 + (n - 1) * 3) * n / 2;
         printf("%d", ret);
    }
    
    return 0;
}
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值