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

2024-02-02 22:28

本文主要是介绍计算机二级C语言的注意事项及相应真题-2-程序修改,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 11.找出n的所有因子,统计因子的个数,并判断n 是否是”完数”
    • 12.计算s所指字符串中含有t所指字符串的数目
    • 13.将一个由八进制数字组成的字符串转换为与其面值相等的十进制整数
    • 14.根据整型形参m的值,计算如下公式的值
    • 15.从低位开始依次取长整型变量s中奇数位上的数,构成一个新数放在t中
    • 16.将形参dt0指向的具有*n0个数据的数组中,所有不等于形参x的数据,重新存留在原数组中,并通过形参n0返回这些数据的个数
    • 17.将s所指字符串中的字母转换为按字母序列的后续字母
    • 18.在有n名学生,2门课成绩的结构体数组std中,计算出第1门课程的平均分
    • 19.将字符串s1和s2交叉合并形成新字符串s3
    • 20.当奇数次调用时要求把字符串中的小写字母转换成大写字母,偶数次调用时按输入字符串的逆序输出字符串

11.找出n的所有因子,统计因子的个数,并判断n 是否是”完数”

给定程序MODI1. C中,函数fun的功能是:找出n的所有因子,统计因子的个数,并判断n

是否是”完数”。当一个数的因子之和恰好等于这个数本身时,就称这个数为”完数”。

例如: 6的因子包括1、2、3,而6=1+2+3,所以6是完数。

如果是完数,函数返回值为1,否则函数返回值为0。

数组a中存放的是找到的因子,变量k中存放的是因子的个数。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include <stdio.h>
int  fun(int  n, int  a[], int  *k)
{   int  m=0, i, t;t = n;
/**********found**********/for( i=0; i<n; i++ )//这个for循环是找因子,找因子,因子怎么可以是0,应该从1开始if(n%i==0)//筛出因子存入数组a{  a[m]=i;  m++;  t=t - i;  }
/**********found**********/k=m;//k是指针,这样赋,等于是赋给地址了,得要加上解引符*
/**********found**********/if ( t=0 )  return  1;//单等=是赋值,双等是等于else  return  0; 
}
main()
{  int  n , a[10], flag, i, k;printf("请输入一个整数:    ");  scanf("%d",&n);flag = fun( n, a, &k );if(flag){  printf(" %d 是完数,其因子是:  ", n);for(i=0;i<k;i++)   printf("  %d ", a[i]);printf("\n");}else    printf(" %d 不是完数.\n ", n );getchar();
}

解题思路:
不是很难,注释就已经解释的差不多了

答案:

#include <stdio.h>
int  fun(int  n, int  a[], int  *k)
{   int  m=0, i, t;t = n;
/**********found**********/for( i=1; i<n; i++ )if(n%i==0){  a[m]=i;  m++;  t=t - i;  }
/**********found**********/*k=m;
/**********found**********/if ( t==0 )  return  1;else  return  0; 
}
main()
{  int  n , a[10], flag, i, k;printf("请输入一个整数:    ");  scanf("%d",&n);flag = fun( n, a, &k );if(flag){  printf(" %d 是完数,其因子是:  ", n);for(i=0;i<k;i++)   printf("  %d ", a[i]);printf("\n");}else    printf(" %d 不是完数.\n ", n );getchar();
}

测试:

请输入一个整数:    66 是完数,其因子是:    1   2   3 

12.计算s所指字符串中含有t所指字符串的数目

给定程序modi1.c中函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <stdio.h>
#include <string.h>
#define    N     80
int  fun(char  *s,  char  *t)
{  int  n;char  *p , *r;n=0;while ( *s )//遍历s所指字符串{  p=s;//指针p指向s所指字符串
/*********found**********/r=p;//指针r应该指向t所指字符串,这里应该是r=t;while(*r)//遍历t指向字符串进行比对,是否含有t指向字符串if(*r==*p) {  r++;  p++;  }else  break;
/*********found**********/if(*r= 0)//运行到这里如果此时r指向空,则含有t所指字符串数目递增n++;s++;//指针s后移}return  n;//返回含有t所指字符串数目
}
main()
{  char  a[N],b[N];    int   m;printf("\nPlease enter string a : "); gets(a);printf("\nPlease enter substring b : "); gets( b );m=fun(a, b);printf("\nThe result is :  m = %d\n",m);getchar();
}

