计算机二级C语言的注意事项及相应真题-5-程序设计

news2024/9/22 23:34:51

目录

    • 41.计算下列级数和,和值由函数值返回
    • 42.统计出x所指数组中能被e整除的所有元素,这些元素的和通过函数值返回主函数,元素个数通过形参num返回主函数
    • 43.使数组右上三角元素中的值乘以m
    • 44.将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上
    • 45.找出用1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数,然后把这些三位数按从小到大的顺序依次存入相应的数组xxx中,符合条件的个数由函数值返回
    • 46.将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上
    • 47.给定一个整数n(n<10000),如果n加上100后是一个完全平方数(所谓“完全平方数”,就是开方后的结果是整数的数),并且n加上268也是一个完全平方数,则函数值返回1,否则返回0
    • 48.将形参s所指的字符串放入形参a所指的字符数组中,使a中存放同样的字符串
    • 49.找出dp所指数组中的最小或最大值,并与其第1个元素交换。形参n为元素的个数,形参upordown为查找标志:值为0时找最小值;值为1时找最大值
    • 50.验证参数n是否可以分解成2个素数相乘,是则返回1,否则返回0,并通过指针变更x、y返回分解后的2个素数值,要求*x < *y

41.计算下列级数和,和值由函数值返回

写函数fun,它的功能是计算下列级数和,和值由函数值返回。
请添加图片描述

例如,当n=10,x=0.3时,函数值为1.349859。

注意:部分源程序存在文件prog1.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

prog1.c:

#include <stdio.h>
#include <math.h>
double fun(double x , int  n)
{



}

main()
{  void NONO ();
   printf("%f\n", fun(0.3,10));
   NONO();
  getchar();
}

void NONO ()//系统用于评分测试的函数
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *fp, *wf ;
  int i, n ;
  double s, x ;

  fp = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {//有10组测试数据
    fscanf(fp, "%lf,%d", &x, &n) ;//从文件指针fp指向的文件in.dat获取n,x
    s = fun(x, n) ;
    fprintf(wf, "%f\n", s) ;//结果输出到文件wf指向的文件out.dat中
  }
  fclose(fp) ;//关闭
  fclose(wf) ;
}


解题思路:
这题可以看到代码给了头文件#include<math.h>,题目也没说不可以用函数,所以对于公式中x的n次方,可以用pow()函数来处理

double pow(double x, double y)  //返回x的y次方

如果不想用函数的话,也可以,在下面的答案也会展示出来

答案:

1.自己做的:
先展示不使用函数的吧:

#include <stdio.h>
#include <math.h>
double fun(double x , int  n)
{
 double sum=1+x,a=1,s=x;//sum初始化为前两项的和,a是分母,s是分子
 for(int i=2;i<=n;i++)
 {
  a*=i;
  s*=x;
  sum+=s/a;
 }
return sum;
}

main()
{  void NONO ();
   printf("%f\n", fun(0.3,10));
   NONO();
  getchar();
}

void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *fp, *wf ;
  int i, n ;
  double s, x ;

  fp = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(fp, "%lf,%d", &x, &n) ;
    s = fun(x, n) ;
    fprintf(wf, "%f\n", s) ;
  }
  fclose(fp) ;
  fclose(wf) ;
}


用函数:

#include <stdio.h>
#include <math.h>
double fun(double x , int  n)
{
 double sum=1,a=1;
 for(int i=1;i<=n;i++)
 {
   a*=i;
   sum+=pow(x,i)/a;//用函数还是要方便好多的,
 }
return sum;
}

main()
{  void NONO ();
   printf("%f\n", fun(0.3,10));
   NONO();
  getchar();
}

void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *fp, *wf ;
  int i, n ;
  double s, x ;

  fp = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(fp, "%lf,%d", &x, &n) ;
    s = fun(x, n) ;
    fprintf(wf, "%f\n", s) ;
  }
  fclose(fp) ;
  fclose(wf) ;
}


2.题库答案:

#include <stdio.h>
#include <math.h>
double fun(double x , int  n)
{ int i;
  double f=1.0,h=x;
  double s=1;
  s=s+h/f;        //他这里显然采用的是没有借助函数方式,h是分子,f是分母
  for (i=2;i<=n;i++)
  { f=f*i;      
    h=h*x;       
    s=s+h/f;
  }
 return (s);
}

main()
{  void NONO ();
   printf("%f\n", fun(0.3,10));
   NONO();
  getchar();
}

void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *fp, *wf ;
  int i, n ;
  double s, x ;

  fp = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(fp, "%lf,%d", &x, &n) ;
    s = fun(x, n) ;
    fprintf(wf, "%f\n", s) ;
  }
  fclose(fp) ;
  fclose(wf) ;
}


测试:

main函数:
在这里插入图片描述

in.dat:
在这里插入图片描述

out.dat:
在这里插入图片描述

42.统计出x所指数组中能被e整除的所有元素,这些元素的和通过函数值返回主函数,元素个数通过形参num返回主函数

请编写函数fun,其功能是:统计出x所指数组中能被e整除的所有元素,这些元素的和通

过函数值返回主函数,元素个数通过形参num返回主函数。

x所指数组的元素个数通过形参n传入。

例如:当数组x内容为1,9,8,6, 12,整数e内容为3时,输出结果应该是: sum=27, num=3

注意:部分源程序在文件PROG1. C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

PROG1. C:

#include <stdio.h>
#pragma warning(disable:4996)

int fun(int x[], int n, int e, int *num)
{



}

int main()
{  
  void NONO();
  int x[] = {1, 9, 8, 6, 12}, num=0, sum;
  sum = fun(x, 5, 3, &num);
  printf("sum=%d,num=%d\n", sum, num);
  NONO();
  return 0;
}

