XDOJ第二弹:流程控制

P-0002

在这里插入图片描述

#include<stdio.h>
int main(){
    unsigned int n;
    unsigned int count=0;
    unsigned int a;
    scanf("%d",&n);
    int num[1000];
    for(int i=0;i<n;i++){
        scanf("%d",&a);
        num[i]=a;
    }
    for(int j=0;j<n;j++){
        if(num[j]!=num[j+1]){
            count++;
        }
    }
    printf("%d",count);
    return 0;
}

P-0003

在这里插入图片描述

#include <stdio.h>
int main(){
  int n,i,j,k,t,min;
  scanf("%d",&n);
  int a[1000],b[999];
  for(i=0;i<n;i++){
    scanf("%d",&a[i]);
  }
  for(i=0;i<n-1;i++){
    k=i;
    for(j=i+1;j<n;j++)
       if(a[k]>a[j])
            k=j;
    if(k!=i){
      t=a[i];
      a[i]=a[k];
      a[k]=t;
    }
  }
  for(i=0;i<n-1;i++){
    b[i]=a[i+1]-a[i];
  }
  for(min=b[0],i=0;i<n-1;i++)
     if(min>b[i])
         min=b[i];
  printf("%d",min);
  return 0;
}

P-0007

在这里插入图片描述

#include<stdio.h>
int main(){
    int day,fog,num;
    int nums[10]={1,2,3,4,5,6,7,8,9,0};
    scanf("%d%d%d",&day,&fog,&num);
    if(day>=6||fog<200){//不限行的情况
        printf("%d no",num%10);
    }else if(day>0&&day<6&&fog>=200&&fog<400){//周一到周五且200-400的限行
        if(num%10==nums[day-1]||num%10==nums[day+4]){//yes
            printf("%d yes",num%10);
        }else{
            printf("%d no",num%10);//no
        }
    }else if(day>0&&day<6&&fog>=400&&fog<600){//周一到周五且大于400
        //偶数周情况
        if(day%2==0){//yes
            if(num%10==0||num%10==2||num%10==4||num%10==6||num%10==8){
                printf("%d yes",num%10);
            }else{
                printf("%d no",num%10);
            }
        }else{//奇数周情况
            if(num%10==1||num%10==3||num%10==5||num%10==7||num%10==9){
                printf("%d yes",num%10);//yes
            }else{
                printf("%d no",num%10);//no
            }
        }}
    return 0;
}

P-0027

在这里插入图片描述

