• 错题记录(二)


    1.如下代码输出是什么:

     1 #include<stdio.h>
     2 char *myString()
     3 {
     4     char buffer[6] = {0};
     5     char *s = "Hello World!";
     6     for (int i = 0; i < sizeof(buffer) - 1; i++)
     7     {
     8         buffer[i] = *(s + i);
     9     }
    10     return buffer;
    11 }
    12 int main(int argc, char **argv)
    13 {
    14     printf("%s
    ", myString());
    15     return 0;
    16 }

    这里myString()返回的buffer是函数内的局部变量,它的声明周期随着函数的调用结束而结束,之前我记录过,函数参数、函数内局部变量等都是存放在栈区。所以这里返回的要根据编译器怎么处理有关。

    2.枚举类型的定义方法:

    enum StudyMethod {

      RECORD,

      LEARNING,

      LISNING,

      DISCUSS

    }SM;

    3.执行结果是:23

    1 int c = 23;
    2 print("%d
    ",c&c);

    &与运算符,任何数和自己相与的结果都是自己。23的二进制是10111,当前位与其对应位同时为1才为1。若果是或,当前位与其对应位有1就为1。

    4,程序执行后,文件中的内容是:hello

     1 #include <stdio.h> 
     2 void fun (char *fname,char *st) 
     3 { 
     4 FTLE *myf;int i; 
     5 myf=fopen (fname,"w"); 
     6 for (i=0;i<strlen(st);i++) fputc (st[i],myf); 
     7 fclose (myf); 
     8 } 
     9 void main() 
    10 { 
    11 fun("test.txt","new world");
    12 fun("test.txt","hello,"); 
    13 } 

    这里主要考察fopen()第二个参数的各个用法:w以只写的方式打开文件,如果文件不存在,则自动创建这个文件,每次打开之后,会清除之前文件的内容。再将数据写入。

    我记得的参数还有w+(以读写的方式打开文件,其余和w相同)r、r+(以只读的方式打开文件)a、a+(打开文件后,在以有内容的后面写入内容)。

    5.

    以下程序的输出结果为:9,10
    main()
    {int i=010,j=10;
    printf("%d,%d ",++i,j--);
    }

    i是八进制数,j是10进制数。规定:八进制数以0开头,十进制数以1~9开头,十六进制数以0X开头。

    其中,十六进制中前10位使用0~9表示,后六位使用A~F表示

    010转化为10进制方法为:0*8^0 + 1*8^1 + 0*8^2 = 8

    6.一下程序的输出结果为:1

    1 main()
    2 { int
    3 a=4,b=5,c=0,d;
    4 d=!a&&!b||!c;
    5 printf("%d
    ",d);
    6 }

    运算符的优先级:!> && > ||

    只要是非0的数,取非的结果都是0

    先做取非操作:d = 0 && 0 || 1

    再做与操作:d = 0 || 1

    再做或操作:d = 1

    7.下面程序输出的是:hallo

     1 void f(char * x)
     2 {
     3     x++;
     4     *x='a';
     5 }
     6 int main()
     7 {
     8     char str [sizeof("hello")];
     9     strcpy(str, "hello");
    10     f(str);
    11     cout<<str;
    12     return 0;
    13 }

    值传递:传进去的参数会被函数拷贝一份,函数内对参数做出的改变将不会影响函数外的值。

    这里str是一个指针,指向数组的第一个元素的地址,在f()中传进去的是指向数组的指针,它仅仅改变了hello的第二个字符,所以输出是hallo

  • 相关阅读:
    伪类样式
    div 文字超出边框后,省略号显示
    关于常用的 meta
    js数组去重
    异步二进制文件下载
    JJWT现前后端分离身份验证
    ApachePOI快速入门
    axios兼容ie7
    vue解决跨域问题
    log4j模板
  • 原文地址:https://www.cnblogs.com/leoncumt/p/10441281.html
Copyright © 2020-2023  润新知