解题思路:
这些题的代码都挺经典的,不要只顾着答对,也要理解代码的思路

答案:

#include <stdio.h>
#include <string.h>
#define    N     80
int  fun(char  *s,  char  *t)
{  int  n;char  *p , *r;n=0;while ( *s ){  p=s;
/*********found**********/r=t;while(*r)if(*r==*p) {  r++;  p++;  }else  break;
/*********found**********/if(*r== '\0')n++;s++;}return  n;
}
main()
{  char  a[N],b[N];    int   m;printf("\nPlease enter string a : "); gets(a);printf("\nPlease enter substring b : "); gets( b );m=fun(a, b);printf("\nThe result is :  m = %d\n",m);getchar();
}

测试:

Please enter string a : abcdabcdresdPlease enter substring b : abcdThe result is :  m = 2

13.将一个由八进制数字组成的字符串转换为与其面值相等的十进制整数

给定程序modi1.c中,函数fun的功能是:将一个由八进制数字组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位8进制数字。

例如,若输入77777,则输出将是32767。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning (disable:4996)
int  fun( char *p )
{   int   n;
/**********found**********/n= *P-'o';//这个错误像误写一样,数字字符变为整型,应该减去字符0,但这个是o,还有p误写成了大写,c语言中变量都是区分大小写的p++;//第一个字符的值为n的初始值,所以p需要后移while( *p!=0 ) {//遍历字符串,八进制转十进制
/**********found**********/n=n*8+*P-'o';//这个也是一样,0写成了o,这里p也写成了大写p++;//指针p后移}return  n;
}
main()
{   char   s[6];     int  i;   int   n;printf("Enter a string (Ocatal digits):  "); gets(s);if(strlen(s)>5){ printf("Error: String too longer !\n\n");exit(0); }//题目说规定输入的字符串最多只能包含5位8进制数字,strlen()函数是返回字符串长度for(i=0; s[i]; i++)//单一个s[i]就等同于s[i]!='\0'if(s[i]<'0'||s[i]>'7')//如果不是八进制就会进入该if分支{  printf("Error: %c not is ocatal digits!\n\n",s[i]);exit(0); }//exit(0)可以理解为等同于return 0printf("The original string:  "); puts(s);n=fun(s);printf("\n%s is convered to integer number: %d\n\n",s,n);getchar();
}

解题思路:
不是很难,这个错误有点像是0写成了o一样,还有p误写成了大写一样,这个错误让我想起了一张图,虽然里面并没有这条:
在这里插入图片描述
给大伙欣赏下

答案:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning (disable:4996)
int  fun( char *p )
{   int   n;
/**********found**********/n= *p-'0';p++;while( *p!=0 ) {
/**********found**********/n=n*8+*p-'0';p++;}return  n;
}
main()
{   char   s[6];     int  i;   int   n;printf("Enter a string (Ocatal digits):  "); gets(s);if(strlen(s)>5){ printf("Error: String too longer !\n\n");exit(0); }for(i=0; s[i]; i++)if(s[i]<'0'||s[i]>'7'){  printf("Error: %c not is ocatal digits!\n\n",s[i]);exit(0); }printf("The original string:  "); puts(s);n=fun(s);printf("\n%s is convered to integer number: %d\n\n",s,n);getchar();
}

测试:

Enter a string (Ocatal digits):  77777
The original string:  7777777777 is convered to integer number: 32767

14.根据整型形参m的值,计算如下公式的值

给定程序modi1.c中,函数fun的功能是:根据整型形参m的值,计算如下公式的值。
请添加图片描述

