如何修改C语言代码使rand生成的2-100区间4×3数组仅含偶数
解决方案
你只需要修改数组元素赋值的那一行代码即可,推荐使用**生成150随机数后乘以2**的方案,无需额外判断,就能直接得到2100范围内的所有偶数:
- 原赋值代码:
matriz[i][j] = rand() % 99 + 2; - 修改后的赋值代码:
matriz[i][j] = (rand() % 50 + 1) * 2;
修改后的完整代码
#include <stdio.h> #include <stdlib.h> #include <time.h> #define LINES 4 #define COLUMNS 3 int main(void) { int matriz[LINES][COLUMNS]; int i, j; srand(time(NULL)); for(i = 0; i < LINES; i++){ for(j = 0; j < COLUMNS; j++){ // 生成2~100的偶数:1~50随机数乘以2 matriz[i][j] = (rand() % 50 + 1) * 2; } } printf("Matriz[%i][%i]:\n", LINES, COLUMNS); for(i = 0; i < LINES; i++){ for(j = 0; j < COLUMNS; j++){ printf(" %i", matriz[i][j]); } printf("\n"); } return 0; }
原理解释
rand() % 50 得到的是049的随机整数,加1后范围变成150,乘以2之后自然就得到2、4、6...100的所有偶数,刚好符合原代码的取值范围要求,执行效率比生成后筛选的方案更高。
内容的提问来源于stack exchange,提问作者João Gabriel Moreira
相关产品推荐
相关产品推荐

