错题集

1.函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同时,则返回0。
对。我的理解产生了错误。误以为返回值的是ascii码的大小。事实上int大于0则是1,小于则是-1。

2.数组名就是一个指针常量,指向数组的首元素(或者说代表了数组的首地址)。
错。数组名是地址,不是指针常量,它的值可以赋给指针。

3.有说明语句int a[4][5];,则a[2]+3表示 ( A) 。
A.a数组行下标为2、列下标为3的元素的地址
B.0a数组行下标为2、列下标为3的元素的值
C.a数组第2行的首地址
D.a数组第3行的首地址
a[2]表示地址。+3表示地址后移3个元素。

4.语句int *p; *p=50;执行时,不会有任何错误。
错。在执行时,*P没有值。printf不出来任何值。

5.对于以下结构定义,++p->str中的++加在 ( A) 。
struct
{
int len;
char *str;
} *p;
A.指针str上
B.指针p上
C.str指的内容上
D.以上均不是
因为p->str是对指针str的引用。

6.在一个以 h 为头的单向链表中,p 指针指向链尾的条件是(A)。
A.p->next=h
B.p->next=NULL
C.p->next->next=h
D.p->.data=-1
p 指针指向链尾那么p即为尾指针,循环链中尾指针下一个指向头指针。

7.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是(B)。
在这里插入图片描述
头指针为head的带头结点意为着头指针指向第一个有意义的元素。当第一个元素为空时。为空表。当没有头指针时,选A。

8.以下哪个定义中的p不是指针,请选择恰当的选项:( C)。
A.char **p;
B.char ( *p)[10];
C.char *p[6];
D.给出的三项中,p都是指针
[]的优先级高于 *,所以P先于[]结合,所以P是一个数组。数组里存放的元素都是指针。

9.c语言源程序是文本文件,目标文件和可执行文件是二进制文件。
对。只有二进制文件。才能被机器所识别。

10.如果二进制文件a.dat已经存在,现在要求写入全新数据,应以(B)方式打开。
A.“w”
B.“wb”
C.“w+”
D.“wb+”
首先是dat(二进制)文件,必须带b。全新文件,不能有+号,故选B。

11.定义FILE *fp; 则文件指针fp 指向的是(B)。
A.文件在磁盘上的读写位置
B.文件在缓冲区上的读写位置
C.整个磁盘文件
D.文件类型结构体

12.int (*p)[4]它表示p是一个指针数组,它包含4个指针变量元素.
错。p为指向包含4个元素的一维数组的指针变量。它只是一个指针。

13.设变量定义为 int a[2]={1,3}, p=&a[0]+1;,则p的值是( B)。

A.2
B.3
C.4
D.&a[0]+1
p在定义时赋值,意为将&a[0]+1赋给了p。且,a为int型,所以+1就是a向后加了一个元素大小的位置。故等于a[1]的值。

14.根据声明int a[10], *p=a; ,下列表达式错误的是( D)。
A.a[9]
B.p[5]
C.a++
D.*p++
a为数组首地址的值,是常量。不能自加。

15.下列关于C语言数据文件的叙述中正确的是 (B) 。
A.文件由ASCII码字符序列组成,C语言只能读写文本文件
B.文件由二进制数据序列组成,C语言只能读写二进制文件
C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
因为文件由数据流形式组成,可以按数据的存放形式分为二进制文件和文本文件,C语言既能读写文本文件,又可以读写二进制文件。

16.有一文本文件test.txt,其内容为"cprogram"(不包含引号),以下程序段的运行结果是(A)。
FILE *fp;
char str[20];
if((fp=fopen(“test.txt”,“r”))!=NULL)
str=fgets(str,5,fp); printf("%s",str);
A.cpro
B.cprog
C.prog
D.cprogram
因为输出格式是%s,所以字符串后应该有’\0’,故,只打出前四个字符。

17.**只能向指定文件写入一个字符的函数是 fgetc。
f是指对文件,getc是输入一个字符。

18.C语言中用 (一个文件指针)来指示文件缓冲区中具体读写的位置。
指针指明地址,让机器明白该读写的位置。

19.可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数。
对。函数名就是地址。可以赋值给指针。就可以实现用指针变量调用函数。

20.在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型。
对。定义时要保证成员都有意义。所以要先定义成员的结构类型,再定义主结构类型。

21.指针数组的每个元素都是一个指针变量。
对。int *p[10]就是一个指针数组。P先于[]结合,构成数组。里面存的都属指针变量。

22.C 语言标准格式输入函数 scanf() 的参数表中要使用变量的地址值。
对。要用&a的格式才可以给a赋值。

23.变量被定义后 , 它的作用域和寿命就被确定了 , 并且不可改变。
错。可以在局部变量前加static使之成为静态局部变量。改变了它的作用域和寿命。

24.斐波那契数列
已知斐波那契数列定义:f(0) = 0; f(1) = 1; f(n) = f(n-1) + f(n-2); 那么你的任务是根据已知的n(n<30),求出f(n);

用循环先把前30个数都算出来。再通过输入的n去输出f(n)。用while输入n。达到重复输入的需求。

25.按等级统计学生成绩
本题要求实现一个根据学生成绩设置其等级,并统计不及格人数的简单函数。
其中p是指向学生信息的结构体数组的指针,该结构体的定义为:
struct student{
int num;
char name[20];
int score;
char grade;
};
n是数组元素个数。学号num、姓名name和成绩score均是已经存储好的。set_grade函数需要根据学生的成绩score设置其等级grade。等级设置:85-100为A,70-84为B,60-69为C,0-59为D。同时,set_grade还需要返回不及格的人数。

先定义一些整形变量。因为p是指向学生信息的结构体数组的指针。所以可以用(*p).score来表示学生的成绩。再用if… esle进行判断和变量的自加来满足需求。最后返回不及格人数。

  1. 点赞
    微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本题就要求你写个程序,通过统计一个人点赞的纪录,分析这个人的特性。
    输入格式:
    输入在第一行给出一个正整数N(≤1000),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为“K F
    ​1
    ​​ ⋯F
    ​K
    ​​ ”,其中1≤K≤10,F
    ​i
    ​​ (i=1,⋯,K)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。

输出格式:
统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。
输入一个数n。为点赞次数。定义一个大小为1000一维数组。赋初值为0。
一个循环来控制每次点赞后的博文的标签,再用一个循环来根据该博文中的标签标号将一维数组【标号】自加1。当最外围循环==n-1时,跳出循环。用一个循环找到一维数组中最大的值。若有值相同的则。标号大的被输出。输出格式就是它的编号和出现次数,数字间隔1个空格。

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值