【C语言】程序练习(三)

大家好,这里是争做图书馆扫地僧的小白。非常感谢各位的支持,也期待着您的关注。

目前博主有着C语言、C++、linux以及数据结构的专栏,内容正在逐步的更新。

希望对各位朋友有所帮助同时也期望可以得到各位的支持,有任何问题欢迎私信与我。

个人主页争做图书馆扫地僧的小白_-CSDN博客

C语言专栏:C语言_争做图书馆扫地僧的小白的博客-CSDN博客

C++专栏:C++系列_争做图书馆扫地僧的小白的博客-CSDN博客

linux系统:linux系统_争做图书馆扫地僧的小白的博客-CSDN博客

数据结构:数据结构_争做图书馆扫地僧的小白的博客-CSDN博客

最后送大家一句话,路好不好走,也许我不能决定,但走不走,却只有我能决定。

目录

前言

一、分支控制语句

1.switch...case语句

        1.1 练习题:

        1.2 练习题

二、循环控制语句

1使用goto实现循环

        1.1练习题

 2 while循环

        2.1 练习题

 3.do...while循环

4. for循环

        4.1练习题1

        4.2练习题2

5.综合练习题

总结


前言

        C语言是一门面向过程计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

        本篇程序练习时对应博主的C语言学习笔记(中)-CSDN博客,本次博客内容将围绕学习笔记中的相关知识点进行整理程序的相关练习,也是博主在学习C语言的过程中所练习的一些题目,希望对有需要的朋友有所帮助,鉴于笔记内容较多,预计将C语言学习笔记(中)-CSDN博客对应的知识点分成两次进行程序讲解。本篇将包含分支控制语句中的switch...case语句、循环控制语句中的goto,while循环,do...while循环以及for循环的练习题。


提示:以下是本篇文章正文内容,下面案例可供参考

一、分支控制语句

1.switch...case语句

        1.1 练习题:

1.使用switch..case语句

        实现简易的计算器功能: ( 实现 + - * )功能即可

        要求,在终端输入 表达式 如: 2+9

        输出计算的结果 :11

   代码示例如下所示:

#include <stdio.h>

int main(){
    int value1 = 0;
    char operator = 0;
    int value2 = 0;
    scanf("%d%c%d", &value1, &operator, &value2);

    switch(operator){
        case '+':    //注意:如果是字符常量 需要加 单引号
            printf("%d\n", value1 + value2);
            break;
        case '-':
            printf("%d\n", value1 - value2);
            break;
        case '*':
            printf("%d\n", value1 * value2);
            break;
        default:
            printf("出错了\n");
            break;
    }
    
    return 0;
}

        1.2 练习题

在终端输入一个成绩 [0,100]

        输出成绩对应的等级

        [90, 100]         A

        [80, 90)           B

        [70, 80)           C

        [60, 70)           D

        [0, 60)          不及格

代码如下(示例):

#include <stdio.h>

int main()
{
	int num = 0;
	scanf("%d", &num);

	switch(num/10){
		case 10:	//此处使用了case击穿规则
		case 9:
			printf("A\n");
			break;
		case 8:
			printf("B\n");
			break;
		case 7:
			printf("C\n");
			break;
		case 6:
			printf("D\n");
			break;
		default:
			printf("不及格\n");
			break;
	}

	return 0;
}

二、循环控制语句

1使用goto实现循环

        1.1练习题

使用 goto 计算 1+2+3+...+100 求和的结果。

代码示例如下:

#include <stdio.h>

int main(){
	int sum = 0;	
	int i = 1;                    
LOOP:
	sum = sum + i;
	i++;
	if(i <= 100){
		goto LOOP;
	}
	printf("sum = %d\n", sum);

	return 0;
}

 2 while循环

        2.1 练习题

使用 while 循环,实现 1~100 求和。

#include <stdio.h>

