#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
//----------------------------------------------------------------------------------------第15次作业 算术转换等
//-------------------------------------------------------------------------------------------------1.单选
下面代码的结果是: ( D )
int main()
{
int i = 1;
int ret = (++i) + (++i) + (++i); // 求解路径不唯一-----是问题表达式
printf("ret =%d\n", ret);
return 0;
}
A.10
B.12
C.9
D.程序错误
//-------------------------------------------------------------------------------------------------2.单选
//下面代码的结果是: A
全局变量,静态变量都是放在静态区
全局变量,静态变量不初始化的时候,默认会被初始化为0
局部变量,放在栈区,不初始化,默认值是随机值
int i;
int main()
{
i--; //-1
//sizeof 字符长度,单位是字节,int类型为4个字节
//sizeof 这个操作符计算返回结果是 size_t 类型的,是无符号整型,没有负数概念,
//i=-1 ,就会被转换为 unsigned int 非常大的正数>4
if (i > sizeof(i))
{
printf(">\n"); // 输出 >
}
else
{
printf("<\n");
}
return 0;
}
A. > B. <
//-------------------------------------------------------------------------------------------------3.单选
关于表达式求值说法不正确的是:( D )
A.表达式求值先看是否存在整形提升或算术转换,再进行计算
B.表达式真正计算的时候先看相邻操作符的优先级决定先算谁
C.相邻操作符的优先级相同的情况下,看操作符的结合性决定计算顺序
D.只要有了优先级和结合性,表达式就能求出唯一值
//-------------------------------------------------------------------------------------------------6.编程:打印X形图案
输入描述: 多组输入,一个整数(2~20),表示输出的行数,也表示组成“X”的反斜线和正斜线的长度。
输出描述: 针对每行输入,输出用“ *“ 组成的X形图案。
int main()
{
int n = 0;
while (scanf("%d", &n) == 1)
{
int i = 0;
int j = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (i == j) //打印主对角线
printf("*");
else if (i + j == n - 1) //打印副对角线
printf("*");
else
printf(" ");
}
printf("\n");
}
}
return 0;
}
//-----------------------------------------------------------------------------------------7.编程:获得月份天数
输入描述: 多组输入,一行有两个整数,分别表示年份和月份,用空格分隔
输出描述: 针对每组输入,输出为一行,一个整数,表示这一年这一个月有多少天
int Leap_yesr(int year)
{
if (((year % 4 == 0) && (year % 100!=0)) || (year % 400 == 0))
return 1;
else
return 0;
}
int main()
{
int year = 0;
int month = 0;
int num = 0;
int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
while (scanf("%d %d", &year, &month) == 2)
{
int num = days[month];
//判断闰年
if ((Leap_yesr(year) == 1) && (month == 2))
{
num++;
}
printf("%d\n", num);
}
return 0;
}
//-----------------------------------------------------------------------------------------8.编程:三角形的判断
输入描述: 题目有多组输入数据,每一行输入三个a,b,c (0<a,b,c<1000), 作为三角形的三个边,用空格分隔。
输出描述: 针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出 "Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”, 其余的三角形则输出"Ordinary triangle!",反之输出“Not a triangle!”。
int main()
{
int a = 0;
int b = 0;
int c = 0;
while(scanf("%d %d %d", &a, &b, &c) == 3)
{
//判断是不是三角形,如果是(等边?等腰?普通?)
if ((a + b > c) && (a + c > b) && (b + c > a))
{
if ((a == b) && (b == c))
printf("Equilateral triangle!\n");
else if (((a == b) && (b != c)) || ((b == c) && (c != a)) || ((a == c) && (c != b)))
printf("Isosceles triangle!\n");
else
printf("Ordinary triangle!\n");
}
else
{
printf("Not a triangle!\n");
}
}
return 0;
}