C语言假期作业 DAY 12

这篇具有很好参考价值的文章主要介绍了C语言假期作业 DAY 12。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、选择题

1、请阅读以下程序,其运行结果是( )

int main()
{
char c='A';
if('0'<=c<='9') printf("YES");
else printf("NO");
return 0;
}

A: YES
B: NO
C: YESNO
D: 语句错误

答案解析

正确答案: A
'0'<=c<='9' 并非判断 x 大于等于字符 0, 小于等于字符 9 ,而是先执行 '0'<=c ,使用这个表达式的结果再和 '9' 比较, '0' 的ASCII码值是 48 , 'A' 的 ASCII 码值是 '65' ,故 '0'<c 是真值 1 , 1 无疑是小于字符 '9' 的,最终是真

2、假设编译器规定 int 和 short 类型长度分别为32位和16位,若有下列C语言语句,则 y 的机器数为( )

unsigned short x = 65530;
unsigned int y = x;

A: 0000 7FFA
B: 0000 FFFA
C: FFFF 7FFA
D: FFFF FFFA

答案解析

正确答案: B
unsigned short 类型的 x 变量 2 个字节保存了 65530 ,十六进制形式为 0xFFFA , x 给 y 赋值时会整型提升,而无符号数在提升时高位补0 ,其实就相当于把 x 的值放在了 y 的低 2 个字节的空间中,故选 B

3、下列程序的输出结果是什么( )

#include<stdio.h>
int main()
{
int n = 1001;
int ans = 0;
for(int i = 1; i <= n; ++i)
{
ans ^= i % 3;
}
printf("%d",ans);
return 0;
}

A: - 2
B: 0
C: 1
D: 2

答案解析

正确答案: B
i % 3 的值按 1 、 2 、 0 循环,可推算出 ans 按 1 、 3 、 3 、 2 、 0 、 0 循环,循环进行 1001 次,而 1001%6=5 ,也就是 ans 按规律得到的第5个数为最终结果,故 ans=0

4、C 语言中,下列运算符优先级最高的是 ( )

A: !
B: %
C: >>
D: ==

答案解析

正确答案: A

单目运算符的优先级通常都比较高,具体情况可查阅运算符优先级表格

5、要使 a 的低四位翻转,需要进行操作是( )

A: a|0xF
B: a&0xF
C: a^0xF
D: ~a

答案解析

正确答案: C
十六进制数 0xF 是 4 位 1 ,参与运算时整型提升,高位都是 0 。低四位和 1 异或, 0^1 是 1 , 1^1 是 0 ;高位和 0 异或, 0^0 是 0 , 1^0是1 。故而可以通过异或 F 使得 a 的低四位翻转,并保持高位不变

二、编程题

1:HJ11 数字颠倒 

数字颠倒_牛客题霸_牛客网 (nowcoder.com)

描述

输入一个整数,将这个整数以字符串的形式逆序输出

程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001

数据范围: 0 \le n \le 2^{30}-1 \0≤n≤230−1 

输入描述

输入一个int整数

输出描述

将这个整数以字符串的形式逆序输出

示例1

输入:1516000

输出:0006151

示例2

输入:0

输出:0

【答案解析】

这道题只需要循环取出一个数字的每一位进行单独打印,打印完毕后换行即可。而获取数据的每一位,可以通过取每次对数字模和除以 10 来完成
示例: 129 , 129%10 得到 9 , 129/10 得到 12 ,循环进行操作直到数字除以 10 得到 0 为止

#include <stdio.h> 
int main() 
{ 
	int num;
	while(~scanf("%d", &num)) 
	{ 
		if (num == 0) 
		{//0的情况特殊处理,因为0不会进入while循环计算余数,因此不会被打印 
			printf("%d", num % 10);
			continue;
		}
		while(num > 0)
		{
			printf("%d", num % 10);//打印一个数字的个位数 129 % 10 得到9 
			num /= 10;//通过除以10的方式去掉个位数 例如:129/10 得到12 
		}
		printf("\n"); 
	}
	return 0; 
}

2:HJ31 单词倒排

单词倒排_牛客题霸_牛客网 (nowcoder.com)

描述

对字符串中的所有单词进行倒排。

说明

1、构成单词的字符只有26个大写或小写英文字母;

2、非构成单词的字符均视为单词间隔符;

3、要求倒排后的单词间隔符以一个空格表示;如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符;

4、每个单词最长20个字母;

数据范围:字符串长度满足 1≤n≤10000 

输入描述

输入一行以空格来分隔的句子

输出描述

输出句子的逆序

示例1

输入:I am a student

复制输出:student a am I

示例2

输入:$bo*y gi!r#l

输出:l r gi y bo

【答案解析】

这道题的解题思路不难,定义一个字符指针数组,用于保存每个单词的起始字符地址,接下来将非字母字符全部替换成为字符串结尾标志,则单词字符字母遇到结尾就结束了,相当于把一个字符串以非字母字符进行切割成为了多个 符串,最终对字符指针数组进行逆序打印每个单词即可。文章来源地址https://www.toymoban.com/news/detail-624799.html

