C语言 03 三目运算符 for循环

例1:从键盘输入两个数,得到较大的那个数

#include<stdio.h>

int main()
{
	int i,j;
	while (scanf_s("%d%d", &i,&j) != EOF)
	{
		if (int result = i > j ? i : j)
		{
			printf("theMaxNumber = %d\n", result);
		}
	}
}

 

例2:从键盘输入三个数,得到较大的那个数

算法思想:①在i > j成立的条件下,若i > k成立( i > j ,i > k),则最大值为i;

                  ②在i > j成立的条件下,若i > k不成立( k > i > j ),则最大值为k;

                  ③在i > j不成立的条件下(j > i),若j > k 成立,则j > k > i,则最大值为j;

                  ④在i > j不成立的条件下(j > i),若j > k 不成立(k > j),则k > j > i,则最大值为k;                                                    

  

#include<stdio.h>
int main() {
	int i, j, k;
	int result;
	while (scanf_s("%d%d%d", &i, &j, &k) != EOF)
	{
		if (result = i > j ? (i > k ? i :k ) : (j > k ? j : k))
		{
			printf("theMaxNumber = %d", result);
		}
	}
}

 

3.逗号表达式:逗号表达式整体的值,是最后一个表达式的值

#include<stdio.h>
int main(){
	int i;
	i = 5, 6, 7;
	printf("%d\n", i);//5
	i = (5, 6, 7);
	printf("%d\n", i);//7
}



4.自增与自减运算:

    ++在后:

    j = i++ > -1;    

   将其拆为:j = i > -1; (第一步:去掉++)            i++;(第二步:自增)

   

#include<stdio.h>
int main(){
	int i = -1;
	int j = i++ > -1;
	printf("i = %d\nj = %d\n",i,j);//i = 0    j = 0
	j = !++i;
	printf("i = %d\nj = %d\n", i, j);//i = 1    j = 0

  

5.goto语句向上跳转可以实现循环

   例:计算1~100之和:

#include<stdio.h>
int main(){
	int i = 1;
	int total = 0;
lable:
	total = total + i;
	i++;
	if (i <= 100)
	{
		goto lable;
	}
	printf("total = %d",total);
}

 

6.break与continue:

   continue跳过循环体中尚未执行的语句:

  例:求0~10中的偶数之和

          

#include<stdio.h>
int main() {
	int i;
	int total = 0;
	for  (i = 0; i <= 10; i++)
	{
		if (i % 2 == 1) {
			continue;
		}
		total = total + i;
	}
	//2 + 4 + 6 + 8 + 10 = 30
	printf("total = %d", total);
}

 

7. 例:打印五行 *,每行有九个

    

#include<stdio.h>
int main() {
	//外层循环控制行数
	for (int i = 0; i < 5; i++)
	{
		//内层循环控制每行的打印内容--九个*
		for (int j = 0; j < 9; j++)
		{
			printf("*");
		}
		//换行
		printf("\n");
	}
}

 

8.输入一个日期,计算出这个日期是本年的第几天

   

#include<stdio.h>
#define N 12
int main() {
	int year, month, day;
	while (scanf_s("%d%d%d",&year,&month,&day) != EOF)
	{
		int i;
		int total = 0;
		//用数组存储每个月份的天数
		int a[N] = {31,28,31,30,31,30,31,31,30,31,30,31};
		for ( i = 0; i < month - 1; i++)
		{
			total = total + a[i];
		}
		//考虑闰年与平年
		if (month > 2 )
		{
			//(year % 4 == 0 && year % 100 != 0 || year % 400 == 0)的值为0/1
			total = total + (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
		}
		total = total + day;
		//年月日分别占4,2,2位,不足则用0补齐
		printf("%04d-%02d-%02d is the %dth day in this year", year, month, day,total);
	}
}



    

   

发布了66 篇原创文章 · 获赞 0 · 访问量 1098

猜你喜欢

转载自blog.csdn.net/smallrain6/article/details/105061095
今日推荐