例如:若m中的值为:5,则应输出:0.536389。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <stdio.h>double fun ( int m )
{  double   y = 1.0 ;int  i ;
/**************found**************/for(i = 2 ; i < m ; i++)//可以看到题目中的公式分母是有m的,这里循环中的i就是题目中的分母
/**************found**************/y -= 1 /(i * i) ;//在程序语言中,分式必须分子是浮点类型,结果才会有小数,1改成浮点类型就是1.0return( y ) ;
}main( )
{  int n = 5 ;printf( "\nThe result is %lf\n", fun ( n ) ) ;getchar();
}

解题思路:
主要考数据类型的运算,这里我想到了我碰到的选择题中的一个选项,1和1.0所占的字节不同,这句话是正确的,1是整型,而1.0是浮点型

答案:

#include <stdio.h>double fun ( int m )
{  double   y = 1.0 ;int  i ;
/**************found**************/for(i = 2 ; i <= m ; i++)
/**************found**************/y -= 1.0 /(i * i) ;return( y ) ;
}main( )
{  int n = 5 ;printf( "\nThe result is %lf\n", fun ( n ) ) ;getchar();
}

测试:


The result is 0.536389

15.从低位开始依次取长整型变量s中奇数位上的数,构成一个新数放在t中

给定程序MODI1. C中函数fun的功能是:从低位开始依次取长整型变量s中奇数位上的数,构成一个新数放在t中(注意:位置从0开始计算)。

例如:输入: 12345678, 则输出: 1357

输入: 123456789, 则输出: 2468

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include <stdio.h>
#pragma warning (disable:4996)
void fun (long s, long *t)
{   long sl = 10;s /= 10;//位置是从0开始的,0是偶数,去掉
/**********found**********/*t = s / 10;//位置0已经被去掉,现在是到了位置1,但要取一位,应该用取余while(s > 0) {s = s / 100;//s/100去掉两位,就到了下一个奇数位
/**********found**********/t = s % 10 * sl + t;//t是指针,单独一个t代表的仅仅是地址,*t代表的才是值,由于是从低位开始,所以是后面增加的值乘以权
/**********found**********/sl /= 10;//s1是权,应该是乘以10}
}main()
{   long s, t;printf("\nPlease enter long number:");scanf("%ld", &s); fun(s, &t);printf("The result is: %ld\n", t);
}

解题思路:
注意,题目说了位置是从0开始的,如果不仔细看题目就去看代码,会很懵的

答案:

#include <stdio.h>
#pragma warning (disable:4996)
void fun (long s, long *t)
{   long sl = 10;s /= 10;
/**********found**********/*t = s % 10;while(s > 0) {s = s / 100;
/**********found**********/*t = s % 10 * sl + *t;
/**********found**********/sl *= 10;}
}main()
{   long s, t;printf("\nPlease enter long number:");scanf("%ld", &s); fun(s, &t);printf("The result is: %ld\n", t);
}

测试:

Please enter long number:12345678
The result is: 1357

16.将形参dt0指向的具有*n0个数据的数组中,所有不等于形参x的数据,重新存留在原数组中,并通过形参n0返回这些数据的个数

给定程序MODI1. C中,函数fun的功能是:将形参dt0指向的具有*n0个数据的数组中,所

有不等于形参x的数据,重新存留在原数组中,并通过形参n0返回这些数据的个数。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include <stdio.h> 
#pragma warning (disable:4996)
void fun(int *dt0,int *n0,int x)
{int i,j;
/**********************found***********************/i=1;j=1;//可以看到下面i和j都是作为数组的下标来用的,数组的下标应该从0开始do{ 
/**********************found***********************/if(dt0[i]=x)//依据题意这里应该是筛出不等于形参x的数据{dt0[j]=dt0[i];//把筛出的数据赋在数组前面j++;//j是不等于形参x的数据数}i++;}while(i<*n0);
/**********************found***********************/
return j;//这个函数是void类型的,是无返回值的,这里显然是要返回筛出的不等于形参x的数据的个数,题目已经给了提示,通过形参n0返回这些数据的个数
}
main()
{ int d[10]={2,5,6,7,2,4,5,2,2,6},n=10,i;fun(d,&n,2);for(i=0;i<n;i++)printf("%d ",d[i]);printf("\n");
} 

