在这里插入代码片# 错题集
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
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语言中用文件指针来指示文件缓冲区中具体读写的位置。