C语言-思路与编程4

本文介绍了编程中的一些基础概念和技巧,包括数字排列组合、完全平方数的寻找、数值排序、九九乘法表的生成以及兔子繁殖问题的解决。通过具体的C语言代码示例,展示了如何运用编程思维解决实际问题,适合初学者和进阶者学习。
摘要由CSDN通过智能技术生成

1、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

(1)写出上述编程思路。

(2)根据(1)思路编程序。

答:

(1)首先,定义整型变量i,j,k;接着,利用三层for循环遍历由数字1、2、3、4组成的三位数,再用 if 语句判断出互不相同且无重复数字的三位数,并打印输出。

(2)代码如下:

#include <stdio.h>

int main() {
    int i, j, k;
    for (i = 1; i < 5; i++) {     // 以下为三重循环
        for (j = 1; j < 5; j++) {
            for (k = 1; k < 5; k++) {     // 确保i、j、k三位互不相同
                if (i != k && i != j && j != k) {
                    printf("%d,%d,%d\n", i, j, k);
                }
            }
        }
    }
    return 0;
}

2、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

(1)写出上述编程思路。

(2)根据(1)思路编程序。

答:

(1)假设该数为x,n和m分别是n^{2}m^{2}的算术平方根,则x+100=n^{2}x+100+168=m^{2},计算等式:m^{2}-n^{2}=(m+n)(m-n)=168,设:m+n=i,m-n=j,i*j=168,i和j至少一个是偶数,绝对不可能全是奇数,因为奇数*奇数=奇数,偶数*偶数=偶数,偶数*奇数=偶数,而168是偶数。可得:(i+j)=2m,(i-j)=2n,所以(i+j)和(i-j)全为偶数,因为奇+奇=偶,奇-奇=偶,偶+偶=偶,偶-偶=偶,所以 i 和 j 要么都是偶数,要么都是奇数。又因为 i 和 j 至少一个是偶数,所以 i 和 j 都是偶数,又因为i*j=168,所以 i 和 j 均大于等于2。 

(2)代码如下:

#include <stdio.h>

int main() {
    int i, j, m, n, x;
    for (i = 1; i < 168 / 2 + 1; i++) {
        if (168 % i == 0) {
            j = 168 / i;
            if (i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0) {
                m = (i + j) / 2;
                n = (i - j) / 2;
                x = n * n - 100;
                printf("%d + 100 = %d * %d\n", x, n, n);
                printf("%d + 268 = %d * %d\n", x, m, m);
            }
        }
    }
    return 0;
}

3、输入三个整数x,y,z,请把这三个数由小到大输出。

答:

代码如下:

#include <stdio.h>

int main() {
    int x, y, z, t;
    printf("请输入三个数字:\n");
    fflush(stdout);
    scanf("%d%d%d", &x, &y, &z);

    if (x > y) {     /*交换x,y的值*/
        t = x;
        x = y;
        y = t;
    }

    if (x > z) {     /*交换x,z的值*/
        t = z;
        z = x;
        x = t;
    }

    if (y > z) {     /*交换z,y的值*/
        t = y;
        y = z;
        z = t;
    }

    printf("从小到大排序:%d %d %d\n  ", x, y, z);
    return 0;
}

4、输出9*9口诀。

答:

代码如下:

#include <stdio.h>

int main() {
    int i, j, result;
    for (i = 1; i < 10; i++) {
        for (j = 1; j <= i; j++) {
            result = i * j;
            printf("%d*%d=%-3d", i, j, result);   /*-3d表示左对齐,占3位*/
        }
        printf("\n");   /*每一行后换行*/
    }
    return 0;
}

5、古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可)

答:

代码如下:

#include <stdio.h>

int main() {
    int f1 = 1, f2 = 1, i;
    for (i = 1; i <= 20; i++) {
        printf("%12d%12d", f1, f2);
        if (i % 2 == 0) printf("\n");
        f1 = f1 + f2;
        f2 = f1 + f2;
    }
    return 0;
}

运行结果:

6、利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

答:

代码如下:

#include <stdio.h>

int main() {
    int score;
    char grade;
    printf("请输入分数:");
    fflush(stdout);
    scanf("%d", &score);
    grade = (score >= 90) ? 'A' : ((score >= 60) ? 'B' : 'C');
    printf("%c\n", grade);
    return 0;
}

7、将小写字母转换成大写字母。

代码如下:

#include  <stdio.h>
int main( )
{
  char c1;
   scanf("%c",&c1);
  if (c1>='a'&&c1 <='z')
      printf("%c", c1-32);
  else  printf("%c", c1);
  return 0;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值