指针和printf的爱恨情仇
C语言指针与 printf 的爱恨情仇C 语言的指针一直以来都是初学者的噩梦,尤其是当它和 printf、数组以及自增自减运算符混在一起的时候。 最近看到一道非常经典的指针代码阅读题,它不仅考察了基础的指针运算,还隐藏了几个关于 printf 内存机制的深坑。今天我们就借这道题,来一次彻底的“排雷”行动。 01. 原题重现请阅读以下代码,并写出程序的输出结果: 12345678910111213141516171819202122232425262728#include <stdio.h>int main() { int i = 0; char b[] = "program"; // 字符数组 char *a = "PROGRAM"; // 字符指针 // 填空 1 printf("%c%s\n", *a, b + 1); // 填空 2 while (putchar(*(a + i))) {...
C、C++中void的含义
C/C++中void的含义背景写一个函数,如果它首次被调用,则返回字母A,第二次被调用,则返回字母B,第三次调用,则返回字母C,以此类推。(提示:使用一个static数据类型)函数原型为:char call_times(void)。编写main函数测试它。 **输出格式要求:”第一次调用返回字符%c!\n” “第二次调用返回字符%c!\n” “第三次调用返回字符%c!\n” 代码实现:123456789101112131415#include <stdio.h>char call_times(void);int main(){ printf("第一次调用返回字符%c!\n",call_times()); printf("第二次调用返回字符%c!\n",call_times()); printf("第三次调用返回字符%c!\n",call_times()); return 0;}char call_times(void){ static char ch='A...
C语言学习笔记:利用递归实现字符串倒序输出
C语言学习笔记:利用递归实现字符串倒序输出1. 题目要求编写一个C语言程序,利用递归函数将输入的字符串倒序输出。 输入提示:input your string:\n 输入格式:%s 输出格式:%c 2. 方法一:使用指针实现 (Pointer Approach)这是C语言中最常用的递归处理字符串的方法。利用指针算术运算 s+1 逐步向后移动,直到遇到结束符 \0。 123456789101112131415161718#include <stdio.h>void reverse_print(char *s) { if (*s == '\0') { return; // 基准情况:遇到结束符停止 } else { reverse_print(s + 1); // 递:移动指针到下一个字符 printf("%c", *s); // 归:打印当前字符 }}int main() { c...
可汗小点兵
都去上早操!骗你的天天查人不可能不去这是一个随机选人程序,可以从指定的n个人中随机选出m位去做早操。 1234567891011121314151617181920212223242526272829303132333435363738#include <stdio.h>#include <stdlib.h>#include <time.h>int main() { // 六个人的名单 char *people[] = {"王星", "王柏", "莫奈", "姚祉", "肖鑫", "石安"}; int n, i, temp; int selected[6] = {0}; // 标记是否被选中 // 初始化随机数种子 srand((unsigned int)time(NULL)); // 输入要抽取的人数 printf("请输入要抽取的人数(1-6):")...