计协编程组C语言编程题1

目录

1、比较大小

2、数的倒置

3、最大公约数

4、附加题


1、比较大小

输入三个数a,b,c,比较输出其中的最大值

思路:将a分别与b、c比较,并将较大值赋给a。

#include <stdio.h>
int main()
{
	int a , b , c;
	printf("请你输入三个数字:");
	scanf("%d %d %d",&a,&b,&c); 
	if (a<b)            //将a与b比较,若a小于b,将b值赋予a,使a的值为原a,b中最大。
		a=b;
	if (a<c)            //同上
		a=c;
	printf("最大值为:%d",a);
	return 0;
	
 }

2、数的倒置

输入一个数(12345678),输出这个数的倒置(87654321)

思路:用数组。用循环将第一个数与最后一个数交换,第二个数与倒数第二个交换,其他数同理。


#include <stdio.h>
#include <stdlib.h>
int main()
{
	char s[100]="12345678";
	int length=0, i;	
	for (i=0;i<100;i++)    //用for循环求出字符串长度
	{
		if (s[i]=='8')	//读到"8"退出循环
			break;
		else
			length++;	//计算字符串长度
	}
		for (i=0; i<=length/2;i++)	//交换数字,得新的字符串
		{
			char a = s[i];
			s[i] = hj[length-i];
			s[length-i] = a;
		}
	printf("%s",hj);
	return 0;
}

3、最大公约数

写一个函数,完成输入两个整数,输出最大公约数的功能

思路:用相减法求最大公约数

相减法:

已知有两整数mn,① 若m>n,m=m-n;②若m<n,则n=n-m;③若m=n,则m(或n)即为两数的最大公约数;④若m≠n,则再回去执行①。

例:求m=27n=15的最大公约数过程为:①m=27-15=12 n=15m=12 n=15-12=3m=12-3=9 n=3m=9-3=6 n=3m=6-3=3 n=3因此,n=3即为最大公约数。

#include<stdio.h>
void a(int m,int n)    //写函数实现求最大公约数(此处用相减法求)
{
	int a,b;
	b=m*n;
    while(m!=n)
    {
        if(m>n)
            m=m-n;
        else
            n=n-m;
    }
    a=n;
    b=b/a;
    printf("最大公约数是:%d",a);
	
}
int main(void)
{ 
    int m,n;
    scanf("%d,%d",&m,&n);
	a(m,n);
    return 0;
}

4、附加题

首先输入一个数组的大小,如何输入数组的数据,接下来对数组排序后输出

提示:冒泡排序与选择排序

(1)冒泡排序

重复比较相邻的元素。如果第一个比第二个大,就交换他们两个。

#include <stdio.h>
int main()
{
    int l,i,j,t,a;
    scanf("%d", &l);
	int n[l]; 
    for(i=0;i<l;i++) 
	{
        scanf("%d",&n[i]);
    }                        //输入数组长度和数据
    for(j=1;j<=l-1;j++)         //用for循环嵌套对数组数据进行排序
	{
        for(a=0;a<=l-1-j;a++) 
		{
            if(n[a]>n[a+1]) 
			{
                t=n[a];
                n[a]=n[a+1];
                n[a+1]=t;
            }
        } 
    }
    for(i=0;i<l;i++) 
        printf("%d ",n[i]);
    return 0;
}

(2)选择排序

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复直到所有元素均排序完毕。

#include <stdio.h>
int main()
{
	int l,i,j,t,a;
    scanf("%d", &l);
	int n[l]; 
    for(i=0;i<l;i++) 
	{
        scanf("%d",&n[i]);
    }                //输入数组长度和数组数据
    for(j=1;j<=l-1;j++)        //用for循环嵌套对数组数据进行排序
    {
        for (a=i+1;a<=l-1-a;a++)
        {
            if(n[j]>n[a])             
            {
                t=n[j];
                n[j]=n[a];
                n[a]=t;
            }
    	}
	}
    for(i=0;i<l;i++)
        printf("%d ", n[i]);    
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值