西安建筑科技大学2018年814程序设计

1、编写一个程序,输入a、b、c三个值,输出其中最大值。(8分)

(基础题)

#include <stdio.h>
int max(int *a,int *b,int *c,int *imax);
int main()
{
    int a,b,c,imax;
    printf("请输入三个值:\n");
    scanf("%d %d %d",&a,&b,&c);
    imax=a;
    max(&a,&b,&c,&imax);
    printf("max:%d",imax);
}
int max(int *a,int *b,int *c,int *imax)
{
    if(*b>*imax)
    *imax=*b;
    else if(*c>*imax)
    *imax=*c;
    return *imax;
}

运行结果:  

 

 

2、输入一个正整数,要求以相反的顺序输出该数。例如输入12345,输出位54321。(10 分)

(基础题)

#include <stdio.h>
#include <string.h>
int main()
{
    int num,gw,count=0;//定义正整数,该数个位,已经计数器count
    int str[100];//定义数组用来存放该数
    printf("请输入一个正整数:\n");
    scanf("%d",&num);
    for(int i=0;num!=0;i++)//将该数个位取出,依次存放至数组
    {
    gw=num%10;//取个位
    num=num/10;//去除个位后的数
    str[i]=gw;
    count++;//计数
    }
    for(int j=0;j<count;j++)
    {
        printf("%d",str[j]);//直接输出即可
    }
}

运行结果:  

 

 

 

3、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。(14 分)

(入门题)

#include <stdio.h>
#define PI 3.14
int main(){
    double r,h;
    double c,m,v;//周长,面积,体积
    printf(" 请输入半径和高:\n");
    scanf("%lf%lf",&r,&h);
    c=PI*2*r;
    m=PI*r*r;
    v=m*h;
    printf("圆周长:%.2lf\t圆面积: %.2lf\t圆柱体积:%.2lf\t",c,m,v);
    
}

运行结果:  

 

 

 

4、编写一个函数实现将字符串stl 和字符串st2合并,合并后的字符串按其ASCI码值从小到大进行排序,相同的字符在新字符串中只出现一次。(18 分)

(中等题,删除重复字符处注意细节)


#include <stdio.h>
#include <string.h>
char cat(char *,char *);
int main()
{
    char st1[60],st2[30];
    printf("输入字符串st1:\n");
    gets(st1);
    printf("输入字符串st2:\n");
    gets(st2);
    cat(st1,st2);
    //printf("\n简化后:%s",st1);    
}
char cat(char st1[],char st2[])
{
    int i,j,a,b;
    char cyt[100];
    a=strlen(st1);
    b=strlen(st2);
    for(i=a,j=0;i<a+b;i++,j++)//合并
    {
        st1[i]=st2[j];
    }
    st1[a+b]='\0';
    printf("合并后:\n%s",st1);
    for(i=0;i<strlen(st1)-1;i++)//冒泡排序
    {
        for(j=0;j<strlen(st1)-i-1;j++)
        {
            if(st1[j]>st1[j+1])
            {
            char t=st1[j];
            st1[j]=st1[j+1];
            st1[j+1]=t;
            }
        }
    }

    printf("\n排序后:\n%s",st1);
    for(i=0;i<strlen(st1);i++)//去除相同字符,先双重循环对比
    {
        for(j=i+1;j<strlen(st1);j++)
        {
        if(st1[i]==st1[j])//如果出现相同字符,将后一个字符向前移动,实现删除
          {
                for(int k=i;k<strlen(st1);k++)
                {
                    st1[k]=st1[k+1];   
                }
                j--;//此处避免连续相同字符(重点)
           }
        }
    }
    printf("\n去除相同字符:\n%s",st1);
}

运行结果:  

 

 

 

5、输入5*5的数组,编写程序实现: (20分)

(1)求出对角线上各元素的和;

(2)求出对角线上行、列下标均为偶数的各元素的积:

(3)找出对角线上其值最大的元素和它在数组中的位置。

(按照主对角线求解)


#include <stdio.h>
int main()
{
    int a[5][5];
    int str[5];
    int i,j,c,d;
    int he=0,ji=1;
    printf("输入小矩阵:\n");
    for(i=0;i<5;i++)
    {
       for(j=0;j<5;j++)
      {
          scanf("%d",&a[i][j]);
      }
    }
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            printf("%d\t",a[i][j]);
        }
        puts("\n");
    }
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            if(i==j)
            {
                he+=a[i][j];
            }
        }
    }
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            if(i==j&&(i%2==0)&&(j%2==0))
            {
                ji*=a[i][j];
            }
        }
    }
    int max=a[0][0];
    for(i=0;i<5;i++)
    {
        
        for(j=0;j<5;j++)
        {
            if(i==j&&a[i][j]>max)
            {      
                max=a[i][j];
                c=i,d=j;
            }
        }
    }
    
    
    printf("\n对角线最大值:%d\t下标a[%d][%d]",max,c,d);
    printf("\n矩阵对角线和:%d\n",he);
    printf("\n矩阵偶对角线积:%d\n",ji);
    
}

运行结果:

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值