期末考试形式改了
卑微的从同学那里要了pta来练函数
期末努力全对!💪
6-1 找两个数中最大者
int max(int a , int b)
{
return (a>b?a:b); }
6-2 简单实现x的n次方
double mypow(double x,int n)
{
int i; double num=1; for(i=0;i<n;i++) { num*=x; } return num; }
6-3 弹球距离
double dist(double h,double p)
{
double sum=h; while(h*p>=TOL) { h*=p; sum+=h*2; } return sum; }
6-4 使用函数求最大公约数
int gcd(int x,int y)
{
int rem=x; while(rem!=0) { rem=x%y; x=y; y=rem; } return x; }
6-5 使用函数输出一个整数的逆序数
int reverse( int number ){ int x=1,s,sum=0; if(number<0){ number=-number; x=-x; } while(number>0){ s=number%10; number=number/10; sum=sum*10+s; }sum*=x; return sum; }
6-6 使用函数求奇数和
int even (int n) { return((n%2==0)?1:0); } int OddSum( int List[], int N ) { int i,sum=0; for(i=0;i<N;i++) { if(List[i]%2!=0) { sum+=List[i]; } } return sum; }
6-7 使用函数求特殊a串数列和
int fn( int a, int n ) { int i; long long int sum=0; for (i=0;i<n;i++) { sum=sum*10+a; } return sum; } int SumA( int a, int n ) { int i,sum=0; for(i=1;i<=n;i++) { sum+=fn(a,i); } return sum; }
6-8 使用函数求素数和
int prime( int p ) { int i,count=0; if(p<0) { return 0; } for(i=1; i<=p; i++) { if(p%i==0) { count++; } } return(count==2?1:0); } int PrimeSum( int m, int n ) { int sum=0; int i,j; for(i=m; i<=n; i++) { int count=0; if(i<0) { continue; } for(j=1; j<=i; j++) { if(i%j==0) { count++; } } if(count==2) { sum=sum+i; } } return sum; }
6-9 统计各位数字之和是5的数
int is( int number ) { int sum=0; while(number>0) { sum+=number%10; number/=10; } return(sum==5?1:0); } void count_sum( int a, int b ) { int i,count=0,sum=0; for(i=a;i<=b;i++) { if(is(i)) { count++; sum+=i; } } printf("count = %d, sum = %d",count,sum);}
6-10 简单求和
int Sum ( int List[], int N ) { int i,sum=0; for(i=0;i<N;i++) { sum+=List[i]; } return sum; }
6-11 多项式求值
double f(int n,double a[],double x) { double sum; int i; for(i=0;i<n;i++) { sum+=a[i]*pow(x,i); } }
6-12 移动字母
void Shift( char s[] ) { char a[3]; int i,j; for(i = 0; i < 3;i++) a[i] = s[i]; for(i=3;s[i]; i++) s[i-3]=s[i]; for(j=i-3, i = 0; i < 3;i++) s[j++] = a[i]; }
6-13 在数组中查找指定元素
int search( int list[], int n, int x ) { int i; if(n==0) return -1; for(i=0;i<=n;i++){ if(list[i]==x) return i; } return -1; }
6-14 删除字符
void delchar(char *str,char c)
{
int i,j;
for(i=0,j=0;str[i]!='\0';i++)
{
if(str[i]!='c')
{
str[j++]=str[i];
}
}
str[j]='\0';
}
6-15 分类统计各类字符个数
void StringCount( char *s ) { int cap=0,low=0,bla=0,num=0,els=0,i=0; while(s[i]!='\0') { if(s[i]>='A'&&s[i]<='Z') cap++; else if(s[i]>='a'&&s[i]<='z') low++; else if(s[i]==' ') bla++; else if(s[i]>='0'&&s[i]<='9') num++; else els++; i++; } printf("%d %d %d %d %d",cap,low,bla,num,els); }
6-16 函数实现字符串逆序
void f(char *p) { int n=strlen(p); int i,j; char temp; for(i=0,j=n-1;i<n/2;i++,j--) { temp=p[i]; p[i]=p[j]; p[j]=temp; } p[n]='\0'; }
6-17 长整数转化成16进制字符串
void f( long int x, char *p ) { const char a[]="0123456789ABCDEF"; int i=0; char f[1000]; if(x<0) { x=-x; p[0]='-'; while (x) { f[i]=a[x%16]; x/=16; i++; } int j=1; while(i--) { p[j]=f[i]; j++; } } else if(x==0) { *p='0'; } else { while (x) { f[i]=a[x%16]; x/=16; i++; } int j=0; while(i--) { p[j]=f[i]; j++; } } }
6-18 递归计算Ackermenn函数
int Ack( int m, int n ) { if(m==0)return n+1; else if(n==0&&m>0)return(Ack(m-1,1)) ; else if(n>0&&m>0)return(Ack(m-1,Ack(m,n-1))); }
6-19 递归计算P函数
double P( int n, double x ) { double result; if(n == 0) result = 1; else if(n == 1) result = x; else result = ((2 * n - 1) * P(n-1,x)-(n - 1) * P(n-2,x)) / n; return result; }
6-20 递归求阶乘和
double fact( int n ) { double f; if(n==1||n==0) f=1; else f=fact(n-1)*n; return f; } double factsum( int n ) { double fs; if(n==1) fs=1; else if(n==0) fs=0; else fs=factsum(n-1)+fact(n); return fs; }