C语言-思路与编程4

C语言-思路与编程4,第1张

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

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

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

答:

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

(2)代码如下:

#include 

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分别是和的算术平方根,则,,计算等式:,设: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 

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 

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 

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 

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 

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  
int main( )
{
  char c1;
   scanf("%c",&c1);
  if (c1>='a'&&c1 <='z')
      printf("%c", c1-32);
  else  printf("%c", c1);
  return 0;
 }

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/676460.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-19
下一篇2022-04-19

发表评论

登录后才能评论

评论列表(0条)

    保存