#include<stdio.h>
int main(){
    int es[3]={0,110,210};
    double e;
    scanf("%lf",&e);
    if(e>=es[0]&&e<=es[1]){
        //每度0.5元
        printf("%.2lf",e/2);
    }else if(e>es[1]&&e<=es[2]){
        //超过部分0.55元
        printf("%.2lf",55+(e-110)*0.55);
    }else{
        //每度电0.70元
        printf("%.2lf",110+0.7*(e-210));
    }
    return 0;

P-0028

在这里插入图片描述

#include<stdio.h>
int main(){
    int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int a,b;
    scanf("%d%d",&a,&b);
    if(a%4==0&&a%100!=0||a%400==0){//闰年的二月
        if(b==2){
            printf("%d",days[b-1]+1);
        }
    }else{
        printf("%d",days[b-1]);
    }return 0;
}

P-0029

在这里插入图片描述

#include<stdio.h>
int main(){
    int n,sum=0;
    scanf("%d",&n);
    while(n!=0){
        sum+=n%10;
        n/=10;
    }
    printf("%d",sum);
    return 0;
}

P-0030

在这里插入图片描述

#include<stdio.h>
int main(){
    unsigned int a,b;
    int sum=0;
    scanf("%d%d",&a,&b);
    for(int i=a;i<=b;i++){
        sum=i;
        for(int j=1;j<i/2+1;j++){
            if(i%j==0){
                sum-=j;
            }
        }
        if(sum==0){
            printf("%d\n",i);
        }
    }
    return 0;
}

P-0031

在这里插入图片描述

(前几行注释是迭代法,可以参考)

#include<stdio.h>
//int gcd(int a,int b){
//    return(b?gcd(b,a%b):a);
//}
int main(){
    int a,b;
    scanf("%d%d",&a,&b);
    int r;
    while(a%b!=0){
        r=a%b;
        a=b;
        b=r;
    }
    printf("%d",b);
    return 0;
}

P-0032

#include<stdio.h>
int main(){
    int n;
    int count=0;
    scanf("%d",&n);
    while(n!=1){
        if(n%2==0){
            n/=2;
        }else{
            n=3*n+1;
        }
        count++;
    }
    printf("%d",count);
    return 0;
}

P-0041

在这里插入图片描述

#include<stdio.h>
int main(){
    int n;
    int c1=0;
    int c2=0;
    int c3=0;
    int c4=0;
    int c5=0;
    int c6=0;
    int num[1000];
    double sum=0;
    int air[]={0,50,100,150,200,250,300};
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&num[i]);
        sum+=num[i];
    }
    printf("%.2lf\n",sum/n);
    for(int i=0;i<n;i++){
        if(num[i]>=0&&num[i]<=50){
            c1++;
        }else if(num[i]>=51&&num[i]<=100){
            c2++;
        }else if(num[i]>=101&&num[i]<=150){
            c3++;
        }else if(num[i]>=151&&num[i]<=200){
            c4++;
        }else if(num[i]>=201&&num[i]<=300){
            c5++;
        }else if(num[i]>300){
            c6++;
        }
    }
    printf("%d %d %d %d %d %d",c1,c2,c3,c4,c5,c6);
    return 0;
}

P-0043

在这里插入图片描述

#include <stdio.h>
int main(){
    long a;
    int c=0,max=0,min=9;
    scanf("%ld",&a);
    do{
        int t = a%10;
        if(t>max)max=t;
        if(t<min)min=t;
        a/=10;
        c++;
    }while(a>0);
    printf("%d %d %d",c,max,min);
    return 0;
}

P-0045

在这里插入图片描述

#include<stdio.h>
#include<math.h>//fabs()里面要浮点数
int main(){
    int n,max;
    scanf("%d",&n);
    int t[30];
    if(n>=2&&n<=30){
        for(int i=0;i<n;i++){
            scanf("%d",&t[i]);
        }
        max=fabs((double)t[0]-t[1]);//假设波动最大的是前俩项差
      for(int i=0; i <n-1;i++){
            if(fabs((double)t[i+1]-t[i])>max){
                max=fabs((double)t[i + 1]-t[i]);
        }
      }
        printf("%d",max);
    }
    return 0;
}
(要注意函数调用的参数的类型,不然有可能编译错误)

P-0046

在这里插入图片描述

#include<stdio.h>
void FindTurningPoint(int a[],int length){
    int count=0;
    for(int i=1;i<length-1;i++){//从第二个到倒数第二个
        if((a[i]>a[i+1]&&a[i]>a[i-1])||(a[i]<a[i+1]&&a[i]<a[i-1])){
            count++;
        }
    }
    printf("%d",count);
}
int main(){
    int n,count=0;
    scanf("%d",&n);
    int num[100];
    if(n>=3&&n<=100){
        for(int i=0;i<n;i++){
            scanf("%d",&num[i]);
        }
        FindTurningPoint(num,n);
    }
    return 0;
}

P-0049

在这里插入图片描述

#include<stdio.h>
#include<math.h>
int main(){
    int a;
    scanf("%d",&a);
    if(sqrt((double)a)==(int)sqrt((double)a)){
        printf("%d",(int)sqrt((double)a));
    }else{
        printf("no");
    }
    return 0;
}
(sqrt函数调用参数一定要是double,不然可能oj编译错误)

P-0050

在这里插入图片描述