解题思路:
题目要求的结果就是输出不等于形参x的数据,思路是把不等于形参x的数据放在数组的前面

答案:

#include <stdio.h> 
#pragma warning (disable:4996)
void fun(int *dt0,int *n0,int x)
{int i,j;
/**********************found***********************/i=0;j=0;do{ 
/**********************found***********************/if(dt0[i]!=x){dt0[j]=dt0[i];j++;}i++;}while(i<*n0);
/**********************found***********************/
*n0=j;
}
main()
{ int d[10]={2,5,6,7,2,4,5,2,2,6},n=10,i;fun(d,&n,2);for(i=0;i<n;i++)printf("%d ",d[i]);printf("\n");
} 

测试:

5 6 7 4 5 6 

17.将s所指字符串中的字母转换为按字母序列的后续字母

给定程序modi1.c中函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <stdio.h>
#include <ctype.h>
void  fun (char  *s)
{
/**********found***********/while(*s!='@')//遍历字符串,应该是遍历到空时停止{  if(*s>='A' && *s<='Z' || *s>='a' && *s<='z'){  if(*s=='Z')  *s='A';else if(*s=='z')  *s='a';else              *s += 1;}
/**********found***********/(*s)++;//这里遍历字符串,显然应该是指针后移,地址自增才对,加了解引符*就变成值了,变成值自增了}
}
main()
{  char  s[80];printf("\n  Enter a string with length < 80.  :\n\n  "); gets(s);printf("\n  The  string :  \n\n  ");  puts(s);fun ( s );printf ("\n\n  The  Cords :\n\n  ");  puts(s);getchar();
}

解题思路:
主要考你对指针概念的理解

答案:

#include <stdio.h>
#include <ctype.h>
void  fun (char  *s)
{
/**********found***********/while(*s!='\0'){  if(*s>='A' && *s<='Z' || *s>='a' && *s<='z'){  if(*s=='Z')  *s='A';else if(*s=='z')  *s='a';else              *s += 1;}
/**********found***********/s++;}
}
main()
{  char  s[80];printf("\n  Enter a string with length < 80.  :\n\n  "); gets(s);printf("\n  The  string :  \n\n  ");  puts(s);fun ( s );printf ("\n\n  The  Cords :\n\n  ");  puts(s);getchar();
}

测试:

Enter a string with length < 80.  :ZzAa1The  string :  ZzAa1The  Cords :AaBb1

18.在有n名学生,2门课成绩的结构体数组std中,计算出第1门课程的平均分

给定程序MODI1. C中,函数fun的功能是:在有n名学生,2门课成绩的结构体数组std中,计算出第1门课程的平均分,作为函数值返回。

例如:主函数中给出了4名学生的数据,

则程序运行的结果为:第1门课程的平均分是: 76. 125000

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include  <stdio.h>
typedef  struct
{  char  num[8];double  score[2];
}STU ;
double fun(STU  std[], int  n)
{  int   i;
/**********found**********/double  sum ;//可以看到在后面的循环中sum是累加的,而不是赋值的,那就必须要赋个初值
/**********found**********/for(i=0; i<2 ; i++)//这个循环应该要累加上所有的学生,在main函数里可以看到有4名学生,传给了变量n
/**********found**********/sum += std[i].score[1]; //数组的下标都是从0开始的,0才是第一项return  sum/n;//返回平均值
}
main()
{  STU  std[ ]={ "N1001", 76.5,82.0 ,"N1002", 66.5,73.0, "N1005", 80.5,66.0,"N1006", 81.0,56.0 };printf("第1门课程的平均分是:%lf\n", fun(std,4) );getchar();
}

解题思路:
难度不高,也没什么迷惑性的地方φ(゜▽゜*)♪

