这些题目是关于计算机二级C语言考试中的编程问题,主要涉及到字符串操作、数值计算以及循环控制等基础知识。以下是对题目中涉及的知识点的详细解释:
1. **字符串操作**:
- 字符数组的处理:在C语言中,字符串实际上是字符数组,以'\0'作为结束符。例如,`strcat()`函数用于连接两个字符串,`strcpy()`用于复制字符串,`strlen()`用于获取字符串长度。
- 文件操作:如`fstream`库中的`fstream`对象(如`ifstream`和`ofstream`)用于读写文件,`fclose()`用于关闭文件。
2. **数值计算**:
- 数字位移操作:题目中涉及到将一个数字的十位和个位分别移动到其他位置,这是通过位运算实现的。例如,`a%10`获取个位数,`a/10`获取十位数。
- 数组元素操作:题目中多次涉及到数组元素的赋值和访问,例如`a[j][k]`表示二维数组的元素。
3. **循环控制**:
- `for`循环:如`for(i=0;i<=sl;i++)`,用于遍历数组或执行特定次数的操作。
- 条件判断:`if`语句用于判断条件,例如`if(d%2==0)`检查是否为偶数。
4. **指针操作**:
- 指针变量的使用:`*`运算符用于解引用指针,`&`用于获取变量的地址。例如,`long *t`定义了一个指向长整型的指针,`*t`是解引用操作,赋值给`t`指向的变量。
- 函数参数传递:通过指针可以改变函数外部变量的值,例如`void fun(long s, long *t)`,函数内部修改`t`指向的值会影响到调用该函数时传入的变量`s`。
5. **逻辑判断**:
- 逻辑运算符:`||`表示逻辑或,`&&`表示逻辑与。在题目中用于组合多个条件,如`i%7==0||i%11==0`检查一个数是否能被7或11整除。
6. **数组填充**:
- 动态填充数组:题目中的`fun(int (*a)[M],int m)`函数可能用于填充二维数组,`a[j][k]=(k+1)*(j+1);`则是对数组元素进行特定计算后赋值。
7. **函数调用和返回值**:
- 函数的定义和调用:`char* fun(char (*sq)[M])`定义了一个返回字符指针的函数,`return sp;`用于返回函数的结果。
- 变量传递:`*n`和`(*n)++`用于传递和更新函数外部的变量值。
8. **条件筛选**:
- 题目中多次出现筛选满足特定条件的数字,如求能被7或11整除的数,或不能同时被7和11整除的数。
9. **数学计算**:
- 平方根计算:`sqrt()`函数用于计算平方根,例如求自然数之和的平方根。
10. **循环累加**:
- 循环累加:`for`循环中累加变量,如`s+=1.0/i;`用于计算自然数倒数之和。
这些知识点都是C语言编程基础的重要组成部分,对于解决计算机二级C语言考试中的编程题目至关重要。考生需要熟练掌握这些概念,并能够灵活运用到实际编程中。