牛客网学习笔记

编程语言习题

#include<stdio.h>
int c[3][4];
int (*p)[4];
p=c;
以下能够获取c[1][3]值的是()

正确答案: A B C   
*(*(p+1)+3)
*((int *)p+7)
*(p[1]+3)
*(p+1)+3
int a = 2;
a = a++;            a为2,(此时创建a的副本)
printf("%d", a++);  a为2,(此时未创建a的副本)
printf("%d",++a);   a为4,但是第二行输出4,第三行注释掉输出3
                            

    //int 取值范围-2^31~2^31-1
    int a, b,c;
    a = 2147483647;//能取到的最大值
    b = a + 1;
    c = a + 2;
    printf("a=%d,b=%d\n", a, b); // a= 214748367, b= -214748368
    printf("a=%d,b=%d\n", a, c); // a= 214748367, b= -214748367

4.由&&构成的逻辑表达式与由||构成的逻辑表达式都有"短路"现象。
短路效应是指,二元逻辑运算符&& ||,左边真值一旦确定,不会执行右边表达式。

#include<iostream>
using namespace std;
int main(void)
{
    char str1[] = "hello world";   //存放在栈中的数组
    char str2[] = "hello world";   //存放在栈中的数组

    const char str3[] = "hello world";  //存放在栈中的字符串常量
    const char str4[] = "hello world";  //存放在栈中的字符串常量

    const char* pstring1 = "hello world";   //本身在栈中,指向常量的指针
    const char* pstring2 = "hello world";   //本身在栈中,指向常量的指针     //显然二者所指向的地址一致

    int x = (int)pstring1;
    int y = (int)pstring2;                  //为了方便打印出指针所指向的地址

    cout << boolalpha << ( str1==str2 ) << endl;               //比较字串首地址      flase
    cout << boolalpha << ( str3==str4 ) << endl;               //比较字串首地址      flase
    cout << boolalpha << ( pstring1==pstring2 ) <<endl;        //比较指针所指地址    true

    cout << "str1=" << &str1 << ",";
    cout << "str2=" << &str2 << endl;

    cout << "str3=" << &str3 << ",";
    cout << "str4=" << &str4 << endl;

    cout << "pstring1=" << &pstring1 << ",";
    cout << "pstring2=" << &pstring2 << endl;                   //输出指针本身地址

    cout<<hex;
    cout << "pstring1=" << x << ",";
    cout<<hex;
    cout << "pstring2=" << y << endl;      //16进制输出指针所指地址

    return 0;
}
#include <stdio.h>
int main()
{
    int x, y;
    scanf("%2d%*4s%2d", &x, &y);
    printf("%d", y - x);
    return 0;
}

% *4s表示读取一个长度为四个字符的字符串,中间的*表示将读取到的字符串忽略,不赋给变量列表中的变量。
%d :整数
%f :浮点值
%9s :最多有 9 个非空白符的字符串
%2d : 2 位的整数(数位 5 和 6 )
%f :浮点值(数位 7 、 8 、 9)
%*d :不存储于任何位置的整数
’ ’ :所有连续空白符
%3[0-9] :至多有 3 个十进制数字的字符串(数位 5 和 6 )
%2lc :二个宽字符,使用多字节到宽转换

只能在循环体内和switch语句体内使用break语句

软件根据用途分为两大类:系统软件和应用软件。 各种编程语言都属于系统软件。

格式字符必须遵守其对应的大小写,%d不能写成%D。
int a=3;
printf(“%8U\n”,a);
%8U不会当成格式控制符
a没有对应的格式说明,不会输出。
输出:%8U(vs输出U)

%md 以宽度m输出整型数,不足m时i,左补空格
%0md 以宽度m输出整型数,不足m时i,左补0
%m.nf 以宽度m输出实型小数,小数位为n,m为总宽度,包括小数点

位
在这里插入图片描述

11.答案:AB在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
13.

在这里插入图片描述在这里插入图片描述

32位cpu位段4字节对齐

strstr用于从一个字符串里查找另一个字符串的位置

int fun(int *p[4]);
数组作为形参数组名退化为指针,则形参是指向指针的指针

17.在这里插入图片描述
18.在这里插入图片描述
19.zxu
x在执行8次后变为0

20.在这里插入图片描述
在这里插入图片描述
r ->next = q;  //将r指向q
p->next = r ->next; //p的指针域指向r->next = q;那么p依然指向了q,故错误

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值