C流程-练习

前言:更多内容请看总纲《嵌入式C/C++学习路》

1. if语句

编写程序根据用户给定的年,月计算该月份有多少天

#include <stdio.h>
int main(){
		int year = 0,month = 0;
		printf("请输入年份和月份数字:");
		scanf("%d%d",&year,&month);
		if(month == 1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){
			printf("31天\n");
		}
		else if(month==4 || month ==6 || month ==11){
			printf("30天\n");
		}
		else if(month==2){
			if(!(year % 400) || (!(year % 4) && year % 100)){
				printf("29天\n");
			}
			else {
				printf("28天\n");
			}
		}
		return 0;
}

请添加图片描述

编程从键盘得到三个整数,找出其中最大的整数并打印在屏幕上(不使用另外的变量,三个变量的内容可以修改但必须保证永远记录用户输入的三个数字)

#include<stdio.h>
int main(){
		int num1 = 0,num2 = 0,num3 = 0;
		printf("请输入三个数字:");
		scanf("%d%d%d",&num1,&num2,&num3);
		if(num1 < num2){
			num1 = num1 + num2;
			num2 = num1 - num2;
			num1 = num1 - num2;
		}
		if(num1 < num3){
			num1 = num1 + num3;
			num3 = num1 - num3;
			num1 = num1 - num3;
		}
		printf("最大数字是%d\n",num1);
		return 0;
}

2. for语句

计算10到50之间所有整数的和

#include<stdio.h>
int main(){
		int i = 0,sum = 0;
		for(i = 10;i <= 50;i++){
			sum += i;
		}
		printf("10-50所有整数的和是%d\n",sum);
}

3. 循环嵌套

在屏幕上打印松树形状如图所示:

    *
   ***
  *****
 *******
*********
#include<stdio.h>
int main(){
		int num = 0,num1 = 0;
		for(num = 0;num <= 4;num++){
			for(num1 = 0;num1 <= 4 + num;num1++){
				if(num1 <4 - num){
					printf(" ");
				}
				else{
					printf("*");
				}
			}
			printf("\n");
		}
		return 0;
}

请添加图片描述

现有一组自行车,三轮车和汽车(每辆汽车有四个轮子和一个座位)
这些车一共有10个座位和28个轮子,试计算所有可能性并打印在屏幕上

#include<stdio.h>
int main(){
		int num = 0,num1 = 0;
		for (num = 0;num <= 7;num++){  // 汽车,根据轮子的个数计算,汽车最多有7辆
			for (num1 = 0;num1 <= (28-4 * num) / 3;num1++){   //三轮车,根据轮子计算
				if (4 * num + 3 * num1 + 2 * (10- num -num1) == 28){
					printf("汽车%d,三轮车%d,自行车%d\n",num , num1,10 - num - num1);
				}
			}
		}
		return 0;
}

请添加图片描述

编写一个猜数游戏
使用一个没有初始化的整数类型变量得到一个0-99之间的数字。
程序中让用户不停的猜,直到猜对为止。
每次猜完都要有提示

#include<stdio.h>
int main(){
		int num = 66,guess = 0;
		num = num <0 ? 0 - num : num;
		num %= 100;
		do{
			printf("请猜一个数字:");
			scanf("%d",&guess);
			if(guess < num){
				printf("猜小了\n");
			}
			else if (guess > num){
				printf("猜大了\n");
			}
			else {
				printf("猜对了\n");
			}
		}while(num != guess);
		return 0;
}

请添加图片描述

4. while语句

编写程序计算两个整数的最大公约数
30 72
12 30
6 12

#include<stdio.h>
int main(){
    int num = 0,num1 = 0,tmp = 0;
    printf("请输入两个数字:\n");
    scanf("%d%d",&num,&num1);
    while (num1 % num)   // num不等于num1,不断变换两个数的大小
    {
        tmp = num1 % num;  // 假设 num < num1
        num1 = num;        // 令num1 = num, num = 余数tmp,不断循环,直到num = num1
        num = tmp;
    }
    printf("最大公约数是:%d\n",num);
    // 注:如果num > num1 ,程序不变,只是第一步会把num 和 num1的大小互换一下,然后继续执行
    return 0;
}

请添加图片描述

5. do…while语句

C标准函数的3.scanf里面提到,如果字符输入错误,可以采用 scanf(“%*[^\n]”);
scanf(“%*c”);两条语句解决,但是这两条语句只能使后面的数字继续获取,已经输入错误的那个数字无法重新获取,所以采用do…while是一个很好的解决方案:

#include<stdio.h>
int main(){
    // 使用flag变量表示是不是第一次读数,flag=0表示第一次读数,flag=1清除输入缓冲区
    int num = 0,flag = 0;   
    do{
        if(flag){
            scanf("%*[^\n]");
            scanf("%*c");
        }
        flag = 1;
        printf("请输入一个数字:\n");
    }while (!scanf("%d",&num));
    scanf("%*[^\n]");
    scanf("%*c");
    printf("Num是%d\n",num);
    return 0;
}

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Goafan

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

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

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

打赏作者

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

抵扣说明:

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

余额充值