C语言网刷题记录

作者:会敲代码的Steve

座右铭:博学笃志,切问静思。

大家好久不见啊,一看时间我已经好久没发文章了,最近在刷OJ题和学习;就没那么多心思把时间花在写文章上了,我对此感到很抱歉,本文呢,想总结一下自己最近做过的题目,分享心得。

正文起:

目录

作者:会敲代码的Steve

1. 2830: 数字统计

2. 2240: 蓝桥杯算法训练-删除数组零元素

3.  数字的处理与判断

4.1036 :指针传址调用 -C语言

5.  2804: 与指定数字相同的数的个数

6. 2798: 整数序列的元素最大跨度值

7.2799: 奥运奖牌计数

8. 2819: 数字反转

9.2883: 矩阵加法

10.  2823: 计算分数加减表达式的值


1. 2830: 数字统计

C语言网刷题记录_第1张图片

 分析:

题目是要求数字2出现的次数,那我们可以对大于9的数字取出个位和十位来判断是否是2,如果是2的话,那计数器就+1;具体呢就这个逻辑,那我们来看代码怎么实现。

#include
int main(){
    int n,x,i,count=0,t;
    scanf("%d %d",&x,&n);
    for(;x<=n;x++){
        int j=x;
        while(j>0){
            t=j%10;
            if(t==2)
                count++;
            j=j/10;
        }
    }
    printf("%d",count);
}

这道题就写完了。 

2. 2240: 蓝桥杯算法训练-删除数组零元素

C语言网刷题记录_第2张图片

 分析:

题目要求是定义一个函数Compactlntegers,来删除数组中的0,让元素向前面移动;知道条件,那就很好办了,先定义函数Compactlntegers,分别传入数组和数组的长度,然后进行遍历;如果是0的话后面的数字就等于前面的数字(覆盖),同时不等于0时计数器+1,函数返回值就是删除0后数组元素的数量,主函数内输出结果,这题就做完了。

#include 
void CompactIntegers();
int main() {
   int t = 0;
  int a[100] = {0};
  int b[100] = {0};
  int n, count = 0;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", a + i);
    if(a[i]!=0)
    {
       a[t]=a[i];
       t++;
    }
  }
    printf("%d\n",t);
   for(int i = 0;i

3.  数字的处理与判断

C语言网刷题记录_第3张图片

 分析:

题目很简单,就是分别求几位数和分离每一位数字,然后就是逆序打印数字。

我们上代码:

#include
int count(int y);
void print(int x);
void func(int z);
int main()
{
    int a;
    scanf("%d",&a);
     printf("%d\n",count(a));
     print(a);
     printf("\n");
     func(a);
     return 0;
}
void print(int x)
{
   if(x>9)
   {
       print(x/10);
   }
   printf("%d ",x%10);
}
int count(int y)
{
    int count = 0;
while(y!=0)
    {
        y= y/10;
        count++;//这里是求几位数
    }
   return count;
}
void func(int z)
{
   if(z<10)
   {
       printf("%d",z);
       return;
   }
  printf("%d",z%10);
  func(z/10);
}

 

4.1036 :指针传址调用 -C语言

C语言网刷题记录_第4张图片

 分析:

这道题主要是需要会指针的传引用,指针交换变量,上代码!

#include
int main()
{
     int swap(int *a,int *b);
     int a,b;
     scanf("%d%d",&a,&b);
     int *p1=&a;
     int *p2=&b;
     swap(p1,p2);
     printf("%d %d",a,b);
     return 0;
}
int swap(int *a,int *b)
{
    int tmp;
    tmp=*a;
    *a=*b;
    *b=tmp;
    return 0;
}

不可能通过执行调用函数来改变实参指针变量的值,但是可以改变实参指针变量所知变量的值 

5.  2804: 与指定数字相同的数的个数

C语言网刷题记录_第5张图片

 分析:

这道题可以很好的用数组来做,首先按照题目要求输入N,再输入N个数字;在for循环内遍历,如果是指定的数字m那么计数器就不断+1,直到遍历完整个数组为止。

#include
int main()
{
   int arr[100]={0};
   int n,i;
   int cnt,count,cut;
   cnt = 0,count = 0,cut = 0;
   scanf("%d",&n);
   for(i = 0;i

6. 2798: 整数序列的元素最大跨度值

C语言网刷题记录_第6张图片

 分析:

这道题依旧是数组来解决,我们首先定义最大值(max)和最小值(min),然后把这两个值定义为数组第一个元素,在数组内遍历,如果当前数字比max或min小那么max和min就是该数字。结果相减即可得到。我们来看代码:

#include 
#include 
#include 
#define N 1000
int main() {
  int arr[N] = {0};
  int n, max, min;
  int i = 0;
  int sum = 0;
  scanf("%d", &n);
  for (i = 0; i < n;i++) {
    scanf("%d", &arr[i]);
  }
  max = 0, min = 0;
  max = arr[0];
  min = arr[0];
  for (i = 0; i < n; i++) {
    if (maxarr[i]) {
      min = arr[i];
    }
  }
  sum = max - min;
  printf("%d",sum);
}

7.2799: 奥运奖牌计数

C语言网刷题记录_第7张图片

分析:

这次就用不上数组了哦,定义三个变量输入,四个sum,依次相加输出就做完了,但是不能忽略的一点是不要忘记初始化变量。

#include
#include
int main()
{
  int n;
   int a,b,c;
   a = 0,b = 0,c = 0;
  int sum1,sum2,sum3;
  sum1 = 0,sum2 = 0,sum3 = 0;
  int sum = 0;
  scanf("%d",&n);
   for(int i = 1;i<=n;i++)
   {
      scanf("%d%d%d",&a,&b,&c);
      sum1+=a;
      sum2+=b;
      sum3+=c;
   }
   printf("%d %d %d %d\n",sum1,sum2,sum3,sum1+sum2+sum3);
return 0;
}

8. 2819: 数字反转

C语言网刷题记录_第8张图片

 分析:

这道题主要是分解每一位数字然后再次逆序打印出来,具体用while循环实现。

#include
void kr(int n);
int main()
{
    
    int n;
    scanf("%d",&n);
    kr(n);
}
void kr(int n)
{
  int s;
    s = 0;
    while(n!=0){
s=s*10+n%10;
 
n=n/10;
 
}
    printf("%d",s);
 
}

9.2883: 矩阵加法

C语言网刷题记录_第9张图片

 分析:

定义三个数组,两个数组全部输入完成后相加后赋值个第三个数组,之后打印即可。

#include
int main()
{
    int arr[100][100];
    int brr[100][100];
    int crr[100][100];
    int a,b,i,j;
    scanf("%d%d",&a,&b);
    for(i = 0;i

10.  2823: 计算分数加减表达式的值

 

C语言网刷题记录_第10张图片

分析:

重点在于我们需要定义一个变量来控制正负,每循环一次就颠倒一次正负。

下面是代码:

#include
int main()
{
  int i,j;
  int  sign = 1;
  double sum = 0;
  scanf("%d",&j);
  for(i = 1;i<=j;i++)
  { 
    
     sum+=(double)sign*1/i;
     sign = -sign;
  }
   printf("%.4lf",sum);
  return 0;
}

你可能感兴趣的:(c语言,开发语言)