第 1 题(单选题)
题目名称:
下面代码的结果是:( )
#include <stdio.h>
int main()
{
int i = 1;
int ret = (++i)+(++i)+(++i);
printf("ret = %d\n", ret);
return 0;
}
题目内容:
A .10
B .12
C .9
D .程序错误
表达式(++i)+(++i)+(++i),只有操作符的优先级和结合性,没法确定唯一计算路径
所以这个表达式可能因为计算顺序的差异导致结果是不一致的,所以表达式是错误的表达式。
可以在VS和Linux gcc测试,结果可能有差异。
第 2 题(单选题)
题目名称:
下面代码的结果是:
#include <stdio.h>
int i;
int main()
{
i--;
if (i > sizeof(i))
{
printf(">\n");
}
else
{
printf("<\n");
}
return 0;
}
题目内容:
A .>
B .<
C .不输出
D .程序有问题
C语言中,0为假,非0即为真。
全局变量,没有给初始值时,编译其会默认将其初始化为0。
i的初始值为0,i–结果-1,i为整形,sizeof(i)求i类型大小是4,按照此分析来看,结果应该选择B,但是sizeof的返回值类型实际为无符号整形,因此编译器会自动将左侧i自动转换为无符号整形的数据,-1对应的无符号整形是一个非常大的数字,超过4或者8,故实际应该选择A
第 3 题(单选题)
题目名称:
关于表达式求值说法不正确的是:( )
题目内容:
A .表达式求值先看是否存在整形提升或算术转换,再进行计算
B .表达式真正计算的时候先看相邻操作符的优先级决定先算谁
C .相邻操作符的优先级相同的情况下,看操作符的结合性决定计算顺序
D .只要有了优先级和结合性,表达式就能求出唯一值
第 4 题(编程题)
题目名称:
BC68-X形图案
题目内容:
点击题目链接,做题
#include <stdio.h>
int main()
{
int n = 0;
while (~scanf("%d", &n))
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= n; j++)
{
if (i + j == n - 1)
printf("*");
else if(i == j)
printf("*");
else {
printf(" ");
}
}
printf("\n");
}
}
return 0;
}
第 5 题(编程题)
题目名称:
BC54-获得月份天数
题目内容:
点击题目链接,做题
int main()
{
int y = 0;
int m = 0;
int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
while (~scanf("%d %d", &y, &m))
{
int day = days[m - 1];
if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
{
if (m == 2)
{
day += 1;
}
}
printf("%d\n", day);
}
return 0;
}
第 6 题(编程题)
题目名称:
BC51-三角形判断
题目内容:
点击题目链接,做题
int main()
{
int a = 0;
int b = 0;
int c = 0;
while (~scanf("%d %d %d", &a, &b, &c))
{
if ((a + b > c) && (a + c > b) && (c + b > a))
{
if ((a == b && a != c) || (a == c && a != b) || (b == c && b != a))
{
printf("Isosceles triangle!\n");
}
else if (a == b && b == c)
{
printf("Equilateral triangle!\n");
}
else
{
printf("Ordinary triangle!\n");
}
}
else
{
printf("Not a triangle!\n");
}
}
return 0;
}