程序设计考题汇总(一)

1、输入三个数并从小到大输出

#include<stdio.h>

void swap(int *p1,int *p2);

int main(){
	float a,b,c,temp;
	printf("please enter a,b,c");
	scanf("%f,%f,%f",&a,&b,&c);

//方法一:
	if(a>b){
		temp=a;
		a=b;
		b=temp;
	}
	if(a>c){
		temp=a;
		a=c;
		c=temp;
	}
	if(b>c){
		temp=b;
		b=c;
		c=temp;
	}

//方法二:
//	if(a>b)	swap(&a,&b);
//	if(a>c)	swap(&a,&c);
//	if(b>c)	swap(&b,&c);
	printf("%.2f,%.2f,%.2f\n",a,b,c);
	return 0;
}

void swap(int *p1,int *p2){
	int t;
	t=*p1;
	*p1=*p2;
	*p2=t;
}
a=eval(input("a:"))
b=eval(input("b:"))
c=eval(input("c:"))

# 方法一:
def swap(a,b):
    return b,a

if(a>b):
    a,b=swap(a,b)
if(a>c):
    a,c=swap(a,c)
if(b>c):
    b,c=swap(b,c)
print(a,b,c)



# 方法二:
# if(a>b):
#   t=a
#   a=b
#   b=t
# if(a>c):
#   t=a
#   a=c
#   c=t
# if(b>c):
#   t=b
#   b=c
#   c=t
# print(a,b,c)



# 方法三:
# list=[a,b,c]
# list.sort()

# for i in list:
#     print(i)

在这里插入图片描述

2、求100-200全部素数

#include <stdio.h>
#include <math.h>

int main(){
	int m,i,k,n=0;
	for(m=101;m<=200;m+=2){
		k=sqrt(m);
		for(i=2;i<=k;i++){
			if(m%i==0)	break;
		}
		if(i>=k+1){
			printf("%d ",m);
			n=n+1;
		}
		if(n%10==0)	printf("\n");
	}
	printf("\n");
	return 0;
}
import math

for i in range(101,200,2):
    for j in range(2,round(math.sqrt(i)+1)):#round表示四舍五入保留整数,python自带函数
        if i%j==0:
            break;
    else:#若循环正常结束执行else
        print(i,end=" ")


在这里插入图片描述
在这里插入图片描述

3、打擂算法

在这里插入图片描述

int a[10];
int max,min,i;
max=min=a[0];
for(i=1;i<10;i++){
	if(a[i]>max)
		max=a[i];
	else if(a[i]<min)
		min=a[i];
}

printf("max=%d,min=%d\n",max,min );

12、冒泡排序

在这里插入图片描述

#include <studio.h>

//从小到大排序
void bubble(int a[]/*数组*/,n/*数组元素个数*/){
	int i,j,t;
	for(i=0;i<n-1;i++){
		for(j=0;j<n-1-i;j++){
			if(a[j]>a[j+1]){
				t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;
			}
		}
	}
}
def bubble(a,n):
    for i in range(0,n-1):
        for j in range(0,n-1-i):
            if a[j]>a[j+1]:
                t=a[j]
                a[j]=a[j+1]
                a[j+1]=t

a=[]
n=eval(input("n:"))
for i in range(n):
    a.append(eval(input()))
bubble(a,len(a))
for i in a:
    print(i,end=" ")

在这里插入图片描述

4、简单选择排序

在这里插入图片描述

在这里插入图片描述

#include <studio.h>

void select (int a[],n){
	int i,j,k,t;

	for(i=0;i<n-1;i++){
		k=i;
		for(j=i+1;j<n;j++){
			if(a[j]<a[k])
				k=j;
		}

		if(k!=i){
			t=a[i];
			a[i]=a[k];
			a[k]=t;
		}

	}
}

def select(a,n):
    for i in range(0,n-1):
        k=i
        for j in range(i+1,n):
            if a[j]<a[k]:
                k=j
        if k!=i:
            t=a[k]
            a[k]=a[i]
            a[i]=t

a=[]
n=eval(input("n:"))
for i in range(n):
    a.append(eval(input()))
select(a,len(a))
for i in a:
    print(i,end=" ")

5、二分法(折半)查找算法

在这里插入图片描述
在这里插入图片描述

#include <studio.h>