#include<stdio.h>
int swap(int *a,int *b){//总共用到三处俩个变量互换,特此剔出声明
  int t;
  t=*a;
  *a=*b;
  *b=t;
  return 0;
}
void DoubleSort(int a[],int length,int b[]){//排序魔改版,qq号和位数合一一映射
    int i,j,t;
    for (i=0;i<length-1;i++){
    for (j=i+1;j<length;j++){
      if (a[i]>a[j]){
        swap(&a[i],&a[j]);
        swap(&b[i],&b[j]);
      }
    }
  }
}
int main(){
    int n,t;
    int qq[99];
    int sum[99];
    int qqcopy[99];
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d",&qq[i]);
    }
    for (int i=0;i<n;i++){
    qqcopy[i]=qq[i];
    sum[i]=0;
    for (qq[i];qq[i]>=1;qq[i]/=10) {
      sum[i]+=qq[i]%10;
    }
  }
    DoubleSort(sum,n,qqcopy);
    for(int i=0;i<n;i++){//合相等且qq号比较大
    if(sum[i]==sum[i+1]&&qqcopy[i]>qqcopy[i+1]){
           swap(&qqcopy[i],&qqcopy[i+1]);
        }
  }
    printf("%d",qqcopy[n-1]);//最后一个肯定是最大的了
    return 0;
}

P-0051

在这里插入图片描述

#include<stdio.h>
int main(){
    int a,b,c,d,min,t;
    scanf("%d%d%d%d",&a,&b,&c,&d);
    int num[4];
    num[0]=a;
    num[1]=b;
    num[2]=c;
    num[3]=d;
    //Selection Sort
    for(int i=0;i<3;i++){
        for(int j=i+1,min=i;j<4;j++){
            if(num[min]>num[j]){
                min=j;
            }
            if(min!=i){
                t=num[i];
                num[i]=num[min];
                num[min]=t;
            }
        }
    }
    printf("%d",num[3]);
    return 0;
}
(如果你想时间更快,就不要像我这样用排序)

P-0052

在这里插入图片描述

#include<stdio.h>
int main(){
    char c=getchar();
    if(c>=97&&c<=122){//小a是97,z是122
        putchar(c-32);
    }else if(c>=65&&c<=90){//A 65 Z 90
        putchar(c+32);
    }else{
        putchar(c);
    }
    return 0;
}

P-0053

在这里插入图片描述

#include<stdio.h>
int main(){
    int m;
    scanf("%d",&m);
    if(m>=90){
        putchar(65);
    }else if(m>=80&&m<=89){
        putchar(66);
    }else if(m>=70&&m<=79){
        putchar(67);
    }else if(m>=60&&m<=69){
        putchar(68);
    }else{
        putchar(69);
    }
    return 0;
}

P-0054

在这里插入图片描述

#include<stdio.h>
int main(){
    int n,a,b,c;//1000-2000
    scanf("%d",&n);
    for(int i=1;i<1000;i++){//穷举1~1000的所有数,因为abc最多是三位数
        //abc最多三位数,分别求i的个十百位
        a=i%10;
        b=(i/10)%10;
        c=(i/100)%10;
        if(i+a*100+b*10+c==n){
            printf("%d %d %d\n",c,b,a);
        }
    }
    return 0;
}

P-0056

在这里插入图片描述

#include<stdio.h>
int main(){
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    if(a*a+b*b==c*c){
        printf("%d",a*b);
    }else{
        printf("no");
    }
    return 0;
}

P-0063

在这里插入图片描述

#include <stdio.h>
int main(){
  int S,A,T;
  float s;
  scanf("%d",&S);
    if(S<=3500){
        s=0;
    }else{
        A=S-3500;
        if(A<=1500){
            s=0.03*A;
        }else if(A>1500&&A<=4500){
            s=1500*0.03+(A-1500)*0.1;
        }else if(A>4500&&A<=9000){
            s=1500*0.03+3000*0.1+0.2*(A-4500);
        }else if(A>9000&&A<=35000){
            s=1500*0.03+3000*0.1+0.2*4500+0.25*(A-9000);
        }else{
            s=1500*0.03+3000*0.1+0.2*4500+0.25*26000+0.3*(A-35000);
        }
  }
  T=S-s;
  printf("%d",T);
  return 0; 
}

