C语言经典笔试100题,详细解析(持续更新)

 

原100题目链接:

https://blog.csdn.net/qq_20398345/article/details/80948014?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522160058621919725254025850%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=160058621919725254025850&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~pc_rank_v2-1-80948014.first_rank_ecpm_v3_pc_rank_v2&utm_term=100%E6%9D%A1%E7%BB%8F%E5%85%B8c%E8%AF%AD%E8%A8%80%E7%AC%94%E8%AF%95%E9%A2%98&spm=1018.2118.3001.4187

 

  1. 请填写bool , float,  指针变量 与“零值”比较的if  
    语句

Bool类型判断:

bool a;

if(a)

if(!a)

指针类型判断:

If(p==NULL)

If(p!=NULL)

 

浮点数判断

If(x>0.001)

If(x<0.01)

 

  1. 以下为Linux下的32 位C 程序,请计算sizeof 的值。

char  str[] = “Hello” ;                              

char   *p = str ;                                     

i nt    n = 10;                                                   

请计算

(1)sizeof (str ) =                  (2)s i zeof ( p ) =                 

(3)sizeof ( n ) =

 

【标准答案】

(1).sizeof(str) = 6(Hello后面还有个结束符号\n)

(2)sizeof(p)=4 p是一个指针类型,指针的长度是4(32或者64位系统)

(3)sizeof(n)=4 n 是一个int类型,数据长度是4

 

(4)void Func ( char str[100])                           
{                                          
…… ;                                                            
}                                          
请计算sizeof( str ) = 4

此时的str传递的是该字符数组的首地址的指针,相当于一个指针变量。

 

(5)void * p = malloc( 100 );                                                
请计算sizeof ( p ) =4

 

  1. 用变量a 给出下面的定义
    e) 一个有10个指针的数组,该指针是指向一个整型数
    的;

Int *a[10]
f)  一个指向有10个整型数数组的指针;

Int (*a)[10]
g) 一个指向函数的指针,该函数有一个整型参数并返
回一个整型数;

Int (*a)(in)


h) 一个有10个指针的数组,该指针指向一个函数,该
函数有一个整型参数并返回一个整型数;

int (*a[10])(int)

 

  1. 设有以下说明和定义:
    typedef u nion {long i; int k[5]; char c;} DATE;
    struct data { int cat; DATE cow; double dog;} too;
    DATE max;
    则语句printf("%d",sizeof(struct date)+sizeof(max)); 的
    执行结果是:_____

data 是union,union属于结构成员共享地址空间,ziseof(date)取union中最大的数据长度即可,即:4x5=20

max属于struct,sizeof(max)需要成员地址空间相加,而且得注意四自己对其,sizeof(max)= 4+20+8=32;

 

所以结果值是52

 

 

  1. 请问以下代码有什么问题:
    int main()
    {
    char a;
    char *str=&a;
    strcpy(str,"hello");
    printf(str);
    return 0;
    }

解析:内存越界,数据溢出

 

  1. 请问以下代码有什么问题:
    char* s="AAA";
    printf("%s",s);
    s[0]='B';
    printf("%s",s);

    有什么错?
    【标准答案】:s指向常量字符串,定义的时候需要加const char *s = ”AAA“

所以s是用const修饰的指向常量的变量,不能被赋值。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值