杭电acm keys ---C语言

本文提供了一系列C语言编程练习题的解决方案,包括简单的数学运算、条件判断、循环操作及数组处理等内容,适合初学者实践并提高编程能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1089:

#include<stdio.h>
int main()
{
    int a,b,sum;
    while (scanf("%d %d", &a,&b) != EOF )
    {

         sum=a+b;
            printf("%d\n",a+b);
    }
    return 0;
}

1090:

#include<stdio.h>
int main()
{
    int a,b,sum,i,j;
    while (scanf("%d", &i) != EOF )
    {
    for (j = 0 ;j < i ; j++)
    {
      scanf("%d %d",&a,&b);
    sum=a+b;
    printf("%d\n",a+b);
    }
    break;
    }
    return 0;
}

1091:

#include<stdio.h>
int main()
{
    int a,b,sum;
    while (scanf("%d %d", &a,&b) != EOF )
    {

        if ( a == 0 && b == 0)
        break;
        else
        {
            sum=a+b;
            printf("%d\n",a+b);
        }
    }
    return 0;
}
1902:

#include<stdio.h>
int main()
{
    int a,b,i,j;
    int sum = 0;
    while (scanf("%d", &i) != EOF )
    {
    if (i != 0)
    {
    for (j = 0 ;j < i ; j++)
    {
      scanf("%d",&a);
      sum += a;
    }
    printf("%d\n",sum);
    sum = 0;
    }
    else break;
    }
    return 0;
}
1093:

#include<stdio.h>
int main()
{
    int a,b,i,j,k,l;
    int sum = 0;
    while (scanf("%d", &j) != EOF )
    {
    for ( k = 0; k < j; k++ )
    {
     scanf("%d",&i);
     for (l = 0 ;l < i ; l++)
    {
      scanf("%d",&a);
      sum += a;
    }
    printf("%d\n",sum);
     sum = 0;
     }
    }
    return 0;
}

1094:

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

1720:

#include<stdio.h>

void main()
{
 int a,b;
 while(scanf("%x %x",&a ,&b) != EOF)  //16进制输入
 {
     printf("%d\n", a+b);
 }

}
 

1095:

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

#include<stdio.h>
int main()
{
    int M,N,i,j,a;
    int sum = 0;
    while (scanf("%d", &N) != EOF )
    {
        for (i = 0; i< N; i++)
        {
        scanf("%d",&M);
        for (j = 0; j< M; j++)
        {
            scanf("%d",&a);
            sum += a;
        }

    printf("%d\n",sum);
    if( i < N-1)
    printf("\n");

    sum = 0;
     }
    }
    return 0;
}
 

 

 

2001年-----计算两坐标间的距离

#include <stdio.h>
#include <math.h>
int main()
{
  double x1,x2,y1,y2,l;
  while(scanf(“%lf%lf%lf%lf”,&x1,&y1,&x2,&y2)!= EOF)//注:此处​​的x1,y1,x2,y2顺序别写错,我就在此跳了坑
  {
    l = sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
 的printf( “%2LF \ n”个,升);
 
  }
return 0;

}

 

 

2003 ------求绝对值

#include <stdio.h>
#include <math.h>
int main()
{
  double a,b;
  while(scanf(“%lf”,&a)!= EOF)
  {
    b = fabs(a);
 的printf( “%0.2F \ n”个,B);
 
  }
return 0;

}

2004年----------成绩转换

方法一:我跳的坑:题目要求用t,而我之前一直用的i,题目要看清尴尬

#include <stdio.h>  
int main()  
{  
    int t;  
    while(scanf(“%d”,&t)!= EOF)  
    {  
        if(90 <= t && t <= 100)printf(“%c \ n”,“A”);  
        否则如果(80 <= t && t <= 89)printf(“%c \ n”,'B');  
        否则如果(70 <= t && t <= 79)printf(“%c \ n”,'C');  
        否则如果(60 <= t && t <= 69)printf(“%c \ n”,'D');  
        否则if(0 <= t && t <= 59)printf(“%c \ n”,'E');  
        else printf(“得分错误!\ n”);  
    }  
    return 0;  
}  

方法二:

#include <stdio.h>  
int main()  
{  
    int t;  
    while(scanf(“%d”,&t)!= EOF)  
    {  
        if(90 <= t && t <= 100)printf(“%c \ n”,“A”);  
        否则如果(80 <= t && t <= 89)printf(“%c \ n”,'B');  
        否则如果(70 <= t && t <= 79)printf(“%c \ n”,'C');  
        否则如果(60 <= t && t <= 69)printf(“%c \ n”,'D');  
        否则if(0 <= t && t <= 59)printf(“%c \ n”,'E');  
        else printf(“得分错误!\ n”);  
    }  
    return 0;  
}  

