错题集

在这里插入代码片# 错题集

  1. 函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同时,则返回0 判断是正确的
  2. 对于已正确定义的二维数组a, *(a[i]+j)与a[i][j]的含义相同。 判断是正确的
  3. 数组名就是一个指针常量,指向数组的首元素(或者说代表了数组的首地址)。 判断是错误的
    数组名不是指针,而是地址
  4. 在C语言中能逐个地使用下标变量,也能一次引用整个数组。 判断是错误的
    不能一次性引用整个数组
  5. 在定义数组之后,根据数组中元素的类型及个数,在内存中分配一段连续存储单元用于存放数组中的各个元素。 判断是正确的
  6. 在定义数组之后,根据数组中元素的类型及个数,在内存中分配一段连续存储单元用于存放数组中的各个元素。 判断是正确的
  7. 若有定义int a[]={2,4,6,8,10},a[1]和a++表示的含义相同。 判断是错误的
    a代表常量,常量不能自增
  8. 不正确的赋值或赋初值的方式是__C__。

A.char str[]=“string”;
B.char str[7]={‘s’, ‘t’, ‘r’, ‘i’, ‘n’, ‘g’};
C.char str[10];str=“string”;
D.char str[7]={‘s’, ‘t’, ‘r’, ‘i’, ‘n’, ‘g’, '\0’};
数组名不能赋值
10. 以下哪个定义中的p不是指针,请选择恰当的选项: _C

A.char **p;
B.char (*p)[10];
C.char *p[6];
D.给出的三项中,p都是指针
*char p[6]代表的是指针数组,它里面的元素才是指针
10.若用数组名作为函数调用的实参,则传递给形参的是 A_

A.数组的首地址
B.数组第一个元素的值
C.数组中全部元素的值
D.数组元素的个数
11.选择排序

#include 
#define MAXN 10
int main()
{
    int i, index, k, n, temp;
    int a[MAXN];

    scanf("%d", &n);
    for(i = 0; i < n; i++){
        scanf("%d", &a[i]);
    }
  for(k = 0; k < n-1; k++){
        index = n-1-k;  
        for(i=n-1-k;i>=0;i--){
            if(a[index]<a[i]){
                index = i;  
            }    
        }  
        
temp=a[index];a[index]=a[n-1-k];a[n-1-k]=temp;
    }

   for(i = 0; i < n; i++) {
        if(i==0){
            printf("%d", a[i]);
        }else{
            printf(" %d", a[i]);
        }
    }
    printf("\n");

    return 0;
}

12.冒泡排序

#include
int main()
{
	int i,j,t;
	int a[10];
	for(i=0;i<10;i++)
	{
		scanf("%d",&a[i]);
	}
	for(j=0;j<9;j++)**加粗样式**
	for(i=0;i<9-j;i++)
	{
		if(a[i]>a[i+1])
		{
			t=a[i];
			a[i]=a[i+1];
			a[i+1]=t;
		}
	}
	for(i=0;i<10;i++)
	printf("%d ",a[i]);
	printf("\n");
	return 0;

}

13.如果变量定义如下,则正确的语句是( )。 (1分)

int i, j, tab[3][4];

tab[0][ ] = 0;

tab[ ][3] = 3;

tab = 100;

for(i = 1; i <= 3; i++){
for(j = 1; i <= 4; j++){
scanf(“%d ”, &a[i][j];
}
}

for(i = 0; i < 3; i++){
for(j = 0; j < 4; j++){
printf("%4d", tab[i][j]);
}
printf("\n");
}
14.在以下描述中,( ABC)是正确的。 (1分)

int a[5] = {1, 2, 3, 4, 5};
A.定义了数组a,并对数组元素赋初值。此时,a[0]为1,a[1]为2,a[2]为3,a[3]为4,a[4]为5。

static int b[10];
B.定义了静态数组b,且10个数组元素的初值都为0。

int fib[45] = {1, 1};
C.定义了数组fib,并对数组 fib 的前2个元素赋初值,其余元素的值都为0。

static int week[7] = {1, 2, 3};
D.定义了静态数组week,并对数组 week 的前3个元素week[0]~week[2]赋初值,week[3]~week[6]值都是不确定的。
**15.假设scanf语句执行时输入ABCDE<回车>,能使puts(s)语句正确输出ABCDE字符串的程序段是_D_。
A.char s[5]={“ABCDE”}; puts(s);
B.char s[5]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’}; puts(s);
C.char s; scanf("%s", s); puts(s);
D.char s; s=“ABCDE”; puts(s);

易错题
16.在以下描述中,(ABCD )是正确的。 (1分)

int a[3][3] = {1};
A.定义了数组a,并对数组a赋初值。此时,a[0][0]的值为1,而其余元素的值都是不确定的。

static int b[4][3] = {{ }, { }, { },{9}};
B.定义了静态数组b,并对数组赋初值。此时,b[3][0]的值为9,而其余元素的值都为0。

C.int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
等价。

D.static int b[4][3] = {{1, 2, 3}, { }, {4, 5}};

static int b[4][3] = {1, 2, 3, 0, 0, 0, 4, 5};
等价。

E.int a[3][3] = {{},{4},{}};
定义了数组a,并对数组a赋初值。此时,a[1][1]的值为4,而其余元素的值都是不确定的。
17.#include
#include
int main()
{
char s[80];
static int count[10];
int i;
scanf("%s", s);
for(i=0;i if(s[i]>=‘0’&&s[i]<=‘9’)
count[s[i]-‘0’]++;
for(i=0;i<10;i++) printf("%d",count[i]);
return 0;
}
18.int k;
char str1[81];

k = 0;
while (str1[k] != ‘\0’) {
if (str1[k] >= ‘a’ && str1[k] <= ‘z’){

str1[k] = str1[k]-‘a’+‘A’;

}
else if (str1[k] >= 'A' && str1[k] <= 'Z'){

str1[k] = str1[k]-‘A’+‘a’;
}
k++;
}
/* 程序段B */
int k;
char str1[81], str2[81];
k = 0;
while (str1[k]!=’\0’) {
if (str1[k]>=‘a’ && str1[k]<=‘z’)
{
str2[k] = str1[k]-‘a’+‘A’;
}
else if (str1[k]>=‘A’ && str1[k]<=‘Z’){

str2[k] = str1[k]-‘A’+‘a’;
}
else{

str2[k] = str1[k];
}
k++;
}

str2[k] = ‘\0’;
循环将字符转换大小写

19.字符串复制。

以下程序段的功能是:将字符串str1的内容复制到字符串str2。

int i;
char str1[81], str2[81];
i = 0;
while
(str1[i] != ‘\0’)
{
str2[i] = str1[i];//将字符串str1的内容循环复制到字符串str2
i++;
}
str2[i] = ‘\0’;

20.缓冲文件系统的文件缓冲区位于(C)。

A.磁盘缓冲区中
B.磁盘文件中
C.内存数据区中
D.程序文件中
21.按存储介质划分,文件可以分为: B

A.记录文件和流式文件
B.普通文件和设备文件
C.文本文件和二进制文件
D.程序文件和数据文件
22.函数fgetc的作用是从指定文件读入一个字符,该文件的打开方式必须是(D )。

A.只写
B.追加
C.读或读写
D.答案B和C都正确
23.利用函数fseek可实现的操作是(D )。

A.改变文件指针fp的值
B.文件的顺序读写
C.文件的随机读写
D.以上答案均正确
24.只能向指定文件写入一个字符的函数是 fputc.
25.fgets(s,n,fp);语句用来从fp所指示的文本文件中读取字符串s,该语句最多读取
n-1|n - 1|n -1|n- 1个字符。
26.C语言中用文件指针来指示文件缓冲区中具体读写的位置。

你可能感兴趣的:(笔记)