void NONO( )//系统用于评分测试的函数
{
	int x[100] = {1, 9, 8, 6, 12}, num, sum, i, j, count, e;
	FILE *rf, *wf;
	rf = fopen("in.dat","r");//r是打开一个只读取的文件,这个必须存在
	wf = fopen("out.dat","w");//w是创建一个用写入的空文件,如果已存在,则会重新创建一个覆盖掉
	for(i=0;i<10;i++) {//有10组测试数据
		num = 0;//num是被e整除的元素个数
		sum = 0;//sum是能被e整除的元素和
		fscanf(rf, "%d,", &count);//从文件指针rf指向的文件in.dat中
		for(j=0;j<count;j++)
			fscanf(rf,"%d,",&x[j]);//从文件指针rf指向的文件in.dat获取数组x
		fscanf(rf, "%d,", &e);//从文件指针rf指向的文件in.dat获取e
		sum = fun(x, count, e, &num);
		fprintf(wf, "sum=%d,num=%d\n", sum, num);//结果输出到文件指针wf指向的文件out.dat中
     }
     fclose(rf);//关闭
     fclose(wf);
}

解题思路:
遍历数组,x[i]%e==0筛出能被e整除的数,sum+=x[i]累加元素和,(*num)++;元素个数

答案:

1.自己做的:

#include <stdio.h>
#pragma warning(disable:4996)

int fun(int x[], int n, int e, int *num)
{
 int sum=0;
 for(int i=0;i<n;i++)//嗯,就这样
 if(x[i]%e==0)
 {
  sum+=x[i];
  (*num)++;
 }
return sum;
}

int main()
{  
  void NONO();
  int x[] = {1, 9, 8, 6, 12}, num=0, sum;
  sum = fun(x, 5, 3, &num);
  printf("sum=%d,num=%d\n", sum, num);
  NONO();
  return 0;
}

void NONO( )
{
	int x[100] = {1, 9, 8, 6, 12}, num, sum, i, j, count, e;
	FILE *rf, *wf;
	rf = fopen("in.dat","r");
	wf = fopen("out.dat","w");
	for(i=0;i<10;i++) {
		num = 0;
		sum = 0;
		fscanf(rf, "%d,", &count);
		for(j=0;j<count;j++)
			fscanf(rf,"%d,",&x[j]);
		fscanf(rf, "%d,", &e);
		sum = fun(x, count, e, &num);
		fprintf(wf, "sum=%d,num=%d\n", sum, num);
     }
     fclose(rf);
     fclose(wf);
}

2.题库答案:

#include <stdio.h>
#pragma warning(disable:4996)

int fun(int x[],int n,int e,int *num)
{
    int i,s=0;
    *num=0;//斯,忘了这个,不过main函数里已经初始化为0了
    for(i=0;i<n;i++)//大差不差
        if(x[i]%e==0)
            {s+=x[i];(*num)++;}
    return s;
}


int main()
{  
  void NONO();
  int x[] = {1, 9, 8, 6, 12}, num=0, sum;
  sum = fun(x, 5, 3, &num);
  printf("sum=%d,num=%d\n", sum, num);
  NONO();
  return 0;
}

void NONO( )
{
	int x[100] = {1, 9, 8, 6, 12}, num, sum, i, j, count, e;
	FILE *rf, *wf;
	rf = fopen("in.dat","r");
	wf = fopen("out.dat","w");
	for(i=0;i<10;i++) {
		num = 0;
		sum = 0;
		fscanf(rf, "%d,", &count);
		for(j=0;j<count;j++)
			fscanf(rf,"%d,",&x[j]);
		fscanf(rf, "%d,", &e);
		sum = fun(x, count, e, &num);
		fprintf(wf, "sum=%d,num=%d\n", sum, num);
     }
     fclose(rf);
     fclose(wf);
}

测试:

main函数:
在这里插入图片描述

in.dat:
在这里插入图片描述

out.dat:
在这里插入图片描述

43.使数组右上三角元素中的值乘以m

程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun,函数的功能

是:使数组右上三角元素中的值乘以m。例如:若m的值为2,a数组中的值为请添加图片描述
则返回主程序后a数组中的值应为请添加图片描述

注意:部分源程序存在文件prog1.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

prog1.c:

#include <stdio.h>
#include <stdlib.h>
#define  N  5
void fun ( int a[][N], int m )
{



}

main ( )
{  int  a[N][N], m, i, j;void NONO ();
   printf("***** The array *****\n");
   for ( i =0;  i<N; i++ )
   {  for ( j =0; j<N; j++ )
     {  a[i][j] = rand()%20; printf( "%4d", a[i][j] ); }//数组元素由随机数获得,范围为[0,19]
        printf("\n");
   }
   do m = rand()%10 ; while ( m>=3 );//m也由随机数获得,范围为[0,9],但这个do-while循环限制在了[0,3]
   printf("m = %4d\n",m);
   fun ( a ,m );
   printf ("THE  RESULT\n");
   for ( i =0;  i<N; i++ )
   {  for ( j =0; j<N; j++ ) printf( "%4d", a[i][j] );
      printf("\n");
   }
   NONO ( );
   getchar();
}

void NONO ()//系统用于评分测试的函数
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *rf, *wf ;
  int i, j, n, a[5][5] ;

  rf = fopen("in.dat","r") ;//r是打开一个用于读取的文件
  wf = fopen("out.dat","w") ;//w是创建一个用于写入的文件,如果已存在,则覆盖掉
  for(i = 0 ; i < 5 ; i++)//呃,就一组测试数据
  for(j = 0 ; j < 5 ; j++)
    fscanf(rf, "%d ", &a[i][j]) ;//从文件指针rf指向的文件in.dat获取数组a
  fscanf(rf, "%d", &n) ;//从文件指针rf指向的文件in.dat获取n
  fun(a, n) ;
  for ( i = 0;  i < 5; i++ ) {
    for ( j = 0; j < 5; j++ ) fprintf(wf, "%4d", a[i][j] );//结果输出到文件指针wf指向的文件out.dat中
    fprintf(wf, "\n");//加个换行符于下一组测试结果隔开
  }
  fclose(rf) ;//关闭
  fclose(wf) ;
}


解题思路:
就是遍历二维数组中的右上部分,右上部分的元素乘以m,难点就在于遍历右上部分了,拆开来看,这右上部分的行i仍然是0到N-1,列j变了,循环条件为j=N-1,j>=i;j--,可以慢慢体会

答案:

1.自己做的:

