第四十天学习记录:C语言进阶:笔试题整理Ⅰ

news2024/11/23 15:33:39
#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	unsigned long pulArray[] = { 6,7,8,9,10 };
	unsigned long* pulPtr;
	pulPtr = pulArray;
	*(pulPtr + 3) += 3;
	printf("%d,%d\n", *pulPtr, *(pulPtr + 3));//6 12
	return 0;
}

输出:6,12

写一个函数,可以逆序字符串的内容:

问:printf(“%s\n”, arr);arr是给一个地址吗?
ChatAI答:
是的,arr在这里是一个指向字符数组的指针(即字符串的首地址),使用%s格式符时,printf函数会根据该地址开始输出字符数组中的全部字符,直到遇到空字符\0为止。因此,这行代码会将字符串输出到终端上,并在末尾自动添加一个换行符。

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <assert.h>

int my_strlen(char* arr)
{
	int len = 0;
	while (*arr != '\0')
	{
		arr++;
		len++;
	}
	return len;
}

void my_reverse(char* arr)
{
	assert(arr);
	int len = my_strlen(arr);
	char* left = arr;
	char* right = arr + len - 1;
	while (left<right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}


}

int main()
{
	char arr[256] = {0};
	//scanf("%s", arr);//无法完整读取包含空格的字符串
	gets(arr);//读取一行
	my_reverse(arr);
	printf("逆序后的字符串:%s\n", arr);
	return 0;
}

输出:
在这里插入图片描述
问:
C语言,assert();括号里面传什么参数?
ChatAI答:
assert()是C语言标准库中的一个宏定义,用于在程序中进行断言检查,如果断言失败则会触发程序异常终止,并输出一条信息说明断言失败的具体信息。

assert()的语法格式如下:

void assert(int expression);

其中,expression是一个用于断言检查的表达式,通常为某个条件判断表达式。如果检查表达式的结果为false,则assert()会在stderr输出错误信息并终止程序。

因此,assert()括号中应该传入一个需要被检查的表达式,通常是一个条件判断语句,例如:

int a,b;
// 假设a,b已经被赋值
assert(a == 0); // 如果a的值不为0,程序会停止并提示错误信息
assert(b > 10); // 如果b的值不大于10,程序会停止并提示错误信息

问:
在VS2015环境下运行上述代码会报警告,但是在老师的VS2010环境下不报警告。warning C4013: “gets”未定义;假设外部返回 int

ChatAI答:
这个警告信息是编译器给出的提示,含义是gets函数未被定义,并且假设外部返回int类型。

在C语言标准库中,确实包含有gets()函数,它用于从标准输入流(stdin)中读取一行字符数据,但是在C11标准中已经将gets()标记为不安全的函数(因为它可能会导致缓冲区溢出问题),并建议开发者使用fgets()函数代替它。

由于gets()函数不再被建议使用,因此在较新的编译器中可能已经被移除,所以编译器给出了“未定义”的提示。为了避免这个问题,您可以将gets()函数替换为fgets()函数,如下所示:

#include <stdio.h>

int main() {
    char str[100];
    printf("请输入一个字符串: ");
    fgets(str, sizeof(str), stdin);
    printf("您输入的字符串是: %s\n", str);
    return 0;
}

使用fgets()函数读取用户输入可以有效防止缓冲区溢出问题,同时避免“未定义”的警告。

输入2个数字,打印出如下信息。比如输入:2 5,则求和:2+22+222+2222+22222

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

int main()
{
	int a = 0;
	int n = 0;
	scanf("%d%d", &a, &n);
	int sum = 0;
	int i = 0;
	int ret = 0;
	for (i = 0; i < n; i++)
	{
		ret = ret * 10 + a;
		sum += ret;
	}
	printf("%d\n", sum);
	return 0;
}

在这里插入图片描述
求出0~100000之间的所有“自幂数”并输出。

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <math.h>

