错题记录(二)

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\n", myString());
15     return 0;
16 }

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

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

enum StudyMethod {

  RECORD,

  LEARNING,

  LISNING,

  DISCUSS

}SM;

3.执行结果是:23

1 int c = 23;
2 print("%d\n",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\n",++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\n",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

转载于:https://www.cnblogs.com/leoncumt/p/10441281.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现错题记录功能,可以使用文件操作来存储和读取错题信息。以下是一个简单的 C 语言代码示例: ```c #include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100 // 最大错题数 // 定义结构体存储错题信息 typedef struct { int question_num; // 题号 char question[100]; // 题目 char answer[100]; // 答案 char explanation[200]; // 解释 } Question; // 存储错题信息到文件 void save(Question* questions, int size, char* file_name) { FILE* fp; fp = fopen(file_name, "w"); if(fp == NULL) { printf("无法打开文件\n"); exit(1); } for(int i = 0; i < size; i++) { fprintf(fp, "%d %s %s %s\n", questions[i].question_num, questions[i].question, questions[i].answer, questions[i].explanation); } fclose(fp); } // 从文件中读取错题信息 void load(Question* questions, int* size, char* file_name) { FILE* fp; fp = fopen(file_name, "r"); if(fp == NULL) { printf("无法打开文件\n"); exit(1); } int i = 0; while(fscanf(fp, "%d %[^\n] %[^\n] %[^\n]\n", &questions[i].question_num, questions[i].question, questions[i].answer, questions[i].explanation) != EOF) { i++; } *size = i; fclose(fp); } int main() { Question questions[MAX_SIZE]; int size = 0; // 读取文件中的错题信息 load(questions, &size, "questions.txt"); // 在此处添加代码,实现错题记录功能 // 存储错题信息到文件 save(questions, size, "questions.txt"); return 0; } ``` 在上述代码中,我们定义了一个 `Question` 结构体来存储每一道错题的信息。`save` 函数将错题信息存储到文件中,`load` 函数从文件中读取错题信息。你可以在 `main` 函数中添加代码来实现错题记录功能,比如让用户输入题目和答案,将输入的信息存储到结构体数组中。最后,调用 `save` 函数将更新后的错题信息存储到文件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值