int main(){
    int sum = 0;
    int i = 1;
    while(i <= 100){
        sum += i;
        i++;
    }
    printf("sum = %d\n", sum);
    
    return 0;
}

 3.do...while循环

#include <stdio.h>

int main()
{
	int sum = 0;
	int i = 1;
	do{
		sum += i;
		i++;
	}while(i<=100);

	printf("sum = %d\n", sum);

	return 0;
}

4. for循环

        4.1练习题1

使用for循环 计算 1~100 求和。

 代码示例:

#include <stdio.h>

int main()
{
	int sum = 0;
	int i = 0;
	for(i = 1; i <= 100; i++){	
		sum += i;
	}
	printf("sum = %d\n", sum);

	printf("i = %d\n", i);

	return 0;
}

        4.2练习题2

输出 [100,999] 范围内所有的水仙花数。

        水仙花数:一个三位数,如果 个*个*个 + 十*十*十 + 百*百*百 == 自身

        如: 153 == 1*1*1 + 5*5*5 + 3*3*3 = 1 +125 + 27 == 153

代码示例:

#include <stdio.h>

int main(){
    int num = 0;
    int g = 0;
    int s = 0;
    int b = 0;
    for(num = 100; num < 1000; num++){
        g = num%10;
        s = num/10%10;
        b = num/100;
        if(num == g*g*g + s*s*s + b*b*b){
            printf("%d 是水仙花数\n", num);
        }
    }

    return 0;
}

5.综合练习题

输入一个日期:如 2022/9/30

输出这个日期是这一年的第几天。 

#include <stdio.h>

#define MONTH1 31
#define MONTH2 28
#define MONTH3 31
#define MONTH4 30
#define MONTH5 31
#define MONTH6 30
#define MONTH7 31
#define MONTH8 31
#define MONTH9 30
#define MONTH10 31
#define MONTH11 30
#define MONTH12 31

int main()
{
    int year, month, day;
    printf("请输入要查询的日期(年/月/日):");
    scanf("%d/%d/%d", &year, &month, &day);

	//标志位  0为平年1为闰年
    int leap = 0;

    //判断年是闰年还是平年
    if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)){
        leap = 1;
    }

    //判断月份输入的是否有误
    if(month < 1 || month > 12){
        printf("您输入的月份有误,请重新输入\n");
        return -1;
    }

    //判断日是否有误
    if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){
        if(day < 1 || day > 31){
            printf("您输入的日期有误,请重新输入\n");
            return -1;
        }
    }

    if(month==4 || month==6 || month==9 || month==11){
        if(day < 1 || day > 30){
            printf("您输入的日期有误,请重新输入\n");
            return -1;
        }
    }
    
    if(month == 2){
        if(leap == 1){ 
            if(day < 1 || day > 29){
                printf("您输入的日期有误,请重新输入\n");
                return -1;
            } 
        }else if(leap == 0){ 
            if(day < 1 || day > 28){
                printf("您输入的日期有误,请重新输入\n");
                return -1;
            }
        }
    }
    
    int days = 0;
    switch(month){
		case 12:
			days += MONTH11;
		case 11:
			days += MONTH10;
		case 10:
			days += MONTH9;
		case 9:
			days += MONTH8;
		case 8:
			days += MONTH7;
		case 7:
			days += MONTH6;
		case 6:
			days += MONTH5;
		case 5:
			days += MONTH4;
		case 4:
			days += MONTH3;
		case 3:
			days += MONTH2 + leap;
		case 2:
			days += MONTH1;
		case 1:
			days += day;
			break;
    }

    printf("%d年%d月%d日%d年的第%d天\n", year, month, day, year, days);

    return 0;
}


总结

        以上就是今天所整理的全部内容,包括分支控制语句中的switch...case语句、循环控制语句中的goto,while循环,do...while循环以及for循环的练习题。希望对正在学习的小伙伴们有所帮助,同时也期待着您的关注。

  • 34
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

译泽在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值