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

2023-12-28 12:02:38

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

目前博主有着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循环的练习题。希望对正在学习的小伙伴们有所帮助,同时也期待着您的关注。

文章来源:https://blog.csdn.net/qq_48498252/article/details/135260503
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。