C语言程序设计(边学边练)

2-1 学习-输入一个学生的某门课成绩score,判断学生的这门课成绩是否及格

任务描述
本关任务:输入一个学生的某门课成绩score,判断学生的这门课成绩是否及格。如果大于等于60分,则结果为“及格”;否则结果为“不及格”

#include <stdio.h>
int main ( ) 
{
	float  score; 
    scanf("%f",& score);
   	/********** Begin **********/
    if (score>=60){
        printf("这门课成绩及格!");
    }else{
        printf("这门课成绩不及格!");
    }
	/********** End **********/
	return 0;
}

2-2 练习-输入一个某年的纪年数,输出该年是否是闰年

任务描述
本关任务:编写程序,输入一个某年的纪年数(如:2020),判断该年是否是闰年

int main()
{
	int year;
	//printf("请输入年份:");
	scanf("%d",&year);
	//闰年的判定标准:能被4整除但不能被100整除,或者能被400整除
	/********** Begin **********/
	if((year%4==0 && year %100!=0) || year % 400 == 0){
        printf("%d年是闰年。",year);
    }else{
        printf("%d年不是闰年!",year);
    }
	/********** End **********/
	return 0;
}

2-3 练习-输入三个正实数,如果能构成三角形,编程求三角形的面积(选择结构)

任务描述
本关任务:输入三个正实数,如果能构成三角形,编程求三角形的面积。

#include <stdio.h>
#include <math.h>
int main ( )
 {	
   double a,b,c,s,area;                       // 定义各变量,均为double型 
   //printf("please input a,b,c:\n");               //提示用户输入
	scanf("%lf %lf %lf",&a,&b,&c);             //从键盘输入三角形的三边 
 	/********** Begin **********/
  s = (a+b+c) / 2;
  area = sqrt(s*(s-a)*(s-b)*(s-c));
  if (a+b>c && a+c>b && b+c>a){
    printf("area=%lf",area);
  }else{
    printf("is not triangle!");
  }
   /********** End **********/
	return 0;
 }  

2-4 练习-输入一元二次方程的三个系数求方程的根(选择结构)

任务描述
本关任务:已知一元二次方程的三个系数,编程求(ax*ax)+bx+c=0方程的根,系数a,b,c的值由键盘输入,构建一个一元二次方程的实例,其中a不等于0。

#include <stdio.h>
#include<math.h>
int main()
{
	/**********Bigin**********/
    double a,b,c,d,e,f,x1,x2;
    scanf("%lf,%lf,%lf",&a,&b,&c);
    d = b*b-4*a*c;
    f = -b / (2*a);
    if(d>0){
        x1 = (-b+sqrt(d)) / (2*a);
        x2 = (-b-sqrt(d)) / (2*a);
        printf("x1=%.5lf\n",x1);
        printf("x2=%.5lf\n",x2);
    }else if(d==0){
        printf("x1=x2=%.5lf\n",f);
    }else if(d<0){
        x1 = sqrt(-d) / (2*a);
        x2 = sqrt(-d) / (2*a);
        printf("x1=%.5lf+%.5lfi\n",f,x1);
        printf("x2=%.5lf-%.5lfi\n",f,x2);
    }
	/**********End**********/
	return 0;
}

2-5 练习-编写一程序,用嵌套的if-else语句实现求分段函数值

这里是引用

#include<stdio.h>
#include<math.h>
int main()
{
	float x;
	scanf("%f",&x);
	/********** Begin **********/
	if(x>1){
        printf("y=%.2f",exp(sqrt(x))- 1) ;
    }else if(x < -1){
        printf("y=%.2f",sin(x*x));
    }else{
        printf("y=%.2f",fabs(x)+2);
    }
    /********** End **********/
	return 0;	
}

2-6 练习-给一个不多于5位的正整教,要求输出它是几位数

任务描述
本关任务:编写程序给一个不多于5位的正整教number,要求输出number是几位数。

#include<stdio.h>
int main()
{
	int number;
	//printf("请输入一个不多于5位的正整教:");
	scanf("%d",&number);
	//根据取值范围判断一个正整数位数,如3位数取值范围:100-999
	/********** Begin **********/
    if(number>=1 && number <=9){
        printf("%d是一位数",number);
    }else if(number>=10 && number <=99){
        printf("%d是二位数",number);
    }else if(number>=100 && number <=999){
        printf("%d是三位数",number);
    }else if(number>=1000 && number <=9999){
        printf("%d是四位数",number);
    }else{
        printf("%d是五位数",number);
    }
    /********** End **********/
	return 0;
}

2-7 练习-输入一个字符,判断该字符是大写英文字母,小写英文字母,空格,还是其它字符

任务描述
本关任务:输入一个字符,编程判断该字符是英文字母,数字字符,空格,还是其它字符。