#include <stdio.h> 
#include <string.h> 
int main() 
{ 
	char str[10001] = {0};//字符串最长10000 
	int row = 0; 
	while(gets(str) > 0) 
	{ 
		char *ptr = str; 
		char *word[10000] = {NULL};
		while(*ptr != '\0')
		{ //如果是个字母字符,则是单词的起始字符 
			if (('z' >= *ptr && *ptr >= 'a') || ('Z' >= *ptr && *ptr >= 'A'))
			{ 
				word[row++] = ptr;//保存每个单词的起始地址 
			//把本次的单词字母字符走完,直到遇到非字母字符
				while(*ptr != '\0' && (('z' >= *ptr && *ptr >= 'a') ||('Z' >= *ptr && *ptr >= 'A')))
				{
					ptr++; 
				}
				continue;//不能继续向下,因为下边的ptr++会跳过当前的非字母字符
			}
			*ptr = '\0';//把非字母的数据全部替换为结尾标志 
			ptr++;
		}
		for (int i = row - 1; i >= 0; i--)
		{
			printf("%s ", word[i]);//针对所有单词的起始地址逆序开始打印即可
		}printf("\n");
	}
}

到了这里,关于C语言假期作业 DAY 12的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【SQL开发实战技巧】系列(四十九):Oracle12C常用新特性☞表分区部分索引(Partial Indexes)

    【SQL开发实战技巧】系列(一):关于SQL不得不说的那些事 【SQL开发实战技巧】系列(二):简单单表查询 【SQL开发实战技巧】系列(三):SQL排序的那些事 【SQL开发实战技巧】系列(四):从执行计划讨论UNION ALL与空字符串UNION与OR的使用注意事项 【SQL开发实战技巧】系列

    2024年02月05日
    浏览(41)
  • 大一C语言作业 12.8

    1.C 对一维数组初始化时,如果全部元素都赋了初值,可以省略数组长度。 这里没有指定数组长度,编译器会根据初始化列表的元素个数来确定数组长度。 2.C 在C语言中,字符数组是不能用赋值运算符直接赋值的。 3.C 在二维数组a中,如果有m列,那么在a[i][j]之前的元素个数为

    2024年02月05日
    浏览(37)
  • 手工升级到Oracle 12C

    10.2.0.5,11.1.0.7,11.2.0.2以上版本可以直接升级到12c。 10.2.0.5以前的版本和11.2.0.1版需要先升级到中间版本,再升级到12c。 操作系统:Red Hat 8 Linux 64位 源数据库版本:Oracle 11.2.0.3 目标数据库版本:Oracle 12.1.0.2 备份源数据库(RMan) 执行Pre-Upgrade Information Tool(preupgrd.sql) 准备新

    2024年02月08日
    浏览(56)
  • 安装oracle12c数据库

    目录 安装文件下载         下载程序下载步骤 安装步骤 安装前提

    2024年02月16日
    浏览(50)
  • 国庆假期day5

    1.OSI七层模型: 应用层--------提供函 表示层--------表密缩 会话层--------会话 传输层--------进程的接收和发送 网络层--------寻主机 数据链路层----相邻节点的可靠传输 物理层--------二进制比特流 OSI四层(五层)模型: 应用层 传输层 网络层 数据链路层+物理层-----网络接口和物理

    2024年02月07日
    浏览(35)
  • Oracle database 静默安装 oracle12c 一键安装 12.1.0.2

    注意此安装脚本基于12.1.0.2 安装包 原始安装包结构为两个压缩包 此脚本使用安装包为原始压缩包解压后、 重新封装为一个.zip压缩包 Linux :centerOS 7 oracle :12.1.0.2 runInstaller应答文件 /database/response/db_install.rsp netca应答文件 /database/response/netca.rsp dbca应答文件 /database/response/dbc

    2024年02月03日
    浏览(63)
  • Windows下 Oracle 12c 安装保姆级图文详解

    Windows下 Oracle 12c 安装步骤如下: 1、将压缩包“winx64_12c_database_1of2.zip“和“winx64_12c_database_2of2.zip”解压到同一目录“database”目录。 2、双击“database”目录下的“setup.exe\\\",软件会加载并初步校验系统是否可以达到了数据库安装的最低配置,如果达到要求,就会直接加载程序并

    2024年02月10日
    浏览(41)
  • Docker 安装oracle12c容器并创建新用户

    下载镜像 启动镜像 8080和22端口没有映射出来,有需要自己 正常日志 启动报错日志 原因 容器没有操作主机文件夹权限 主机内执行 进入容器内并以dba登录Oracle 创建表空间及用户和赋权

    2024年02月08日
    浏览(40)
  • 【驱动开发day2作业】

    head.h mychrdev.c led.c

    2024年02月15日
    浏览(38)
  • 【驱动开发day4作业】

    头文件代码  应用层代码  驱动代码

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包