#include<stdio.h>
#include<math.h>
int main()
{
//输入一个数,要求输出其绝对值;
float x;
printf("请输入一个数字:");
scanf_s("%f", &x);
printf("%2.2f的绝对值是 ", x);
if (x >= 0)
printf("%2.2f", x);
else
printf("%2.2f", -x);
//// 【例4.1】在例3.5的基础上对程序进行改进。要求解得一元二次方程的根,分两种情况,b^2-4ac>=0和b^2-4ac<0;
// double a, b, c, disc, x1, x2, p, q;
// scanf_s("%lf%lf%lf", &a, &b, &c);
// disc = b * b - 4 * a * c;
// if (disc < 0) {
// printf("这个方程没有根");
// }
// else {
// //p = -b / 2 * a;
// //q = sqrt(disc) / 2 * a;
// p = -b / (2 * a);
// q = sqrt(disc) / (2 * a);
// x1 = p - q;
// x2 = p + q;
// printf("方程的根是:x1=%1.2lf,x2=%1.2lf\n", x1,x2);
// }
// printf("\n");
// 【】输入3个数a,b,c,要求按由大到小的顺序输出。
//int a, b, c;
////scanf_s("%d,%d,%d", &a, &b, &c);
//scanf_s("%d %d %d", &a, &b, &c); //用逗号,或者空格 隔开,都可以
//--一种方法--
//if (a > b) {
// if (b > c)
// printf("%d,%d,%d", a,b,c);
// else
// printf("%d,%d,%d", a, c, b);
//}
//if (a < b) {
// if (b < c)
// printf("%d,%d,%d", c, b, a);
// else
// printf("%d,%d,%d", b, c, a);
//}
////--另一种--
//int t=8;
//if (a > b) {
// if (b < c) {
// t = c;c = b;b = t;
// }
//}
//if (a < b) { // a,b
// t = a; a = b; b = t;
// if (b < c) // c,b
// t = b; b = c; c = t;
//}
//printf("after ordering: %d,%d,%d",a,b,c);
////--另另一种--
//int t;
//if (a < b) {
// t = a; a = b; b = t;
//}
//if (a < c) {
// t = a; a = c; c = t;
//}
//if (b < c) {
// t = b; b = c; c = t;
//}
//printf("after ordering: %d,%d,%d",a,b,c);
// 逻辑运算符和关系运算符
//int a, b, c;
//b = 12, c = 45;
//a =!( b > c); // 关系表达式的值是逻辑值,即真或假;
//printf("%d", a);
// 判断闰年:用一个逻辑表达式
//int n,i;
//scanf_s("%d", &n);
////n = 2000;
//i = 2;
//// 1).
//if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0) {
// printf("是闰年1\n");
//}
//else{
// printf("不是闰年1\n");
//}
//// 2).
//if ((n % 4 == 0) || n % 400 == 0) {
// /* 这些条件不够,如果输入900,就会得出900是闰年的反馈,
// 但是对于整百的年份来说,只有能被400整除的才能算闰年,
// 900、1000、1100都不算闰年,因此要加上n%100!=0的条件*/
// printf("是闰年2\n");
//}
//else{
// printf("不是闰年2\n");
//}
// 条件运算符
// 【4.4】输入一个字符,判别他是否为大写字母,如果是,
//⭐ --将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符
//char c;
//scanf_s("%c",&c,20);
//if (c >= 60 && c <= 90)
// printf("%c的小写是:%c\n",c,c + 32);
//else
//{
// printf("这不是大写字母,是%c\n", c);
//}
////⭐ --给他写成条件表达式,如下,确实比if语句简洁
////(i >= 60 && i <= 90) ? printf("%c的小写是:%c\n", c, i + 32) : printf("这不是大写字母,是%c\n", i);
////⭐ --书上的答案:
//char ch;
//scanf_s("%c", &ch,20);
//ch = (ch >= 65 && ch <= 90) ? (ch + 32) : (ch);
//printf("%c", ch);
//【例4.5】sgn函数
//float x, y;
//scanf_s("%f", &x);
// --三个独立的if语句
//if (x < 0)
// printf("y=-1");
//if (x ==0)
// printf("y=0");
//if (x >0)
// printf("y=1");
//--一个嵌套的if语句
//if (x <= 0)
// if(x<0) y=-1;
// else y=0;
//else y=1;
//printf("y=%1.0f\n", y);
// 【例4.6】switch语句。要求按照考试成绩的等级输出百分制分数段,
//A等为85分以上,B等为70~84分,C等为60~69分,D等为60分以下。成绩的等级由键盘输入;
//char grade;
//scanf_s("%c",&grade,2);
//printf("您的成绩是:");
//switch (grade)
//{
//case'A':printf("85~100\n"); break;
//case'B':printf("70~84\n"); break;
//case'C':printf("60~69\n"); break;
//case'D':printf("<60\n"); break;
//default:printf("enter data error!\n");
//}
// 【例4.7】switch语句处理菜单命令。 (这个写崩了
//void action1(int,int),action2(int, int);
//char ch;
//int a = 3, b = 5;
//ch = getchar();
//switch (ch)
//{
//case 'a':
//case 'A': action1(a, b); break;//调用action1函数,执行A操作
//case 'b':
//case 'B': action2(a, b); break;//调用action2函数,执行B操作
//default: putchar('\a');//如果输入其他字符,发出警告\a是 转义字符 007,响铃符 BEL。
//}
//int x = 3, y = 4;
//void action1(int x, int y);
//{
// printf("x + y = % d\n",x+y); //执行加法的函数
//}
//void action2(int x, int y);
//{
// printf("xy=%d\n",x*y); //执行乘法的函数
//}
return 0;
}
#include<stdio.h>
#include<math.h>
//// 【例4.7】switch语句处理菜单命令。 (这个写崩了
//void action1(int, int), action2(int, int);
//char ch;
//int a = 3, b = 5;
//ch = getchar();
//switch(ch)
//{
//case 'a':
//case 'A': action1(a, b); break;//调用action1函数,执行A操作
//case 'b':
//case 'B': action2(a, b); break;//调用action2函数,执行B操作
//default: putchar('\a');//如果输入其他字符,发出警告\a是 转义字符 007,响铃符 BEL。
//}
//int x = 3, y = 4;
//void action1(int x, int y)
//{
// printf("x + y = % d\n",x+y); //执行加法的函数
//}
//void action2(int x, int y)
//{
// printf("xy=%d\n",x*y); //执行乘法的函数
//}
int main()
{
// 判断某一年是否为闰年
int lead = 0;
int year ;
printf("请输入一个年份:");
scanf_s("%d", &year);
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
// 意思是,当year整除4且不能整除100时;或者year能被400整除时;
// 运算符优先级关系:算术>关系>逻辑
{
lead = 1;
}
if (lead ==1) {
printf("%d是闰年", year);
}
else {
printf("%d不是闰年", year);
}
//// 求一元二次方程解:分四种情况
// double a, b, c, delta,p,q,x1,x2;
// //a = 1; b = 2; c = 1;
// a = 1; b = 2; c = 2;
// //a = 2; b = 6; c = 1;
//
// delta = b * b - 4 * a * c;
// p = -b / (2 * a);
// q = sqrt(delta) / (2 * a); //问题:忘记括号,/和*的地位一样, 没有括号会先运算/
// x1 = p + q;
// x2 = p - q;
// if (a == 0) {
// printf("it is not a quadratic\n");
// }
// if (delta == 0) {
// printf("x1=x2=%8.4f",x1);
// }
// else {
// if (delta > 0) {
// printf("x1=%8.4f,x2=%8.4f", x1, x2);
// }
// else {
// printf("x1=%8.4f,x2=%8.4f", x1, x2); // 没懂这玩意
// printf("i");
// }
// }
////// 求运输费用 (这题也他妈写崩了)
// int c, s;
// double p=1, w,d,f;
// scanf_s("请输入重量w、距离s:%lf,%d", &w, &s); // ! !这里怎么老有格式问题!!他妈的 !! 这玩意真他妈难搞
// if (s >= 3000) { c = 15; }
// else { c = s / 250; } //意思是,一旦路程除250的商的整数部分是某个数字,就执行case后面的赋值表达式;
// switch (c) {
// case 0:d = 0; break;
// case 1:d = 2; break;
// case 2:d = 5; break;
// case 3:
// case 4:d = 8; break;
// case 5:
// case 6:
// case 7:
// case 8:d = 10; break;
// case 9:
// case 10:
// case 11:
// case 12:d = 15; break;
// }
// //printf("discount=%f", d); // 妈的,d怎么就未初始化了 !!1
// f = p * w * s * (1 - 5 / 100);
// printf("freight =%15.4f\n", f);
//// 书上的标准答案:
//int c, s;
//float p, w, d, f;
//scanf_s("%f %f %d", &p, &w, &s);
//if (s >= 3000) c = 12;
//else c = s / 250;
//switch (c)
//{
//case 0:d = 0; break;
//case 1:d = 2; break;
//case 2:
//case 3:d = 5; break;
//case 4:
//case 5:
//case 6:
//case 7:d = 8; break;
//case 8:
//case 9:
//case 10:
//case 11:d = 10; break;
//case 12:d = 15; break;
//}
//f = p * w * s * (1 - d / 100); // 有问题
//printf("freight =%15.4f\n", f);
//// 我的修稿版
//int c, s;
//float p , w, d, f;
////scanf_s("%f,%f,%d",&p, &w, &s); // ! !这里怎么老有格式问题!! ————答案是,scanf_s()函数只能填格式符,不仅如此,格式符之间是什么,输入的时候也要保证是一样的符号
//scanf_s("%f %f %d", &p, &w, &s);
//if (s >= 3000) c = 12;
//else c = s / 250; //意思是,一旦路程除250的商的整数部分是某个数字,就执行case后面的赋值表达式;
//switch (c)
//{
//case 0:d = 0; break;
//case 1:d = 2; break;
//case 2:
//case 3:d = 5; break;
//case 4:
//case 5:
//case 6:
//case 7:d = 8; break;
//case 8:
//case 9:
//case 10:
//case 11:d = 10; break;
//case 12:d = 15; break;
//}
//f = p * w * s * (1 - d / 100);
//printf("freight =%15.4f\n", f);
//// 判断逻辑表达式的值
//int a = 3, b = 4, c = 5;
//int x, y;
//bool i1,i2,i3,i4,i5;
//i1 = a + b > c && b == c;
//i2 = a || b + c && b - c;
//i3 = !(a > b) && !c || 1;
//i4 = !(x = a) && (y = b) && 0;
//i5 = !(a + b) + c - 1 && b + c / 2;
//printf("%d,%d,%d,%d,%d", i1, i2, i3, i4, i5);
//// 有三个整数abc,由键盘输入,输出其最大值;
//int a, b, c;
//printf("please input 3 numbers:");
//scanf_s("%d %d %d", &a, &b, &c);
//printf("max=");
//if (a > b) {
// if (b > c) {
// printf("%d", a);
// }
// else {
// if (a > c) {
// printf("%d", a);
// }
// else {
// printf("%d", c);
// }
// }
//}
//else {
// if (a > c) {
// printf("%d", b);
// }
// else {
// if (c > b) {
// printf("%d", c);
// }
// else {
// printf("%d", b);
// }
// }
//}
//putchar('\n');
//// 从键盘输入一个小于1000 的整数,输出其平方根;要求先检查输入值是否符合条件;
//int n;
//float sqrtx;
////printf("请输入一个小于1000的整数:");
////scanf_s("%d", &n);
////if (n > 1000) {
//// printf("该数字大于1000!!");
////}
////else {
//// sqrtx = sqrt(n);
//// printf("平方根是%5.2f",sqrtx);
////}
//
//// 魔改版:可循环连续计算五次,限额改成一万
//for (int i = 0; i < 5; i++) {
// printf("请输入一个小于10000的整数:");
// scanf_s("%d", &n);
// if (n > 10000) {
// printf("该数字大于10000!!\n");
// }
// else {
// sqrtx = sqrt(n);
// printf("平方根是%5.2f\n", sqrtx);
// }
//}
//// 对一个函数,写程序,输入x的值,输出y相应的值
//double x;
//x = 4;
//printf("y=");
//if (x < 1) { printf("%7.2f", x); }
//if (x >= 1 && x < 10) { printf("%7.2f", 2 * x - 1); }
//if (x >= 10) { printf("%7.2f", 3 * x - 11); }
//// 给出一百分制成绩,要求输出成绩等级'A'、'B'、'C'、'D'、'E'.90分以上,80-89分,70-79分,60-69分,60分以下
//int score;
//char grade;
////score = 90;
//printf("请输入分数:");
//scanf_s("%d", &score);
//switch (score/10)
//{
//case 10:
//case 9: grade = 'A'; break;
//case 8: grade = 'B'; break;
//case 7: grade = 'C'; break;
//case 6: grade = 'D'; break;
//case 5:
//case 4:
//case 3:
//case 2:
//case 1:
//case 0:grade = 'E'; break;
//}
//printf("score=%d;grade=%c", score,grade);
// 给一个不多于5位的正整数,要求
//①求出它是几位数;
//②分别输出每一位数字;
//③按逆序输出各位数字,例如原数位321,应输出123;
//const int Zhengzs = 34;
// 求位数:用数字除以1、10、100、1000 ,一旦出现商在0-10这个范围内,就输出
// the paragraphy写崩了,妈的
//int i = 1;
//int z = Zhengzs;
//for (i; i < 10000; i = i * 10) {
// for (int j = 0; j < 5; j++) {
// if (z > 0) { z = Zhengzs / i; }
// if (z > 1 && z < 10) {
// printf("%d是%d位数字\n", Zhengzs, j);
// }
// }
//}
//int zhs = 32544;
//int border;
//printf(" 位数=");
////if (zhs > 999999) { printf("7"); }
////else if (zhs > 99999) { printf("6"); } //有了else if,这些和第一个if是一体的,只会满足其中一个条件,然后执行表达式
//if (zhs > 9999) { border=5; } //一旦执行完,就结束这个if选择语句;
//else if (zhs > 999) { border = 4; } //而倘使用if 替代所有的else if,那么这就是个if判断语句,后果是一旦if条件满足,将执行每一个if后面的表达式,如果是选择语句,就只执行符合条件的第一个;
//else if (zhs > 99) { border = 3; }
//else if (zhs > 9) { border=2; }
//else { border=1; }
//printf("%d\n", border);
//printf("每位数字为:");
//int ten_thou, thou, hund, ten, indiv;
//ten_thou = zhs / 10000;
//thou = (zhs - ten_thou * 10000)/1000;
//hund = (zhs-thou * 1000 - ten_thou * 10000)/100;
//ten = (zhs - hund * 100 - thou * 1000 - ten_thou * 10000) / 10;
//indiv = zhs - ten * 10 - hund * 100 - thou * 1000 - ten_thou * 10000;
//printf("%d,%d,%d,%d,%d\n", ten_thou, thou, hund, ten, indiv);
//printf("反序数字为:");
//switch (border) {
//case 5:printf("%d,%d,%d,%d,%d", indiv, ten, hund, thou, ten_thou); break;
//case 4:printf("%d,%d,%d,%d", indiv, ten, hund, thou); break;
//case 3:printf("%d,%d,%d", indiv, ten, hund); break;
//case 2:printf("%d,%d", indiv, ten); break;
//case 1:printf("%d", indiv); break;
//}
//putchar('\n');
//// 企业发放的奖金根据利润提成
//double I = 156890;
//int bo;
//if (I < 100000) { bo = 1; }
//if (I > 100000&&I<200000) { bo = 2; }
//if (I > 200000&&I<400000) { bo = 3; }
//if (I > 400000&&I < 600000) { bo = 4; }
//if (I > 600000&&I< 1000000) { bo = 5; }
//if (I > 1000000) { bo = 6; }
//double JJ;
//switch (bo) {
//case 1:JJ = I * 0.010; break;
//case 2:JJ = 100000 * 0.1 + (I - 100000) * 0.075; break;
//case 3:JJ = 100000 * 0.1 + (200000-100000)* 0.075+(I-200000)*0.05; break;
//case 4:JJ = 100000 * 0.1 + (200000-100000)* 0.075+(400000-200000)*0.05+ (I - 400000) * 0.03; break;
//case 5:JJ = 100000 * 0.10 + (200000 - 100000) * 0.075 + (400000 - 200000) * 0.05 + (I - 400000) * 0.015; break;
//case 6:JJ = 100000 * 0.10 + (200000 - 100000) * 0.075 + (400000 - 200000) * 0.05 + (600000 - 400000) * 0.015+(I-600000)*0.01; break;
//}
//printf("当月奖金:%5.2lf", JJ);
//// 输入4个数,要求按由小到大顺序输出
//int a[4];
////= { 8,5,2,1 };
//for (int k = 0; k < 4; k++) {
// scanf_s("%d", &a[k]);
//}
//int j;
//for (int i = 0; i < 4; i++) { // 需要对四个数字进行排序;没有这一步,排序只进行一次
// for (j = 0; j < 3; j++) { // 只要进行三次比较;这里的j是三,因为当j=2时,j<3
// if (a[j] > a[j + 1]) {
// int t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;
// }
// }
//}
//printf("after ordering:");
//for (int k = 0; k < 4; k++) {
// printf("%d,", a[k]);
//}
// 12.有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),
//圆半径为1,见图4.17.这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度。
//float x, y;
//scanf_s("%f,%f", &x, &y);
//if (x >= 1 && x <= 3 || x >= -3 && x <= -1) {
// if (y >= 1 && y <= 3 || y >= -3 && y <= -1) {
// printf("h=10m");
// }
// else {
// printf("h=0m");
// }
//}
//else {
// printf("h=0m");
//}
return 0;
}