C语言考试

1.数组A【5】【6】的每个元素占5个单元,将其按行优先存储在起始地址为1000的连续的内存单元中,则元素A【4】【4】的地址为?
答案是1140
A【0】
A【1】
A【2】
A【3】共四行4X6=24;
A【4】24+4=28; 28X5=140, 1000+140=1140

按列也是相同原理先经过列

在C语言中,顺序存储长度为3的字符串,需要占用4个字节
末尾\n也要算上

2.设有一个长度为n的顺序表,要在第i(从1开始)个元素之前(也就是插入元素作为新表的第i个元素),则移动元素个数为n-i+1

题目中说了从1开始
1 2 3 4 5
n = 5
要在第i=2个元素之前插入
则n-i=3
而实际插入位置为:
1 [ ] 2 3 4 5
所以是n-i+1
3.
在这里插入图片描述
局部变量在函数中会空间释放 不会返回 局部变量 就只能直接输出 而不能返回地址

4.同一个操作系统下,不同类型的指针变量所需要的内存大小相同 ,不同类型只代表向下一个位置的移动多少字节

5.内存泄漏是指 你向操作系统申请了一块内存 但由于你的操作失误 这块内存你再也访问不到了  但是操作系统还认为 这是你申请的内存 这块内存三不管了 导致内存堆积
6.malloc实际上申请的是虚拟内存,calloc申请的是物理内存
7.C语言支持bool类型 不过要引入相关头文件

8.编译的整个过程

预编译 编译 汇编 链接
预处理的命令是在预编译期间处理的
C和C++中 以#开头的都是预处理命令

9.C语言的位运算,是将数值在二进制的表示下进行的运算
10.switch 语句能判断具有唯一整型值对应的变量 整形或单个字符
11.在这里插入图片描述
&&短路的特征 前面为0后面直接不执行了
13. C语言 某些数学函数比如 abs在stdlib头文件中,不一定全部都在math;
14.函数的返回值 不一定都是return 比如指针的引用 ,

在这里插入图片描述
哥德巴赫代码 二分法查找 奇数的减去两个素数 剩下的是否满足是素数

#include <stdio.h>

#define P(func){\
    printf("%s = %d\n",#func,func);\
}
// 1 3 5 7 9 10 
int binary_search1(int *num, int n,int x){
    int head=0,tail=n-1,mid;
    while(head<=tail){
        mid=(head+tail)>>1;
        if(num[mid]==x) return mid;
        if(num[mid]<x)  head=mid+1;
        else tail=mid-1;
    }
    return -1;
}   
//111111110000000 
int binary_search2(int *num,int n){
    int head=-1,tail=n-1,mid;
    while(head<tail){
        mid=(head+tail+1)>>1;
        if(num[mid]==1) head=mid;
        else  tail=mid-1;
    }
    return head;
}   
//00000001111111  
int binary_search3(int *num,int n){
    int head=0,tail=n,mid;
    while(head<tail){
        mid=(head+tail)>>1;
        if(num[mid]==1) tail=mid;
        else head=mid+1;
    }
    return head==n ? -1:head;
}
int main(){
    int arr1[10]={1,3,5,7,9,11,13,17,19,21};
    int arr2[10]={1,1,1,1,1,1,0,0,0,0};
    int arr3[10]={0,0,0,0,0,0,1,1,1,1};
    P(binary_search1(arr1,10,7));
    P(binary_search2(arr2,10));
    P(binary_search3(arr3,10));
    return 0;
    
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值