答案:

#include  <stdio.h>
typedef  struct
{  char  num[8];double  score[2];
}STU ;
double fun(STU  std[], int  n)
{  int   i;
/**********found**********/double  sum =0.0;
/**********found**********/for(i=0; i<n ; i++)
/**********found**********/sum += std[i].score[0]; return  sum/n;
}
main()
{  STU  std[ ]={ "N1001", 76.5,82.0 ,"N1002", 66.5,73.0, "N1005", 80.5,66.0,"N1006", 81.0,56.0 };printf("第1门课程的平均分是:%lf\n", fun(std,4) );getchar();
}

测试:

第1门课程的平均分是:76.125000

19.将字符串s1和s2交叉合并形成新字符串s3

给定程序MODI1. C中,函数fun将字符串s1和s2交叉合并形成新字符串s3,合并方法为:先取s1的第1个字符存入s3,再取s2的第1个字符存入s3,以后依次类推;若s1和s2的长度不等时,较长字符串多出的字符顺序放在新生成的s3后。

例如:当s1为: “123456789”,s2为: " abcdefghijk”时,

输出结果应该是: 1a2b3c4d5e6f7g8h9ijk

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include <stdio.h> 
#include <string.h> 
#pragma warning (disable:4996)
void fun( char *s1, char *s2, char *s3)
{   int i,j;
/**********************found***********************/for(i = 0, j = 0; (s1[i] != '\0') && (s2[i] != '\0'); i++, j = j + 1)  {   	s3[j] = s1[i];   s3[j+1] = s2[i];   }    if (s2[i] != '\0')  {   	for(; s2[i] != '\0'; i++, j++)   
/**********************found***********************/s3[i] = s2[j];  }   else if (s1[i] != '\0')  {   for(; s1[i] != '\0'; i++, j++)       s3[j] = s1[i];}
/**********************found***********************/s3[j-1] = '\0';
}
void main() 
{  	char s1[128], s2[128], s3[255];  printf("Please input string1:"); gets(s1);   printf("Please input string2:");  gets(s2);    fun(s1,s2,s3);printf("string:%s\n", s3);   
} 

解题思路:
有三个错误:
(1)

for(i = 0, j = 0; (s1[i] != '\0') && (s2[i] != '\0'); i++, j = j + 1)  
//&&且,两个只要有一个不成立,就会停止,没有问题,j的自增出现了问题,两个字符串的合并方式是你存
//入一个字符,我在其后也存入一个字符,也就是说每次循环都会存入两个字符,倘若依题目这种循环方式,会
//出现如下情况:
/*
第一遍循环:
s3[0]=s1[0];
s3[1]=s2[0];
第二遍循环:
s3[1]=s1[1];
s3[2]=s2[1];
问题出现了,数组s2存入的字符在后续循环中被数组s1覆盖了,那要怎么做才会不被覆盖,因为每次都会存入两个字符,j每次递增加2不就好了,这样第二遍循环就会是:
s3[2]=s1[1];
s3[4]=s2[1];
*/

(2)

 s3[i] = s2[j];  //i和j都是在函数fun里的全局变量,在上面循环结束后,i是数组s1和s2循环结束时遍历到的下标,j是数组s3最后的下标

(3)

s3[j-1] = '\0';//j-1显然不对,应该是j

答案:

#include <stdio.h> 
#include <string.h> 
#pragma warning (disable:4996)
void fun( char *s1, char *s2, char *s3)
{   int i,j;
/**********************found***********************/for(i = 0, j = 0; (s1[i] != '\0') && (s2[i] != '\0'); i++, j = j + 2)  {   	s3[j] = s1[i];   s3[j+1] = s2[i];   }    if (s2[i] != '\0')  {   	for(; s2[i] != '\0'; i++, j++)   
/**********************found***********************/s3[j] = s2[i];  }   else if (s1[i] != '\0')  {   for(; s1[i] != '\0'; i++, j++)       s3[j] = s1[i];}
/**********************found***********************/s3[j] = '\0';
}
void main() 
{  	char s1[128], s2[128], s3[255];  printf("Please input string1:"); gets(s1);   printf("Please input string2:");  gets(s2);    fun(s1,s2,s3);printf("string:%s\n", s3);   
} 

