c语言第五章循环1.0

#define _CRT_SECURE_NO_WARNINGS
循环结构

例5.1 1到100求和

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
    int sum=0;
    for (int i = 1; i <= 100; i++) {
        sum = sum + i;
    }
    printf("%d", sum);

    return 0;
}

例5.4 捐款,超过10万停,并计算人数

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
    int sum=0;
    int people=1;
    int n;
    scanf("%d", &n);//输入捐款钱数
    if (n > 100000) {//如果一个人就捐够了直接输出
        people++;
        printf("总捐款为:%d\n",n);
        printf("每人平均捐款:%lf\n", n);//保留两位小数不能这么写,要再写一个printf
        printf("捐款人数为:1\n");
    }
    else {//多个人捐款

        while (1) {
            sum = sum+n;//捐款总数
            if (sum > 100000) {//超过十万退出循环
                break;
            }
            else {//没超过,人数加一,继续捐款
                people++;
                scanf("%d", &n);
            }
        }
        double aver = sum / (1.0 * people);
        printf("总捐款为:%d\n", sum);
        printf("每人平均捐款:%lf\n", aver);
        printf("捐款人数为:%d\n", people);
    }
    return 0;

}

例5.5输出100-200不能被3整除的数

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
    for (int i = 100; i < 201; i++) {
        if (i % 3 != 0) {
            printf("%d\n", i);
        }
        
    }
    return 0;
}


例5.6输出4*5的矩阵

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
    int n = 0;
    for (int i = 1; i < 5; i++) {//走行
        for (int j = 1; j < 6; j++,n++) {//走列
            /*if (n % 5 == 0) {//别再里面判断次数,因为0%5=0,会多一行
                printf("\n");
            }*/
            printf("%d\t", i*j);//\t自动对齐
            
        }
        printf("\n");
    }
    return 0;
}


例5.7求Π的近似值,Π/4=1-1/3=1/5...,直到某一项小于10^-6

//小数点后的某一位不太对,不知丢为啥

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main() {
    double fenmu=1;//分母
    double p=1;//当前值
    double sum=0;//当前总值
    int sign=1;//符号
    while (p >= 1e-6) {//10^-6
        p = sign * (1 / (1.0 *fenmu));//当前项
        
        sum = sum+p;
        p = fabs(p);//求绝对值
        sign = -sign;
        fenmu = fenmu + 2;
    }
    sum = sum * 4;
    printf("%10.8f", sum);

    return 0;
}

例5.8,求斐波那契数列前40项并输出40项和,1,1,2,3,5,8……

//为了方便截图输出的不太好看

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
    int here;//保存前两个相加的结果
    int sum=2;//和从2开始计算,先把前面的两个1加进来
    int first=1, end=1;//前面的数和后面的数
    printf("1\n");
    printf("1\n");
    for (int i = 0; i < 38; i++) {//去掉前两个数循环38次
        here = first + end;
        printf("%d\n", here);
        sum = sum + here;
        first = end;//将后一个数给前面的数
        end = here;//新得到的结果作为后一个数
    }
    printf("%d", sum);//输出前40数列总数
    return 0;
}

例5.9,输入一个大于3的整数n,判断是不是素数(质数)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
    int n;
    int flag = 0;
    scanf("%d", &n);//输入一个大于3的整数n
    for (int i = 2; i < n; i++) {
        if (n % i == 0) {
            printf("不是素数");
            flag = 1;//如果找到了这个数标记一下表示已找到
            break;//跳出循环
        }
    }
    if (flag == 0) {
        printf("是素数");
    }
    return 0;
}

例5.10求100-200的全部素数

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
    int flag = 0;
    for (int i = 100; i < 201; i++) {
        flag = 0;//flag一定每次都要重置
        for (int j = 2; j < i; j++) {
            if (i % j == 0) {
                flag = 1;//若找到了因子则标记一下
                break;
            }
        }
        if (flag == 0) {
            printf("%d\n", i);//找的是 素数 不是 不素数
        }
    }
    return 0;
}

译密码,字母往后移动四位(前一章写过但有缺点,改良版)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main() {
    char c;
    //scanf("%c", &c);
    while ((c=getchar())!= '\n') {//一直不断地重复输入,换行则是停止输入的标志
        if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) {//判断是否是字母
            if ((c >= 'W' && c <= 'Z') || (c >= 'w' && c <= 'z')) {//是否是后四位
                c = c - 22;//是后四位往前移动22

            }
            else {
                c = c + 4;//不是后四位往后移动4
            }
        }
        printf("%c", c);
    }
    return 0;

}


 
习题3求最大公约数和最小公倍数

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
    int m, n;
    int flag = 1;//标记
    scanf("%d%d", &m, &n);//输入两个数
    int temp;
    if (m < n) {//保证m>n
        temp = m;
        m = n;
        n = temp;
    }
    
        for (int i = n; i > 1; i--) {//找最小的
            if ((m % i == 0&&n % i == 0)) {//并且的关系
                flag = 0;
                printf("最大公约数为%d\n", i);
                break;
            }
            
        }
        if (flag == 1) {
            printf("无最大公约数");
        }
    
    for (int j = m;; j++) {//找最大的
        if ((j % m == 0&&j % n == 0)) {
            printf("最小公倍数为%d", j);
            break;
        }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值