2005 -----------第几天

#include <stdio.h> //这个方法有点蠢在编译器上运行正确,但在网站上是错误答案
   int Get_Day(int year,int month,int day)
  {
 int Day; 
   if((年%4 == 0 &&年%100!= 0)||(年%400 == 0))
    {
    if(month == 2)
    Day = 29;
    if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
    day = 31;
    if(month == 4 || month == 6 || month == 8 || month == 9 || month == 11)
    day = 30;
    if(month == 0)
    Day = 0;
    }
 else
    {
     if(month == 0)
     Day = 0;
     如果(月== 2)
     日= 28;
     if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
     day = 31;
     if(month == 4 || month == 6 || month == 8 || month == 9 || month == 11)
     day = 30;
    }
    回天;
 }
 int main()
 {
    int year,month,day,days,i;
   
 int day_data = 0;
    while(scanf(“%d /%d /%d”,&year,&month,&day)!= EOF)
    {
        for(i = 1; i <month; i ++)
        {
        days = Get_Day(year,month-i,day) );
        day_data + =天;
    }
       day_data = day_data + day;
    的printf( “%d \ n”个,day_data);
    day_data = 0;
    }

 返回0;

}

方法二

   #include <stdio.h>
int main()
{
 int year,month,day;
 int arry [13] = {31,28,31,30,31,30,31,31,30,31,30,31};
 while(~scanf(“%d /%d /%d”,&year,&month,&day))
 {
  int num = 0;
  int i;
  for(i = 0; i <month-1; i ++)
   num + = arry [i];
  if(年%400 == 0 ||(年%4 == 0 &&年%100!= 0))
  {
   if(month> 2)
    num + = day + 1;
   else
    num + = day;
  }
  else
   num + = day;
  的printf( “%d \ n”个,NUM);
 }
 return 0;
}

 

2006年-----求奇数的乘积     (小总结:与2005年一样,在最后都将要打印的值在printf的后回归初始值)

 

#include <stdio.h>
int main()
{
 int n,i,a,temp;
 int sub = 1;
while(scanf(“%d”,&n)!= EOF)
{
 for(i = 0; i <n; i ++)
 {
  scanf(“%d”,&a);
 
  if(a%2!= 0)
  {
   temp = a;
   子* =温度;
  }
  
  }
 printf的( “%d \ n”个,子);
 子= 1;
}

 返回0;
}

2007 --------平方与立方和  

错误答案://不知哪有问题,编译器通过,官网未通过

 

 

 

的#include <stdio.h>中

 

int main()

{

 int m,n,i;
 int x = 0,y = 0;
 while(scanf(“%d%d”,&m,&n)!= EOF)
 {
   for(i = m; i <= n; i ++)
   {
     if(m%2 == 0)
      x + = m * m;
  否则
   y + = m * m * m;
  x++;
    }
   printf(“%d%d \ n”,x,y);
   X = 0;
   Y = 0;
 }
 eturn 0;

}

正确答案如下:(与错误答案比较,自己欠考虑,少考虑了吗M> N的情况)

 

#include <stdio.h>
int main()
{
 int m,n,i;
 int x = 0,y = 0;
 while(scanf(“%d%d”,&m,&n)!= EOF)
 {
  if(m <= n)
  {
   for(i = m; i <= n; i ++)
   {
     if(m%2 == 0) )
      x + = m * m;
  否则
   y + = m * m * m;
  米++;
   }
   }
  否则如果(M> N)
  {
   对于(i = N时,我<=米;我++)
   {
     如果(N%2 == 0)
      X + = N * N;
  否则
   y + = n * n * n;
  的n ++;
   }
   }

   printf(“%d%d \ n”,x,y);
   X = 0;
   Y = 0;
 }
 

返回0;
}

 

 

 

 

 

2008 ----------数值统计

 

#include <stdio.h>
int main()
{
 int n,i;
 int a = 0,b = 0,c = 0;
 双数;
 while(scanf(“%d”,&n)!= EOF)
 {
   if(n == 0)break;
   for(i = 0; i <n; i ++)
   {
    scanf(“ %lf”,&num);
    if(num <0)
     a + = 1;
     if(num == 0)
     b + = 1;
    if(num> 0)
     c + = 1;
  
   }
   printf(“%d%d%d \ n”,a,b,c);
   一个= 0;
   B = 0;
   C = 0;

 }

返回0;
}

 

