刷题日记 01 C语言
写在前面:此系列文章只为参加知识竞赛时的记录 对题目提出一些自己的想法 有啥不对的地方还望谅解和指正 不胜感激
第一次记录
1、c语言程序的基本单位为函数
理解:c程序就是一个一个函数所组成 ,其中入口为main()函数
2、main是程序的入口
理解:但与其在c程序文件中的位置无关
#include <stdio.h>
//函数定义
eat();
//自定义函数
void eat()
{
printf("我在吃饭");
}
//程序的入口
void main()
{
//函数调用
eat();
printf("Hello World");
}
3、符号的使用
a./ %符号的使用
使用%时, 两边的运算数必须为整型。
使用/时 ,两边的运算数可为不同类型的数字 , 但使用%d来接收float类型会出现精度丢失。
b.++ --的用法
int x=10,y=3;
printf("%d,%d\n",x--,--y);
A、10,3 B、9,3 C、9,2 D、10,2
理解:因为x在++前面 ,所以直接选择x的值 — 即输出x=10 ; 但在内存中 x已变为11了 。
对于y 先出现的是-- ,所以输出y=2 ,内存中y也是2 ;所以答案为D。
c.连等的用法
//x<=y<=z的c语言表达式
A、(X<=Y)&&(Y<=Z) B、(X<=Y)AND(Y<=Z)
C、(X<=Y<=Z) D、(X<=Y)&&(Y<=Z)
理解:在C语言中连等得使用逻辑运算符来连接 ,所以答案为A
d.? :三元运算符
//表达式:
0?(0?3:2):(10?1:0)
A、3 B、2 C、1 D、0
理解:此题要需要理清配套关系 , 应该将第一个?和最后一个:配对 ,这样题就变成了 0是否为真?如果是真则选择计算前面的0?3:2, 但此题0为假 ,所以就选择计算后面的10?1:0 ,10为非0 即为真 ,所以答案为 C
e.&& || !的用法
main()
{ int a=4,b=5,c=0,d;
d=!a&&!b||!c;
printf("%d\n",d);}
A、1 B、0 C、非0 D、-1
理解:&&:与运算 一假便假
||: 或运算 一真便真
! 非运算 取反即可
此题中 !a&&!b为假 ,!c为真 , 所以假||真为真 ;因为c=0 所以!c为1 ! 所以答案为A。
4、语句类
a.条件语句
//下列if语句中,不正确的是()。
A、if(x>y);
B、if(x==y)
x+=y;
C、if(x!=y)
scanf("%d",&x)
else
x=1;
D、if(x<y)
{x++;y++;}
理解:在此题中 A选项具有较大的迷惑性 ,但这样的格式是正确的 , 是属于空语句的一种 ; C选项中在if语句中执行语句也是要以分号结尾的 所以答案为C。
b.循环语句
x=99;
while(x-2)
x--;
//则循环结束时,x=?。
理解:当循环条件不满足时则循环结束,即此处的表达式x-2=0 ,所以答案选B。
5、数组循环结合
理解:第三行是属于直接给定的方式赋值 ,int类型其他未赋值部分默认为0 ,所以第三行是正确的 ; 第五行也是正确的 ;第六行中 循环结束条件为i=4但数组下标最大才为2 , 所以错误原因为数组下标越界 , 即答案为C。
//下面那个选项是正确的()。 (每行程序前面的数字表示行号)
1 main()
2 {
3 float a[3]={0};
4 int i;
5 for(i=0;i<3;i++)
scanf(“%f”,&a[i]);
6 for(i=1;i<4;i++)
a[0]=a[0]+a[i];
7 printf(“%f\n”,a[0]);
8 }
这次的记录就到这里啦 我们下次见哦!!