当前位置: 首页 > news >正文

10.3复习

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

文章目录

  • 前言
  • 1.选择题
    • 1.1执行下面程序,正确的输出是( )
    • 1.2以下不正确的定义语句是( )
    • 1.3 test.c 文件中包括如下语句,文件中定义的四个变量中,是指针类型的变量为【多选】( )
    • 1.4 若给定条件表达式 (M)?(a++):(a--) ,则其中表达式 M ( )
    • 1.5有如下定义语句,则正确的输入语句是【多选】( )
  • 2.编程题
    • 2.1题目一
    • 2.2题目二


前言

通过做题对之前的知识进行复习


1.选择题

1.1执行下面程序,正确的输出是( )

int x=5,y=7;
void swap()
{
int z;
  z=x;
  x=y;
  y=z;
}
int main()
{ 
int x=3,y=8; 
swap();
printf("%d,%d\n",x, y);
  return 0;
}

答案解析:
swap函数调用时用的是全局变量,主函数中定义的变量只在主函数中有效,因为主函数也是一个函数,它与其他函数是平行关系;输出语句这里,考虑局部优先的原则,故输出3,8

这时候你可能会疑惑要是x,y的值传给swap函数的话会输出多少呢

int x = 5, y = 7;
void swap(int x,int y)
{
	int z;
	z = x;
	x = y;
	y = z;
}
int main()
{
	int x = 3, y = 8;
	swap(x,y);
	printf("%d,%d\n",x, y);
	return 0;
}

在这里插入图片描述
显然没有交换,那么怎么才能交换呢,这就要考察c语言中的传值调用和传址调用了

int x = 5, y = 7;
void swap(int* x,int* y)
{
	int z;
	z = *x;
	*x = *y;
	*y = z;
}
int main()
{
	int x = 3, y = 8;
	swap(&x,&y);
	printf("%d,%d\n",x, y);
	return 0;
}

在这里插入图片描述
这样就交换好了。

1.2以下不正确的定义语句是( )

A: double x[5] = {2.0, 4.0, 6.0, 8.0, 10.0};
B: char c2[] = {'\x10', '\xa', '\8'};
C: char c1[] = {'1','2','3','4','5'};
D: int y[5+3]={0, 1, 3, 5, 7, 9};

答案解析:
正确答案:B
本题B选项考查转义字符,有如下格式,但八进制数字是0-7,没有8,故B选项中’\8’是错误的
\ddd ddd表示1到3个八进制数 如:\130 转义为 字符X
\xhh hh表示1到2位十六进制数 如:\x30 转义为 字符0
130八进制对应88 30十六进制对应48
这里考察转义字符,我们需要用到
在这里插入图片描述

1.3 test.c 文件中包括如下语句,文件中定义的四个变量中,是指针类型的变量为【多选】( )

#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a, b;
int_ptr c, d;

答案解析:
因为#define是宏定义,仅仅是直接替换,INT_PTR a, b; 进行宏替换后代码是这样的:int *a, b;这里的int *是a的类型,b的类型是int,故此次b只是int类型。而typedef是把该类型定义一个别名,别名是一个独立的类型了,使用这个类型创建的变量都是这个类型的。所以 a,c,d才是指针类型

1.4 若给定条件表达式 (M)?(a++):(a–) ,则其中表达式 M ( )

A:(M==0)等价 B:(M==1)等价 C:(M!=0)等价 D:(M!=1)等价

答案解析:
正确答案:C
给定条件表达式(M)?(a++):(a–)。 (表达式1)? (表达式2): (表达式3)为三目运算符。
计算规则为:先判断表达式1是否为真,若为真,则计算表达式2,并将表达式2的结果作为整个表达式最终的结果,表达式3不计算;否则,表达式3的结果为最终结果,表达式2不计算。 在此表达式中,若M=0,为假,计算a–; 若M≠0,为真,计算a++; 若要求与M等价,则要满足M取0时为假,取非0数值时为真。 c选项中:假定M取0,则M表示假,当M是0时,表达式M!=0不成立,为假,计算a–; 当M取非0数值时,M为真,表达式M!=0成立,为真,计算a++; 符合题意,选C

