C语言判断闰年和平年
#includevoid fun(int year) { if((year%4==0&&year%100!=0)||(year%100==0&&year%400==0)) {
printf("%d年是闰年\n",year); } else {
printf("%d年不是闰年\n",year); } } void main() { int Year; scanf("%d",&Year); fun(Year); }
C语言判断闰年和平年
#includevoid fun(int year) { if((year%4==0&&year%100!=0)||(year%100==0&&year%400==0)) {
printf("%d年是闰年\n",year); } else {
printf("%d年不是闰年\n",year); } } void main() { int Year; scanf("%d",&Year); fun(Year); }
第一章
C语言中,字符数据用格式说明"%c"来输出,字符串数据用格式说明"%s"来输出。T C语言中,关键字及编译预处理命令用小写字母书写。T 二元运算符均可以和赋值运算符构成复合的赋值运算符。T C语言中,不能在变量名、函数名、关键字中插入空格和空行。T Vasual c++6.0中可以使用“//”和 “/* */”注释程序,注释部分不编译。T C语言中,格式说明"%10.4f"中10表示数据输出的最小宽度,4表示小数位数。T C语言中,为了区别一般的变量,符号常量必须用大写字母表示。F 执行语句++i ; i=3;后变量i的值为4。F 程序中的“=”是赋值号,与数学中等号的功能相同。F C语言中,在进行混合运算时,数据类型由高级向低级转换。F 将C程序编译成目标文件,其扩展名为EXE。F 整数在存储时不会产生误差,实数在存储时也不会产生误差。F 用float定义的实型变量在内存占8个字节,输入/输出格式符是%f。f C语言中,putchar函数的功能是把一字节代码输出到标准输出设备。T 字符数据与整型数据可互相赋值。T 增1(或自增)、减1(或自减)运算符都是双目运算符。F 逗号表达式的值是第一个表达式的值。F C语言中,强制类型转换后,原变量的值和数据类型不变。T 字符数据在内存以ASCII码存储,占2个字节,用7位二进制表示。F C程序的书写格式比较自由,一行内可写一个语句,也可以写多个语句。T
第二章
if(表达式)语句1 else 语句2 结构中,如表达式为a>10,则else的条件隐含为a<10。F C语言规定,else总是与它上面、最近的、尚未配对的if配对。T switch…case结构中case后的表达式必须为常量表达式。T 可以用swicth结构实现的程序都可以使用if语句来实现。T switch…case结构中条件表达式和常量表达式值可以为float类型。F 由float x=3e-6,y=3e-6;可得x==y的逻辑值为真。F 语句int a=2;if(a=3)b=1;执行后b的值是1。T 所有关系运算符的运算优先级相同。F switch后面园括号内的表达式的值和case后面的常量表达式的值都必须是整型或字符型,不允许是浮点型。T 两个变量交换数据时常使用一个工作变量。T switch语句的结束发生在break;语句的执行或者switch语句的“}”。T 逻辑运算符的运算优先级低于算术运算符 的运算优先级。F 执行a=0;if(0);a=3;后a的值为3。T 第三章
由i=-1;while(i<10)i+=2;i++;可知此while循环的循环体执行次数为6次。T 在循环外的语句不受循环的控制,在循环内的语句也不受循环的控制。F do…while语句的循环体至少执行1次,while和for循环的循环体可能一次也执行不到。T break;语句执行时退出到包含该break;语句的所有循环外。 for循环、while循环和do while循环结构之间可以相互转化。T 循环for(;;)的循环条件始终为真。T 从语法角度看,for(表达式1;表达式2;表达式3)语句中的3个表达式均可省略。T 二层循环for(i=0;i<5;i+=2)for(j=0;j<5;j++)的循环体的执行次数为15。T C语言中,do-while语句构成的循环只能用break语句退出。F for、while和do while循环结构的循环体均为紧接其后的第一个语句(含复合语句)。T
if(表达式)语句1 else 语句2 结构中,如表达式为a>10,则else的条件隐含为a<10。F C语言规定,else总是与它上面、最近的、尚未配对的if配对。T switch…case结构中case后的表达式必须为常量表达式。T 可以用swicth结构实现的程序都可以使用if语句来实现。T
第4章
仅仅对存放字符串的数组才可以一次引用整个数组,其余均不能一次引用整个数组。 T 使用字符串处理函数strcmp需要包含头文件string.h。 T C语言中,字符串以'\0'为结束标志。 T 数组名代表该数组的首地址。
T C语言中,用格式符"%s"输入字符数组时,数组名前不能加&。
C语言中, gets()函数的返回值是用于存放输入字符串的字符数组首地址 。
F T 设有int a;char abc[5]="abcd";则a=strlen("ABC");执行后a的值为5。 F 定义数组时可以同时给数组赋初值,初值的个数可以超过数组的长度,多余的被忽略。 F 已知字符数组str1的初值为"China",则语句str2=str1;执行后字符数组str2也存放字符串"China" F 在数组定义后,可以使用语句如iSum[ ]={1,2,3};给数组初始化。 F 二维及多维数组在定义的同时给数组赋初值时,可以省略数组的各维长度。 F 对于数值型数组来说,可以一次引用整个数组。 F C语言中,在对全部数组元素赋初值时,必须指定数组的长度。
F C语言中,数组元素在内存中是顺序存放的,它们的地址是连续的。
T C语言中,数组元素的下标是从1开始的,下标不能越界。 F C语言中,数组名是一个常量,是数组首元素的内存地址,可以重新赋值。 F 一个数组中的所有元素可以具有不相同的数据类型。
第5章
一个C程序可以由若干各函数组成,这些函数可以书写在不同的文件中。 T C语言中,函数间数据传递的方式有三种,即用返回值、参数、全局变量。 T 函数的形参只能在函数内部使用。 T C语言中,实参可以是常量、变量或表达式。 T C语言中,实参的个数、类型和位置必须与形参的定义一一对应。 T
F C语言中, 编译预处理后 所有的符号常量名和宏名都用相应的字符串替换。 T 宏展开不作语法检查,展开时不替换关键字和常量。
T 实参向形参进行数值传递时,数值传递的方向时单向的,即形参变量值的改变不影响实参变量的值。 T 函数原型说明中,省略形参变量或者将形参变量写成其它名称不影响程序的正确性 T 一个C程序中只能包含一个main()函数,程序总是从main()函数开始执行。
T 数组名作为函数的参数时,实参数组和形参数组共用相同的内存单元。 T 所有的函数调用前都必须进行函数原型说明。 F 函数可以嵌套定义,也可以嵌套调用。 F 第六章
C语言中,结构类型与结构变量的含义一样,都可以用来存放数据。
f 共用体所有成员共用的内存单元的大小为各成员需要占用内存大小之和。
F 将整数值赋给枚举变量时不需要作强制类型转换。
F 共用体所有成员都共用同一内存单元T 结构体数组不可以在定义时进行初始化。F 结构体可以定义在单独的头文件中,使用时需要在对应C文件中包含该头文件。T C语言中,关键字enum可用于结构类型的定义f 可以把结构体数组元素作为一个整体输出。F 结构体变量作参数时是地址传递。F C语言中,结构的成员可以是一维数组或多维数组。t 枚举类型时一种基本的数据类型。F 结构体和共用体成员的应用都只能引用最低一级的成员。t 第七章
int a=5,*p;p=&a;则p的值为5。F 表达式*p++的运算顺序为先自增后取值。F 语句*--p;执行之后p指向的内存单元被改变。F 两个指针相加没有意义。T *(a[i]+j)与a[i][j]的含义相同。T 指针、数组名、函数名都是地址。T void 类型的指针不指向某种类型的数据,所以没有意义。F 一个指针变量的值是一个地址值。T 指针作函数的参数时是地址传递方式。T C语言中,只能用下标来引用数组元素。F C语言中,执行表达式(*p)++后p的指向改变了。F 链表的插入和删除和数组元素一样需要移动插入或删除点后的元素。F 语句“int *p ;”中的*p的含义为取值。F
第八章
文件正常关闭时返回1。F 命令行参数是指在操作系统状态下执行命令程序时允许带的参数。T 为了提高读写效率,我们进行读写操作后不应关闭文件以便下次再进行读写。F rewind函数的作用是位置指针返回移动前的位置。F 当以参数w打开文件时,若指定路径下已有同名文件,则覆盖原有文件。T 我们可以使用ftell获得文件的当前读写位置。T C语言中的文件是一种流式文件,读写时均以字符为单位。T c语言通过文件指针对它所指向的文件进行操作。T 由于在c语言中将文件视为无结构的字节流,所以不能对文件进行二进制读写。F 表达式 c=fgetc(fp)!=EOF的功能是从fp指向的文件中读取字符,并判断文件是否结束。T 使用fwrite向文件中写入数据之前,该文件必须是以wb方式打开。T fseek函数中的第二个参数代表的位移量是相对于的文件的开始来说的。F 在c语言中将文件视为无结构的字节流。T
#include #include
int main() {
int a,b,c,d,e,f;
double g,h,i,j,k,l;
printf("请输入3个点的坐标,(不用加括号,坐标之间用逗号隔开)")
scanf("%d,%d%d,%d%d,%d",&a,&b,&c,&d,&e,&f);
g=sqrt((a-c)*(a-c)+(b-d)*(b-d));
h=sqrt((c-e)*(c-e)+(d-f)*(d-f));
i=sqrt((e-a)*(e-a)+(f-b)*(f-b));
if(h>g&&h>i)
{
j=h;
h=g;
g=j;
}
if(i>h&&i>g)
{
k=i;
i=g;
g=k;
}
if(i>h)
{
l=h;
h=i;
i=l;
}
if(g>=h+i||g<=h-i)
{
printf("不是三角形");
}
else
{
if(g*g>i*i+h*h)
{
printf("钝角三角形");
}
if(g*g==i*i+h*h||i*i==g*g+h*h||h*h==i*i+g*g)
{
printf("直角三角形");
}
if(g*g
{
printf("锐角三角形");
}
} }
三、判断题(10道小题,共10分)
1、C 语言具有简洁明了的特点。(1分)
正确
2、预处理命令的前面必须加一个“#”号。(1分)
正确
3、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。(1分)
正确
4、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。(1 分)
正确
5、continue 不是结束本次循环,而是终止整个循环的执行。(1分)
错误
6、在对数组全部元素赋初值时,不可以省略行数,但能省略列数(1分)
错误
7、.函数的实参传递到形参有两种方式值传递和地址传递(1分)
正确
8、直接访问就是直接利用变量的地址进行存取直接访问(1分)
正确
9、共用体变量可以作结构体的成员,结构体变量也可以作共用体的成员。(1分)
正确
10、文件指针和位置指针都是随着文件的读写操作在不断改变。(1分)
错误
11、C 语言标准格式输入函数 scanf() 的参数表中要使用变量的地址值。(1分)
正确
12、浮点型常量的指数表示中 ,e 是可以省略的。 (1分) 错误
13、任何表达式语句都是表达式加分号组成的。(1分)
正确
14、在switch语句中,每一个的case常量表达式的值可以相同。(1分)
错误
15、do-while循环的while后的分号可以省略。(1分) 错误
16、用字符串方式赋值比用字符逐个赋值要多占一个字节, 用于存放字符串结束标志'\0'。
正确
17、C语言函数返回类型的默认定义类型是void(1分)
错误
18、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数(1分) 正确
19、枚举类型中的元素都具有一个整型值。(1分)
正确
20、C 语言是一种具有某些低级语言特征的高级语言。(1分)
正确
21、case语句后如没有break,顺序向下执行。(1分)正确
1
22、do-while循环至少要执行一次循环语句。(1分)
正确
23、数组名能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。(1分)
正确
24、函数形参的存储单元是动态分配的(1分)
正确
25、int (*p)[4]它表示p是一个指针数组,它包含4个指针变量元素(1分) 错误
26、结构体变量可以作数组元素。(1分)
正确
27、随机操作只适用于文本文件。(1分) 错误
28、表达式语句和表达式没有什么区别。(1分)
错误
29、条件运算符?和:是一对运算符,不能分开单独使用。(1分)
正确
30、函数strcmp从头至尾顺序地将其对应字符比较,遇到两个字符不等时,两个字符相减得到一个int型值,两个字符串完全相同时,则返回0。(1分)
正确
31、函数的实参可以是常量,变量或表达式(1分)
正确
32、如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素(1分)
正确
33、文件指针用于指向文件,文件只有被打开后才有对应的文件指针。(1分)
正确
34、C 语言标准输入操作中 ,gets() 函数一次只可读取一个字符。 (1分)
错误
35、在C语言中,逗号既可以作为运算符,也可以作为分隔符。(1分)
正确
36、C语言的书写格式不会影响程序的可读性。(1分)
错误
37、条件表达式不能取代一般if的语句。(1分)
错误
38、break 则是结束整个循环过程,不再判断执行循环的条件是否成立。(1分)
正确
39、C语言允许用字符串的方式对数组作初始化赋值。(1分)
正确
40、如果函数定义出现在函数调用之前,可以不必加函数原型声明(1分)
正确
41、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数(1分)
正确
42、C 语言程序中可以有多个函数 , 但只能有一个主函数。(1分)
正确
2
43、变量的两个值 : 本身值和地址值都是可以改变的。 (1分)
错误
44、if(a=5) 是允许的。(1分)
正确
45、C语言的三种循环不可以互相嵌套。(1分)
错误
46、在对数组全部元素赋初值时,可以省略行数,但不能省略列数(1分)
正确
47、函数名代表该函数的入口地址。因此,可用函数名给指向函数的指针变量赋值(1分)
正确
48、指向结构体变量的指针可以作函数参数,实现传址调用。(1分)
正确
49、输入操作称为写操作,将输入流中的信息存到内存时,使用写函数。(1分)
错误
50、增1减1运算符的前缀运算和后缀运算的表达式值是相同的。(1分)
错误
51、在C语言中能逐个地使用下标变量,也能一次引用整个数组。(1分)
错误
52、函数返回值的类型是由在定义函数时所指定的函数类型(1分)
正确
53、结构体成员的类型必须是基本数据类型。(1分)
错误
54、随机操作只适用于二进制文件。(1分) 错误
55、逻辑表达式的值只能为1或0。(1分) 正确
56、表达式语句和表达式没有什么区别。(1分)
错误
57、continue 只能用于循环体中。(1分)
正确
58、凡在函数中未指定存储类别的局部变量,其默认的存储类别为static(1分) 错误
59、一个变量的地址称为该变量的指针(1分)
正确 60、变量被定义后 , 它不仅有一个确定的地址值 , 而且还会有一个确定的本身值。 (1分)
错误
61、一个数组是由连续的一块内存单元组成的,指针变量就是这块连续内存单元的首地址 错误
62、结构体数组中可以包含不同结构体类型的结构体变量。(1分)
错误
63、以“r”方式打开一个文件时,文件指针指向文件首。(1分)
正确 6
4、C 语言程序实现与其他高级语言一样也要经过编辑、编译连接和运行这样的三步曲。 (1分)
3 正确
65、变量被定义后 , 它的作用域和寿命就被确定了 , 并且不可改变。 (1分)
正确。
66、break 可用于循环体中,不可用于switch语句中。](1分)
错误
67、使用static k定义的变量属于静态变量(1分)
正确
68、指针变量,只能作为函数的形参,不可以作函数的实参(1分)
正确
69、文件指针用于指向文件,文件只有被打开后才有对应的文件指针。(1分)
正确
70、C 语言是一种非结构化程序设计语言。(1分) 错误
71、在 C 语言程序中 , 凡是没有出现存储类说明符的变量都是自动类的。 (1分)
正确
72、在switch语句中,多个case可以共用一组执行语句。(1分)
正确
73、do-while语句先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。(1分)
正确
74、结构体成员必须是不同数据类型的变量。(1分) 错误
75、输入操作称为写操作,将输入流中的信息存到内存时,使用写函数。(1分)
错误
76、下划线是标识符中的合法字符。
(1分)
正确
77、表达式语句和表达式没有什么区别。(1分)
错误
78、数组元素通常也称为下标变量。必须先定义数组, 才能使用下标变量。(1分)
正确
*7
9、函数的形参可以是常量,变量或表达式(1分)
正确
80、指针变量可以存放指针(地址)、数值和字符(1分)
错误
81、fseek函数一般用于文本文件。(1分)
错误
82、C 语言程序只能有一个文件。 (1分)
错误
83、在同一个作用域中不可定义同名变量 , 在不同的作用域中可以定义同名变量。(1分)
正确 8
4、数组名能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。
正确
85、.函数的实参传递到形参有两种方式值传递和地址传递(1分)正确
4 8
6、内存中的每个存储单元都有一个惟一的地址(1分)
正确
8
7、枚举类型中的元素都具有一个整型值。(1分)
正确
88、文件是否打开是可以判断的。(1分)
正确
89、C 语言的应用比较广泛 , 不仅可用来编写应用软件 , 而且可用来编写系统软件。 (1分)
正确
90、C 语言程序中 , 出现非法字符时会发出错误信息。(1分)
正确
9
1、C语言的书写格式不会影响程序的可读性。(1分)
错误
92、在多层循环中, 一个break语句只向外跳一层。(1分)
正确
93、局部变量如果没有指定初值,则其初值不确定(1分)
正确
94、指针数组的每个元素都是一个指针变量(1分)
正确
9
5、以“a”方式打开一个文件时,文件指针指向文件首。(1分) 错误
96、共用体变量不可以进行初始化。(1分) 错误
97、文件的读函数是从输入文件中读取信息,并存放在内存中。(1分)
正确
98、C 语言程序在书写上只能是一条语句写一行。(1分)
错误
99、寄存器类变量的作用域和寿命与自动类变量的相同。 (1分)
正确
100、在一个函数内部调用另一个函数的调用方式称为嵌套调用(1分)
正确
10
1、内存单元的地址与内存单元中的数据是两个完全相同的概念(1分)
错误
10
2、结构体类型本身不占用内存空间,结构体变量占用内存空间。(1分)
正确
10
3、C 语言中 , 字符串常量存放在字符数组中要有一个结束符 , 该结束符是0 。(1分)
错误
10
4、char *s="C Language";表示s是一个指向字符串的指针变量,把字符串的首地址赋予s(1分)
正确
10
5、结构体成员的类型必须是基本数据类型。(1分) 错误
10
6、分号是 C 语言中语句的结束符 , 不可用作分隔符。 (1分) 错误
5 10
7、double 型变量在内存中占的字节数比 int 型变量在内存中占的字节数多。(1分)
正确
10
8、循环体如包括有一个以上的语句,则必须用{}括起来,组成复合语句。(1分)
正确
10
9、C 语言标准输出操作中 ,putchar() 函数可以输出显示一个字符串。 (1分) 错误
110、函数形参的存储单元是动态分配的(1分)
正确
1
11、结构体名在定义结构体时不可省略。(1分) 错误
1
12、变量的类型通常指存储类和数据类型两种。 (1分)
正确
1
13、局部变量如果没有指定初值,则其初值为0(1分) 错误
1
14、在C语言中,逗号既可以作为运算符,也可以作为分隔符。(1分)
正确
1
15、C语言的三种循环不可以互相嵌套。(1分) 错误
1
16、有指针变量p和数组a,指针变量和数组都可以实现本身的值的改变,如p++和a++ 错误
1
17、fseek函数一般用于文本文件。(1分) 错误
1
18、不允许把一个数值或字符赋予指针变量(1分)
正确
1
19、变量的两个值 : 本身值和地址值都是可以改变的。 (1分)
错误
120、两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数(1分)
正确
1
21、枚举类型中的元素都具有一个整型值。(1分)
正确
1
21、C 语言规定 : 定义符号常量时必须用大写字母。 (1分)
错误
1
22、for循环的三个表达式可以任意省略,while,do-while也是如此。(1分)
错误
1
23、函数的实参可以是常量,变量或表达式(1分)
正确
1
24、指针变量和它指向的变量之间的关系,可以用指针运算符“*”表示(1分)
正确
1
25、C 语言标准格式输出函数 printf() 的参数表是由若干个表达式组成。 (1分)
正确
1
26、fseek函数一般用于二进制文件。(1分)
正确
1
27、一个变量的数据类型被强制转换后,它将保持被强制转换后的数据类型。(1分) 错误
6 1
28、C 语言标准输入操作中 ,gets() 函数一次只可读取一个字符。 (1分)
错误
1
29、结构体变量可以作数组元素。(1分)
正确
130、内部静态类变量的作用域和寿命与自动类变量的相同。 (1分) 错误
1
31、字符串在内存中的起始地址称为字符串的指针,可以定义一个字符指针变量指向一个字符串(1分)
正确