2021-11-13

本文包含四个编程实例:1) 打印杨辉三角;2) 计算并输出奇数个数及其累加和;3) 找出100~999之间的水仙花数;4) 求2~1000的素数累加和。每个实例都涉及基础算法和逻辑控制,适合初学者练习。
摘要由CSDN通过智能技术生成

1.int i;打印如图所示的杨辉三角,要求打印出n行,n由键盘输入。

问题分析:使用联合数组与for循环控制。

#include<stdio.h>

int main()

{

int i, j, N, a[21][21];

printf("请输入打印的行数:\n");

scanf_s("%d", &N);

for (i = 1; i < N + 1; i++)

{

a[i][1] = 1;

a[i][i] = 1;

}

for (i = 3; i < N + 1; i++)

for (j = 2; j <= i - 1; j++)

a[i][j] = a[i - 1][j - 1] + a[i - 1][j];

for (i = 1; i < N + 1; i++)

{

for (j = 1; j <= i; j++)

printf("%6d", a[i][j]);

printf("\n");

}

printf("\n");

return 0;

}

2.请编程实现:输入几个整数,判断其中奇数的个数,并输出奇数的累加和。(要求:数据的个数及原始数据由键盘输入)

#include <stdio.h>

#define N 20   

void enter(int a[], int n)

{

int i;

printf("请输入数据:\n");

for (i = 0; i < n; i++)

scanf_s("%d", &a[i]);

printf("\n原始数据为:\n");

for (i = 0; i < n; i++)

printf("%2d", a[i]);

printf("\n");

}

int a[N], n, sum = 0;

printf("\n输入你所要的数组元素个数:\n");

scanf_s("%d", &n);

enter(a, n);

for (i = 0; i < n; i++)

{

if (a[i] % 2 == 1)

{

printf("其中的奇数是%d\n", a[i]);

sum = sum + a[i];

}

}

printf("奇数和是%d\n", sum);

return 0;

}

3.打印出100~999之间的所有水仙花数。

#include<stdio.h>

#include<stdlib.h>

int main()

{

    int i, j, k;

    int m = 100;

    while (m <= 999)

    {

        i = m / 100;

        j = m / 10 - i * 10;

        k = m - 100 * i - 10 * j;

        if (m == i * i * i + j * j * j + k * k * k)

            printf("%d\n", m);

        m++;

    }

    return 0;

}

4.求出2到1000之间的素数的累加和,将结果输出。

#include <stdio.h>

int main()

{

//定义变量 并且进行初始化

int i, j, number;

j = 0;

//使用循环判断素数,判断2-1000之间的素数

for (number = 2; number <= 1000; number++)   //举出2-1000之间的数字

{

for (i = 2; i <= number - 1; i++)  //使用辗转相除法进行计算

{

if (number % i == 0)        //进行判断结构

break;                   //满足number/i==0的就说明不是素数

}

if (i >= number)         //判断要打印的素数是否满足大于本身

{

printf("%d\t", number);   //打印素数

j = j + 1;               //对素数的数目进行累计

if (j % 8 == 0)      //每行只有八个数字的条件

printf("\n");

}

}

printf("\n");

return 0;

}

2.1给出年、月、日,计算该日是该年的第几天。

#include<stdio.h>

int main()

{

int sum_day(int, int);

int leap(int year);

int year, month, day, days;

printf("input date(year,month,day):");

scanf_s("%d,%d,%d", &year, &month, &day);

printf("%d/%d/%d", year, month, day);

days = sum_day(month, day);

if (leap(year) && month >= 3)

days = days + 1;

printf("is the %dth day in this year.\n", days);

return 0;

}

int sum_day(int month, int day)

{

int day_tab[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };

int i;

for (i = 1; i < month; i++)

day += day_tab[i];

return(day);

}

int leap(int year)

{

int leap;

leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;

return(leap);

}

2.2输入三行字符串。要求统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。

#include<stdio.h>

int main()

{

int i, j, big = 0, sma = 0, num = 0, spa = 0, oth = 0;

char text[3][80];

for (i = 0; i < 3; i++)

{

printf("请输入行%d:\n", i + 1);

gets_s(text[i]);

for (j = 0; j < 80 && text[i][j] != '\0'; j++)

{

if (text[i][j] >= 'A' && text[i][j] <= 'Z')

big++;

else if (text[i][j] >= 'a' && text[i][j] <= 'z')

sma++;

else if (text[i][j] >= '0' && text[i][j] <= '9')

num++;

else if (text[i][j] == ' ')

spa++;

else

oth++;

}

}

printf("大写字母:%d\n", big);

printf("小写字母:%d\n", sma);

printf("数字:%d\n", num);

printf("空格:%d\n", spa);

printf("其它:%d\n", oth);

return 0;

}

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值