C语言基础习题50例(三)11-15

简介: 代码如下

习题11

有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少

实现思路:

从第1个月起,兔子对数分别为1、1、2、3、5、8、13、21…,显然是斐波拉契数列

代码如下:

#include<stdio.h>
int main(){
  int i, f1 = 1, f2 = 1;
    for(i = 1; i < 21; i++){
        printf("%10d%10d", f1, f2);
        f1 += f2;
        f2 += f1;
        if(i % 2 == 0){
          printf("\n");
    }
    }
  return 0;
}

打印:

         1         1         2         3
         5         8        13        21
        34        55        89       144
       233       377       610       987
      1597      2584      4181      6765
     10946     17711     28657     46368
     75025    121393    196418    317811
    514229    832040   1346269   2178309
   3524578   5702887   9227465  14930352
  24157817  39088169  63245986 102334155

习题12

. 判断101-200之间有多少个素数,并输出所有素数。

实现思路:

可以用一个函数来判断一个数是否是素数,是则输出。

代码如下:

#include <stdio.h>
#include <math.h>
int main(){
  int isPrime(int n);
  int i, count = 0;
    for(i = 100; i < 201; i++){
        if(isPrime(i)){
          printf("%6d", i);
          count++;
          if(count % 5 == 0){
        printf("\n");
      }
    }   
    }
  return 0;
}
int isPrime(int n){
  int i, prime = 1;
  for(i = 2; i <= sqrt(n); i++){
    if(n % i == 0){
      prime = 0;
      break;
    }
  }
  return prime;
}

打印:

   101   103   107   109   113
   127   131   137   139   149
   151   157   163   167   173
   179   181   191   193   197
   199

习题13

打印出所有的水仙花数。

水仙花数是指一个三位数,其各位数字立方和等于该数本身。

例如: 153是一个水仙花数,因为 153=13 + 5 3 + 33

实现思路:

通过函数来判断一个数是否是水仙花数,并通过循环来判断所有的数。

代码如下:

#include<stdio.h>
#include <math.h>
int main(){
  int isNarci(int n);
  int i, count = 0;
    for(i = 100; i < 1000; i++){
        if(isNarci(i)){
          printf("%6d", i);
          count++;
          if(count % 5 == 0){
        printf("\n");
      }
    }   
    }
  return 0;
}
int isNarci(int n){
  int i, j, k, temp, narci = 0;
  i = n / 100;
  temp = n % 100;
  j = temp / 10;
  k = temp % 10;
  if(n == (pow(i, 3) + pow(j, 3) + pow(k, 3))){
    narci = 1;
  }
  return narci;
}

打印:

   153   370   371   407

练习14

将一个正整数分解质因数

例如:输入90,打印出 90=2*3*3*5。

实现思路:

使用嵌套循环,逐步分解。

代码如下:

#include<stdio.h>
int main(){
  static int i, num;
  printf("Please input a integer:\n");
  scanf("%d", &num);
  printf("%d=", num);
    while(num){
      for(i = 2; i <= num; i++){
        if(num % i == 0){
          printf("%d", i);          
          num /= i;
          if(num != 1){
            printf("*");
        }
          break;
      }
    }
    if(num == 1){
      break;
    }
  }
  return 0;
}

打印:

Please input a integer:
120
120=2*2*2*3*5

外层还可以使用for循环,如下:

#include <stdio.h>
int main(){
    int n,i;
    printf("Please input a integer:\n");
    scanf("%d",&n);
    printf("%d=",n);
    for(i=2; i <= n; i++){
        while(n % i == 0){
            printf("%d", i);
            n /= i;
            if(n!=1){
        printf("*");
      }
        }
    }    
    printf("\n");
    return 0;
}

习题15

利用条件运算符的嵌套来完成此题:

学习成绩 >=90分的同学用A表示, 60-89分之间的用B表示, 60分以下的用C表示。

实现思路:

条件判断嵌套实现。

代码如下:

#include <stdio.h>
int main(){
    int score, i;
    char level;
    printf("Please input your scoore:\n");
    scanf("%d", &score);
    level = (score >= 90) ? 'A' : (score >= 60 ? 'B' : 'C');
  printf("Your level is %c", level);
    return 0;
}

打印:

Please input your scoore:
65
Your level is B

除了条件运算符,还可以如下:

#include <stdio.h>
int main(){
    int score, i;
    char level;
    printf("Please input your scoore:\n");
    scanf("%d", &score);
    if(score >= 60){
      if(score >= 90){
        level = 'A';
    }
    else{
      level = 'B';
    }
  }
  else{
    level = 'C';
  }
  printf("Your level is %c", level);
    return 0;
}
相关文章
|
2月前
|
C语言
【C语言】循环结构程序设计(第二部分 -- 习题讲解)
【C语言】循环结构程序设计(第二部分 -- 习题讲解)
|
2月前
|
编译器 C语言
C语言习题----不同版本的差别
C语言习题----不同版本的差别
12 0
|
2月前
|
C语言
C语言-----习题
C语言-----习题
17 0
|
2月前
|
C语言
C语言习题
C语言习题
14 0
|
4天前
|
人工智能 C语言
C语言概述习题
C语言概述习题
9 0
|
13天前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-4 报数 (20分)
|
13天前
|
C语言
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
pta浙大版《C语言程序设计(第3版)》 习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)
|
13天前
|
C语言
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
PTA 浙大版《C语言程序设计(第3版)》题目集 习题8-6 删除字符 (20分)
|
13天前
|
C语言
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
pta 浙大版《C语言程序设计(第3版)》题目集 习题6-6 使用函数输出一个整数的逆序数 (20分)
|
13天前
|
C语言
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)
(浙大版《C语言程序设计(第3版)》 习题6-5 使用函数验证哥德巴赫猜想 (20分)