浅浅刷一下题【c语言】

水仙花数是一个n位数,它的每个位的n次方之和等于本身

int main()
{
	int i = 0;
	for (i = 0; i <= 1000000; i++)
	{
		//判断i是否为水仙花数
		//1. 计算出i是几位数 - n
		int n = 1;
		int tmp = i;
		while (tmp>9)//153
		{
			tmp /= 10;
			n++;//1 2 3
		}
		//2. 计算i的十进制的每一位的n次方之和,判断是否等于i本身
		tmp = i;
		int sum = 0;
		while (tmp)
		{
			sum += (int)pow(tmp % 10, n);
			tmp /= 10;
		}
		if (sum == i)
		{
			printf("%d ", i);
		}
	}

	return 0;

我们假设改数位153
思路:首先我们得求出有几位数
其次将153 得3^3 + 5^3 +1 ^3相加


题目:**求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,


题目:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水(编程实现)。

#include
int main()
{
	int money = 0;
	scanf("%d", &money);//20
	int total = 0;
	int epmty = 0;
	total += money;
	epmty = money;
	while (epmty >=2)
	{
		
		total += epmty / 2 + epmty % 2;
		epmty = epmty / 2;
	}
	printf("%d", total);
	return 0;
}

浅浅刷一下题【c语言】_第1张图片

题目:https://www.nowcoder.com/practice/f5a29bacfc514e5a935723857e1245e4?tpId=107&&tqId=33387&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

int main( )
{
    int n =0 ;
    scanf("%d",&n);
    //int arr[n][n];
    int arr [10][10];
  int i =0 ;
  for ( i= 0; i< n ; i ++)
  {
      int j =0 ;
      for ( j =0 ; j<n ; j ++)
      {
          scanf( "%d",&arr[i][j]);
      }
  }
     int flag =1 ;//上三角矩阵
      for ( i =0 ; i<n; i ++)
      {
          int j =0 ;
          for (j =0 ;j<i ; j ++)
          {
              if( arr[i][j]!=0)
              {
                  flag =0 ;
                  goto end ;
              }
          }
      }
      end :
      if (flag ==1  )
      {
 printf("YES");
      }
      else 
      printf( "NO");
             
    return 0 ;
}

题目:https://www.nowcoder.com/practice/2f058b1e89ae43f7ab650c0fd0b71fa8?tpId=107&&tqId=33386&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

int main()
{
    int n =0 ;
    int m =0 ;
    scanf("%d %d",&n,&m);
    int arr1[n][m];
    int arr2[n][m];
  int i =0;
  int j =0 ;
  for ( i =0 ;i <n ; i++)
  {
      for ( j =0 ; j <m ; j++)
      {
          scanf ("%d",&arr1[i][j]);
      }
  }

    for ( i =0 ;i <n ; i++)
  {
      for ( j =0 ; j <m ; j++)
      {
          scanf ("%d",&arr2[i][j]);
      }
  }
    int  flag = 1;
  for ( i=0 ;i <n; i ++)
  {
      for ( j=0 ; j< m ; j++)
      {
          if( arr1[i][j]!=arr2[i][j])
          {
              flag =0;
              goto end;
          }
      }
  }
  end : 
  if(flag==1)
  {
      printf("Yes");
  }
  else 
  printf( "No");
    return 0 ;
}

题目:题目:
输入一个整数数组,实现一个函数,
来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
所有偶数位于数组的后半部分。

 void move(int arr[], int sz)
{
	 int left = 0;
	 int right = sz - 1;
	 //找偶数
	 while (left < right)
	 {
		 while (left < right && arr[left] % 2 == 1)
		 {
			 left++;
		 }
		 //找奇数 
		 while (left < right && arr[right] % 2 == 0)
		 {
			 right--;
		 }
		 if (left < right)
		 {
			 int tmp = arr[left];
			 arr[left] = arr[right];
			 arr[right] = tmp;
			 left++;
			 right--;
		 }
	 }
}   
int main()
 {
	int arr[10] = {0};
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		scanf("%d", &arr[i]);
	}
	move(arr, sz);
	for (i = 0; i < sz; i++)
	{
		printf("%d", arr[i]);
	}
	return 0;
}

浅浅刷一下题【c语言】_第2张图片

题目:https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897?tpId=107&&tqId=33381&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

#include 

int main( )
{
    int n= 0;
    int m =0 ;
    scanf("%d %d",&n,&m);
    int arr1[n];
    int arr2[m];
    int arr3[n+m];
    int i =0 ;
    for (i=0 ; i <n; i++)
    {
   scanf("%d",&arr1[i]);
    }
      for (i=0 ; i <m; i++)
    {
   scanf("%d",&arr2[i]);
    }
   i = 0;
    int j = 0;
    int k = 0;

   while(i <n && j <m )
{
     if( arr1[i]>arr2[j])
    {
         arr3[k]=arr2[j];
        j++;
        k++;
    }
    else 
    {
        arr3[k]=arr1[i];
        i++;
        k++;
    }
}

//把arr2剩下的元素放在arr3中

 if ( i==n)
 {
     while(j<m)
     
     {
         arr3[k]=arr2[j];
     j++;
      k++;
     }
 }
//把arr1剩下的元素放在arr3中
  else
 {   
     while(i<n)
     {
          arr3[k]=arr1[i];
     k++;
     i++;
     }
 }
    for( k = 0 ;k<n+m; k ++)
    {
        printf("%d ",arr3[k]);
    }
    return 0 ;
}

浅浅刷一下题【c语言】_第3张图片

arr1 中的元素和arr2中的元素进行比较,较小的放进arr3中,注意一个细节 如果arr1提前遍历完,那就把arr2剩下的元素放进arr3中,如果arr2中的元素提前遍历完,就把arr1中剩下的元素放进arr3中


题目:https://www.nowcoder.com/practice/22e87f8a8d764a6582710f38d1b40c6e?tpId=107&&tqId=33377&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking

#include
int main() {
    int n = 0;
    scanf("%d", &n);
    int arr[1000] = { 0 };
    int i = 0;
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);

    }
    int flag1 = 0; //升序
    int flag2 = 0; //降序

    for (i = 1; i < n; i++) 
  {
        if (arr[i - 1] < arr[i])
        {
            flag1 = 1; //升序
        }
        else 
         {
            flag2 = 1; //降序
        }
    }
    if (flag1+flag2 == 2) 
 {
        printf("unsorted\n");
    }
    else
    {
        printf("sorted\n");
    }
    return 0;
}

浅浅刷一下题【c语言】_第4张图片

我们定义一个变量flag1 表示升序,flag2表示降序。


如果你觉得这篇文章对你有帮助,不妨动动手指给点赞收藏加转发,给鄃鳕一个大大的关注
你们的每一次支持都将转化为我前进的动力!!!

你可能感兴趣的:(c语言,算法,数据结构)