#include <stdio.h>
int main()
{
	char ch;
	scanf("%c",&ch);       //或者ch=getchar();
	/********** Begin **********/
	if((ch>='A' && ch<='Z') ||(ch>='a' && ch<='z')){
        printf("%c是英文字母",ch);
    }else if(ch>='0' && ch<='9'){
        printf("%c是数字字符",ch);
    }else{
        printf("%c是其它字符",ch);
    }
    /********** End **********/
	return 0;
}

2-8 练习-输入一个字符,判断该字符是否为小写英文字母,如果是输出其小写英文字母循环排序后的第6个小写字母

任务描述
本关任务:输入一个字符,判断该字符是否为小写英文字母,如果是输出其小写英文字母循环排序后的第6个小写字母。

#include<stdio.h>
int main()
{
	char ch;
	//printf("请输入一个字符:");
	scanf("%c",&ch);
	/********** Begin **********/
    if(ch>='a' && ch<='z'){
        printf("是小写英文字母,循环加6为%c",(ch-'a'+6)%26+'a');
    }else{
        printf("不是小写英文字母");
    }
	/********** End **********/
	return 0;
}

2-9 学习-输入4个整数,要求输出4个数中的最大值

  • 2-9-1 输入4个整数,要求输出4个数中的最大值

任务描述
本关任务:输入4个整数,要求用交换法输出4个数中的最大值。

#include<stdio.h>
int main()
{
	int a,b,c,d,t;
	scanf("%d %d %d %d",&a,&b,&c,&d);
	/********** Begin **********/
    if(a>b){ t = a; a = b; b = t;}
    if(b>c){ t = b; b = c; c = t;}
    if(c>d){ t = c; c = d; d = t;}
    printf("max=%d",d);
    /********** End **********/
	return 0;
}
  • 2-9-2 输入4个整数,要求输出4个数中的最大值

任务描述
本关任务:输入 4 个整数,编程用比较法输出 4 个数中的最大值。

#include<stdio.h>
int main()
{
	int a,b,c,d,t;
	scanf("%d %d %d %d",&a,&b,&c,&d);
	/********** Begin **********/
    if(a<b){ t = a; a = b; b = t; }
    if(a<c){ t = a; a = c; c = t; }
    if(a<d){ t = a; a = d; d = t; }
    printf("max=%d",a);
    /********** End **********/
	return 0;
}
  • 2-9-3 输入4个整数,要求输出4个数中的最大值

任务描述
输入4个整数,编程用擂台赛法输出4个数中的最大值。

#include<stdio.h>
int main()
{
    int a,b,c,d,max;
    scanf("%d %d %d %d",&a,&b,&c,&d);
    /********** Begin **********/
    max = a;
    if(b > max){ max = b;}
    if(c > max){ max = c;}
    if(d > max){ max = d;}
    /********** End **********/
    printf("max=%d",max);
    return 0;
}

2-10 练习-输入4个整数,要求按由小到大顺序输出这4个数

  • 2-10-1 输入4个整数,要求按由小到大顺序输出这4个数

任务描述
本关任务:输入4个整数,编程用交换法由小到大顺序输出这4个数。

#include<stdio.h>
int main()
{
	int a,b,c,d,t;
	scanf("%d %d %d %d",&a,&b,&c,&d);
	/********** Begin **********/
    if(a>b){t = a; a = b; b = t;}
    if(b>c){t = b; b = c; c = t;}
    if(c>d){t = c; c = d; d = t;}
    if(a>b){t = a; a = b; b = t;}
    if(b>c){t = b; b = c; c = t;}
    if(a>b){t = a; a = b; b = t;}
    printf("%d %d %d %d",a,b,c,d);
    /********** End **********/
	return 0;
 }
  • 2-10-2 输入4个整数,要求按由小到大顺序输出这4个数

任务描述
本关任务::输入4个整数,编程用比较法由小到大顺序输出这4个数。

#include<stdio.h>
int main()
{
	int  a,b,c,d,t;
	scanf("%d %d %d %d",&a,&b,&c,&d);
	/********** Begin **********/
    // 45 34 23 12
    if(a>b){t = a;a = b;b = t;} // 34 45 34 45
    if(a>c){t = a;a = c;c = t;} // 34 45 34 45
    if(a>d){t = a;a = d;d = t;} // 34 45 34 45
    if(b>c){t = b;b = c;c = t;} // 34 34 45 45
    if(b>d){t = b;b = d;d = t;}
    if(c>d){t = c;c = d;d = t;}
    printf("%d %d %d %d",a,b,c,d);
    /********** End **********/
	return 0;
}

2-11 学习-用switch语句实现输入一个百分制的成绩后输出它的等级

任务描述
本关任务:编程序,输入一个百分制的成绩后,
判断该成绩为A、B、C、D、E哪一个等级,A等为85~100,B等为80~84,C等为70~79,D等为60~69,E等为0~59,用switch语句来实现。