P-0064

在这里插入图片描述

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

解释:

//给奇数排序的话,n^3等于n个奇数合
//可以证明最后一个奇数的序号就是n(n+1)/2
//第一个奇数的序号就是(n-1)n/2
//第一个奇数的值是n^2-n+1
//最后一个奇数的值是序号的两倍减去一 也就是n^2+n-1

P-0066

在这里插入图片描述

#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    double sum=0;
    int num[100];
    for(int i=0;i<n;i++){
        scanf("%d",&num[i]);
    }
    for(int i=0;i<n;i++){
        sum+=num[i];
    }
    printf("%.2lf",sum/n);
    return 0;
}

P-0068

在这里插入图片描述

#include<stdio.h>
int main(){
    int months[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    int y,d,t,sum=0,i=0;
    scanf("%d%d",&y,&d);
    if(y%400==0||(y%100!=0&&y%4==0)){
        months[1] =29;
    }
    for(;i<12;i++){
        sum+=months[i];
        if(sum>=d){//d-(sum-months[i])先sum减去该索引的天数,得到前几个月天数之和,再用d减去就行
            printf("%d %d",i+1,d-sum+months[i]);
            break;
        }
    }
    return 0;
}

P-0087

在这里插入图片描述

#include<stdio.h>
int main(){
    int i,l,j;
  int count;
  int sum=0;
  int num[1000];
  for(i=0;i<1000;i++){
    scanf("%d",&num[i]);
    if(num[i]==0){
            break;
        }
  }
  for(i=0;i<1000;i++){
    count=1;
    if(num[i]==1){
            sum+=1;
        }
    if(num[i]==2){
      if(i==0||num[i-1]==1){
                sum+=2;
            }else{
        for(j=i-1;j>=0;j--){
          if(num[j]==2){
                        count+=1;
                    }else{
                        break;
                    }
        }
        sum+=2*count;
      }
    }
        if(num[i]==0){
      sum+=0;
      break;
    }
  }
  printf("%d",sum);
  return 0;
}

P-0093

在这里插入图片描述

#include<stdio.h>
int main(){
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d %d",a>b?(a%10):(b%10),a>b?(b*b):(a*a));
    return 0;
}

P-0094

在这里插入图片描述

#include<stdio.h>
int main(){
    int a[4];
    int min,t,i,j;
    for(int i=0;i<4;i++){
        scanf("%d",&a[i]);
    }
    for(i=0;i<3;i++){//选择排序
        for(j=i+1,min=i;j<4;j++){
            if(a[j]<a[min]){
                min=j;
            }
        }
        if(min!=i){
            t=a[i];
            a[i]=a[min];
            a[min]=t;
        }
    }
    for(int i=0;i<4;i++){
        printf("%d ",a[i]);
    }
    return 0;
}

P-0097

在这里插入图片描述

#include<stdio.h>
int main(){
    for(int i=97;i<=122;i++){
        printf("%c ",i);
    }
    printf("\n");
    for(int i=122;i>=97;i--){
        printf("%c ",i);
    }
    return 0;
}

P-0098

在这里插入图片描述

#include<stdio.h>
int main(){
    double m;
    scanf("%lf",&m);
    if(m>=90){
        printf("%.2f %c",m,65);
    }else if(m>=80&&m<=89){
        printf("%.2f %c",m,66);
    }else if(m>=70&&m<=79){
        printf("%.2f %c",m,67);
    }else if(m>=60&&m<=69){
        printf("%.2f %c",m,68);
    }else{
        printf("%.2f %c",m,69);
    }
    return 0;
}

P-0099

在这里插入图片描述

#include<stdio.h>
int main(){
    int es[3]={0,110,210};
    double e;
    scanf("%lf",&e);
    if(e>=es[0]&&e<=es[1]){
        //每度0.5元
        printf("%.2lf %c %.2f",e/2,65,0.00);
    }else if(e>es[1]&&e<=es[2]){
        //超过部分0.55元
        printf("%.2lf %c %.2f",55+(e-110)*0.55,66,e-110);
    }else{
        //每度电0.70元
        printf("%.2lf %c %.2f",110+0.7*(e-210),67,e-210);
    }
    return 0;
}

P-0101

在这里插入图片描述

#include<stdio.h>
int main(){
    char str[4];
    for(int i=0;i<4;i++){
        scanf("%c",&str[i]);
        if(str[i]>=65&&str[i]<=90){//大写转小写
            str[i]+=32;
        }else if(str[i]>=97&&str[i]<=122){//小写转大写
            str[i]-=32;
        }else if(str[i]>=48&&str[i]<=57){//48-57是数字,转为*
            str[i]='*';
        }else{
            str[i]='@';
        }
        printf("%c",str[i]);
    }
    return 0;
}

P-0112

在这里插入图片描述

#include<stdio.h>
#include<math.h>
int main(){
    double x;
    scanf("%lf",&x);
    printf("%.2f",x>=0?sqrt(x):(pow(x+1,2)+2*x+1/x));
    return 0;
}

P-0114&P-0116

在这里插入图片描述

#include<stdio.h>
int main(){
    int es[3]={0,110,210};
    double e;
    scanf("%lf",&e);
    if(e>=es[0]&&e<=es[1]){
        //每度0.5元
        printf("%.2lf",e/2);
    }else if(e>es[1]&&e<=es[2]){
        //超过部分0.55元
        printf("%.2lf",55+(e-110)*0.55);
    }else{
        //每度电0.70元
        printf("%.2lf",110+0.7*(e-210));
    }
    return 0;
}

P-0146

在这里插入图片描述

#include<stdio.h>
int main(){
    int n;
    scanf("%d",&n);
    switch(n){
        case 0:printf("zero");break;
        case 1:printf("one");break;
        case 2:printf("two");break;
        case 3:printf("three");break;
        case 4:printf("four");break;
        case 5:printf("five");break;
        case 6:printf("six");break;
        case 7:printf("seven");break;
        case 8:printf("eight");break;
        case 9:printf("nine");break;
    }
    return 0;
}

P-0147

在这里插入图片描述

#include<stdio.h>
int main(){
    int a,b;
    int sum=0;
    scanf("%d ",&a);
    while(a!=0){
        if(a%2!=0){
            sum=sum+a;
        }
        scanf("%d ",&a);
    }
    printf("%d",sum);
    return 0;
}

P-0149

在这里插入图片描述

#include<stdio.h>
int main(){
    int n,flag=1;
    double sum=0;
    scanf("%d",&n);
    for(double i=1;i<=n;i++){
        sum=sum+flag*(i/(2*i-1));
        flag*=-1;
    }
    printf("%.3f",sum);
    return 0;
}

P-0150

在这里插入图片描述

#include<stdio.h>
int main(){
    int x;
    scanf("%d",&x);
    if(x<1){
        printf("%d",x);
    }else if(x>=1&&x<10){
        printf("%d",2*x-1);
    }else{
        printf("%d",3*x-11);
    }
    return 0;
}

P-0151

在这里插入图片描述

#include<stdio.h>
int main(){
    double i;
    double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
    scanf("%lf",&i);
    bonus1=100000*0.1;
    bonus2=bonus1+100000*0.075;
    bonus4=bonus2+200000*0.05;
    bonus6=bonus4+200000*0.03;
    bonus10=bonus6+400000*0.015;
    if(i<=100000) {
        bonus=i*0.1;
    } else if(i<=200000) {
        bonus=bonus1+(i-100000)*0.075;
    } else if(i<=400000) {
        bonus=bonus2+(i-200000)*0.05;
    } else if(i<=600000) {
        bonus=bonus4+(i-400000)*0.03;
    } else if(i<=1000000) {
        bonus=bonus6+(i-600000)*0.015;
    } else if(i>1000000) {
        bonus=bonus10+(i-1000000)*0.01;
    }
    printf("%.2lf",bonus);
    return 0;
}

P-0155

在这里插入图片描述

#include<stdio.h>
int main(){
    unsigned int n;
    int shit=1;
    int peach=0;
    scanf("%u",&n);
    printf("%d ",n);
    if(n>0&&n<=10){
        for(int i=1;i<=n;i++){
            shit*=i;
            peach+=shit;
        }
        printf("%d ",shit);
        printf("%d",peach);
    }else if(n==0){
        printf("%d %d",1,1);
    }
    
    return 0;
}

P-0156

在这里插入图片描述

#include<stdio.h>
int main(){
    int count=0;
    for(int i=100;i<=500;i++){
        if(i%77!=0&&(i%7==0||i%11== 0)){
            count++;
        }
    }
    printf("%d",count);
    return 0;
}

P-0157

在这里插入图片描述

#include<stdio.h>
int main(){
    int n,i=1;
    int sum=0;
    scanf("%d",&n);
    while(i<=n){
        sum+=i;
        i++;
    }
    printf("%d",sum);
    return 0;
}

P-0161

在这里插入图片描述

#include<stdio.h>
int main(){
    int n;
    int c1=0,c2=0,c3=0,c4=0,c5=0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        if(i%2!=0){
            c1++;
        }else if(i%2==0){
            c2++;
        }
        if(i%3==0)c3++;
        if(i%5==0)c4++;
        if(i%7==0)c5++;
    }
    printf("%d %d %d %d %d",c1,c2,c3,c4,c5);
    return 0;
}