#include <stdio.h>
#include <stdlib.h>
#define  N  5
void fun ( int a[][N], int m )
{
 for(int i=0;i<N;i++)
 for(int j=N-1;j>=i;j--)
 a[i][j]*=m;
}

main ( )
{  int  a[N][N], m, i, j;void NONO ();
   printf("***** The array *****\n");
   for ( i =0;  i<N; i++ )
   {  for ( j =0; j<N; j++ )
     {  a[i][j] = rand()%20; printf( "%4d", a[i][j] ); }
        printf("\n");
   }
   do m = rand()%10 ; while ( m>=3 );
   printf("m = %4d\n",m);
   fun ( a ,m );
   printf ("THE  RESULT\n");
   for ( i =0;  i<N; i++ )
   {  for ( j =0; j<N; j++ ) printf( "%4d", a[i][j] );
      printf("\n");
   }
   NONO ( );
   getchar();
}

void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *rf, *wf ;
  int i, j, n, a[5][5] ;

  rf = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 5 ; i++)
  for(j = 0 ; j < 5 ; j++)
    fscanf(rf, "%d ", &a[i][j]) ;
  fscanf(rf, "%d", &n) ;
  fun(a, n) ;
  for ( i = 0;  i < 5; i++ ) {
    for ( j = 0; j < 5; j++ ) fprintf(wf, "%4d", a[i][j] );
    fprintf(wf, "\n");
  }
  fclose(rf) ;
  fclose(wf) ;
}


2.题库答案:

#include <stdio.h>
#include <stdlib.h>
#define  N  5
void fun ( int a[][N], int m )
{
int i,j; 
  for(i=0; i<N; i++) //一样的
    for(j=N-1; j>=i; j--) 
      a[i][j]*=m; 
}

main ( )
{  int  a[N][N], m, i, j;void NONO ();
   printf("***** The array *****\n");
   for ( i =0;  i<N; i++ )
   {  for ( j =0; j<N; j++ )
     {  a[i][j] = rand()%20; printf( "%4d", a[i][j] ); }
        printf("\n");
   }
   do m = rand()%10 ; while ( m>=3 );
   printf("m = %4d\n",m);
   fun ( a ,m );
   printf ("THE  RESULT\n");
   for ( i =0;  i<N; i++ )
   {  for ( j =0; j<N; j++ ) printf( "%4d", a[i][j] );
      printf("\n");
   }
   NONO ( );
   getchar();
}

void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *rf, *wf ;
  int i, j, n, a[5][5] ;

  rf = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 5 ; i++)
  for(j = 0 ; j < 5 ; j++)
    fscanf(rf, "%d ", &a[i][j]) ;
  fscanf(rf, "%d", &n) ;
  fun(a, n) ;
  for ( i = 0;  i < 5; i++ ) {
    for ( j = 0; j < 5; j++ ) fprintf(wf, "%4d", a[i][j] );
    fprintf(wf, "\n");
  }
  fclose(rf) ;
  fclose(wf) ;
}


测试:

斯,因为是随机数的原因,我这个m老是随机到0,我觉得题目main函数里do-while的循环条件应该是m<=3,才好一些

main函数:
在这里插入图片描述

in.dat:
在这里插入图片描述

out.dat:
在这里插入图片描述

44.将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上

函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。

例如,当a=45, b=12。调用该函数后,c=1425。

注意:部分源程序存在文件prog1.c中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

prog1.c:

#include <stdio.h>
void fun(int a, int b, long *c)
{



}
main()   /* 主函数 */
{  int a,b; long c;void NONO ();//变量c未初始化
   printf("Input a b:");
   scanf("%d%d", &a, &b);
   fun(a, b, &c);
   printf("The result is: %ld\n", c);
   NONO();
  getchar();
}
void NONO ()//系统用于评分测试的函数
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *rf, *wf ;
  int i, a,b ; long c ;

  rf = fopen("in.dat","r") ;//r是打开一个用于读取的文件
  wf = fopen("out.dat","w") ;//w是创建一个用于写入的空文件,如果文件已存在,则覆盖掉
  for(i = 0 ; i < 10 ; i++) {//有10组测试数据
    fscanf(rf, "%d,%d", &a, &b) ;//从文件指针rf指向的文件in.dat获取a,b
    fun(a, b, &c) ;
    fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;//结果输出到文件指针wf指向的文件out.dat中
  }
  fclose(rf) ;//关闭
  fclose(wf) ;
}


解题思路:
这题,直接看代码吧,

答案:

1.自己做的:

#include <stdio.h>
void fun(int a, int b, long *c)
{
 *c=b/10;//直接按题目说从高位到低位构建这个数
 *c=(*c)*10+a/10;
 *c=(*c)*10+b%10;
 *c=(*c)*10+a%10;
}
main()   /* 主函数 */
{  int a,b; long c;void NONO ();
   printf("Input a b:");
   scanf("%d%d", &a, &b);
   fun(a, b, &c);
   printf("The result is: %ld\n", c);
   NONO();
  getchar();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *rf, *wf ;
  int i, a,b ; long c ;

  rf = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d,%d", &a, &b) ;
    fun(a, b, &c) ;
    fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;
  }
  fclose(rf) ;
  fclose(wf) ;
}


2.题库答案:

#include <stdio.h>
void fun(int a, int b, long *c)
{
    int a_up,a_low,b_up,b_low;//豁,设了四个变量,也行吧
    a_up=a/10;   
    a_low=a%10;  
    b_up=b/10;   
    b_low=b%10;  
    *c=b_up*1000+a_up*100+b_low*10+a_low;  
}
main()   /* 主函数 */
{  int a,b; long c;void NONO ();
   printf("Input a b:");
   scanf("%d%d", &a, &b);
   fun(a, b, &c);
   printf("The result is: %ld\n", c);
   NONO();
  getchar();
}
void NONO ()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *rf, *wf ;
  int i, a,b ; long c ;

  rf = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d,%d", &a, &b) ;
    fun(a, b, &c) ;
    fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;
  }
  fclose(rf) ;
  fclose(wf) ;
}


测试:

main函数:
在这里插入图片描述

in.dat:
在这里插入图片描述

out.dat:
在这里插入图片描述

