C基础day5(2023.7.5)

这篇文章包含了一系列C语言编程练习,涉及日期处理、成绩分级、循环结构(for、while、do-while)和条件判断(switch-case、if-else)。练习涵盖计算星期几、考试成绩等级、一年中的天数、数字各位之和以及斐波那契数列等基本编程概念。
摘要由CSDN通过智能技术生成

一、Xmind整理:

二、课上练习:

练习1:输入一个天数,输出星期几?

    例如:输入1--->星期一
    int day;
    printf("please enter day:");
    scanf("%d",&day);

    switch(day)//1 2 3 4 5 6 7     9>7  <1
    {
    case 1://printf("星期1\n");
           
    case 2://printf("星期2\n");break;
    case 3:printf("星期3\n");break;
    case 4:printf("星期4\n");break;
    case 5:printf("星期5\n");break;
    case 6:printf("星期6\n");break;
    case 7:printf("星期日\n");break;
    default:printf("ERROR");break;
    }

练习2:对学生的考试成绩分级评测,规则为: 成绩1-100之间合法

            1、成绩>=90为等级A 90-91 92 93 94 95 96 97 98 99

            2、成绩>=80为等级B

            3、成绩>=70为等级C

            4、成绩>=60为等级D

            5、成绩<60为等级E 

    /判断0--100之间
    使用switch判断十位
    if(score>=0 && score<=100)
    {
        switch(score/10)//0-100
        {
            case  10:case 9:printf("A");break;
            case 8:printf("B");break;
            case 7:printf("C");break;
            case 6:printf("D");break;
            default:printf("E");break;
        }
    }
    else
    {
        printf("ERROR");    
    }

练习3:输入年月日,计算这是这一年的第几天? 

int main(int argc, const char *argv[])
{
    printf("please enter year&month&day:");
    int year,month,day,sum=0;
    int day2;
    scanf("%d %d %d",&year,&month,&day);
    if(year <=0)
    {
        printf("year ERROR");
        return -1;//结束  -1表示失败  0表示成功
    }
    else if(month <=0 || month>12)
    {
        printf("month ERROR");
        return -1;
    }
    else if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&(day>31||day<1))
    {
        printf("day ERROR");
        return -1;
    }

    else if(month==2 && year%4==0&&year%100!=0||year%400==0 &&(day>29 || day<1))
    {
        printf("day ERROR");

        return -1;

    }
    else if(month==2 && !(year%4==0&&year%100!=0||year%400==0) &&(day>28 || day<1))
    {
        printf("day ERROR");
        return -1;

    }
    else if(day>30 || day<1)
    {
        printf("day ERROR");
        return -1;


    }
    int day30=30,day31=31;
    switch(month)
    {
    case 12:sum+=30;
    case 11:sum+=31;
    case 10:sum+=30;
    case 9:sum+=31;
    case 8:sum+=31;
    case 7:sum+=30;
    case 6:sum+=31;
    case 5:sum+=30;
    case 4:sum+=31;
    case 3:
        if(year%4==0&&year%100!=0||year%400==0)
            sum+=29;
        else
            sum+=28;
        case 2:
            sum+=31;
        case 1:sum+=day;
    }
    printf("this is %d day\n",sum);
    return 0;//0表示执行成功

练习4:循环1--5 

 int i=1;//表达式1
    while(i<=5)
    {
       printf("i=%d\n",i);//循环体
       i++;//表达式3
    }

 练习5:计算起始值到终止值之间的和

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int i,j;
	printf("请输入起始值与终止值:");
	scanf("%d%d",&i,&j);
	int sum=0;
	while(i<=j)
	{
		sum+=i;
		i++;
	}
	printf("起始值与终止值的和为%d\n",sum);
	return 0;
}

练习6:任意输入一个数,计算各个位数字之和 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int i,a;
	printf("请输入一个数:");
	scanf("%d",&i);
	int sum=0;
	while(i>0)
	{
		a=i%10;
		sum+=a;
		i=i/10;
	}
	printf("该数各个数和为%d\n",sum);
	return 0;
}