P-0177

在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main(){
    char str[101]={'\0'};
    int sum=0;
    gets(str);//scanf("%s",&str);scanf不行
    //因为scanf不能输入空格,gets可以接收空格,估计是xdoj例子里面有一个输入了空格
    for(int i=0;str[i]!='\0';i++){
        sum+=(int)str[i];//算出十进制的合
    }
    //再转化为2进制,取后面一字节,也就是后八位
    printf("%d",sum&255);
    //(255二进制是1111 1111 只有后八位是1,& 运算后sum只保留了二进制的后八位,再用%d输出后变成了10进制)
    return 0;
}

P-0183

在这里插入图片描述

#include<stdio.h>
int GreatCommonDivsior(int a,int b){
    int r=a%b;
    while(r!=0){
        a=b;
        b=r;
        r=a%b;
    }
    return b;
}
int main(){
    int a,b;
    scanf("%d%d",&a,&b);
    //最小公倍数=两数的乘积 除 最大公约数
    printf("%d %d",GreatCommonDivsior(a,b),a*b/GreatCommonDivsior(a,b));
    return 0;
}

P-0185

在这里插入图片描述

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

P-0189

在这里插入图片描述

#include<stdio.h>
int main(){
    double s=100,h=50;
    int n;
    scanf("%d",&n);
    for(int i=1;i<n;i++){
        s+=2*h;
        h*=0.5;
    }
    printf("S=%.3lf h=%.3lf",s,h);
    return 0;
}

