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

函数指针/逗号表达式/不用if语句完成的字母输出题

1.函数指针用的不是那么频繁的一个操作:

下面是代码演示:

在这个int (*jump)(int);中 jump是这个指针变量名称,第一个int是指针类型,第二个int是指的这个指针所指的函数参数是int类型的。

#include <stdio.h>

// 定义一个符合函数指针要求的函数
int add(int num) {
    return num + 1;
}

int main() {
    int (*jump)(int);  // 声明函数指针
    jump = add;  // 将函数指针指向add函数
    int result = jump(5);  // 通过函数指针调用函数
    printf("结果是: %d\n", result); 
    return 0;
} 

2.逗号表达式:

在 C 语言中,逗号表达式是由逗号运算符 , 连接起来的多个表达式。其一般形式为:

表达式1, 表达式2, …, 表达式n

基本特性

  • 运算顺序:逗号表达式从左到右依次计算各个子表达式的值。例如对于 a = 3, b = 5, c = a + b,先计算 a = 3 (此时 a 的值变为 3 ),接着计算 b = 5 (b 的值变为 5 ),最后计算 c = a + b (c 的值为 8 )。
  • 返回值:整个逗号表达式的值是最后一个子表达式的值。比如在 (x = 3 * 5, x * 4), x + 5 中,先计算 x = 3 * 5 (x 变为 15 ),接着 x * 4 的结果被忽略,因为逗号表达式取最后一个子表达式的值,所以最后计算 x + 5 ,整个表达式的值为 20 (前提是 x 在此之前已正确声明 )。

常见用途

  • 在循环中同时执行多个操作
for (int i = 0, j = 10; i < 5 && j > 5; i++, j--) {
    // 循环体
    printf("i = %d, j = %d\n", i, j);
}

这里在 for 循环的初始化部分 int i = 0, j = 10 和更新部分 i++, j-- 使用逗号表达式,能够同时对多个变量进行初始化和更新操作。

3.笔试题 :

--不用if语句, 将一个字母组成的字符串,计算出每个字母的出现次数,按照字母大小升序输出。

这道题也用到了逗号表达式

void countArray(char ch[])
{
	int array[26] = { 0 };
	int len = strlen(ch);
	for (int i = 0; i < len; i++)
	{
		char c = tolower(ch[i]);
		int index = c - 'a';
		array[index]++;

	}
	//逗号表达式和三目运算符
	int j = 0;
	while (j < 26)
	{
		((array[j] > 0) ? printf("%c:%d", j +'a', array[j]):0, j++);
	}
}

--合并降序链表:

struct LNode
{
	int val;
	struct LNode* next;

};

struct LNode* merge_list(struct LNode* L1, struct LNode* L2)
{
	struct LNode* dummy;
	dummy->next = NULL;
	struct LNode* tail = dummy;

	while (L1&&L2)
	{
		if (L1->val >= L2->val)
		{
			tail->next = L1;
			L1 = L1->next;

		}
		else
		{
			tail->next = L2;
			L2 = L2->next;
		}

		tail = tail->next;

	}
	tail->next = (L1 != NULL) ? L1 : L2;
	return dummy->next;
}

相关文章:

  • #mapreduce打包#maven:could not resolve dependencies for project
  • STM32驱动代码规范化编写指南(嵌入式C语言方向)
  • R语言高效数据处理-自定义格式EXCEL数据输出
  • Java 大视界 -- Java 大数据在智能金融资产定价与风险管理中的应用(134)
  • 在windows上通过idea搭建doris fe的开发环境(快速成功版)
  • [Hello-CTF]RCE-Labs超详细WP-Level10(无字母命令执行_二进制整数替换)
  • LeetCode 环形链表II:为什么双指针第二次会在环的入口相遇?
  • 串的KMP算法详解
  • LeetCode[203]移除链表元素
  • 【GPT入门】第21课 langchain核心组件
  • 基于SSM + JSP 的水果蔬菜商城
  • 【C++】每日一练(轮转数组)
  • SSL/TLS 1.2过程:Client端如何验证服务端证书?
  • CentOS 8 停止维护后通过 rpm 包手动安装 docker
  • MIDI,AI 3D场景生成技术
  • Java中的访问修饰符有哪些
  • word处理控件Aspose.Words教程:使用 Python 删除 Word 中的空白页
  • 机器学习与深度学习中模型训练时常用的四种正则化技术L1,L2,L21,ElasticNet
  • C++语言的动态规划
  • C++基础 [三] - 面向对象三
  • 李成钢:近期个别经济体实施所谓“对等关税”,严重违反世贸组织规则
  • 梅花奖在上海|话剧《主角》:艺术与人生的交错
  • 一图读懂丨创新创业人才最高补贴500万元!临港新片区发布创客新政“十二条”
  • 湃书单|澎湃新闻编辑们在读的14本书:后工作时代
  • 小耳朵等来了春天:公益义诊筛查专家走进安徽安庆
  • 4月新增社融1.16万亿,还原地方债务置换影响后信贷增速超过8%