就在前几天我学习了一个do语句,接着这几天学习了一个while语句,看完书来写练习4-6和练习4-7感觉一头雾水,可能是今天中午没睡觉的缘故我脑子里空空的,于是对于练习4-6我求助了ai
练习4-6:编写一段程序,按照升序显示出小于输入值的所有真偶数
ai是这样写的
//编写一段程序,按照升序显示出小于输入值的所有正偶数
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n, i = 0;
printf("请输入一个正整数:");
scanf("%d", &n);
while (i <= n)
{
if (i > 0 && i % 2 == 0) //0是整数,但不是正整数
{
printf("%d ", i);
}
i++;
}
puts("");
return 0;
}
感觉有点难想(个人见解)而且if语句中的i%2=0感觉想不出来怎么办呢,于是我想了另一个办法,先定义两个变量,赋值其中一个变量==1,是不是只要让这个变量在乘上2之后每次递加到输入的数的值是不是就可以了于是便有了
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a = 1, no;
printf("请输入一个正整数");
scanf("%d", &no);
if (no >= 2) {
while (a * 2 <= no)
{
printf("%d ", a * 2);
a++;
}
}
else
printf("没有偶数");
return 0;
}
这样写是不是就比较符合我们普通人的思想,比较简单翻译我们的语言,达到效果。
那接着还有练习4-7:编写一段程序,显示出小于输入的整数的所有2的乘方。
起初我以为这不是我的题出错地方了吧,怎么感觉需要后面的for循环啊。然后我又求助了小爱同学。她给我的代码是:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int n, i, j;
printf("请输入一个整数: ");
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (j = 0; j < 31; j++) {
if (((1 << j) <= n) && (((1 << j) & n) != 0)) {
printf("2的%d次方: %d\n", j, 1 << j);
}
}
}
return 0;
}
感觉写的好难啊,我还没学到for循环能不能换个方式,于是我开始思考用while循环写。想了好长时间,半节水课的时间,终于想出来了!!!我可以效仿我第一个写的代码,定义两个变量,令其中一个变量等于1,让这个变量不断地乘上2直到这个数小于等于我输入的数字。于是开始编码。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
int a = 1, no;
printf("请输入一个正整数");
scanf("%d", &no);
if (no >= 2) {
while (a * 2 <= no) {
printf("%d ", a * 2);
a = a * 2;
}
}
else
printf("不存在2的正整数次方");
return 0;
}
这个代码是不是非常nice,使用了我们现在所学的代码,也可以成为一个模板,无论是3的乘方还是任何数,我们都可以套用。这个跟上面的那个代码也具有异曲同工之妙,你们学会了吗?
你们可以试着打出显示3的乘方亦或者其他数的乘方发在评论区我们可以一起探讨。
各位大帅哥大美女们,求求你们一键三联,支持支持我这个小白吧!!!
标签:练习,no,int,明解,while,printf,输入 From: https://blog.csdn.net/2401_87607041/article/details/143241135