前言:更多内容请看总纲《嵌入式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;
}