不会的题目2

Otc10

#include 
#include 

int main() {
    int x = 0, y = 5, z = 3;
    while(z-- && ++x < 5){
        y = y -1;
    }
    printf("%d,%d,%d\n",x,y,z);
}
//3,2,-1
//访问二维数组的第i行第j列值的第三种方式:
(1)b[i][j];
(2)*(b[i]+j);
(3)*(b+i)[j]

#include 
int main() {
    int i,count=0;
    for(i = 0;i<3;i++){
        if(i%2)
        continue;
        count++;
    }
    printf("%d\n",count);
}
//2
//解释:此处i%2相当于i%2!=0,所以当i值为0,2时不进入循环,count++,而当i为1时,进入循环,continue发挥作用,结束本次循环,后面的count++不会执行。

Oct11

在C语言中,`char *s; s = "Beijing";`是正确的。而`char *s; s = {"Beijing"};`是错误的。

错误的原因是:
1. `char *s;`声明了一个字符指针变量s,但没有为其分配内存空间。
2. `s = {"Beijing"}`试图将一个字符串字面量(由双引号括起来的字符序列)赋值给字符指针s所指向的内存空间。但是,由于s没有分配内存空间,这种赋值操作是不允许的,会导致未定义行为。

正确的做法是使用`char *s; s = "Beijing";`,这样可以将字符串字面量赋值给字符指针s所指向的内存空间。
//代码存在错误,编译器通过不了
//其功能为将s中的字符串按照长度由小到大排列,请为很想出选择合适的程序
#include 
#include 
void fun(char *p,int n){
    char *t;
    int i,j;
    for(i=0;i<n-1;i++){
        for(j<i+1;j<n;j++){
            if(strlen(*(p+i))>strlen(*(p+j))){
                t =*(p+i);
                *(p+i) = *(p+j);
                *(p+j) = t;
            }
        }
    }
    int main(){
        char *s[] ={"abc","abcdef","abbd"};
        fun(s,3);
        for(int i = 0;i<3;i++){
            printf("%s\n",s[i]);
        }
    }
}

//s[i]
//键入123456789
#include
int main(){
	int x,y;
	scanf("%2d%*4s%2d",&x,&y);
	printf("%d",y-x);
	return 0;
}
//66

在这里插入图片描述

#include
#define N 5
int main(){
	char s1[N] = {"ABCDE"};
	char s2[N] = "ABCDE";
	char s3[N] = {'A','B','C','D','E'};
	char *s4;
	s4="ABCDE";
	printf("%s,%s,%s,%s\n",s1,s2,s3,s4);
	return 0;
}

不会的题目2_第1张图片

一、八进制转义字符

它是由反斜杠'\'和随后的13个八进制数字构成的字符序列。
字符集中的所有字符都可以用八进制转义字符表示。

二、十六进制转义字符

它是由反斜杠'\'和字母x(或X)及随后的12个十六进制数字构成的字符序列

Otc12

//注意预处理命令的位置:为了规范,我们习惯上会写在最前面,久而久之会认为它就只能写在最前面,便于编译器预处理找它,其实它可以写的位置很灵活。
//宏定义不占用程序的运行时间
int main(){
    union{
        int a;
        char b;
        double c;
    }data;
    data.a = 5;
    printf("%f",data.c);
}
#include

--------------------------------------------
#include
int main(){
    union{
        int a;
        char b;
        double c;
    }data;

    data.a = 5;

    printf("%f",data.c);
}

均为以下结果
不会的题目2_第2张图片

Otc13

//不理解
#include
int main(){
    struct mf{
        unsigned short a:4;
        unsigned short b:5;
        unsigned short c:7;
    }test;

    int i;
    test.a = 2;
    test.b = 3;
    test.c = 0;
    
    i = *((short*)&test);
    printf("%d\n",i);
}
//50

Otc20

关于静态变量的知识点总结:
1、静态变量是存储在程序的数据段中的变量,它们的生命周期与程序的运行时间相同。
2、静态变量在程序开始时只被初始化一次,而不是每次调用函数时都重新初始化。
3、静态变量的初始值是在编译时确定的,而不是在运行时确定的。
4、静态变量的作用域仅限于定义它的文件或函数中。
5、静态变量可以通过extern关键字在其他文件中使用。
6、静态变量可以用于实现全局变量的功能,但它们不能用于实现线程安全。
7、静态变量可以在函数内部声明和初始化。
8、静态变量可以在函数内部修改,但不能在函数外部直接访问。
9、静态变量可以在函数内部作为参数传递,但不能作为返回值返回。
10、静态变量可以在函数内部作为数组索引使用。
11、静态变量的释放是在程序结束时才释放,不会因为退出函数而释放。

你可能感兴趣的:(#,C,C)