void halve(int a[],int n,int x){
    int left=0,right=n-1,mid;
    while(left<=right){
        mid=(left+right)/2;
        if(a[mid]==x){
            printf("找到了,在第%d位\n",mid+1);
            break;
        }else if(a[mid]<x)
            left=mid+1;
        else
            right=mid-1; 
    }

    if(left>right)
        printf("数组中不存在要找的数!");
        
}
def halve(a,n,x):
    left=0
    right=n-1
    while left<=right:
        mid=int((left+right)/2)
        if a[mid]==x:
            print("要找的数在第%d位"%(mid+1))
            break
        elif a[mid]<x:
            left=mid+1
        else:
            right=mid-1
    if left>right:
        print("数组中没有要找的数!")
        

6、数组插入

在这里插入图片描述

在这里插入图片描述

#include <studio.h>

void insert(int a[],n,num/*需要插入元素*/){
	
	int i,j,index=n;

	for(i=0;i<n;i++){
		if(num<a[i]){
			index=i;
			break;
		}
	}

	for(j=n-1;j>=index;j--){
		a[j+1]=a[j];
	}

	a[index]=num;

}
def insert(a,n,num):
    for i in range(0,n):
        if a[i]>=num:
           k=i
           break

    for i in range(n-1,k-1,-1):
        a[i+1]=a[i]

    a[k]=num

7、数组删除

在这里插入图片描述

#include <studio.h>

void delete(int a[],n,num/*需要删除的元素*/){
	
	int i,j;

	for(i=0;i<n;i++){
		if(num==a[i]){
			for(j=i;j<n;j++)
				a[j]=a[j+1];
			n=n-1;
			i--;
		}
	}

}
def delete(a,n,num):
    for i in range(0,n):
        if a[i]==num:
            for j in range(i,n):
                a[j]=a[j+1]
             n=n-1
             i=i-1

8、数组翻转

在这里插入图片描述

#include <studio.h>

void flip(int a[],n){
	
	int left,right,temp;

	for(left=0,right=n-1;left<right;left++,right--){
		
		temp=a[left];
		a[left]=a[right];
		a[right]=temp;

	}

}
def flip(a,n):
    left=0
    right=n-1
    while(left<right):
        t=a[left]
        a[left]=a[right]
        a[right]=t
        left+=1
        right-=1

9、数组转置矩阵

#include <studio.h>
#include <math.h>

int main(){

	int a[2][3]={{1,2,3},{4,5,6}};
	int b[3][2],i,j;

	printf("array A:\n")
	for(i=0;i<2;i++){
		for(j=0;j<3;j++){
			printf("%d",a[i][j] );
			b[j][i]=a[i][j];
		}

		printf("\n");
	}

	printf("array B:\n"){
		for(i=0;i<2;i++){
			for(j=0;j<3;j++){
				printf("%d",b[i][j]);
			}

			printf("\n");
		}
	}

	return 0;

}

10、用递归方法求n!

#include <studio.h>

int main(){
	long fac(int n);
	int n;
	long y;
	printf("请输入求阶乘的数");
	scanf("%d",&n);
	y=fac(n);
	printf("%d!=%ld\n",n,y);
	return 0;
}

long fac(int n){
	long f;
	if(n<0)
		printf("无解!")else if(n==0||n==1)
		f=1;
	else
		f=fac(n-1)*n;
	return f;
}
def fac(n):
    if n<0:
        print("无解")
    elif n==0 or n==1:
        f=1
    else:
        f=fac(n-1)*n
    
    return f

n=eval(input("n:"))
f=fac(n)
print(f)

11、数组作为函数参数

在这里插入图片描述

#include <studio.h>

int main(){
	float aver(float a[][6]);
	int i=0;
	float pay[3][6]={{2345,4309,3123,2230,4490}
	,{2098,4320,1644,2865,4589},{3152,2317,3467,4312,5432}};

	printf("平均工资为:%7.2f\n",aver(pay));
	for(i=0;i<3;i++)
		printf("第%d组的平均工资为:%7.2f\n",i+1,pay[i][5]);
	

	return 0;
}

float aver(float a[][6]){
	int i,j;
	float sum=0,total=0;

	for(i=0;i<3;i++){
		sum=0;
		for(j=0;j<5;j++)
			sum+=a[i][j];
		a[i][5]=sum/5.0;
		total+=a[i][5];
	}

	return(total/3.0);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值