当前位置:首页 > 技术 > 正文内容

移动应用开发实验面试精选题解析

访客 技术 2026年6月10日 1
  • 1. 字符串长度与数组大小

    代码示例:
    #include <stdio.h>
    #include <string.h>
    int main() {
        char greeting[] = "Hello, 3G!";
        char shortStr[20] = "Hello";
        char testStr[20] = {'H', 'e', 'l', 'l', 'o'};
        printf("strlen(greeting) = %zu\n", strlen(greeting));
        printf("sizeof(greeting) = %zu\n", sizeof(greeting));
        printf("strlen(shortStr) = %zu\n", strlen(shortStr));
        printf("sizeof(shortStr) = %zu\n", sizeof(shortStr));
        printf("strlen(testStr) = %zu\n", strlen(testStr));
        printf("sizeof(testStr) = %zu\n", sizeof(testStr));
        return 0;
    }

    测试重点:区分字符串长度与数组字节大小

  • 2. 无限制循环

    代码示例:
    #include <stdio.h>
    int main() {
    	unsigned int counter = 5;
    	while (counter >= 0) {
    	printf("%u ", counter);
    	counter--;
    	}
    	return 0;
    }

    测试重点:无符号变量的下溢行为

  • 3. 宏定义与函数

    代码示例:
    #include <stdio.h>
    #define MSG1 "欢迎加入3G!\n"
    #define MSG2 "您好!"
    #define CALC(x) (x + 4)
    #define SIZE 4
    #define PRODUCT(n) (SIZE + 2) * n
    int main() {
    	int result = 2 * (SIZE + PRODUCT(5));
    	printf("%d\n", result);
    	printf("%s %d%d", MSG2, CALC(strlen(MSG1)), CALC(strlen(MSG1)));
    }

    测试重点:宏定义的展开与执行顺序

  • 4. 变量作用域

    代码示例:
    #include <stdio.h>
    int var = 10;
    void func() {
    	int local = 20, temp = 40;
    	static int staticVar = 30;
    	staticVar++;
    	temp++;
    	printf("var = %d, staticVar = %d, temp = %d\n", var, staticVar, temp);
    }
    int main() {
    	func();
    	func();
    	printf("var = %d\n", var);
    }

    测试重点:局部变量与静态变量的作用域

  • 5. 位运算与控制流

    代码示例:
    #include <stdio.h>
    int count = -1;
    int compute(int num) {
    	while (1) {
    		switch(num) {
    			case 0:
    				num = (num ^ 0x0A) + 0x0A;
    			case 31:
    				num = num | 0;
    				break;
    			case 9:
    				num += 6;
    				break;
    			case 20:
    				num = num >> 1;
    				num -= 7;
    				break;
    			case 3:
    				count += num;
    				num = (num ^ 7) + 5;
    				break;
    			case 15:
    				num += count++;
    				count = count << 3;
    				break;
    			case 10:
    				return (1 << ++num) - count;
    			default:
    				num = (num & 1) ? num + 1 : num - 4;
    				break;
    		}
    	}
    }
    int main() {
    	int start = 0;
    	int result = compute(start);
    	printf("result == %d\n", result);
    	printf("%d\n", count);
    }

    测试重点:位运算与多分支控制流

  • 6. 指针与数组

    代码示例:
    #include <stdio.h>
    int main() {
    	int array[] = {10, 20, 30, 40, 50};
    	int *ptrArray[5];
    	int (*arrPtr)[5] = &array;
    	for(int i=0; i<5; i++) {
    		ptrArray[i] = &array[i];
    	}
    	for(int i=0; i<5; i++) {
    		printf("%d ", *ptrArray[i]);
    	}
    	printf("\n");
    	for(int i=0; i<5; i++) {
    		printf("%d ", (*arrPtr)[i]);
    	}
    }

    测试重点:指针数组与数组指针的区别

  • 7. 指针运算

    代码示例:
    #include <stdio.h>
    int main(){
    	int matrix[3][4] = { {1,2,3,4},{5,6,7,8},{9,10,11,12} };
    	int* ptr1 = (int*)(matrix + 1);
    	int* ptr2 = (int*)(*(matrix + 1));
    	printf("*(ptr1 - 1) = %d\n", *(ptr1 - 1));
    	printf("*(ptr2 + 7) = %d\n", *(ptr2 + 7));
    	printf("*(matrix[0] + sizeof(int) * 11) = %d\n", *(matrix[0] + 11));
    	printf("*(matrix[2] + 3) = %d\n", *(matrix[2] + 3));
    	printf(" *(*(matrix+2) + 3) = %d\n", *(*(matrix+2) + 3));
    	printf("*(*(&matrix[1] + 1) + 3) = %d\n", *(*(&matrix[1] + 1) + 3));
    }

    测试重点:二维数组的指针运算

  • 8. 结构体与联合体

    代码示例:
    #include <stdio.h>
    #define INT_PTR int*
    #define CHAR_PTR char*
    typedef int* int_ptr;
    typedef char* char_ptr;
    struct MyData {
    	int i;
    	char c;
    	INT_PTR p1, p2;
    	int_ptr p3, p4;
    	double d;
    };
    union MyUnion {
    	int i;
    	char c;
    	CHAR_PTR p1, p2;
    	char_ptr p3, p4;
    	float f;
    };
    int main() {
    	printf("Size of MyData: %zu\n", sizeof(struct MyData));
    	printf("Size of MyUnion: %zu\n", sizeof(union MyUnion));
    }

    测试重点:结构体与联合体的内存对齐规则

  • 9. 递归算法

    代码示例:
    #include <stdio.h>
    int recursive(int n){
    	if (n < 5) {
    		return n;
    	}else {
    		return recursive(n-1) + recursive(n-3);
    	}
    }
    int main(){
    	int n=10;
    	printf("%d\n", recursive(n));
    }

    测试重点:递归终止条件与计算逻辑

  • 10. 小球称重问题

    测试重点:最小化称重次数的策略

  • 11. 排序算法实现

    代码示例:
    #include <stdio.h>
    void swap(int* a, int* b) {
        int temp = *a;
        *a = *b;
        *b = temp;
    }
    void quicksort(int array[], int left, int right) {
        if (left >= right)
            return;
        int l = left, r = right, pivot = array[right];
        while (array[l] < pivot)
            l++;
        while (array[r] > pivot)
            r--;
        swap(&array[l], &array[r]);
        quicksort(array, left, r - 1);
        quicksort(array, l + 1, right);
    }
    int main() {
        char chars[] = {'F', 'A', 'G', 'W', 'Y', 'U', 'L'};
        int n = sizeof(chars)/sizeof(chars[0]);
        printf("Original: ");
        for(int i=0; i<n; i++)
            printf("%c", chars[i]);
        quicksort(chars, 0, n-1);
        printf("\nSorted: ");
        for(int i=0; i<n; i++)
            printf("%c", chars[i]);
    }

    测试重点:快速排序算法的实现原理

标签: C语言

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。