#include <stdio.h>
int main()
{
	int score; 
	scanf("%d",&score);
	/********** Begin **********/
	switch(score/10){
        case 10:case 9:case 8:
            if(score<85){
                printf("B\n");
                break;
            }else{
                printf("A\n");
                break;
            }
        case 7:printf("C\n");break;
        case 6:printf("D\n");break;
        default:printf("E\n");
    }
	/********** End **********/
	return 0;
}

2-12练习-用switch语句实现对输入的数字1~7转换成文字星期几,对其它数字不转换

任务描述
本关任务:要求对输入的数字1~7转换成文字星期几,对其它数字不转换,提示“error”。

#include <stdio.h>
int main()
{
    /********** Begin **********/
    int day;
    scanf("%d",&day);
    switch(day){
        case 1:printf("Monday");break;
        case 2:printf("Tuesday");break;
        case 3:printf("Wednesday");break;
        case 4:printf("Thursday");break;
        case 5:printf("Friday");break;
        case 6:printf("Saturday");break;
        case 7:printf("Sunday");break;
        default:printf("error");
    }
    /********** End **********/
    return 0;
}

2-13 练习-用switch语句实现输入一个不多余5位的正整数,要求①求出它是几位数②分别输出每一位数字③按逆序输出各位数字

任务描述
本关任务:给一个不多余5位的正整数,要求如下:①求出它是几位数②分别输出每一位数字③按逆序输出各位数字。

#include <stdio.h>
#include <math.h>
int main()
{
	int num,y,x1,x2,x3,x4,x5,place;
	scanf("%d",&num);
    /* 如何理解log10?
       place = log10(1000);
       place的值此时为:3 
       log10(1000) = 3;   
       10的三次方,这样去理解
    */ 
	place=log10((double)num)+1;
	/********** Begin **********/
    x1 = num % 10;
    x2 = num / 10 % 10;
    x3 = num / 100 % 10;
    x4 = num / 1000 % 10;
    x5 = num / 10000 % 10;
	switch(place){
        case 1:printf("%d为1位数\n",num);printf("顺序输出为:%d\n",num);printf("逆序输出为:%d\n",num);break;
        case 2:printf("%d为2位数\n",num);printf("顺序输出为:%d,%d\n",x2,x1);printf("逆序输出为:%d,%d\n",x1,x2);break;
        case 3:printf("%d为3位数\n",num);printf("顺序输出为:%d,%d,%d\n",x3,x2,x1);printf("逆序输出为:%d,%d,%d\n",x1,x2,x3);break;
        case 4:printf("%d为4位数\n",num);printf("顺序输出为:%d,%d,%d,%d\n",x4,x3,x2,x1);printf("逆序输出为:%d,%d,%d,%d\n",x1,x2,x3,x4);break;
        case 5:printf("%d为5位数\n",num);printf("顺序输出为:%d,%d,%d,%d,%d\n",x5,x4,x3,x2,x1);printf("逆序输出为:%d,%d,%d,%d,%d\n",x1,x2,x3,x4,x5);break;
    }
	/********** End **********/
	return 0;
}

2-14 练习-用switch语句实现输入某年某月某日,判断这一天是这一年的第几天

任务描述
本关任务:输入某年某月某日,判断这一天是这一年的第几天,要考虑这一年是否是闰年。

#include<stdio.h>
int main()
{
    int day,month,year,num=0,leap;
    scanf("%d%d%d",&year,&month,&day);
    /*****先计算某月以前月份的总天数*****/
    /********** Begin **********/
    switch(month){
        case 12:num+=30;    case 11:num+=31;  case 10:num+=30;   case 9: num+=31;
        case 8: num+=31;    case 7: num+=30;  case 6: num+=31;   case 5: num+=30;  
        case 4: num+=31;    case 3: num+=28;  case 2: num+=31;
    }
    /********** End **********/
    /*****再加上当月的天数*****/
    num += day;
    /*****判断是不是闰年*****/
    /********** Begin **********/
    if((year%4==0 && year%100!=0) || year % 400 == 0){
        if(month>2){
            num+=1;
        }
    }
    printf("这一天是这一年的第%d天",num);
    return 0;
}

2-15 练习-用switch语句编写一个简单的实数四则运算程序

任务描述
本关任务:用switch语句编写一个简单的实数四则运算程序

#include<stdio.h>
#include<math.h>
int main()
{
	double a,b;
	char c;
	scanf("%lf%c%lf",&a,&c,&b);
	/********** Begin **********/
	switch(c){
        case '+':printf("%.2lf+%.2lf=%.2lf",a,b,a+b);break;
        case '-':printf("%.2lf-%.2lf=%.2lf",a,b,a-b);break;
        case '*':printf("%.2lf*%.2lf=%.2lf",a,b,a*b);break;
        case '/':
            if(a == 0 || b == 0){
                printf("error");
                break;
            }else{
                printf("%.2lf/%.2lf=%.2lf",a,b,a/b);
                break;
            }
    }
   /********** End **********/
	return 0;
}
  • 14
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值