2007年885编程大题

第一题:

#include <stdio.h>
#include <math.h>
char str[100];
void ToUpper(){
    int i;
    for(i=0;str[i]!='\0';i++){
        if(str[i]>='a'&&str[i]<='z')
          str[i]=str[i]-32;
    }
    for(i=0;str[i]!='\0';i++)
      printf("%c",str[i]);
}
int main(){
    printf("请输入字符串:\n");
    scanf("%s",str);
    ToUpper();
    return 0;
}

 

第二题:

#include <stdio.h>
#include <math.h>
double fun(int n,double x){
    if(n==0) return 1;
    else if(n==1) return x;
    else return ((2*n-1)*x*fun(n-1,x)-(n-1)*fun(n-2,x))/n;
}
int main(){
    int n;double x;
    printf("请输入n和x的值:\n");
    scanf("%d%lf",&n,&x);
    printf("n=%d,x=%lf时值为%lf\n",n,x,fun(n,x));
    return 0;
}

 

 

第三题:

#include <stdio.h>
#include <math.h>
int fun(int num){//判断这个是是不是完数 
    int sum=0,i;
    for(i=1;i<num;i++){
        if(num%i==0) sum+=i;
    }
    if(sum==num) return 1;//是完数
    else return 0;//不是完数 
}
int main(){
    int i;
    printf("1000以内的完数如下:\n");
    for(i=1;i<=1000;i++){
        if(fun(i)) printf("%4d",i);
    } 
    return 0;
}

 

第四题:

#include <stdio.h>
#include <math.h>
#define N 10
int main(){
   double h=100,s=100;
   int i;
   for(i=1;i<=10;i++){
        h/=2;
        s+=2*h;
   }
   printf("第10次反弹高度是%lf,总共经过路程是%lf\n",h,s);
   return 0;
}

 

第五题

#include <stdio.h>
#include <math.h>
#define N 20
int a[N];
int main(){
    char str[100];
    scanf("%s",str);
    int i,num=0,k=0;
    for(i=0;str[i]!='\0';i++){
        if(str[i]>='0'&&str[i]<='9')
          num=num*10+str[i]-'0';
        else{
            if(num==0) continue;
            else{
                a[k++]=num;num=0;
            }
        }
    }
    if(num!=0) a[k++]=num; 
    for(i=0;i<k;i++){
        printf("%6d",a[i]);
    } 
    printf("\n共有%d个数值\n",k);
    return 0;
}

  收录于《考研计算机885复习》

posted @ 2020-10-13 11:00  薄眠抛却陈年事。  阅读(142)  评论(0编辑  收藏  举报