第二章 分支和循环(6)

【例题】找出1-100中有多少个数字含有9(10位为9或者个位为9)

算法思路:通过%取模来判断十位和个位是否为某个数

int main() {
	int count = 0;
	for(int i = 0;i < 100;i++) 
		(i%9==0)||(i/9%9==0)?count++:NULL;
	printf("%d\\n", count);
	return 0;
}

【例题】分数求和

计算1/1-1/2+1/3-...+1/99+1/100

算法思路:从1-100进行遍历,如果遍历次数为奇数,加到sum中。如果为偶数,从sum中减去

int main() {
	float = sum 0.0f;
	for(int i = 1;i <=100;i++)
		sum = i%2 ? sum+(float)1/i : sum-(float)1/i;
	printf("%f", sum);
	return 0; 
}

【例题】打印乘法口诀表

int main() {
	int i = 0;
	for(i = 1;i <= 9;i++) {
		for(int j =1;j <= i;j++) {
			printf("%d*%d=%-2d", i,j,i*j));
		}
	}
	printf("\\n");
	return 0;
}

【例题】猜数游戏

int main() {
	int num = 0;
	int cond = 1;
	//用时间戳来设置随机数的生成起点
	srand((unsigned int)time(NULL));
	while (cond) {
		cond = 0;
		int key = rand()%100;
		printf("%s\\n", "请输入数字");
		int i;
		for (i = 1; i <= 10; i++) {
			scanf("%d", &num);
			if (num == key) {
				printf("猜对了");
				break;
			}
			else if (num > key) {
				printf("猜大了,还有%d次机会\\n", 10 - i);
			}
			else if (num < key) {
				printf("猜小了,还有%d次机会\\n", 10 - i);
			}
		}
		if (i == 10)
			printf("机会用完了,答案是%d", key);
		char ch1;
		while (ch1 = getchar()!='\\n') {
			;
		}
		printf("还想再玩吗?想的话按1,结束按0\\n");
		char ch = getchar();
		if (ch == '1')
			cond = 1;
		else
			cond = 0;
	}
	return 0;
}

时间戳

时间戳:当前计算机的时间-计算机的起始时间(1970.01.01, 00:00:00)=(xxxx)秒

goto语句

goto语句:C语言中提供了可以随意滥用的goto语句和标记跳转的符号