45.找出用1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数,然后把这些三位数按从小到大的顺序依次存入相应的数组xxx中,符合条件的个数由函数值返回

请编写函数fun,其功能是:找出用1、2、3、4四个数字,能组成多少个互不相同且无重

复数字的三位数,然后把这些三位数按从小到大的顺序依次存入相应的数组xxx中,符合条件的个数由函数值返回。

注意:部分源程序在文件PROG1. C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

PROG1. C:

#include <stdio.h>
#define max 100

int fun(int xxx[])
{



}
int main()
{
	int xx[max],cnt;
	void NONO(int xx[], int cnt);
	
	cnt = fun(xx);
	printf("符合条件的个数=%d\n", cnt);
	NONO(xx, cnt);//得到的结果传入了NONO函数
	return 0;
}

void NONO(int xx[], int cnt)//系统用于评分测试的函数
{
	int i;
	FILE *fp;

	fp = fopen("out.dat", "w");//w是创建一个用于写入的空文件
	fprintf(fp, "%d\n", cnt);//符合条件的个数cnt存入文件指针fp指向的文件out.dat中
	for(i=0;i<cnt;i++)
		fprintf(fp, "%d\n", xx[i]);//数组也存入
	fclose(fp);
}

解题思路:
要求用1,2,3,4四个数组成一个三位数,这个三位数的每一位都要是互不相同的数,要从小到大的顺序存入数组,三位数也就是套三个循环,i(百位)为最外层循环,j(十位)为第二层循环,k(个位)为第三层循环,初始值从1开始就自然是从下到大的顺序了,存入数组作个if条件if(i!=j&&i!=k&&j!=k)这样就能保证每一位都互不相同了,

答案:

1.自己做的:

#include <stdio.h>
#define max 100

int fun(int xxx[])
{
int count=0;
for(int i=1;i<=4;i++)//百位
for(int j=1;j<=4;j++)//十位
for(int k=1;k<=4;k++)//个位
if(i!=j&&i!=k&&j!=k)//保证每一位互不相同
xxx[count++]=i*100+j*10+k;
return count;
}
int main()
{
	int xx[max],cnt;
	void NONO(int xx[], int cnt);
	
	cnt = fun(xx);
	printf("符合条件的个数=%d\n", cnt);
	NONO(xx, cnt);
	return 0;
}

void NONO(int xx[], int cnt)
{
	int i;
	FILE *fp;

	fp = fopen("out.dat", "w");
	fprintf(fp, "%d\n", cnt);
	for(i=0;i<cnt;i++)
		fprintf(fp, "%d\n", xx[i]);
	fclose(fp);
}

2.题库答案:

#include <stdio.h>
#define max 100

int fun(int xxx[])
{
int i,j,l,k=0;
  for(i=1;i<5;i++)//百位
	  for(j=1;j<5;j++)//十位
		if (j!=i) //他j!=i,是我的优化版,进一步缩小了要花费的时间
		  for(l=1;l<5;l++)
			  if (l!=j && l!=i)
				  xxx[k++]=i*100+j*10+l;

   return k;


}
int main()
{
	int xx[max],cnt;
	void NONO(int xx[], int cnt);
	
	cnt = fun(xx);
	printf("符合条件的个数=%d\n", cnt);
	NONO(xx, cnt);
	return 0;
}

void NONO(int xx[], int cnt)
{
	int i;
	FILE *fp;

	fp = fopen("out.dat", "w");
	fprintf(fp, "%d\n", cnt);
	for(i=0;i<cnt;i++)
		fprintf(fp, "%d\n", xx[i]);
	fclose(fp);
}

测试:

main函数:
在这里插入图片描述

out.dat:
在这里插入图片描述

46.将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上

函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。

例如,当a=45,b=12时,调用该函数后,c=1524。

注意:部分源程序存在文件PROG1.C中。数据文件IN.DAT中的数据不得修改。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

PROG1.C:

#include <stdio.h>
void fun(int a, int b, long *c)
{



}
main()
{  int a,b; long c;//注意c未初始化
   void NONO (  );
   printf("Input a b:");
   scanf("%d%d", &a, &b);
   fun(a, b, &c);
   printf("The result is: %ld\n", c);
   NONO();
   getchar();
}
void NONO (  )//系统用于评分测试的函数
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *rf, *wf ;
  int i, a,b ; long c ;

  rf = fopen("in.dat", "r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {//有10组测试数据
    fscanf(rf, "%d,%d", &a, &b) ;//从文件指针rf指向的文件in.dat获取a,b
    fun(a, b, &c) ;
    fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;//结果输出到文件指针wf指向的文件out.dat中
  }
  fclose(rf) ;//关闭
  fclose(wf) ;
}


解题思路:
有没有觉得这题很熟悉,就是第44道的改动,改成了把数a的十位放在了数c的个位,数a的个位放在了数c的百位,其他的就一样

答案:

1.自己做的:

#include <stdio.h>
void fun(int a, int b, long *c)
{
*c=b/10;
*c=(*c)*10+a%10;
*c=(*c)*10+b%10;
*c=(*c)*10+a/10;
}
main()
{  int a,b; long c;
   void NONO (  );
   printf("Input a b:");
   scanf("%d%d", &a, &b);
   fun(a, b, &c);
   printf("The result is: %ld\n", c);
   NONO();
   getchar();
}
void NONO (  )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *rf, *wf ;
  int i, a,b ; long c ;

  rf = fopen("in.dat", "r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d,%d", &a, &b) ;
    fun(a, b, &c) ;
    fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;
  }
  fclose(rf) ;
  fclose(wf) ;
}


2.题库答案:

#include <stdio.h>
void fun(int a, int b, long *c)
{
*c=b/10*1000+a%10*100+b%10*10+a/10;//也对,可以一句话解决的

}
main()
{  int a,b; long c;
   void NONO (  );
   printf("Input a b:");
   scanf("%d%d", &a, &b);
   fun(a, b, &c);
   printf("The result is: %ld\n", c);
   NONO();
   getchar();
}
void NONO (  )
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *rf, *wf ;
  int i, a,b ; long c ;

  rf = fopen("in.dat", "r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fscanf(rf, "%d,%d", &a, &b) ;
    fun(a, b, &c) ;
    fprintf(wf, "a=%d,b=%d,c=%ld\n", a, b, c) ;
  }
  fclose(rf) ;
  fclose(wf) ;
}