测试:

Please input string1:123456789
Please input string2:abcdefghijk
string:1a2b3c4d5e6f7g8h9ijk

20.当奇数次调用时要求把字符串中的小写字母转换成大写字母,偶数次调用时按输入字符串的逆序输出字符串

给定程序MODI1. C中,调用fun函数输出字符串,

当奇数次调用时要求把字符串中的小写字母转换成大写字母,

偶数次调用时按输入字符串的逆序输出字符串。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include   <stdio.h>
#include   <string.h>
#include   <ctype.h>
#pragma warning (disable:4996)
void fun( char  *s )
{  int  i;
/**********************found***********************/Static  int  n = 1;   //static关键字不能大写,否则就失去了原来的意义if ( n++ %2 )
/**********************found***********************/for(i=0;i<=strlen(s);i++)    //最大数组下标应该是strlen(s)-1,这个循环多了一项printf("%c", islower(s[i]) ? toupper(s[i]) : s[i]);//islower()是判断小写字母,toupper()是转化为大写字母else
/**********************found***********************/for (i = strlen(s)-1; i>0; i--)   //这个循环又少了一项,数组最小下标应该是0printf("%c", s[i]);
}
main( )
{  int  i;char s[] = "Hello, C Programmer";for (i=0; i<5; i++) {  fun(s);    printf("\n");   }
}

解题思路:

static修饰符:
被static修饰的变量,生命周期会被延长,值被改变的话,会被保留

int islower(char c) :检查所传字符是否是小写字母

char toupper(char c):把小写字母转换为大写字母
如果 c 有相对应的大写字母,则该函数返回 c 的大写字母,否则 c 保持不变。返回值是一个可被隐式转换为 char 类型的 int 值。

答案:

#include   <stdio.h>
#include   <string.h>
#include   <ctype.h>
#pragma warning (disable:4996)
void fun( char  *s )
{  int  i;
/**********************found***********************/static  int  n = 1;   if ( n++ %2 )
/**********************found***********************/for(i=0;i<strlen(s);i++)    printf("%c", islower(s[i]) ? toupper(s[i]) : s[i]);else
/**********************found***********************/for (i = strlen(s)-1; i>=0; i--)   printf("%c", s[i]);
}
main( )
{  int  i;char s[] = "Hello, C Programmer";for (i=0; i<5; i++) {  fun(s);    printf("\n");   }
}

测试:

HELLO, C PROGRAMMER
remmargorP C ,olleH
HELLO, C PROGRAMMER
remmargorP C ,olleH
HELLO, C PROGRAMMER

这篇关于计算机二级C语言的注意事项及相应真题-2-程序修改的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/672154

相关文章

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

bytes.split的用法和注意事项

当然,我很乐意详细介绍 bytes.Split 的用法和注意事项。这个函数是 Go 标准库中 bytes 包的一个重要组成部分,用于分割字节切片。 基本用法 bytes.Split 的函数签名如下: func Split(s, sep []byte) [][]byte s 是要分割的字节切片sep 是用作分隔符的字节切片返回值是一个二维字节切片,包含分割后的结果 基本使用示例: pa

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

C语言指针入门 《C语言非常道》

C语言指针入门 《C语言非常道》 作为一个程序员,我接触 C 语言有十年了。有的朋友让我推荐 C 语言的参考书,我不敢乱推荐,尤其是国内作者写的书,往往七拼八凑,漏洞百出。 但是,李忠老师的《C语言非常道》值得一读。对了,李老师有个官网,网址是: 李忠老师官网 最棒的是,有配套的教学视频,可以试看。 试看点这里 接下来言归正传,讲解指针。以下内容很多都参考了李忠老师的《C语言非

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou