C语言基础知识之循环与选择的结合应用
循环与选择的结合应用
- 外循环描述的是行数,内循环描述的是列数
数值问题
求100以内能被3和5同时整除的数的和
#include <stdio.h>
int main()
{
int s = 0, i = 1;
while (i <= 100){
if (i % 3 == 0 && i % 5 == 0){
s += i;
}
i++;
printf("%4d", s);
}
return 0;
}
1!+2!+3!+4!+5! 阶乘
//0!=1
//x!=x(x-1)(x-2)...1;
//3!= 3*2*1;
#include <stdio.h>
int main()
{
int i = 0;
int temp = 1;
int iresult = 1;
for (i = 1; i <= 5; i++) //1 2 3 4 5
{
//i! 1!=1 2!=1!*2 3!=2!*3
temp *= i; //temp=1 temp=1*2 temp =1*2*3
printf("%d\t%d\n", temp, i);
iresult *= i;
}
printf("iresult=%d\n", iresult);
return 0;
}
1/2+2/3+3/4+4/5
//n/n+1 ---> n<5
//n-1/n;
#include <stdio.h>
int main()
{
double result = (double)1 / 2 + (double)2 / 3 + (double)3 / 4 + (double)4 / 5;
printf("result=%.2lf\n", result);
result = 0.0;
for (int i = 1; i < 5; i++)
{
result += (double)i / (i + 1.0);
}
//i = 3; 错误 ,i作用域只能在for循环{}中使用
printf("result=%.2lf\n", result);
}
求1+1/3+1/5+1/7+…+1/n 的和
#include <stdio.h>
int main() {
double s = 1.0;
int n, i = 3;
scanf("%d", &n);
//第一种方法
/*while (i <= n){
s += 1.0 / i;
i = i + 2;
}*/
//第二种方法
for (i = 3; i <= n; i += 2)
s += 1.0 / i;
printf("s=%.2f", s);
return 0;
}
求100以内能被3和5同时整除的数之和
int s = 0,i = 1;
while (i <= 100){
if (i % 3 == 0 && i % 5 == 0){
s += i;
}
i++;
printf("%d",s);
}
求s = 1-3+5-7+9-…+101 的和
#include <stdio.h>
int main() {
//第一种
/*int s = 0, i = 1, flag = 1;
while (i <= 101){
s += flag * i;
i += 2;
flag = -flag;
}
printf("%d", s);*/
//第二种
/*int s = 0, s1 = 0, s2 = 0, i;
for (i = 1; i <= 101; i += 4)
s1 = s1 + i;
for (i = -3; i >= -99; i -= 4)
s2 += i;
s = s1 + s2;
printf("%d", s);*/
//第三种
int s = 0, a = 1, b = -3;
while (a <= 97){ //a <= 101
s += a + b;
a = a + 4;
b += -4;
}
s += 101; // s += 103
printf("%d", s);
}
三位不同的数组合新的数
#include <stdio.h>
int main(){
int a, b, c;
for (a = 1; a <= 9; a++) {
for (b = 0; b <= 9; b++) {
for (c = 0; c <= 9; c++) {
if (a != b && b != c) {
printf("%4d", a * 100 + b * 10 + c);
}
}
}
}
return 0;
}
1000以内水仙花数
- 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153
#include <stdio.h>
int main() {
int a, b, c, i;
for (i = 100; i < 1000; i++) {
a = i / 100;
b = i % 100 / 10;
c = i % 10;
if ((a * a * a + b * b * b + c * c * c) == i)
printf("%4d", i);
}
return 0;
}
取余与整除问题
1234 = 1000 + 200 + 30 + 4 -->4321
4 = 1234 % 10 -->1234 %10
3 = 1234 / 10 % 10 -->1234 % 100 / 10
2 = 1234 / 100 % 10 -->1234 % 1000 / 100
1 = 1234 /1000 -->1234 /1000
打印问题
打印倒直角三角形

#include <stdio.h>
int main() {
int i, j;
for (i = 10; i >= 1; i--) {
for (j = 1; j <= i; j++)
printf("*");
printf("\n");
}
}
打印正直角三角形

#include <stdio.h>
int main() {
int i, j;
for (i = 1; i <= 10; i++) {
for (j = 1; j <= i; j++)
printf("*");
printf("\n");
}
}
打印金字塔

#include <stdio.h>
int main() {
int i, j, k;
for (i = 1; i <= 10; i++) {
for (k = 15; k >= i; k--)
printf(" ");
for (j = 1; j <= 2 * i - 1; j++)
printf("*");
printf("\n");
}
}
打印菱形

#include <stdio.h>
int main() {
int i, j, k;
for (i = 1; i <= 5; i++) {
for (k = 10; k >= i; k--)
printf(" ");
for (j = 1; j <= 2 * i - 1; j++)
printf("*");
printf("\n");
}
for (i = 4; i >= 1; i--) {
for (k = 10; k >= i; k--)
printf(" ");
for (j = 2 * i - 1; j >= 1; j--)
printf("*");
printf("\n");
}
}
正反相对两个直角三角形

#include <stdio.h>
int main() {
int i = 1, n = 0;
printf("请输入层数:");
scanf_s("%d", &n);
for (i = n; i >= 1; i--) {
for (int j = 1; j <= i; j++) {
printf("*");
}
printf("\n");
}
for (i = 2; i <= n; i++) {
for (int j = 1; j <= i; j++) {
printf("*");
}
printf("\n");
}
return 0;
}
正反对立的两个金字塔

#include <stdio.h>
int main() {
int i, j, k;
for (i = 4; i >= 1; i--) {
for (k = 10; k >= i; k--)
printf(" ");
for (j = 2 * i - 1; j >= 1; j--)
printf("*");
printf("\n");
}
for (i = 1; i <= 5; i++) {
for (k = 10; k >= i; k--)
printf(" ");
for (j = 1; j <= 2 * i - 1; j++)
printf("*");
printf("\n");
}
return 0;
}
本文来自博客园,作者:{oy},转载请注明原文链接:https://www.cnblogs.com/Oysen/p/17005616.html

浙公网安备 33010602011771号