练习7:循环1-5 

int i=1;
    do
    {
        printf("i=%d\n",i);
        i++;
    }while(i<=5);

练习8: 计算起始值到终止之间的乘积

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int i,j;
	printf("请输入起始值和终止值:");
	scanf("%d%d",&i,&j);
	int mul=1;
	do
	{
		mul*=i;
		i++;
	}while(i<=j);	
	printf("起始值到终止值的乘积为:%d\n",mul);
	return 0;
}

练习9:循环输入n个值,输入0结束,计算和 

int num,sum=0;
    do{    
    printf("please enter a num:");
    scanf("%d",&num);
    sum+=num;
    }while(num!=0);
    printf("sum=%d\n",sum);

练习10:计算起始值到终止值之间的偶数和以及平均值 

    int start,end;
    int i,count=0,sum=0;
    printf("please enter start&&end:");
    scanf("%d %d",&start,&end);//3---10
    for(i=start;i<=end;i++)
    {
    //i:3 4 5 6 7 8 9 10
    if(i%2==0)
    {
        sum+=i;//计算偶数的和
        count++;//计算偶数的个数
    }
    }
    float avg=(float)sum/count;
    printf("avg=%.2f\n",avg);

练习11: 斐波那契:1 1 2 3 5 8.....

 1   2   3   4   5   6.....项数
   1   1   2   3   5   8.....值
   a   b   c 
       a   b   c
           a

    int a=1,b=1,c;
    printf("%d %d ",a,b);
    for(i=3;i<=n;i++)//循环项数
    {
        c=a+b;
        a=b;
        b=c;
        printf("%d  ",c);
    }

练习12:goto 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
    int count=0;
    printf("1\n");
    printf("2\n");
    printf("3\n");
A:
    printf("4\n");
    printf("5\n");
    printf("6\n");
    
    count++;
    if(count==3)
        goto B;
goto A;
    printf("7\n");
    printf("8\n");
B:
    printf("9\n");

    return 0;
}

练习13:break

  for(int i=0;i<3;i++)
    {
        if(i%2!=0)
        {
            break;   //结束本层循环     
        }  
        printf("*");  *
    }
    
    for(int i=0;i<2;i++)
    {
        for(int j=0;j<3;j++)
        {
            break;     //break只可以跳出一层循环,跳出内层循环   
        }    
    }

练习14:continue 

for(int i=1;i<10;i++)
    {
        if(i%3==0)
        {
            continue;     //当i=3是执行continue后,跳过后面的语句,直接执行i++,进入下次循环   
        }    
        printf("1");
        printf("2");
    }

练习15:循环1-50,逢7过【尾数是7,7的倍数】,如果不是则输出 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	for(int i=0;i<=50;i++)
	{
		if(i%7==0||i%10==7)
		{
			continue;
		}
		printf("%d\t",i);
	}
	printf("\n");
	return 0;
}

 三、课后作业:

1.循环输入5个元素,输出最大值

思路:1定义一个变量,循环输入5次

           2默认第一次输入的为最值

           3依次拿最值进行比较

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int i,a,max;
	for(i=1;i<=5;i++)
	{
		printf("请输入一个数:");
		scanf("%d",&a);
		if(i==1)
		max=a;
		if(max<a)
			max=a;
	}
	printf("最大值为:%d\n",max);
	return 0;
}

2.任意输入一个数,计算是否是素数

素数:只能被1和本身整除,注意最小的素数是2

思路:只需要计算2- n的根号之间是否存在能整除的数,如果存在则不是素数,不存在则是素数

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int a,i;
	printf("请输入一个数:");
	scanf("%d",&a);
	if(a==2)
		printf("该数是素数\n");
	if(a>2)
	{
		for(i=2;i<a;i++)
			if(a%i==0)
			{	
				printf("该数不是素数\n");
				return 0;
			}

		printf("该数是素数\n");
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值