西南交通大学2019年计算机复试机试题(C语言程序设计)

1、输入一个整数n,然后依次输入n组下标序号和字符串,要求把字符串的对应序号下标的字符删除后依次输出。

标准输入:

2

1

abcdef

3

ABCDEF

标准输出:

acdef

ABCEF

 

#include<stdio,h>
int main(){
    int n,index[100],i,j;
    char str[100][100];
    
    scanf("%d",&n);
    for(i=0;i<n;i++){
         scanf("%d",&index[100]);
         getchar();
        gets(str[i]);
   }
   for(i=0;i<n;i++){
       j=index[i];
       while(str[i][j]!='\0'){
           str[i][j]=str[i][++j];
       }
       puts(str[i]);
       printf("\n");
   }
}

2、定义容量为10的浮点型数组,要求输出这10个数的平均值,然后将这个数组中比平均值大的元素按照原来的顺序排列在前,比平均值小的元素按照原来的顺序排列在后面输出(结果保留一位小数)。

标准输入:

1 2 3 4 5 6 7 8 9 10

标准输出:

5.500000

6.0 7.0 8.0 9.0 10.0 1.0 2.0 3.0 4.0 5.0 

#include<stdio.h>
int main(){
    float num[10],ave=0.0,res[10];
    int i,j=0,k=4;
    for(i=0;i<10;i++){
        scanf("%d",&num[i]);
        ave+=num[i];
    }
    ave/=10;
    printf("%f\n",ave);
    for(i=0;i<10;i++){
        if(num[i]>ave){
            res[j++]=num[i];
        }else{
            res[k++]=num[i];
        }
    }
    res[k]='\0';
    puts(res);
    return 0;
}

3、输入三个3位整数,然后输出一个新数,它的百位为第一个数的百位,十位为第二个数的十位,个位为第三个数的个位。

标准输入:

234 567 789

标准输出:

269

#include<stdio.h>
int main(){
    int a,b,c;
    int d,e,f;
    scanf("%d %d %d",&a,&b,&c);
    d=a/100;
    e=(b%100)/10;
    f=c%10;
    printf("%d%d%d",d,e,f);
}

4、输入一个整数n,计算并输出数列的通项An:A1=1,A2=1/(1+A1),...,An=1/(1+An-1)

标准输入:

10

标准输出:

0.617977

#include<stdio.h>
int main(){
    double A=1.0;
    int i,n;
    scanf("%d",&n);
    for(i=1;i<n;i++){
        A=1/(1+A);
    }
    printf("%.7lf",A);
    return 0;
}

5、输入一个长整数,计算并输出它各位数码的积

标准输入:

123456

标准输出:

720

#include<stdio.h>
int main(){
    long n,result;
    scanf("%ld",&n);
    while(n){
        result *= n%10;
        n /= 10;
    }
    printf("%ld",result);
    return 0;
}

6、略

7、略

8、输入三个整数,按从小到大的顺序输出

标准输入:

23 22 27

标准输出:

22 23 27

#include<stdio.h>
int main(){
    int a,b,c,t;
    scanf("%d %d %d",&a,&b,&c);
    if(a>b){
        t=a;
        a=b;
        b=t;
    }
    if(b>c){
        t=c;
        c=b;
        b=t;
    }
    if(a>c){
        t=a;
        a=c;
        c=t;
    }
    printf("%d %d %d",a,b,c);
    return 0;
}

9、定义并输出一维整型数组(先输入n,再输入n个整数),输入一个整数m,输出一个新的n维数组,要求从下标m(包括m)开始以后的元素按照原来的顺序放到数组前,前面的m项按照原来的顺序放在数组后。

标准输入:

10

1 2 3 4 5 6 7 8 9 10

7

标准输出:

8 9 10 1 2 3 4 5 6 7

#include<stdio.h>
int reverse(int num[],int start,int end){
    int temp;
    for(;start<end;start++,end--){
        temp=num[start];
        num[start]=num[end];
        num[end]=temp;
    }
}
int main(){
    int n,m,i;
    int num[100];
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&num[i]);
    }
    scanf("%d",&m);
    reverse(num,0,m-1);
    reverse(num,m,n-1);
    reverse(num,0,n-1);
    for(i=0;i<n;i++){
        printf("%d ",num[i]);
    }
    return 0;
}

10、输入一个3位整数,将其数码倒置并输出

标准输入:

369

标准输出:

963

#include<stdio.h>
int main(){
    int n,a,b,c;
    scanf("%d",&n);
    a=n%10;
    b=(n/10)%10;
    c=n/100;
    printf("%d%d%d",a,b,c);
    return 0;
}

11、输入一个整数n,求Sn=1-1/2+1/3-1/4+...+(-1)^(n+1)/n的值并输出

标准输入:

3

标准输出:

0.833333

#include<stdio.h>
int main(){
    int sign=1;
    int i,n;
    double Sn=1;
    scanf("%d",&n);
    for(i=2;i<=n;i++){
        sign*=-1;
        Sn+=1.0/n*sign;
    }
    printf(".6lf",Sn);
    return 0;
}

12、从键盘输入一个字符串,将其所有大写字母转换为小写,小写英文字母转换为大写,输出结果(其他字符不变)

标准输入:

12Ad56b%

标准输出:

12aD56B%

#include<stdio.h>
int main(){
    int ch;
    while(ch=getchar()!='\n'){
        if(ch>='A'&&ch<='Z'){
            ch+=32;
        }else if(ch>='a'&&ch<='z'){
            ch-=32;
        }
        printf("%c",ch);
    }
    return 0;
}

13、略

14、略

15、输入一个整数n,输出斐波那契数列前n项的和

标准输入:

6

标准输出:

20

#include<stdio.h>
int main(){
    int i,n,f1=1,f2=1,f,sum=2;
    scanf("%d",&n);
    if(n==1)
        sum=1;
    else if(n==2)
        sum=2;
    else
        for(i=3;i<=n;i++){
            f=f1+f2;
            f1=f2;
            f2=f;
            sum+=f;
        }
    printf("%d",sum);
    return 0;
}

16、输入一个数列的首项a,公比q,项数n,输出其前n项和。

标准输入:

1 2 10

标准输出:

1023

#include<stdio.h>
#include<math.h>
int main(){
    double a,q,Sn=0;
    int n,i;
    scanf("%lf %lf %d",&a,&q,&n);
    for(i=1;i<=n;i++){
        Sn+=a*pow(q,i-1);
    }
    printf("%.0lf",Sn);
    return 0;
}

17、以链表的形式,将两个字符串连接在一起并输出。

标准输入:

123456AB

qwerty789

标准输出:

123456ABqwerty789

#include<stdio.h>
typedef struct node{
    char data;
    struct node *next;
}LinkList;
int main(){
    LinkList *head,*node,*end;
    head=(LinkList*)malloc(sizeof(LinkList));
    end=head;
    while(ch=getchar()!='\n'){
        node=(LinkList*)malloc(sizeof(LinkList));
        node->data=ch;
        end->next=node;
        end=node;
    }
    while(ch=getchar()!=\n){
        node=(LinkList*)malloc(sizeof(LinkList));
        node->data=ch;
        end->next=node;
        end=node;
    }
    end->next=NULL;
    while(head->next!=NULL){
        head=head->next;
        printf("%c",head->data);
    }
    return 0;
}

 18、略

  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值