C语言网刷题记录(21-30)

题目 1021: [编程入门]迭代法求平方

题目: 用迭代法求 平方根

公式:求a的平方根的迭代公式为: X[n+1]=(X[n]+a/X[n])/2 要求前后两次求出的差的绝对值少于0.00001。 输出保留3位小数
代码:

#include<stdio.h>
#include<math.h>                      //绝对值函数fabs()的头文件
int main(){
    int x;
    double x1=0,x2 = 1.0;
    scanf("%d", &x);
    while (fabs(x2-x1)>1E-5) {
        x1 = x2;
        x2 = (x1 + x / x1) / 2;
    }
    printf("%.3lf", x2);
    return 0;
}

题目 1022: [编程入门]筛选N以内的素数

题目:用简单素数筛选法求N以内的素数。
代码:

#include<stdio.h>
int main() {
    int N;
    int i,j;
    scanf("%d",&N);
    for(i=2; i<=N; i++) {
        for(j=2; j<i; j++) {
            if(i%j == 0) {
                break;
            }
        }
        if(i<=j) {
            printf("%d\n",i);
        }
    }
    return 0;
}

题目 1023: [编程入门]选择排序

题目: 用选择法对10个整数从小到大排序。
代码:

#include<stdio.h>
int main()
{
    int i,j,a[10],min,temp;
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    for(i=0;i<10;i++)
    {
        min=i;
        for(j=i+1;j<10;j++)
        {
        if(a[min]>a[j])
        {
            min=j;
        }
        }
        temp=a[min];
        a[min]=a[i];
        a[i]=temp;
        }
    for(i=0;i<10;i++)
        printf("%d\n",a[i]);
    return 0;
}

题目 1024: [编程入门]矩阵对角线求和

题目: 求一个3×3矩阵对角线元素之和。
代码:

#include<stdio.h>
int main()
{
    int x, y;
    int sum1=0, sum2=0, a[3][3];
    for(x=0; x<3; x++)
    {
        for(y=0; y<3; y++) 
        {
            scanf("%d", &a[x][y]);
            if(x == y)
                sum1+=a[x][y];
            if(x+y == 2)
                sum2+=a[x][y];
        }
    }
    printf("%d %d", sum1, sum2);
    return 0;
}

题目 1025: [编程入门]数组插入处理

题目: 已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
代码:

#include<stdio.h>
int main()
{
    int i,j,n;
    int a[10],min,temp;
    for(i=0;i<9;i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&n);  
    a[9]=n;
    for(i=0;i<10;i++)
    {
        min=i;
        for(j=i+1;j<10;j++)
        {
        if(a[min]>a[j])
        {
            min=j;
        }
        }
        temp=a[min];
        a[min]=a[i];
        a[i]=temp;
        }
    for(i=0;i<10;i++)
        printf("%d\n",a[i]);
    return 0;
}

题目 1026: [编程入门]数字逆序输出

题目: 输入10个数字,然后逆序输出。
代码:

#include<stdio.h>
int main()
{
    int a[10],i,j;
    for(i=0;i<10;i++)       
        scanf("%d",&a[i]);
    for(j=9;j>=0;j--)        
        printf("%d ",a[j]);  
    return 0;
}

题目 1027: [编程入门]自定义函数处

题目: 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。
代码:

#include<stdio.h>
int GY(int a,int b);
int GB(int a,int b);
int main() {
    int a,b,n;
    scanf("%d%d",&a,&b);
    if(b>a) {
        n = b;
        b = a;
        a = n;
    }
    printf("%d %d",GY(a,b),GB(a,b));
    return 0;
}

int GY(int a,int b) {
    int m,n;
    if(b==0)
        return a;
    else {
        n=a%b;
        m=b;
    }
    return GY(m,n);
}

int GB(int a,int b) {
    return a*b/GY(a,b);
}

题目 1028: [编程入门]自定义函数求一元二次方程

题目: 求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
代码:

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

void det0(int a,int b,int c);
void det1(int a,int b,int c); 
void det2(int a,int b,int c);

int main(){
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    double det;
    det = b*b - 4*a*c;
    if(det==0)det0(a,b,c);
    if(det>0)det1(a,b,c);
    if(det<0)det2(a,b,c);
    return 0;
}

void det0(int a,int b,int c){         //两个相等实根
    double x1,x2;
    x1 = ((-b)+pow((pow(b,2)-4*a*c),0.5))/(2*a);
    x2 = x1;
    printf("x1=%.3lf,x2=%.3lf",x1,x2);
}

void det1(int a,int b,int c){             //两个不相等实根
    double x1,x2;
    x1 = ((-b)+pow((pow(b,2)-4*a*c),0.5))/(2*a);
    x2 = ((-b)-pow((pow(b,2)-4*a*c),0.5))/(2*a);
    printf("x1=%.3lf,x2=%.3lf",x1,x2);
}

void det2(int a,int b,int c){           //两个复数根
    double shibu1,shibu2,xubu1,xubu2;
    shibu1 = (-b)/(2.0*a);
    xubu1 = pow((4*a*c-pow(b,2)),0.5)/(2*a);
    shibu2 = (-b)/(2.0*a);
    xubu2 = pow((4*a*c-pow(b,2)),0.5)/(2*a);
    printf("x1=%.3lf+%.3lfi x2=%.3lf-%.3lfi",shibu1,xubu1,shibu2,xubu2);
}

题目 1029: [编程入门]自定义函数处理素数

题目: 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。
代码:

#include <stdio.h>
#include <math.h>
int main() {
    int num;
    scanf_s("%d", &num);
    for (int i = 2; i <= sqrt(num); i++) {
        if (num % i == 0) {
            printf("not prime");
            return 0;
        }
    }
    printf("prime");
    return 0;
}

题目 1030: [编程入门]二维数组的转置

题目: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。
代码:

#include<stdio.h>
int main()
{
    int zong = 0, heng = 0, a[3][3];
    while (heng < 3&&zong<3)
    {
        scanf("%d", &a[zong][heng]);
        zong++;
        if (zong == 3 && heng < 3)
            zong = 0, heng++;
    }
    heng = 0, zong = 0;
    while (heng < 3 && zong < 3)
    {
        printf("%d ", a[zong][heng]);
        heng++;
        if (heng == 3 && zong < 3)
        {
            heng = 0, zong++;
            printf("\n");
        }
    }
    return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值