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;
}
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
一、单项选择题 1、 C语言源程序文件经过C编译程序编译连接之后生成一个后缀为( C )的文件。  A).c B).obj C).exe D).bas 2、 )完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( B ) A)连接、编译 B)编译、连接 C)连接、运行 D)运行 3、 关于C语言的叙述中,不正确的是( D ) A)C程序可由一个或多个函数组成 B)C程序必须包含一个main()函数 C)C程序的基本组成单位是函数 D)注释说明只能位于一条语句的后面 4、 一个C程序的执行是从( C )。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序main函数结束 5、 以下正确的叙述是( C ) A) 在C语言中,main函数必须位于文件的开头 B) C语言每行中只能写一条语句 C) C语言本身没有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 6、 下列选项中,不能用作标识符的是( D )。 A) _1234_ B) _1_2 C) int_2_ D) 2_int_ 7、 常数的书写格式决定了常数的类型和值,0x1011是( C ) A)8进制整型常量 B)字符常量 C)16进制整型常数 D)2进制整型常数 8、 以下4组用户定义标识符中,全部合法的一组是( D ) A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 9、 ( B )是合法的用户自定义标识符。 A) b-b B)float C)123a D) _isw 10、 以下选项中不正确的整型常量是( )。  A) 12L B) -10 C) 1,900 D) 123U 11、 表达式( C )的值是0。 A)3%5 B)3/5)0 C)3/5 D)3<5 12、 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( ) A) ‘x’&&’y’ B) x||y+z&&y-z C) x<=y D) !((x0||y>0) 等价于( )。 A)!x>0||!y>0 B)!(x>0)||!(y>0) C)!x>0&&!y>0 D)!(x>0)&&!(y>0) 14、 若变量已正确定义并赋值,表达式( )不符合C语言语法。 A)4&&3 B)+a C)a=b=5 D)int(3)14) 15、 C语句”x*=y+2;”还可以写作( ) A) x=x*y+2; B) x=2+y*x; C) x=x*(y+2); D) x=y+2*x; 16、 下列格式符中,可以用于以8进制形式输出整数的是( ) A) %d B) %o C) %ld D) %x
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东哥说AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值