华农OJ上不熟悉的题目

1.打印菱形
法一:分成两部分打印,上端打印完成即打印下端
描述
由键盘输入正数n(n<30),要求输出如下2*n+1行的菱形图案。

输出格式
菱形右边不留多余空格
输入样例
2
输出样例
*




//1.打印菱形
//由键盘输入正数n(n<30),要求输出如下2*n+1行的菱形图案。
/*
   *
  ***
 *****
  *** j=0,n=2,i=2*n-1
   *
*/
//由图可知
/*应该要用两个变量,一个控制行,一个控制列,i,j
**如果用i控制行,此时n为2,那么第一行(i=0)就是n-i个空格,有2*i+1个星号
**第二行:(i=1),有n-i个空格,有2*i+1个星号
**第三行无空格,i=2,2*+1个星号
**至于下端,那么初始i=n-1,那么下端的第一行应该是n-i个空格,会有2*i+1个星号
**
**
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int main()
{
    int i,j,n;
    scanf("%d",&n);
    for(j=0;j<n;j++)
    {
        for(i=0;i<n-j;i++)
        {
            printf(" ");
        }
        for(i=0;i<2*j+1;i++)
        {
            printf("*");
        }
        printf("\n");
    }
    for(i=0;i<2*n+1;i++)
    {
        printf("*");
    }
    printf("\n");
    for(j=0;j<n;j++)
    {
        for(i=0;i<j+1;i++)
        {
            printf(" ");
        }
        for(i=0;i<2*(n-j)-1;i++)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

链表的合并

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define LEN sizeof(struct student)
struct student
{
    long num;
    int score;
    struct student *next;
};
struct student *create(int n)//参数表表示的是链表的长度,需要多长的链表
{
    struct student *head=NULL,*p1=NULL,*p2=NULL;
    for(int i=1;i<=n;i++)
    {
        p1=(struct student*)malloc(LEN);
        scanf("%ld",&p1->num);
        scanf("%d",&p1->score);
        p1->next=NULL;
        if(i==1)
        {
            head=p1;//如果这个表是空的,那么头结点就是现在读入数据的结点
        }
        else
        {
            p2->next=p1;//p2相当于一个中间变量,每次新建一个结点的时候,都会出现p2,
            //p2的作用是用p2内置的指针域指向现在所创建的结点
            //比如说第一次新建的结点是p_first 然后赋给了头结点 最后也赋给了p2,这时候p2内的内容就和p_first里面的内容一模一样
            //之后,第二次新建的结点是p_seconde,然后赋给了p2->next,p2->next代表的是调用了p_first内的指针域
            //来指向目前的结点,而我们在这里再重新统观全局,p_first和p_second就被连接起来了
            //为了方便理解,再引入第三个结点,这时候p2是p_second,p_first和p_second已经通过指针链接起来了
            //p_second调用内置指针域来指向p_third,又链接起来了,由此可以理解p2=p1是下次链接的准备工作
        }
        p2=p1;//最后是把p1的地址赋给了p2
    }
    return (head);
}

struct student *merge(struct student *head,struct student *head2)//参数表里面分别是两个链表的头尾
{
    struct student *p=NULL;
    p=head;
    if(head==NULL)
    {
        return head2;
    }
    while(p->next!=NULL)
    {
        p=p->next;
    }
    p->next=head2;
    return (head);
}
void print(struct student *head)
{
    struct student *p=NULL;
    p=head;
    while(p!=NULL)
    {
        printf("%8ld%8d",p->num,p->score);
        p=p->next;
        printf("\n");
    }

}
int main()
{
    struct student *head, *head2;
    int n;
    long del_num;
    scanf("%d",&n);
    //依次输入学生个数,然后读入数据
    head=create(n);
    print(head);
    scanf("%d",&n);
    head2=create(n);
    print(head2);
    head = merge(head, head2);
    print(head);
    return 0;
    }

学生信息统计
输入10个学生5门课的考试成绩,分别用函数实现以下功能:
(1) 计算一个学生的平均分。
(2) 计算每门课程的平均分。
(3) 找出每门课程的最高分。
显示结果,显示两位小数。

#include <stdio.h>

void average(double a[][5], int n)
{


}

void average2(double a[][5], int n)
{


}

void top(double a[][5], int n)
{


}

int main()
{
double a[10][5];
int i, j;
for(i=0; i<10; i++)
for(j=0; j<5; j++)
scanf("%lf", &a[i][j]);
average(a,10);
average2(a,10);
top(a,10);
return 0;
}

全部代码

#include <stdio.h>

void average(double a[][5], int n) //学生的平均分
{
    int i,j;double sum=0;
    for(i=0;i<10;i++)
    {
        for(j=0;j<5;j++)
        {
            sum=sum+a[i][j];
        }
        printf("%.2lf ",sum/5.0);
        sum=0;
    }
    printf("\n");
}

void average2(double a[][5], int n)
{
    double sum=0;int i,j;
    for(i=0;i<5;i++)
    {
        for(j=0;j<10;j++)
        {
            sum=sum+a[j][i];
        }
        printf("%.2lf ",sum/10.0);
        sum=0;
    }
    printf("\n");
}

void top(double a[][5], int n)
{
    int i,j,k;
    for(i=0;i<5;i++)
    {
        for(j=0;j<10;j++)
        {
            for(k=0;k<9;k++)
            {
                if(a[k][i]>a[k+1][i])
                {
                    double temp=0;
                    temp=a[k][i];
                    a[k][i]=a[k+1][i];
                    a[k+1][i]=temp;
                }
            }
        }
    }
    for(i=0;i<5;i++)
    {
        printf("%.2lf ",a[9][i]);
    }
    printf("\n");
}

int main()
{
    double a[10][5];
    int i, j;
    for(i=0; i<10; i++)
        for(j=0; j<5; j++)
            scanf("%lf", &a[i][j]);
    average(a,10);
    average2(a,10);
    top(a,10);
    return 0;
}

统计不同数字的个数
描述
由键盘输入20个整数,统计不同数字的个数。

输入样例
70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11
输出样例
16
Hint
因为5有1个重复数字,11有1个重复数字,22有2个重复数字

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
int main()
{
    int a[20]={0};
    int i,j,count=0;
    for(i=0;i<20;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<20;i++)
    {
        int target=a[i],index=i;
        for(j=index;j<20;j++)
        {
            if(j==index)
            {
                continue;
            }
            if(target==a[j])
            {
                break;
            }
         }
         if(j==20)
         {
            count++;
         }
    }
    printf("%d",count);
    return 0;
}

找鞍点
描述
由键盘输入一个3*4(3行4列)的数字矩阵,其中任意两个数字均不相同。要求输出该数字矩阵中的鞍点(即在矩阵行中最大,列中最小的数)。
若没有鞍点,输出“NO”字样。

输入样例
87 90 110 98
70 97 210 65
99 45 120 30
输出样例
110

#in clude <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
/*
由键盘输入一个3*4(3行4列)的数字矩阵,其中任意两个数字均不相同。
要求输出该数字矩阵中的鞍点(即在矩阵行中最大,列中最小的数)。
若没有鞍点,输出“NO”字样。
*/
int main()
{
    int a[3][4]={0};
    int i,j,flag=-1;
    int answer=-1;
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    int max=0;
    for(i=0;i<3;i++)
    {
        flag=-1;
        int maxnum=a[i][0];
        for(j=0;j<4;j++)
        {
            if(a[i][j]>maxnum)
            {
                maxnum=a[i][j];
                max=j;
            }
        }
        flag=-1;
        for(j=0;j<3;j++)
        {
            if(a[i][max]>a[j][max])
            {
                flag=1;
                break;
            }
        }
        if(flag==1)
        {
            continue;
        }
        else
        {
            answer=a[i][max];
            break;
        }
    }
    if(answer>0)
    {
        printf("%d",answer);
    }
    else
    {
        printf("NO");
    }
    return 0;
}
```c
#include <stdio.h>

int sort(int a[], int n)
{
    int i,j,k,tmp;
    for(i=0;i<n-1; i++)
    {
        k=i;
        for(j=k+1;j<10;j++)
            if(a[i]>a[j]) k=j;
        tmp=a[k];a[k]=a[i];a[i]=tmp;
    }
}

int main()
{
    int a[10];
    int i;
    for(i=0; i<10; i++) scanf("%d", &a[i]);
    sort(a,10);
    for(i=0; i<10; i++) printf("%d\n", a[i]);
    return 0;
}

二维数组每行中的最大值
#include <stdio.h>

void find(int a[][4])
{
int (*p)[4], *q, *max;
for()
{
max=*p;
for(
)
{


    } 
    printf("%d\n", *max); 
} 

}

int main()
{
int a[4][4],i,j;
for(i=0; i<4; i++)
for(j=0; j<4; j++)
scanf("%d", &a[i][j]);
find(a);
return 0;
}

数字交换
输入10个整数,把其中最小的数与第一个数交换,最大的数与最后一个数交换。使用3个函数解决问题:
(1) 输入10个整数的函数
(2) 进行交换处理的函数
(3) 输出10个数的函数
输入格式
输入10个整数
输出格式
输出结果,一行一个数字
输入样例
2 1 3 4 5 6 7 8 9 0
输出样例
input done
swap done
0
1
3
4
5
6
7
8
2
9
display done

#include <stdio.h>

void input(int a[])
{
    for(int i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
}

void swap(int a[])
{
    int i,temp,index_min=0,index_max=9;
    int min=a[0],max=a[9];
    for(i=1;i<10;i++)
    {
        if(a[i]<min)
        {
            min=a[i];
            index_min=i;
        }
    }
    temp=a[0];
    a[0]=a[index_min];
    a[index_min]=temp;
    for(i=8;i>=0;i--)
    {
        if(a[i]>max)
        {
            max=a[i];
            index_max=i;
        }
    }
    temp=a[9];
    a[9]=a[index_max];
    a[index_max]=temp;
}

void display(int a[])
{
    int i;
    for(i=0; i<10; i++)
        printf("%d\n", a[i]);
}

int main()
{
    int a[10];
    input(a);
    printf("input done\n");
    swap(a);
    printf("swap done\n");
    display(a);
    printf("display done\n");
    return 0;
}

矩阵的行与行交换 列与列交换
输入格式
输入一个4*4矩阵
输出格式
输出经过变换的矩阵
输入样例
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
输出样例
6 8 5 7
14 16 13 15
2 4 1 3
10 12 9 11

#include <stdio.h>
void swap(int *a, int *b)
{
int temp;
temp=*a;*a=*b;*b=temp;
}

void col(int a[][4], int i, int j)
{
for(int k=0;k<4;k++)
{
swap(&a[k][i],&a[k][j]);
}
}

void row(int a[][4], int i, int j)
{
for(int k=0;k<4;k++)
{
swap(&a[i][k],&a[j][k]);
}
}

int main()
{
int a[4][4];
int i,j;
for(i=0; i<4; i++)
for(j=0; j<4; j++)
scanf("%d", &a[i][j]);
col(a,0,2);
row(a,0,2);
col(a,1,3);
row(a,1,3);
col(a,0,3);
row(a,0,3);
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
printf("%d “, a[i][j]);
printf(”\n");
}
return 0;
}

学生成绩表
输入格式
10个学生信息,每行一个学生
输出格式
如题
输入样例
1 aaa 50 60 70
2 bbb 50 50 50
3 ccc 60 70 80
4 ddd 40 40 40
5 eee 70 80 90
6 fff 30 30 30
7 ggg 80 90 100
8 hhh 20 20 20
9 iii 100 100 100
10 jjj 10 10 10

#include <stdio.h>

struct data
{
    int num;
    char name[10];
    double score[3];
    double average;
};

int main()
{
    int i,j;
    struct data stu[10],tmp;
    for(i=0; i<10; i++)
    {
        scanf("%d",&stu[i].num);
        scanf("%s",stu[i].name);
        scanf("%lf%lf%lf",&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
        stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
    }
    for(i=0; i<9; i++)
        for(j=0; j<9-i; j++)
        {
            if(stu[j].average<stu[j+1].average)
            {
                tmp=stu[j+1];
                stu[j+1]=stu[j];
                stu[j]=tmp;
            }
        }
    for(i=0; i<10; i++)
    {
        printf("%d %s %.0lf %.0lf %.0lf\n", stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2]);
    }
    return 0;
}

判断点是否在圆上

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
    double x,y;
    scanf("%lf,%lf",&x,&y);
    if(fabs(sqrt(x*x+y*y)-1)<1e-3)
    {
        printf("Y");
    }
    else
    {
        printf("N");
    }
}

找出3个数中最大的数
主要是冒泡排序容易写错

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
    int a[3]={0};
    for(int i=0;i<3;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<2;j++)
        {
            if(a[j]>a[j+1])
               {
                   int temp=a[j];
                    a[j]=a[j+1];
                    a[j+1]=temp;
               }
        }
    }
    printf("%d",a[2]);
}

判断平方数

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main()
{
    int x;
    scanf("%d",&x);
    if((int)sqrt(x)*(int)sqrt(x)==x)
    {
        printf("Y");
    }
    else
    {
        printf("N");
    }
}

分期还款(加强版)

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/*
从银行贷款金额为d,准备每月还款额为p,月利率为r。
请编写程序输入这三个数值,计算并输出多少个月能够还清贷款,输出时保留1位小数。
如果无法还清,请输出“God”
*/
//输入格式
//三个数,分别为货款金额、每月还款和月利率,以空格分隔,均为非负数,其中d,p,r>=0
int main()
{
    double d,p,r;
    scanf("%lf%lf%lf",&d,&p,&r);
    if(d==0)
    {
        printf("0.0");
        return 0;
    }
    else
    {
        if(p-d*r<=0)
        {
            printf("God\n");
        }
        if(r==0)
        {
            printf("%.1lf",d/p);
        }
        else
        {
            printf("%.1lf",log(p/(p-d*r))/log(r+1));
        }
    }
    return 0;
}

简单计算器

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
int main()
{
    float a,b,c;char op;
    scanf("%f%c%f",&a,&op,&b);
    switch(op)
    {
        case'+':
        {
            c=a+b;break;
        }
        case'-':
        {
            c=a-b;break;
        }
        case'*':
        {
            c=a*b;break;
        }
        case'/':
        {
         if(b==0)
         {
            printf("error");
            exit(0);
         }
         else
         {
            c=a/b;
            break;
         }
        }
        default:printf("error");exit(0);
    }
    printf("result=%.2f",c);
    return 0;
}

20秒后的时间

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
int main()
{
    int hour,minute,sec;
    scanf("%d:%d:%d",&hour,&minute,&sec);
    if(sec+20<60)
    {
        printf("%02d:%02d:%02d",hour,minute,sec+20);
        return 0;
    }
    if(sec+20>=60)
    {
        if(minute+1<60)
        {
            printf("%02d:%02d:%02d",hour,minute+1,sec+20-60);
        }
        if(minute+1>=60)
        {
            if(hour+1>=24)
            {
                printf("00:00:%02d",sec+20-60);
            }
            if(hour+1<24)
            {
                printf("%02d:%02d:%02d",hour+1,minute+1-60,sec+20-60);
            }
        }
    }
    return 0;
}

计算阶乘

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
int main()
{
    int i,n,sum=1;scanf("%d",&n);
    for(i=n;i>0;i--)
    {
        sum=i*sum;
    }
    printf("%d",sum);
    return 0;
}

求最大公约数(理解迭代法)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
int main()
{
    int m,n;scanf("%d,%d",&m,&n);
    int max=0,min=0;
    if(m>n)
    {
        max=m;
        min=n;
    }
    else
    {
        max=n;
        min=m;
    }
    while(min!=0)
    {
        int temp=min;
        min=max%min;
        max=temp;
    }
    printf("%d",max);
    return 0;
}

百万富翁

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
/*
一个百万富翁遇到一个陌生人,陌生人找他谈了一个换钱的计划。该计划如下:我每天给你m元,
而你第一天只需给我一分钱。第二天我仍给你m元,你给我2分钱。第三天,我仍给你m元,
你给我4分钱。依次类推,你每天给我的钱是前一天的两倍,直到一个月(30天)。
百万富翁很高兴,欣然接受这个契约。现要求,编写一个程序,由键盘输入m,
计算多少天后,百万富翁开始亏钱。
*/
int main()
{
    int day=0;
    double pay=0.01,get=0,sum=0;
    int m;scanf("%d",&m);
    while(1)
    {
        get=m-pay;
        sum=sum+get;
        pay*=2;
        day++;
        if(sum<0)
        {
            break;
        }
    }
    printf("%d",day);
    return 0;
}

计算自由落体(迭代法)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
//一个球从100米的高度自由落下,每次落地后弹起的原来高度的一半。
//计算并输出第n次落地时,共经过了多少米,第n次弹起的高度是多少?结果显示3位小数。
/*
2 100/2 100+100/2*2
3 100/2/2 100+100/2*2+100/2/2*2
*/
int main()
{
    int n;scanf("%d",&n);
    double last_height=50,sum=100;
    if(n==1)
    {
        printf("100.000 50.000");
        return 0;
    }
    else
    {
        for(int i=1;i<n;i++)
        {
            sum=sum+last_height*2;
            last_height/=2;
        }
    }
    printf("%.3lf %.3lf",sum,last_height);
    return 0;
}

迭代法求平方根

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
int main()
{
    double x1=1,x2=1,a;
    scanf("%lf",&a);
    x2=(x1+a/x1)/2;
    while(fabs(x2-x1)>1e-5)
    {
        x1=x2;
        x2=(x1+a/x1)/2;
    }
    printf("%.4lf",x2);
    return 0;
}

勾股数

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
int main()
{
    int i,j,k;double temp;
    int n;scanf("%d",&n);
    for(i=3;i<=n;i++)
    {
        for(j=i;j<=n;j++)
        {
            temp=sqrt(i*i+j*j);
            {
                if((int)sqrt(i*i+j*j)==temp&&temp<=n)
                {
                    k=(int)sqrt(i*i+j*j);
                    printf("%d %d %d\n",i,j,k);
                }
            }
        }
    }
    return 0;
}

统计单词个数

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <ctype.h>
int main()
{
    char ch;
    int count=0,word=0;
    while((ch=getchar())!='\n')
    {
        if(!((ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')))
        {
            word=0;
        }
        else if(word==0)
        {
            word=1;
            count++;
        }
    }
    printf("%d",count);
    return 0;
}

链表的倒序

struct student *plat=NULL,*ptemp=NULL,*pfront=NULL;
    pfront=head;
    while(pfront!=NULL)
    {
        plat=pfront->next;
        pfront->next=ptemp;
        ptemp=pfront;
        pfront=plat;
    }
    return ptemp;

链表的排序

struct student *p1,*p2;
    p1=head;p2=head;
    p2=p2->next;//要注意这两个循环不能调换
    p1->next=NULL;
    p1=p2;
    while(p1->next!=NULL)
    {
        p2=p2->next;
        p1->next=NULL;
        head=insert(head,p1);
        p1=p2;
    }
    head=insert(head,p1);
    return head;

链表的删除

struct student *del(struct student *head,long num) 
{ 
    struct student *p1,*p2; 
    p1=head; 
    while(p1!=NULL) 
    { 
        if(p1->num == num) 
        { 
          if(p1 == head) head=p1->next; 
          else p2->next=p1->next; 
          free(p1); 
          break; 
        } 
        p2=p1; 
        p1=p1->next; 
    } 
    return(head); 
} 

文件
文件-字符读入

(ch=fgetc(fp))!=EOF

文件-字符写入

FILE *fp;char ch;
    if((fp=fopen("answer.txt","w"))==NULL)
    {
        return 1;
    }
    while((ch=getchar()))
    {
        fputc(ch,fp);
        if(ch=='b')
        {
                if((ch=getchar())=='y')
                {
                    fputc(ch,fp);
                    if((ch=getchar())=='e')
                    {
                        fputc(ch,fp);
                        break;
                    }
                }
        }
    }
    fclose(fp);

文件-单词选择排序

char w[10000+5][10+5],tmp[10];int n;
    FILE *fp;
    if((fp=fopen("case1.in","r"))==NULL)
    {
        return 1;
    }
    while(fgets(w[n],10,fp))
    {
        n++;
    }
    fclose(fp);
    if((fp=fopen("answer.txt","w"))==NULL)
    {
        return 1;
    }
    for(int i=0;i<n-1;i++)
    {
        for(int k=0;k<n-1-i;k++)
        {
            if(strcmp(w[k],w[k+1])>0)
            {
                strcpy(tmp,w[k]);
                strcpy(w[k],w[k+1]);
                strcpy(w[k+1],tmp);
            }
        }
    }
    for(int i=0;i<n;i++)
    {
        fputs(w[i],fp);
    }
    fclose(fp);

最六的数

#include "stdio.h"
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int a[3]={0};
    for(int i=0;i<3;i++)
    {
        scanf("%d",&a[i]);
    }
    int min=a[0],pre=a[0],now=a[0];
    for(int i=0;i<3;i++)
    {
        now=a[i];
        if(abs(now-6)<abs(min-6))
        {
            min=now;
            pre=now;
        }
        if(abs(now-6)==abs(min-6))
        {
            if(pre>now)
            {
                min=now;
                pre=now;
            }
        }
    }
    printf("%d",min);
}

多个数的最大公约数

#include "stdio.h"
#include <string.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    int a[10+5]={0};int n;scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n-1;j++)
        {
            if(a[j]>a[j+1])
            {
                int temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
    int min=a[0],max=a[1],answer=0,answer_now=0;
    while(min!=0)
    {
        int temp=min;
        min=max%min;
        max=temp;
    }
    answer=max,answer_now=max;
    for(int i=0;i<n-1;i++)
    {
        min=a[i],max=a[i+1];
        while(min>0)
        {
            int temp=min;
            min=max%min;
            max=temp;
        }
        answer_now=max;
        if(answer_now<answer)
        {
            answer=answer_now;
        }
    }
    printf("%d",answer);
}

元音字母

#include "stdio.h"

void yuan(char *s,char *s2)
{
    int i=0,j=0;
    while(s[i]!='\0')
    {
        if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='o'||s[i]=='O'||s[i]=='i'||s[i]=='I'||s[i]=='U'||s[i]=='u')
        {
            s2[j++]=s[i++];
        }
        else
        {
            i++;
        }
    }
    s2[j]='\0';
}

int main()
{
    char str[81], str2[81];
    gets(str);
    yuan(str,str2);
    printf("%s", str2);
}

两个圆是否相交
给出平面坐标中两个圆的圆心坐标与半径,判断这两个圆是否相交(即圆边有交点),是则输出yes,否则输出no。
输入格式
两行,每行三个数,分别为X坐标,Y坐标以及半径
输出格式
yes或no
输入样例
1.1 1.1 1.1
2.2 2.2 1.5

#include "stdio.h"
#include "string.h"
#include <math.h>
int main()
{
    double x1,y1,r1;scanf("%lf%lf%lf",&x1,&y1,&r1);
    double x2,y2,r2;scanf("%lf%lf%lf",&x2,&y2,&r2);
    double d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
    if(d<=r1+r2&&d>=fabs(r1-r2))
    {
        printf("yes");
    }
    else
    {
        printf("no");
    }
}
  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值