int main()
{
	int i = 0;
	for (i = 0; i <= 100000; i++)
	{
		//判断i是否为自幂数
		//1.计算i的位数    n位数
		int n = 1;
		int tmp = i;
		int sum = 0;
		while (tmp /= 10)
		{
			n++;
		}
		//2.计算i的每一位的n次方之和    sum
		tmp = i;
		while (tmp)
		{
			sum += pow(tmp % 10, n);
			tmp /= 10;
		}
		//3.比较i == sum
		if (i == sum)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

输出:
在这里插入图片描述

打印菱形:

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>

int main()
{
	int line = 0;
	scanf("%d", &line);
	//打印上半部分
	int i = 0;
	for (i = 0; i < line; i++)
	{
		//打印空格
		int j = 0;
		for (j = 0; j < line - 1 - i; j++)
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < 2 * i + 1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	//打印下半部分
	for (i = 0; i < line-1; i++)
	{
		int j = 0;
		//打印空格
		for (j = 0; j <= i; j++)
		{
			printf(" ");
		}
		//打印*
		for (j = 0; j < 2 * (line-1-i)-1; j++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

输出:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/530744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

哈工大软件过程与工具作业1(100以内加减法练习小软件)

softwareProcess-lab1-master 哈工大软件过程与工具作业1 100以内加减法练习小软件 地址&#xff1a;https://github.com/944613709/Addition-and-subtraction-practice-small-software 项目概述 &#xff08;1&#xff09;项目名称&#xff1a;100以内加减法练习小软件 &…

一图看懂 markupsafe 模块:为 Python 实现 XML/HTML/XHTML 标记安全字符串,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 markupsafe 模块&#xff1a;为 Python 实现 XML/HTML/XHTML 标记安全字符串&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;摘要&#x1f9ca;模块图…

【JAVA】Java中的类型转换

目录 1.自动类型转换&#xff08;隐式转换&#xff0c;小类型转换为大类型&#xff09; 2.强制类型转换&#xff08;显示转换&#xff0c;大类型转换为小类型&#xff09; 3.小于4字节的类型转换问题 3.1 byte<->int 3.2 char<->int 3.3 String<->int …

深入理解Java虚拟机:JVM高级特性与最佳实践-总结-4

深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践-总结-4 垃圾收集器与内存分配策略经典垃圾收集器Serial Old收集器CMS收集器Garbage First收集器 垃圾收集器与内存分配策略 经典垃圾收集器 Serial Old收集器 Serial Old是Serial收集器的老年代版本&#xff0c;它同样…

Liunx基础命令 - find命令

find命令 – 根据路径和条件搜索指定文件 find命令的功能是用于根据给定的路径和条件查找相关文件或目录&#xff0c;参数灵活方便&#xff0c;且支持正则表达式&#xff0c;结合管道符后能够实现更加复杂的功能&#xff0c;是Linux系统运维人员日常工作必须掌握的命令之一。 …

跟小枫社长学建站

该文章为看视频时的一些笔记&#xff0c;完整版可以看小枫社长的视频 小枫社长视频原址 一、租云服务器 腾讯云阿里云 阿里云对控制台进行了全面升级&#xff0c;在首页使用了新的设计方案&#xff0c;云服务器ECS位置如下&#xff0c;点击左上角目录即可。 二、创建实例 云…

牛客网面试必刷:BM22 比较版本号

牛客网面试必刷&#xff1a;BM22 比较版本号 前言一、解法1&#xff1a;分割截取 前言 牛客项目发布项目版本时会有版本号&#xff0c;比如1.02.11&#xff0c;2.14.4等等 现在给你2个版本号version1和version2&#xff0c;请你比较他们的大小 版本号是由修订号组成&#xf…

三十三、微服务,SpringCloud架构

1、微服务架构 1.1 单体应用架构 将项目所有模块(功能)打成jar或者war&#xff0c;然后部署一个进程 优点: 1:部署简单:由于是完整的结构体&#xff0c;可以直接部署在一个服务器上即可。 2:技术单一:项目不需要复杂的技术栈&#xff0c;往往一套熟悉的技术栈就可以完成开发。…

JAVA8的新特性——Stream

JAVA8的新特性——Stream 在这个深夜写下这篇笔记&#xff0c;窗外很安静&#xff0c;耳机里是《季节更替》&#xff0c;我感触还不是很多&#xff0c;当我选择封面图片的时候才发现我们已经渐渐远去&#xff0c;我们都已经奔赴生活&#xff0c;都在拼命想着去换一个活法&#…

Kubernetes 二进制部署高可用集群

概述 在私有局域网内完成Kubernetes二进制高可用集群的部署 ETCD Openssl > ca 证书 Haproxy Keepalived Kubernetes 主机规划 序号名字功能VMNET 1备注 1备注 2备注 3 备注 4备注 50orgin界面192.168.164.10haproxykeepalived1reporsitory仓库192.168.164.16yum 仓库re…

哈工大C语言大作业-学生成绩管理系统

哈工大C语言大作业-学生成绩管理系统 完整项目地址&#xff1a;https://github.com/944613709/Student-Performance-Management-System-ByC 说明 l 设计了学生成绩管理系统&#xff0c;来实现对于学生数据的录入统计等各个功能l 进入主菜单之前执行音效播放l menu主菜单中显…

C语言基础知识:C语言中的控制语句

目录 1. 条件判断语句 if(…) {…} if(…) {…} else {…} if(…) {…} else if(…) {…} … else if(…) {…} else {…} switch() {case …: …; case …: …; … default: …;} 2、循环语句 while语句 do while语句 for语句 3、循环体中的跳转语句 break语句。 c…

consul集群部署-linux

一.前言 1. Consul架构 consul是分布式、高可用的系统&#xff0c;下图是单数据中心的部署架构 2. Consul特性 服务发现&#xff1a;解决在分布式环境中&#xff0c;如何找到可用的服务地址的问题&#xff0c;支持通过DNS和HTTP查询服务地址。健康检查&#xff1a;定时监控服务…

如何正确学习网络安全(黑客)?看到就是赚到!

一、前言 本人10 年工作经验&#xff0c; 擅长 Web 安全攻防、渗透领域&#xff0c; 在金融领域的安全有丰富的实战经验。从事在线教育 3 年多培养学员过万&#xff0c;讲解清晰透彻&#xff0c;课程干货内容多&#xff0c;辅导学员耐心细致 那我们该如何正确学习网络安全&am…

[学习笔记] [机器学习] 5. 逻辑回归(逻辑回归、混淆矩阵、分类评估指标、ROC曲线、AUC指标、类别不均衡问题)

视频链接数据集下载地址&#xff1a;无需下载 本文学习目标&#xff1a; 知道逻辑回归的损失函数、优化方法知道逻辑回归的应用场景应用LogisticRegression实现逻辑回归预测知道精确率、召回率等指标的区别知道如何解决样本不均衡情况下的评估会绘制ROC曲线图形 1. 逻辑回归…

Linux——Linux的基本指令

作者&#xff1a;几冬雪来 时间&#xff1a;2023年5月15日 内容&#xff1a;Linux基本指令讲解 目录 前言&#xff1a; 1. 什么是操作系统&#xff1a; 2.Linux操作系统&#xff1a; 3.Linux程序&#xff1a; 4.Linux基本指令&#xff1a; 1.ls&#xff1a; 作用&a…

Java基础 关键字与标识符

关键字(keyword) 定义:被 Java 语言赋予了特殊含义&#xff0c;用做专门用途的字符串(或单词) 这些单词已经被 Java 定义好 了。 特点:全部关键字都是小写字母。 关键字比较多&#xff0c;不需要死记硬背&#xff0c;学到哪里记到哪里即可。官方地址 1. 关键字一共 50 个&…

linux bonding 技术

文章目录 背景简介目录1. Bonding驱动简介1.1 配置并编译支持bonding的内核1.2 安装ifenslave控制工具 2. Bonding驱动选项3. 配置Bonding设备3.1 使用Sysconfig配置3.1.1 利用Sysconfig使用DHCP3.1.2 利用Sysconfig配置多个Bonds 3.2 使用Initscripts配置3.2.1 利用Initscript…

Linux篇3

Shell常用命令 0. Shell介绍1. 帮助命令1.0 help&#xff1a;获取内置命令帮助信息1.1 man&#xff1a;获取帮助信息 2. 文件目录相关2.1 pwd&#xff1a;打印当前工作目录的绝对路径2.2 cd&#xff1a;切换工作目录2.3 ls&#xff1a;列出目录内容2.4 mkdir&#xff1a;创建空…

Java小游戏之贪吃蛇

文章目录 一&#xff1a;窗口的绘制1.1 定义窗口类——SnakeGame1.2 设置窗口的参数1.3 启动main方法 二&#xff1a;窗口网格的绘制2.1 重写paint方法2.1.1 为什么要重写paint方法2.1.2 实现方式 2.2 Graphics2.3 设置网格线的参数 三&#xff1a;游戏物体父类的创建——Snake…