/*若编译出现错误:
[Error] 'for' loop initial declarations are only allowed in C99 or C11 mode
请更换C99标准进再行编译*/
#include <stdio.h>
#include <stdlib.h>
#define PI 3.14 //定义常量PI
#define N 10
void function_1(void);
void function_2(void);
void function_3(void);
void function_4(void);
void function_5(void);
void function_6(void);
void function_7(void);
void function_8(void);
void function_9(void);
void function_10(void);
void function_11(void);
void function_12(void);
void function_13(void);
int function_14(int a, int b);
void function_15(int *a,int *b);
void function_16(void);
void function_17(void);
void function_18(void);
void function_19(void);
void function_20(void);
void function_21(void);
void function_22(void);
void function_23(void);
void function_24(void);
int main(){
printf("***************************************************************\n\
* 小小计算器 *\n\
* 1 加法 *\n\
* 2 减法 *\n\
* 3 乘法 *\n\
* 4 除法 *\n\
* 5 判断数字的位数 *\n\
* 6 计算圆面积 *\n\
* 7 判断闰年 *\n\
* 8 成绩转换 *\n\
* 9 计算从1到输入数之间的奇数和 (for) *\n\
* 10 计算从1到输入数之间的偶数和 (while) *\n\
* 11 输出从1到输入数之间所有3的倍数 (do-while) *\n\
* 12 求即被3整除又被5整除的数 *\n\
***************************************************************\n\
* 13 求水仙花数 *\n\
* 14 求最大值 *\n\
* 15 求最大最小值 *\n\
* 16 冒泡排序 *\n\
* 17 矩阵转置 *\n\
* 18 求对角线和 *\n\
* 19 统计单词个数 *\n\
* 20 静态创建链表 *\n\
* 21 动态创建链表 *\n\
* 22 学生成绩排序 *\n\
* 23 学生成绩普涨10分 *\n\
* 24 学生成绩链表 *\n\
* 25 退出 *\n\
***************************************************************");
label:printf("\n请选择您要进行的运算:");
/*int num1, num2, answer; //实验3定义的变量
float num3, num4, answer2;
double R, S;
int value, temp, bits, one_p, two_p, three_p; //实验4定义的变量
int year, score; //实验5定义的变量
long long int num5, answer3, o; //实验6定义的变量*/
int max, num1, num2;
int choose;//getchar只能接收单个字符,不适合此时超越9个的switch选择
scanf("%d", &choose);
switch(choose){
case 1:
function_1();
break;
case 2:
function_2();
break;
case 3:
function_3();
break;
case 4:
function_4();
break;
case 5:
function_5();
break;
case 6:
function_6();
break;
case 7:
function_7();
break;
case 8:
function_8();
break;
case 9:
function_9();
break;
case 10:
function_10();
break;
case 11:
function_11();
break;
case 12:
function_12();
break;
case 13:
function_13();
break;
case 14:
scanf("%d %d", &num1, &num2);
max = function_14(num1, num2);
printf("最大值为:%d",max);
break;
case 15:
scanf("%d %d", &num1, &num2);
function_15(&num1, &num2);
printf("最大值为:%d 最小值为:%d ", num1, num2);
break;
case 16:
function_16();
break;
case 17:
function_17();
break;
case 18:
function_18();
break;
case 19:
function_19();
break;
case 20:
function_20();
break;
case 21:
function_21();
break;
case 22:
function_22();
break;
case 23:
function_23();
break;
case 24:
function_24();
break;
case 25:
return 0;
default:
printf("不存在此结果,请重新输入!!");
}
goto label;
}
void function_1(){
int num1, num2, answer;
scanf("%d %d", &num1, &num2);
answer=num1+num2;
printf("加法结果的十进制形式是:%d\n",answer);
printf("加法结果的八进制形式是:%o\n",answer);
printf("加法结果的十六进制形式是:%x",answer);
}
void function_2(){
int num1, num2, answer;
scanf("%d %d", &num1, &num2);
answer=num1-num2;
printf("减法结果的十进制形式是:%d\n",answer);
printf("减法结果的八进制形式是:%o\n",answer);
printf("减法结果的十六进制形式是:%x",answer);
}
void function_3(){
float num3, num4, answer2;
scanf("%f %f", &num3, &num4);
answer2=num3*num4;
printf("乘法结果的小数形式是:%f\n",answer2);
printf("乘法结果的指数形式是:%e",answer2);
}
void function_4(){
float num3, num4, answer2;
scanf("%f %f", &num3, &num4);
if(num4==0){
printf("除数不能为0!!");
}
else{
answer2=num3/num4;
printf("除法结果的小数形式是:%f\n",answer2);
printf("除法结果的指数形式是:%e",answer2);
}
}
void function_5(){
int answer, value, temp, bits, one_p, two_p, three_p;
scanf("%d", &value);
if(value<0){ //比较输入值是否符合标准
printf("要求输入的数为正整数");
}
if(value>999){
printf("要要求输入的数为3位以内的正整数");
}else{
temp=value; //计算位数(bits)
bits=0;
for(int i=1;i<=3;i++){
answer=temp%10;
if(answer!=0){
bits++;
}
temp/=10;
}
switch(bits){ //计算并显示每一位的值
case 1:
one_p=value%10;
printf("该数为1位数,个位是%d", one_p);
break;
case 2:
one_p=value%10;
value/=10;
two_p=value%10;
printf("该数为2位数,十位是%d,个位是%d", two_p, one_p);
break;
case 3:
one_p=value%10;
value/=10;
two_p=value%10;
value/=10;
three_p=value%10;
printf("该数为3位数,百位是%d, 十位是%d,个位是%d", three_p, two_p, one_p);
break;
}
}
}
void function_6(){
long long int num5, answer3, o;
double R, S;
scanf("%lf", &R);
S=R*R*PI;
printf("该圆面积是:%f\n", S);
printf("该圆面积保留两位小数的结果是:%.2f", S);
}
void function_7(){
int year;
scanf("%d",&year);
if((year%400==0) || (year%4==0&&year%100!=0)){
printf("%d年是闰年", year);
}else{
printf("%d年是平年", year);
}
}
void function_8(){
int score;
scanf("%d", &score);
if(score<=100 && score>=90){
printf("优秀");
}
else if(score<=89 && score>=80){
printf("良");
}
else if(score<=79 && score>=70){
printf("中");
}
else if(score<=69 && score>=60){
printf("及格");
}
else{
printf("不及格");
}
}
void function_9(){
long long int num5, answer3, o;
answer3=0;
scanf("%d", &num5);
for(o=1; o<=num5; o++){
if(o % 2 != 0){
answer3+=o;
}
}
printf("%d", answer3);
}
void function_10(){
long long int num5, answer3, o;
answer3=0;
o=1;
scanf("%d", &num5);
while(o<=num5){
if(o % 2 == 0){
answer3+=o;
}
o++;
}
printf("%lld", answer3);
}
void function_11(){
long long int num5, answer3, o;
answer3=0;
o=1;
scanf("%d", &num5);
do{
if(o % 3== 0){
answer3+=o;
}
o++;
}while(o<=num5);
printf("%lld", answer3);
}
void function_12(){
long long int num5, o;
scanf("%d%d", &o, &num5);
do{
if(o % 3 == 0 && o % 5 == 0){
printf("%lld ", o);
break;
}
o++;
}while(o<=num5);
}
void function_13(){
int o, one_p, two_p, three_p;
for( o=100; o<1000; o++ )
{
three_p = o /