测试:

main函数:
在这里插入图片描述

in.dat:
在这里插入图片描述

out.dat:
在这里插入图片描述

47.给定一个整数n(n<10000),如果n加上100后是一个完全平方数(所谓“完全平方数”,就是开方后的结果是整数的数),并且n加上268也是一个完全平方数,则函数值返回1,否则返回0

请编写函数fun,其功能是:给定一个整数n(n<10000),如果n加上100后是一个完全平方数(所谓“完全平方数”,就是开方后的结果是整数的数),并且n加上268也是一个完全平方数,则函数值返回1,否则返回0。

注意:部分源程序在文件PROG1. C中。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

PROG1. C:

#include <stdio.h>
#include <math.h>

int fun(long n)
{


}
int main()
{
    long i;
    FILE *fp = fopen("out.dat", "w");//豁,这回不弄NONO函数了,w是创建一个用于写入的文件,若已存在,则覆盖

    for(i=1;i<10000;i++)
    {
        if (fun(i))
        {
            printf("%ld\n", i);
            fprintf(fp, "%ld\n", i);//结果输出到文件指针fp指向的文件out.dat中
        }
    }
    return 0;
}

解题思路:
嘛,这道题就取决于你知不知道sqrt()这个平方根函数了,sqrt()函数的返回值类型是double,要判断平方根是不是整数,就比较sqrt(n+100)(long)(n+100)是否相等就好了,就是化为整型会去掉小数部分

答案:
1.自己做的:

#include <stdio.h>
#include <math.h>

int fun(long n)
{
double a=sqrt(n+100);//题目怎么说,你就怎么来呗
long a1=a;
if(a==a1)
{
 a=sqrt(n+268);
 a1=a;
 if(a==a1)
 return 1;
}
return 0;
}
int main()
{
    long i;
    FILE *fp = fopen("out.dat", "w");

    for(i=1;i<10000;i++)
    {
        if (fun(i))
        {
            printf("%ld\n", i);
            fprintf(fp, "%ld\n", i);
        }
    }
    return 0;
}

2.题库答案:

#include <stdio.h>
#include <math.h>

int fun(long n)
{
	float y1,y2 = 0;//用于计算
	y1 = sqrt(n + 100);//获取n+100后开方的值
	y2 = sqrt(n + 268);//获取n+268后开方的值
	if ((int)y1 == y1 && (int)y2 == y2)//判断y1,y2是否为整数
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
int main()
{
    long i;
    FILE *fp = fopen("out.dat", "w");

    for(i=1;i<10000;i++)
    {
        if (fun(i))
        {
            printf("%ld\n", i);
            fprintf(fp, "%ld\n", i);
        }
    }
    return 0;


}

测试:

main函数:
在这里插入图片描述

out.dat:
在这里插入图片描述

48.将形参s所指的字符串放入形参a所指的字符数组中,使a中存放同样的字符串

请编写函数fun,其功能是将形参s所指的字符串放入形参a所指的字符数组中,使a中存放同样的字符串。说明:不得使用系统提供的字符串函数。

注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。

PROG1.C:

#include  <stdio.h>
#define    N    20
void NONO();
void  fun( char  *a , char  *s)
{


}

main()
{  char  s1[N],  *s2="abcdefghijk";
   fun( s1,s2);
   printf("%s\n", s1);
   printf("%s\n", s2);
   NONO();
  getchar();
}

void NONO()//系统用于评分测试的函数
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *fp, *wf ;
  int i;
  char s1[256], s2[256];

  fp = fopen("in.dat","r") ;//r是打开一个用于读取的文件
  wf = fopen("out.dat","w") ;//w是创建一个用于写入的文件,若已存在,则覆盖
  for(i = 0 ; i < 10 ; i++) {//有10组测试数据
    fgets(s2, 255, fp);//从文件指针fp指向的文件in.dat中获取一行字符,字符数最多为255个
    fun(s1,s2);
    fprintf(wf, "%s", s1);//结果输出到文件指针wf指向的文件out.dat中
  }
  fclose(fp) ;//关闭
  fclose(wf) ;
}


解题思路:
这题感觉就是在实现strcpy()函数的定义,直接看代码吧(^-^

答案:

1.自己做的:

#include  <stdio.h>
#define    N    20
void NONO();
void  fun( char  *a , char  *s)
{
while(*s)//遍历字符串
{
 *a=*s;//复制
 a++;
 s++;
}
*a='\0';//别忘了字符串结尾
}

main()
{  char  s1[N],  *s2="abcdefghijk";
   fun( s1,s2);
   printf("%s\n", s1);
   printf("%s\n", s2);
   NONO();
  getchar();
}

void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *fp, *wf ;
  int i;
  char s1[256], s2[256];

  fp = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fgets(s2, 255, fp);
    fun(s1,s2);
    fprintf(wf, "%s", s1);
  }
  fclose(fp) ;
  fclose(wf) ;
}


2.题库答案:

#include  <stdio.h>
#define    N    20
void NONO();
void  fun( char  *a , char  *s)
{
	int i=0;
	while(*s!='\0')
	{
		a[i] = *s;//他这里对于字符串a采用了数组的表示形式
		s++;
		i++;
	}
	a[i]='\0';
}

main()
{  char  s1[N],  *s2="abcdefghijk";
   fun( s1,s2);
   printf("%s\n", s1);
   printf("%s\n", s2);
   NONO();
  getchar();
}