P-0196

在这里插入图片描述

#include<stdio.h>
int main(){
    int i,j,k;
  char n;
  scanf("%c",&n);
  for(i=65;i<=n;i++){//大写A是65,n-i表示行数
    for(j=n-i;j>0;j--){//空格的个数是递减的
      printf(" ");
    }
    for(k=65;k<=i;k++){//从A开始正向输出 ABCDE...
      printf("%c",k);
    }
    for(k=i-1;k>=65;k--){//从中间的字母开始反向输出 ...EDCBA
      printf("%c",k);
    }
    printf("\n");//最外层结束一次,换一次行
  }
    return 0;
}

P-0249

在这里插入图片描述

#include<stdio.h>
int main(){
    int n,i;
    scanf("%d",&n);
    int t=n;
    for(i=2;i<=t/2;i++){//因数不超一半,1肯定是因数,直接跳过,从2始 从小到大找
    //不用i<=n/2的原因是下面的操作会改变n的值
        while(n%i==0){
            printf("%d",i);
            n/=i;//直接除以因数i
            if(n!=1){
                printf("*");//不是1表示 仍有因数,输出乘号
            }
        }
    }
    return 0;
}

P-0298

在这里插入图片描述

#include<stdio.h>
int main(){
    int a,b,i,j,min,t;
    scanf("%d%d",&a,&b);
    int num[4]={
        (a+b)*(a+b),(a-b)*(a-b),
        a*a+b*b,a*a-b*b
    };
    for(i=0;i<3;i++){
        for(j=i+1,min=i;j<4;j++){
            if(num[min]>num[j]){
                min=j;
            }
        }
        if(min!=i){
            t=num[min];
            num[min]=num[i];
            num[i]=t;
        }
    }
    printf("%d %d",num[3],num[0]);
    return 0;
}