1.5有如下定义语句,则正确的输入语句是【多选】( )

int b;
char c[10];
A: scanf("%d%s",&b,&c); B: scanf("%d%s",&b,c);
C: scanf("%d%s",b,c); D: scanf("%d%s",b,&c);

答案解析: 正确答案:AB &c和c两个地址值是一样的,程序的效果相同,也没错,但同时也必须把变量b的地址给scanf,故CD错误,AB正确

2.编程题

2.1题目一

在这里插入图片描述

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 最大位数
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */
int* printNumbers(int n, int* returnSize ) {
    // write code here
    scanf("%d",&n);
    int i=0;
    *returnSize=pow(10,n)-1;
    int *arr=(int*)malloc(sizeof(int)*(*returnSize));//动态申请空间
    for(i=0;i<=*returnSize;i++)
    {
        arr[i]=i+1;
    }
    return arr;
}

2.2题目二

在这里插入图片描述

#include<stdio.h>
int main()
{
	int i, j, k;
	int n = 0;
	int num = 0;
	scanf("%d %d %d", &i, &j, &k);
	int arr1[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };
	int arr2[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
	if (((i % 4 == 0) && (i % 100 != 0)) || i % 400 == 0)//注意会判断闰年
	{
		for (n = 0; n <j - 1; n++)
		{
			num += arr1[n];
		}
		int ret = num + k;
		printf("%d", ret);
	}
	else
	{
		for (n = 0; n < j - 1; n++)
		{
			num += arr2[n];
		}
		int ret = num + k;
		printf("%d", ret);
	}
	
	return 0;

}

相关文章:

  • 【手把手带你学JavaSE】泛型的理解与使用
  • flink常见问题(持续更新)
  • ⌈Linux_ 感受系统美学⌋ 剖释“Linux下一切皆文件” | 底层级操作增进Linux内功
  • 【Java知识点大全】
  • 【华为机试真题 Python实现】矩阵扩散
  • 建立对单片机/嵌入式启动、运行的整体认知
  • 猿创征文 | 什么是PHP,PHP如何创建数据库
  • Kubernetes — StatefulSet 管理与使用
  • 想学习网络安全一定要学习web
  • 【leetcode刷题】数组篇
  • 基于VUE+Echarts大屏数据展示150套 (集合)
  • 【深度学习100例】—— 基于pytorch使用LSTM进行文本情感分析 | 第7例
  • 【基础巩固】详细总结对数组的理解
  • ⌈Linux_ 感受系统美学⌋ 剖释“Linux下一切皆文件” ,底层级操作增进Linux内功
  • 哪些是模糊用语-《软件方法》自测题解析020
  • 「面试题」如何实现一个圣杯布局?
  • 【RocksDB】TransactionDB源码分析
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • canvas 绘制双线技巧
  • canvas 五子棋游戏
  • express.js的介绍及使用
  • Git 使用集
  • IDEA常用插件整理
  • log4j2输出到kafka
  • Redux系列x:源码分析
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • SQL 难点解决:记录的引用
  • 翻译:Hystrix - How To Use
  • 搞机器学习要哪些技能
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 算法系列——算法入门之递归分而治之思想的实现
  • 一天一个设计模式之JS实现——适配器模式
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 自定义函数
  • 《天龙八部3D》Unity技术方案揭秘
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ###C语言程序设计-----C语言学习(6)#
  • $(selector).each()和$.each()的区别
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (十三)Maven插件解析运行机制
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)memcache、redis缓存
  • (转)nsfocus-绿盟科技笔试题目
  • (转)关于pipe()的详细解析
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • ./configure,make,make install的作用(转)
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .Family_物联网
  • .NET Core WebAPI中封装Swagger配置
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET Windows:删除文件夹后立即判断,有可能依然存在