#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
//hr
/*
打印全部可见字符, 十六个一换行
*/
//方法一:
for (int i = 32; i <= 127; i++) {
printf("%c ", i);
if ((i - 31) % 16 == 0)
printf("\n");
}
printf("\n\n---------------------------------\n\n");
//或者,
for (int i = 32; i <= 127; i++) {
printf("%c ", i);
if ((i - 32) % 16 == 15)
printf("\n");
}
printf("\n\n---------------------------------\n\n");
/*
然而似乎不需要减去那么大,对于取余计算来说,如果想把取余结果从0或1开始,
并不需要将初始值减成0或1,只需要“减”或者“加”到取余号%后面那个数字的
倍数或者那个数字的倍数+1,就可以保证取余结果从0或1开始了,比如此题目初
始值就是号%后面那个数字的倍数,本身就是从0开始的,因此只需要-0,就可以保
证取余结果从0开始了,也可以-15或者+1,也可以保证取余结果从1开始了。
*/
//方法二:
for (int i = 32; i <= 127; i++) {
printf("%c ", i);
if ((i-0) % 16 == 15)
printf("\n");
}
printf("\n\n---------------------------------\n\n");
//或者
for (int i = 32; i <= 127; i++) {
printf("%c ", i);
if ((i - 15) % 16 == 0)
printf("\n");
}
printf("\n\n---------------------------------\n\n");
//或者
for (int i = 32; i <= 127; i++) {
printf("%c ", i);
if ((i + 1) % 16 == 0)
printf("\n");
}
printf("\n\n---------------------------------\n\n");
/*
其实通过前两个方法,我们发现了一个本质,在“==”左侧我们努力的在凑0或者1,
而在等号右侧,我们努力在凑0或者1的上一位数字,因为取余运算是循环的,所以
0的上一位就是“%后面那个数字-1”,那我们是不是可以不再追求0或者1,而是将
初始值直接取余作为“基准”,只要保证“==”右侧是“基准”的上一个数字,就
可以了呢?于是我们拥有了方法三。
*/
for (int i = 32; i <= 127; i++) {
printf("%c ", i);
if (i % 16 == 15)
printf("\n");
}
printf("\n\n---------------------------------\n\n");
/*
以上的输出结果均为:
! " # $ % & ' ( ) * + , - . /
0 1 2 3 4 5 6 7 8 9 : ; < = > ?
@ A B C D E F G H I J K L M N O
P Q R S T U V W X Y Z [ \ ] ^ _
` a b c d e f g h i j k l m n o
p q r s t u v w x y z { | } ~
*/
/*
综上所述,我们找到了最简洁的方法三,之后遇到类似模式我们就可以直接使用方法三
了,接下来,重新出一道题,只需要用方法三解决就可以了。
*/
/*
输入正整数a,num,count,其中a是整数的开始,num是要输出整数的个数,count是每多少
个数字就换行
*/
int a, num, count = 0;
printf("请输入a,num,count:\n");
scanf("%d %d %d",&a, &num, &count);
for (int i = a; i < a + num; i++) {
printf("%d ", i);
if (a % count!= 0) {
if (i % count== a % count - 1)
printf("\n");
}
else {
if(i % count == count-1)
printf("\n");
}
}
/*
运行结果:
输入:a=71,num=32,count=13;
输出:
71 72 73 74 75 76 77 78 79 80 81 82 83
84 85 86 87 88 89 90 91 92 93 94 95 96
97 98 99 100 101 102
输入:a=32,num=96,count=16;
输出:
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
*/
return 0;
}
每输出多少个数字就换行的问题详解!!!(超级详细)
最新推荐文章于 2024-11-19 18:11:42 发布