P-0299

在这里插入图片描述

#include <stdio.h>
#include <math.h>
int main(){
    int p,c;
    int t;
    scanf("%d",&p);
    t=(p-1)/1e5;
    switch(t){
    case 0:
        c=p*0.1;
        break;
    case 1:
        c=(p-1e5)*0.075+1e5*0.1;
        break;
    case 2:
    case 3:
        c=(p-2e5)*0.05+1e5*0.1+1e5*0.075;
        break;
    case 4:
    case 5:
        c=(p-4e5)*0.03+1e5*0.1+1e5*0.075+2e5*0.05;
        break;
    case 6:
    case 7:
    case 8:
    case 9:
        c=(p-6e5)*0.015+1e5*0.1+1e5*0.075+2e5*0.05+2e5*0.03;
        break;
    default:
        c=(p-1e6)*0.01+1e5*0.1+1e5*0.075+2e5*0.05+2e5*0.03+4e5*0.015;
    }
    printf("%d\n",c);
    return 0;
}

P-0300

在这里插入图片描述

#include<stdio.h>
int main(){
    int n;
    int count=0;
    scanf("%d",&n);
    if(n!=0){
        while(n<=999999999&&n>0){
            n/=10;
            count++;
        }
        printf("%d",count);
    }else{//没0的情况会只有75分
        printf("%d",1);
    }
    return 0;
}

P-0301

在这里插入图片描述

#include<stdio.h>
void Sum(int a,int anum[]){
    int count=1;
    int sum=1;
    for(int i=2;i<=a/2;i++){
        if(a%i==0){
            sum+=i;
            count++;
        }
    }
    anum[0]=sum;
    anum[1]=count;
}
int main(){
    int a,b;
    int anum[2];
    int bnum[2];
    scanf("%d%d",&a,&b);
    Sum(a,anum);
    Sum(b,bnum);
    if(a==bnum[0]&&b==anum[0]){
        printf("yes %d %d",anum[1],bnum[1]);
    }else{
        printf("no %d %d",anum[1],bnum[1]);
    }
    return 0;
}

P-0302

在这里插入图片描述

#include<stdio.h>
#include<math.h>
int isPrimenum(int j){//判断j是不是素数
    int flag=1;
    for(int i=2;i<=sqrt((double)j);i++){//sqrt函数的参数要是实数
        if(j%i==0){
            flag=0;
            break;
        }
    }
    if(flag){
        return flag;
    }
    return 0;
}
void ProducePrimeNums(int prnums[],int p){
    int i=0;
    for(int j=2;i<p+10;j++){//判断j是不是素数
        if(isPrimenum(j)){
            prnums[i++]=j;
        }
    }
}
int main(){
    int prnums[150];//素数数组
    int p,sum=0;
    scanf("%d",&p);
    ProducePrimeNums(prnums,p);//找出p+10个素数,并存到数组里
    for(int i=p-1;i<p+10;i++){
        sum+=prnums[i];
    }
    printf("%d",sum);
    return 0;
}

最后

感兴趣的可以关注我的微信公众号,第一时间收到动态
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值