void NONO()
{/* 本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
  FILE *fp, *wf ;
  int i;
  char s1[256], s2[256];

  fp = fopen("in.dat","r") ;
  wf = fopen("out.dat","w") ;
  for(i = 0 ; i < 10 ; i++) {
    fgets(s2, 255, fp);
    fun(s1,s2);
    fprintf(wf, "%s", s1);
  }
  fclose(fp) ;
  fclose(wf) ;
}


测试:

main函数:
在这里插入图片描述

in.dat:
在这里插入图片描述

out.dat:
在这里插入图片描述

49.找出dp所指数组中的最小或最大值,并与其第1个元素交换。形参n为元素的个数,形参upordown为查找标志:值为0时找最小值;值为1时找最大值

请编写函数void fun(int *dp, int n, int upordown), 其功能是,找出dp所指数组中的

最小或最大值,并与其第1个元素交换。形参n为元素的个数,

形参upordown为查找标志:值为0时找最小值;值为1时找最大值。

注意:部分源程序在文件PROG1. C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

PROG1. C:

#include <stdio.h>
#include <stdlib.h>
#define N 10
#pragma warning (disable:4996)
void NONO(FILE *fp, int pd[], int n);

void fun (int *dp,int n,int upordown)
{


}

void display(int pd[],int n)//输出数组
{
	int i;
	for(i=0;i<n;i++)
		printf("%4d",pd[i]);
	printf("\n");
}
void main()
{
	int data[N],i,n=N;
	FILE *out ;

    out = fopen("out.dat","w") ;//w是创建一个用于写入的空文件,若已存在,则覆盖
	for(i=0;i<N;i++)
		data[i]=rand()%90+10;//数组元素由随机数生成,随机数范围为[9,99]
	for(i=0;i<N-1;i++)//这个循环类似于排序的作用了,从大到下,没感觉出来的可以细细感觉下
		fun(data+i,n-i,0);//一开始在n个元素中找最大值,与第一个元素交换,下一次循环传入fun函数的数组从第二个元素开始,在n-1个元素里找最大值,此时数组第一个元素就是原来第二个元素了,然后交换,如此反复
	display(data,n);
	NONO(out, data, n);//结果传入了NONO函数
	for(i=0;i<N;i++)//这就是第二组测试数据了
		data[i]=rand()%90+10;
	for(i=0;i<N-1;i++)
		fun(data+i,n-i,1);
	display(data,n);
	NONO(out, data, n);
	fclose(out);
}
void NONO(FILE *fp, int pd[], int n)
{
	int i;
	for(i=0;i<n;i++)
		fprintf(fp, "%4d", pd[i]);//结果存入文件指针fp指向的文件out.dat中
	fprintf(fp, "\n");

}


解题思路:
这题本身难度不高,只是这个main函数里搞这么一堆,看起来复杂而已,但main里的内容并没有影响我们要构建的fun函数,我们只需要实现在传来的数组里,找出最大值或最小值,然后与第一个元素交换即可

答案:

1.自己做的:

#include <stdio.h>
#include <stdlib.h>
#define N 10
#pragma warning (disable:4996)
void NONO(FILE *fp, int pd[], int n);

void fun (int *dp,int n,int upordown)
{
 int max=dp[0],min=dp[0],index_max=0,index_min=0,t=dp[0];//我这里索性是把最小值和最大值都找出来
 for(int i=1;i<n;i++)
 {
  if(max<dp[i])
 {
  max=dp[i];
  index_max=i;
 }
 if(min>dp[i])
 {
  min=dp[i];
  index_min=i;
 }
 }
 if(upordown)//upordown为1,最大值与第一位元素交换
 {
  dp[0]=max;
  dp[index_max]=t;
 }
 else//upordown为0,最小值与第一位元素交换
 {
  dp[0]=min;
  dp[index_min]=t;
 }
}

void display(int pd[],int n)
{
	int i;
	for(i=0;i<n;i++)
		printf("%4d",pd[i]);
	printf("\n");
}
void main()
{
	int data[N],i,n=N;
	FILE *out ;

    out = fopen("out.dat","w") ;
	for(i=0;i<N;i++)
		data[i]=rand()%90+10;
	for(i=0;i<N-1;i++)
		fun(data+i,n-i,0);
	display(data,n);
	NONO(out, data, n);
	for(i=0;i<N;i++)
		data[i]=rand()%90+10;
	for(i=0;i<N-1;i++)
		fun(data+i,n-i,1);
	display(data,n);
	NONO(out, data, n);
	fclose(out);
}
void NONO(FILE *fp, int pd[], int n)
{
	int i;
	for(i=0;i<n;i++)
		fprintf(fp, "%4d", pd[i]);
	fprintf(fp, "\n");

}


2.题库答案:

#include <stdio.h>
#include <stdlib.h>
#define N 10
#pragma warning (disable:4996)
void NONO(FILE *fp, int pd[], int n);

void fun (int *dp,int n,int upordown)
{
int i,dorx;
 dorx=0;
 if(upordown==0)
	{for(i=1;i<n;i++)
		if (dp[dorx]>dp[i]) dorx=i;}//斯,对,我设两个变量存看来是多此一举了
 else
    { for(i=1;i<n;i++)
		if (dp[dorx]<dp[i]) dorx=i;}

 i=dp[0];
 dp[0]=dp[dorx];
 dp[dorx]=i;


}

void display(int pd[],int n)
{
	int i;
	for(i=0;i<n;i++)
		printf("%4d",pd[i]);
	printf("\n");
}
void main()
{
	int data[N],i,n=N;
	FILE *out ;

    out = fopen("out.dat","w") ;
	for(i=0;i<N;i++)
		data[i]=rand()%90+10;
	for(i=0;i<N-1;i++)
		fun(data+i,n-i,0);
	display(data,n);
	NONO(out, data, n);
	for(i=0;i<N;i++)
		data[i]=rand()%90+10;
	for(i=0;i<N-1;i++)
		fun(data+i,n-i,1);
	display(data,n);
	NONO(out, data, n);
	fclose(out);
}
void NONO(FILE *fp, int pd[], int n)
{
	int i;
	for(i=0;i<n;i++)
		fprintf(fp, "%4d", pd[i]);
	fprintf(fp, "\n");

}


最近状态感觉很大问题呀,本该想到的点,却没想到

测试:

main函数:
在这里插入图片描述

out.dat:
在这里插入图片描述

50.验证参数n是否可以分解成2个素数相乘,是则返回1,否则返回0,并通过指针变更x、y返回分解后的2个素数值,要求*x < *y

请编写函数fun,其功能是:验证参数n是否可以分解成2个素数相乘,是则返回1,否则

返回0,并通过指针变更x、y返回分解后的2个素数值,要求*x < *y。

主程序中将打印出分解结果。

例如:111=3*37, 当函数fun的参数n为111时,

可以分解为2个素数(3和37) 的乘积函数返回值为1。

另外,prime函 数验证参数m是否为素数,是则返回1,否则返回0。

注意:部分源程序在PROG1. C中。请勿改动主函数main和其它函数中的任何内容,

仅在函数fun的花括号中填入所编写的若干语句。

PROG1. C:

#include<stdio.h>
#include<math.h>
int prime(int m)//判断是否是素数
{
	int k,flag=1;
	for(k=2;k<(int)sqrt((double)m);k++)
		if(m%k==0)
			flag=0;
	return flag;
}
int fun(int n,int *x,int *y)
{
	int k,flag=0;




    return flag;
}
main()
{
	int a,b;FILE *out ;
	out = fopen("out.dat","w") ;//w是创建一个用于写入的空文件
	if(fun(111,&a,&b)) {//三组测试数据
		printf("111=%d*%d\n",a,b);
		fprintf(out, "111=%d*%d\n",a,b);
	}
	if(fun(11111,&a,&b)) {
		printf("11111=%d*%d\n",a,b);
		fprintf(out, "11111=%d*%d\n",a,b);
	}
	if(fun(1111111,&a,&b)) {
		printf("1111111=%d*%d\n",a,b);
		fprintf(out,"1111111=%d*%d\n",a,b);
	}
   fclose(out);//关闭
   getchar();

}


解题思路:
注意1不是素数,所以遍历小于n的数时,要从2开始,我们可以把范围压缩在2到sqrt(n),正号也方便了*x<*y,可以*x=i,*y=n/i,素数的判断用题目给的prime函数就好了

答案:

1.自己做的:

#include<stdio.h>
#include<math.h>
int prime(int m)
{
	int k,flag=1;
	for(k=2;k<(int)sqrt((double)m);k++)
		if(m%k==0)
			flag=0;
	return flag;
}
int fun(int n,int *x,int *y)
{
	int k,flag=0;
      for(k=2;k<=sqrt(n);k++)//就这样
      {
        if(prime(k)&&n%k==0)
        {
          *x=k;
          *y=n/k;
          if(prime(*y))
          {
           flag=1;
           break;
          }
        }
      }



    return flag;
}
main()
{
	int a,b;FILE *out ;
	out = fopen("out.dat","w") ;
	if(fun(111,&a,&b)) {
		printf("111=%d*%d\n",a,b);
		fprintf(out, "111=%d*%d\n",a,b);
	}
	if(fun(11111,&a,&b)) {
		printf("11111=%d*%d\n",a,b);
		fprintf(out, "11111=%d*%d\n",a,b);
	}
	if(fun(1111111,&a,&b)) {
		printf("1111111=%d*%d\n",a,b);
		fprintf(out,"1111111=%d*%d\n",a,b);
	}
   fclose(out);
   getchar();

}


2.题库答案:

#include<stdio.h>
#include<math.h>
int prime(int m)
{
	int k,flag=1;
	for(k=2;k<(int)sqrt((double)m);k++)
		if(m%k==0)
			flag=0;
	return flag;
}
int fun(int n,int *x,int *y)
{
	int k,flag=0;
	int k2;
    k=2;
	do {//可以可以,帅,感觉比我的更快,
	  k2=n/k;
	  if (k*k2==n)
		  if (prime(k) && prime(k2) && k<k2) 
			  {flag=1; *x=k; *y=k2; break;}
	  k+=1;
	}
	while (k<k2);




    return flag;
}
main()
{
	int a,b;FILE *out ;
	out = fopen("out.dat","w") ;
	if(fun(111,&a,&b)) {
		printf("111=%d*%d\n",a,b);
		fprintf(out, "111=%d*%d\n",a,b);
	}
	if(fun(11111,&a,&b)) {
		printf("11111=%d*%d\n",a,b);
		fprintf(out, "11111=%d*%d\n",a,b);
	}
	if(fun(1111111,&a,&b)) {
		printf("1111111=%d*%d\n",a,b);
		fprintf(out,"1111111=%d*%d\n",a,b);
	}
   fclose(out);
   getchar();

}


测试:

main函数:
在这里插入图片描述

out.dat:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1527208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3.18数据结构

一、数据结构----->用来组织存储数据 一组用来保存一种或多种特定关系的数据的集合&#xff08;组织和存储数据&#xff09; 程序 数据结构 算法 MVC&#xff1a;软件设计架构 M&#xff1a;数据的管理&#xff08;数据结构&#xff09; V&#xff1a;视图&#xff0c…

SQLiteC/C++接口详细介绍之sqlite3类(十八)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十七&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;一&#xff09; ​ 56.sqlite3_update_hook 函数功能&am…

【边缘智能】Jetson板卡上安装QT5与OpenCV集成

学习《OpenCV应用开发&#xff1a;入门、进阶与工程化实践》一书 做真正的OpenCV开发者&#xff0c;从入门到入职&#xff0c;一步到位&#xff01; 安装QT5与QT Creator 如果只是简单的使用QT的GUI库&#xff0c;没有其它要求&#xff0c;其实特别容易&#xff0c;一行命令行…

计算机视觉之三维重建(1)---摄像机几何

文章目录 一、针孔模型和透镜1.1 针孔摄像机1.2 近轴折射模型1.3 透镜问题 二、摄像机几何2.1 像平面和像素平面2.2 齐次坐标下的投影变换2.3 摄像机倾斜2.4 规范化摄像机2.5 世界坐标系2.6 Faugeras定理2.7 投影变换性质&#xff1a; 三、其他投影摄像机模型3.1 弱透视投影摄像…

php版本的AI电话机器人系统有哪些优势

PHP版本的AI电话机器人系统具有以下优势&#xff1a; 提升客户体验&#xff1a;AI电话机器人能够为客户提供724小时的服务&#xff0c;无论何时客户有疑问或需要帮助&#xff0c;都可以得到及时响应1。 提高工作效率和客户满意度&#xff1a;AI电话机器人系统具有智能回答问题…

oracle创建序列

oracle创建序列 oracle创建序列00-查看当前用户创建的序列01-创建序列02-创建序列方法二03-序列使用04-删除序列 oracle创建序列 00-查看当前用户创建的序列 SELECT * FROM user_sequences;01-创建序列 --01-创建序列 /* 语法&#xff1a; CREATE SEQUENCE 序列名称 START W…

python知识点总结(四)

这里写目录标题 1、Django 中的缓存是怎么用的&#xff1f;2、现有2元、3元、5元共三种面额的货币&#xff0c;如果需要找零99元&#xff0c;一共有多少种找零的方式?3、代码执行结果4、下面的代码执行结果为&#xff1a;5、说一下Python中变量的作用域。6、闭包7、python2与p…

Hive:数据仓库利器

1. 简介 Hive是一个基于Hadoop的开源数据仓库工具&#xff0c;可以用来存储、查询和分析大规模数据。Hive使用SQL-like的HiveQL语言来查询数据&#xff0c;并将其结果存储在Hadoop的文件系统中。 2. 基本概念 介绍 Hive 的核心概念&#xff0c;例如表、分区、桶、HQL 等。 …

深入浅出Go的`encoding/xml`库:实战开发指南

深入浅出Go的encoding/xml库&#xff1a;实战开发指南 引言基本概念XML简介Go语言中的XML处理结构体标签&#xff08;Struct Tags&#xff09; 解析XML数据使用xml.Unmarshal解析XML结构体标签详解处理常见解析问题 生成XML数据使用xml.Marshal生成XML使用xml.MarshalIndent优化…

服务器中了mallox勒索病毒还能恢复数据吗?

什么是mallox勒索病毒&#xff1f; mallox是一种最近多发的勒索病毒类型&#xff0c;它主要针对企业的Web应用和数据库服务器进行攻击。mallox后缀的勒索病毒会加密用户的重要文件数据并以此为要挟索要赎金。该类病毒会绕过企业的防火墙和各种防护软件&#xff0c;对目标设备进…

带你深入了解数据库的事务

为什么要使用事务 日常开发中&#xff0c;很多操作&#xff0c;不是通过一个SQL就能完成的&#xff0c;往往需要多个SQL配合完成 当执行多个SQL操作的时候&#xff0c;如果中间出现了特殊的情况&#xff08;程序崩溃&#xff0c;系统奔溃&#xff0c;网络断开&#xff0c;主机…

R语言:microeco:一个用于微生物群落生态学数据挖掘的R包:第七:trans_network class

# 网络是研究微生物生态共现模式的常用方法。在这一部分中&#xff0c;我们描述了trans_network类的所有核心内容。 # 网络构建方法可分为基于关联的和非基于关联的两种。有几种方法可以用来计算相关性和显著性。 #我们首先介绍了基于关联的网络。trans_network中的cal_cor参数…

进程的一些概述

文章目录 前言一、进程以及查看指令二、查看进程 前言 进程是什么&#xff1f;进程应该如何描述&#xff1f;进程又该如何管理&#xff1f;进程如何查看&#xff1f; 一、进程以及查看指令 一个正在运行的程序&#xff0c;加载到内存中的程序是进程也叫做任务,用任务资源管理…

从单机到分布式微服务,大文件校验上传的通用解决方案

一、先说结论 本文将结合我的工作实战经历&#xff0c;总结和提炼一种从单体架构到分布式微服务都适用的一种文件上传和校验的通用解决方案&#xff0c;形成一个完整的方法论。本文主要解决手段包括多线程、设计模式、分而治之、MapReduce等&#xff0c;虽然文中使用的编程语言…

在Visual Studio中调试 .NET源代码

前言 在我们日常开发过程中常常会使用到很多其他封装好的第三方类库&#xff08;NuGet依赖项&#xff09;或者是.NET框架中自带的库。如果可以设置断点并在NuGet依赖项或框架本身上使用调试器的所有功能&#xff0c;那么我们的源码调试体验和生产效率会得到大大的提升。今天我…

openKylin系统安装ssh服务结合内网穿透实现固定公网地址访问

文章目录 1. 安装SSH服务2. 本地SSH连接测试3. openKylin安装Cpolar4. 配置 SSH公网地址5. 公网远程SSH连接小结 6. 固定SSH公网地址7. SSH固定地址连接 openKylin是中国首个基于Linux 的桌面操作系统开发者平台&#xff0c;通过开放操作系统源代码的方式&#xff0c;打造具有自…

Selenium 自动化 —— Selenium IDE录制、回放、导出Java源码

Hello Selenium 示例 之前我们在专栏的第一篇文章中演示了使用使用Selenium进行百度搜索的Hello world示例。 代码不复杂非常简单&#xff1a; public static void main(String[] args) {WebDriver driver null;try {// 设置Chrome驱动的路径 // System.setPro…

matplotlib库简介及函数说明

目录 简介matplotlib.pyplot as plt 常用函数说明创建子图plt.subplots&#xff08;&#xff09;.plot&#xff08;&#xff09; 子图参数set_title&#xff08;&#xff09;axis2.legend()fig.autofmt_xdate() 简介 matplotlib 是一个用于创建二维图表和数据可视化的 Python …

【JavaWeb】Spring非阻塞通信 - Spring Reactive之WebFlux的使用

【JavaWeb】Spring非阻塞通信 - Spring Reactive之WebFlux的使用 文章目录 【JavaWeb】Spring非阻塞通信 - Spring Reactive之WebFlux的使用参考资料一、初识WebFlux1、什么是函数式编程1&#xff09;面向对象编程思维 VS 函数式编程思维&#xff08;封装、继承和多态描述事物间…

【视频异常检测】Delving into CLIP latent space for Video Anomaly Recognition 论文阅读

Delving into CLIP latent space for Video Anomaly Recognition 论文阅读 ABSTRACT1. Introduction2. Related Works3. Proposed approach3.1. Selector model3.2. Temporal Model3.3. Predictions Aggregation3.4. Training 4. Experiments4.1. Experiment Setup4.2. Evaluat…