2009年---------数列求和

 

方法一(利用递归算法)

 

#include <stdio.h>
#include <math.h>
 int m,n,i;
 double arr(int a);
int main()
{
  double sum = 0;       //此处总和= 0若在同时循环中定义,

                                   则printf的语句后的总和= 0可去掉。

while(scanf(“%d%d”,&m,&n)!= EOF)
  { 

    for(i = 1; i <= n; i ++)  
    sum + = arr(i);
 的printf( “%0.2lf \ n”个,总和);
 总和= 0;
  }
    return 0;
 }
double arr(int a)
{
  if(a == 1)
   return m;
  else
   return sqrt(arr(a-1));
}

 

 

2010---水仙花

#include<stdio.h>
int main()
{
    int m,n,i,a,b,c,s,w,j,d;
    while(scanf("%d %d",&m,&n) != EOF)
    {
        d = 0;
        j = 1;
       // if ((m >= 100) && (m <= n) && (n<=999))
       if (m > n)
       {
           w = m;
           m = n;
           n = w;
       }
       else ;

           for (i = m; i <= n; i++)
           {
               a = i / 100;
               b = (i / 10) % 10;
               c = i % 10;
               s = a*a*a + b*b*b + c*c*c;
               if (i == s)
               {
                   if (d != 0)
                    printf (" ");
                   printf("%d",i);
                   d = d+1;
                   j = j+1;
               }
           }
               if (j == 1)
                printf ("no\n");
               else
                printf("\n");
    }
    return 0;
}
 

 

 

 

2011 ----多项式求和

 

#include <stdio.h>
int main()
{
 int a [110];
 双s;
 int i,n,j,f;
 的scanf( “%d”,&N);
 for(i = 1; i <= n; i ++)
        scanf(“%d”,&a [i]);
 for(i = 1; i <= n; i ++)
 {
  f = 1;
  s = 0;
  for(j = 1; j <= a [i]; j ++)
  {
   s = s + 1.0 / j * f;
   F = -f;
  }
  printf(“%。2f \ n”,s);
 }
 return 0;
}

 

2013 ------蟠桃计

 

#include <stdio.h>
int main()
{
  int peach;
  int i,n;
  while(scanf(“%d”,&n)!= EOF)
  {
  peach = 1;
    for(i = 1; i <n; i ++)
 { 
   peach = 2 *(peach + 1);
 }
  printf(“%d \ n”,桃子); 
  }
return 0;
}
2014 --------评委打分  //先输入第一个分数作为最值的标志,之后输入的分数判断值与最值得关系,累加所有分数的值,并找到最值将最值减去,最后求平均值。

 

#include <stdio.h>
int main()
{
  int n,i,score [110],max,min,sum;
  双倍平均;
  while(scanf(“%d”,&n)!= EOF)
  {
      scanf(“%d”,&score [0]);
      总和= MAX =最小=得分[0];
      for(i = 1; i <n; i ++)
 {
  scanf(“%d”,&score [i]);
  总和+ =得分[I];
 if(min> score [i])
 {
  min = score [i];
     
 }
 else if(max <score [i])
 {
  max = score [i];
 
 }
   
 }
  总和=总和-最大值-最小值;
 average = (sum + 0.0)/(n-2); //此处(总和+ 0.0)使得除得结果有小鼠值保留
 的printf( “%0.2lf \ n”个,平均);
  }
  return 0;
}
2016 --------数据交换

 

#include <stdio.h>
int main()
{
 int n,i,tmp,j;
 int a [100];
 while(scanf(“%d”,&n)!= EOF)
 {
  if(n == 0)
  break;
 的scanf( “%d”,&一个[0]);
  J = 0; //记录数据的位置
  for(i = 1; i <n; i ++)
  {
   scanf(“%d”,&a [i]);
        if(a [j]> a [i])
     j = i; //位置交换
 }
     tmp = a [j];
  一个[J] = A [0]; //数据交换
  一个[0] = TMP;   
  for(i = 0; i <n; i ++)
  {
   if(i <n-1)
  printf(“%d”,a [i]); 
   else
 printf(“%d \ n”,a [i]);

  }
 }
  返回0;
 }

2039:

#include<stdio.h>

void main()
{
   double A,B,C;
   int i,j;
   while (scanf("%d",&i) != EOF )
   {
       for (j = 0; j < i; j++)
       {
           scanf("%lf %lf %lf",&A,&B,&C);
           if ( (A + B) > C && A + C > B && B + C > A)
            printf("YES\n");
          else printf("NO\n");

       }
   }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值