c语言第5作业

作业

1.99乘法表
1 x 1 = 1
2 x 1 = 2 2 x 2 = 4
3 x 1 = 3 3 x 2 = 6 3 x 3 = 9
4 x 1 = 4 4 x 2 = 6 4 x 3 = 9 4*4=16

#include<stdio.h>
#include<math.h>


int main()
{
    for(int i=1; i<10; i++)
    {
        for(int j=1; j<=i; j++)
            printf("%d x %d = %d\t", j, i, i*j);
        printf("\n");
    }
}

2.完全平方数 .在1万以内(不包含1万)查找整数,该整数它加上 100 后是一个完全平方数,再 加上 168 又是一个完全平方数,请问该数是多少? .完全平方数:完全平方指用一个整数乘以自己例如11,22,3*3等。所以1,4,9都是完全平方数。10不是完全平方数,因为10号开根后不是整数开根号 sqrt(); sqrt(2)—>对2开根号使用使用sqrt函数,需要包含:#include <math.h> 编译的时候需要加上 -lm ,例如:gcc 1.c -lm
结果:21 261 1581

#include<stdio.h>
#include<math.h>


int main()
{	
//方法一:
	//判断0~10000的数是否加上100后是完全平方数,再加上168又是完全平方数,故从0开始,循环10000次
    for(int i=0; i<10000; i++)
    {
        double num1 = sqrt(i+100);	//定义一个数初始化为i加上100后的平方根
        double a = num1-(int)num1;	//i+100后的平方根的小数部分
        //判断小数部分是否等于0,若等于继续判断i+268是否为完全平方数
        if(a<=1e-15 && a>=-1e-15)
       	{
            double num2 = sqrt(i+100+168);	//定义一个数初始化为i加上100再加上168后的平方根
            	//判断i加上100再加上168后的平方根的小数部分是否等于0,若等于0,则满足条件,是要找的数,输出它
                if(num2-(int)num2<=1e-15 && num2-(int)num2>=-1e-15)                
                    printf("%d是0~10000以内加上100是完全平方数,加上168还是完全平方
数的数\n",i);
        }
    }
//方法二:
    for(int i=0; i<10000; i++)
    {	
    	//判断i+100的平方根的整数部分的平方是否等于i+100,等于则继续判断i+100+168,否则i不是药找的数
        if((int)sqrt(i+100)*(int)sqrt(i+100) == (i+100))
        {
        	//判断i+100+168的平方根的整数部分的平方是否等于i+100+168,若等于则i是要找的数并输出,否则i不是药找的数
                if((int)sqrt(i+100+168)*(int)sqrt(i+100+168) == (i+100+168))
                {
                    printf("%d是0~10000以内加上100是完全平方数,加上168还是完全平方
数的数\n",i);
                }
        }
    }
}


3.有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13… 求出这个数列的前 20 项之和。
答案:结果:32.6603
ps:当前项的分子是下一项的分母, 下一项的分子是当前项的分子+分母

#include<stdio.h>


int main()
{
    //有一分数序列: 2/1   3/2   5/3   8/5   13/8   21/13...   求出这个数列的前 20 项之和。
    int numerator = 2;				//定义分子并初始化为2
    int denominator = 1;			//定义分母并初始化为1
    double sum = 0;					//定义前n项和冰初始化为0

    for(int i=1; i<=20; i++)		//计算前20项的和
    {
        sum += (float)numerator / denominator;将分数的值加到sum中
        int temp = numerator;			//开始改变分子分母的值,分子等于上一个分数的分子加分母,分母等于上一个分数的分子
        numerator += denominator;
        denominator = temp;
    }
    printf("前二十项和为:%lf\n",sum);
}

4.从终端输入一个整数,要求将该整数进行翻转。
.例如输入123,要求输出321(三百二十一) .
输入-123,要求输出-321.
. 不考虑翻转后溢出的情况

#include<stdio.h>

int main()
{
    int num, num_over=0;

    printf("请输入一个整数:\n");
    scanf("%d", &num);
	
    while(1)
    {	
    	//从个位开始取数
        if(num/10)
        {
            num_over = (num_over + num % 10) * 10; //取num的个位数加上翻转数已有的值再乘上10,为新的翻转数
            num /= 10;
        }
        else
        {	
        	//把最高位的数加到翻转后的数的个位上,然后退出死循环
            num_over += num%10;
            break;
        }
    }
    printf("%d", num_over);
}
      

5.判断最大值
定义一个无符号的整型数组,求数组中的最大值。
思路:int a1=10, a2=20, a3=5; 两两相比,求最大值
代码:

#include<stdio.h>

int main()
{
    unsigned int arr[100] = {0};
    int count=0;        //记录输入数据个数

    printf("请输入数据:(以.结束)");
    for(int i=0; i<100; i++)//遍历输入
    {
        scanf("%u", &arr[i]);
        count++;
        if(getchar()=='.')//遇见字符.退出输入
            break;
    }

    printf("数组:\n");
    for(int i=0; i<count; i++)//遍历输出
        printf("%u ",arr[i]);

    unsigned int max=arr[0];
    for(int i=count-1; i>0; i--)//遍历找最大值
        if(arr[i]>max)
            max = arr[i];
    printf("中的最大值是: %u\n",max);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值