经过了近两个月的学习,我迎来了第一次的考核,从结果来看还是多多少少存在一些问题,在此我将这些问题整理如下,以便加深对这些知识的理解。
1.在函数调用时,如果实参是简单变量,它与对应的形参之间的数据传递方式是:单向值传递。
2.关于转义字符,嘶~,没啥好说的,主要就是记,详见下表:
3.
这个题错了说明我对二维数组的理解还不够,
c语言默认在定义二维数组是可以不规定行数,但必须规定列数。
例如: 本题中的B、C两个选项就是不合法的。
4.
本题考察二维数组中元素的表示
在一维数组中我们知道数组名可以表示首元素的地址,类比我们可知,二维数组的数组名也表示首元素的地址,二维数组名加列下标表示该列首元素的地址,因此二维数组元素的表示有以下几种方式:
下标表示法 a[i][j]; 行数组下标法 *(a[i]+j); 列数组下标法*(a+i)[j]; 指针法*(*(a+i)+j);
在二维数组中,我们可以把a[i]、*(a+i)理解为行地址的一种表示形式,而不一个数组元素。
5.
答案为 1。
本题考察的点为逗号表达式,逗号表达式以最后一个表达式的结果为值。如此看来,此题就是值初始化了三个数,其余数以零补齐。说到这里,答案也就很明显了。
6.简述char *const p、char const*p、const char*p有什么区别:
char*const p表示指针p是常量指针,即p中存放的地址无法改变
char const*p表示p指向的元素是一个常量,常量无法改变。
而const char*p与char*const p意思相同。
7.简述结构体和共用体的区别
两者最大的区别在于内存的分配。结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,彼此之间互不影响;而共用体所有成员占用同一段内存,修改一个成员会影响其余成员,结构体占用的内存大于等于所有成员占用内存的总和;而共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,若对创新的成员赋值,则会把原来成员的值覆盖掉。
8.
#include<stdio.h>
int main()
{
int i, j, n;
int a[300][300] = { 0 };
scanf("%d", &n);
int num = 1;
if (n % 2 != 0)
a[n / 2][n / 2] = n * n;
for (i = 0; i < n / 2; i++)
{
for (j = i; j <= n - 1 - i; j++)
a[i][j] = num++;
for (j = i + 1; j < n - 1 - i; j++)
a[j][n - 1 - i] = num++;
for (j = n - 1 - i; j > i; j--)
a[n - 1 - i][j] = num++;
for (j = n - 1 - i; j > i; j--)
a[j][i] = num++;
}
scanf("%d %d", &i, &j);
printf("%d\n", a[i-1][j-1]);
}
到此关于本次考核的错题分析基本结束,在接下来的C语言学习中我会更加努力!!!