C语言练习题的错题集

本文列举了C语言编程中常见的错误和易混淆的知识点,包括数组下标从零开始、不能一次性引用整个数组、标准输入输出库函数包含在stdio.h中、数组元素赋值规则、文件类型与数据组织形式、错误的转义字符、数组定义及元素访问、结构体定义的分号、if语句执行规则、指针与数组的关系、通讯录排序算法、共用体类型应用、指针操作及文件操作等,旨在帮助初学者避免这些常见问题。
摘要由CSDN通过智能技术生成

1、int a[5];
the 5 elements of a are a1,a2,a3,a4,a[5]

<在数组中,下标是从零开始计算的,也就是a[0],a1,a2,a3,a4。>

2、数组定义后,只能引用单个的数组元素,而不能一次引用整个数组。
<引用数组的时候,不能一次性将数组引用完,举个例子而言,数组都是有下标的,而在C语言中,不用循环,是无法一次性将一个数组中每一个元素引用出来,所以,不能够一次性引用一整个数组。>

**3、标准输入输出库函数包含在头文件 string.h 中。 **
<标准输入输出库函数包含在头文件stdio.h中。>

4、在对数组全部元素赋初值时,不可以省略行数,但能省略列数。
<对于数组来说,列数是不可以省略的,相反的可以省略行数。>

5、c语言源程序是文本文件,目标文件和可执行文件是二进制文件。
<按照数据的组织形式划分,目标文件可以分为文件和二进制文件。>

6.以下错误的转义字符是(D)
A: ‘\’
B: ‘’’
C: ‘\t’
D: ‘\80‘
<因为“\”后面使用数字表示字符ASCII值默认用的是8进制 用8自然是错的>

7、数组定义为 int a3={1, 2, 3, 4, 5, 6},数组元素(B )的值为6。
A.a【3】【2】
B.a【2】【1】
C.a【1】【2】
D.a【2】【3】
<数组的下标是从零开始的,所以这题选B。>

8、若程序中有下面的说明和定义
struct abc
{ int x;
char y;
}
struct abc s1,s2;(A)
*
A.编译出错,结构体定义完要加分号。
B.程序将顺利编译连接执行
C.能顺利通过编译连接但不能执行
D.能顺利通过编译但连接出错

<结构体}后面有一个;结尾。>
9、已知 int x=10, y=20, z=30; 以下语句执行后x, y, z的值是(B )。
if(x>y)
z=x;x=y;y=z;
A: x=10,y=20,z=30 
B: x=20,y=30,z=30
C: x=20,y=30,z=10 
D: x=20,y=30,z=20

<if语句没有假{},所以if只执行接下来的第一个分号之前的内容。
这里 x!=y,所以只执行x=y和y=z。>

10、根据声明int ( * p)[10], p是一个( B)。
A.数组
B.指针
C.函数
D.数组的元素

<(*p)是一个指针,(int * p)是一个数组指针,int(*p【】)是一个指针数组>

11、通讯录排序
输入n个朋友的信息,包括姓名、生日、电话号码,本题要求编写程序,按照年龄从大到小的顺序依次输出通讯录。题目保证所有人的生日均不相同。

输入格式:

输入第一行给出正整数n(<10)。随后n行,每行按照“姓名 生日 电话号码”的格式给出一位朋友的信息,其中“姓名”是长度不超过10的英文字母组成的字符串,“生日”是yyyymmdd格式的日期,“电话号码”是不超过17位的数字及+、-组成的字符串。

输出格式:

按照年龄从大到小输出朋友的信息,格式同输出。

输入样例:

3
zhang 19850403 13912345678
wang 19821020 +86-0571-88018448
` qian 19840619 13609876543

输出样例:

wang 19821020 +86-0571-88018448
qian 19840619 13609876543
zhang 19850403 13912345678

#include <stdio.h>
struct pengyou{
   
    char name[20];
    int birth;
    char tel[20];
}a[10];
int main()
{
   
	int n,i,j;
	struct pengyou t;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
   
		scanf("%s %d %s",a[i].name,&a[i].birth,a[i].tel);
	}
	for(i=0;i<n-1;i++)
		for(j=0;j<n-i-1;j++)
			if(a[j].birth>a[j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值