C语言基础:假期练习

1.循环输入n个元素,计算最大差值,最小和,最大和(不允许使用排序)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n=0;int m1=0;int m2=0;int m3=0;int tempmin=0;int tempmax=0;
	printf("请输入整数,输入0程序会结束:");
	scanf("%d",&n);
	int max=n;
	int min=n;
	while(n!=0){
		printf("请输入整数,输入0程序会结束:");
		scanf("%d",&n);
		if (n==0)
			break;
		if (n>=max){
			tempmax=max;
			max=n;
		}
		else if(n<=min){
			tempmin=min;
			min=n;
		}
	}
	m1=max-min;
	m2=min+tempmin;
	m3=max+tempmax;

	printf("最大差为:%d,最小和为:%d,最大和为:%d\n",m1,m2,m3);
	return 0;

}

2.循环输入n个元素,交换数组中最大值和最小值

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n=0;int count=0;
	printf("请输入想要输入的元素个数:");
	scanf("%d",&count);
	int s[count];
	bzero(s,sizeof(s));
	
	int i=0;
	while(i!=count){
		printf("请输入第%d整数元素:",i+1);
		scanf("%d",&s[i]);
		i++;
	}
	
	printf("改变前:\n");
	for(int j=0;j<count;j++){
		printf("%d ",s[j]);
	}
	putchar(10);
	int indexmax=0;int indexmin=0;
	for(int j=0;j<count;j++){
		if(s[j]>=s[indexmax])
			indexmax=j;
		else if(s[j]<=s[indexmin])
			indexmin=j;
	}
	
	int temp=s[indexmax];
	s[indexmax]=s[indexmin];
	s[indexmin]=temp;

	printf("改变后:\n");
	for(int j=0;j<count;j++){
		printf("%d ",s[j]);
	}
	putchar(10);
	return 0;
}

3.循环输入n个元素,输入查找元素key,

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n=0;int count=0;
	printf("请输入想要输入的元素个数:");
	scanf("%d",&count);
	int s[count];
	bzero(s,sizeof(s));

	int i=0;
	while(i!=count){
		printf("请输入第%d整数元素:",i+1);
		scanf("%d",&s[i]);
		i++;
	}
	
	printf("请输入想要查找的key元素:");
	int key=0;
	scanf("%d",&key);
	int countkey=0;int index=0;
	for(int i=0;i<count;i++){
		if(s[i]==key){
			index=i;
			countkey++;
		}
	}
	switch(countkey){
	case 0:printf("您输入的key不存在\n");break;
	case 1:printf("您输入的key在数组的第%d个\n",index+1);break;
	default:printf("您输入的key在数组中出现了%d次\n",countkey);break;
	}
	return 0;
}

4.循环输入n个元素,输入flag,

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n=0;int count=0;
	printf("请输入想要输入的元素个数:");
	scanf("%d",&count);
	int s[count];
	bzero(s,sizeof(s));

	int i=0;
	while(i!=count){
		printf("请输入第%d整数元素:",i+1);
		scanf("%d",&s[i]);
		i++;
	}

	int flag=0;int temp=0;
	printf("请输入flag:");
	scanf("%d",&flag);
	if(flag==1){
		for(int i=0;i<count;i++){
			for(int j=0;j<count-1-i;j++){
				if(s[j]>s[j+1]){
					temp=s[j+1];
					s[j+1]=s[j];
					s[j]=temp;
				}
			}
		}
		for(int i=0;i<count;i++){
			printf("%-4d",s[i]);
		}
		putchar(10);

	}else if(flag==0){
		for(int i =0;i<count;i++){
			int index=i;
			for(int j=i;j<count;j++){
				if(s[j]>s[index]){
					index=j;
				}
			}
			temp=s[index];
			s[index]=s[i];
			s[i]=temp;
		}


		for(int i =0;i<count;i++){
			printf("%-4d",s[i]);
		}
		putchar(10);


	}else{
		printf("ERROR\n");
	}
	return 0;
}

5.循环输入数组元素,实现数组元素逆置

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n=0;int count=0;
	printf("请输入想要输入的元素个数:");
	scanf("%d",&count);
	int s[count];
	bzero(s,sizeof(s));

	int i=0;int j=count-1;
	while(i!=count){
		printf("请输入第%d整数元素:",i+1);
		scanf("%d",&s[i]);
		i++;
	}
	
	for(i=0;i<count;i++){
		printf("%d ",s[i]);	
	}
	putchar(10);
	i=0;
	while(i<j){
		int temp=s[j];
		s[j]=s[i];
		s[i]=temp;
		i++;j--;
	}
	for(i=0;i<count;i++){
		printf("%d ",s[i]);	
	}
	putchar(10);
	return 0;
}

6.循环输入n个数组元素,输入key;请删除所有和key相等的元素

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n=0;int count=0;
	printf("请输入想要输入的元素个数:");
	scanf("%d",&count);
	int s[count];
	bzero(s,sizeof(s));

	int i=0;int j=count-1;
	while(i!=count){
		printf("请输入第%d整数元素:",i+1);
		scanf("%d",&s[i]);
		i++;
	}

	for(int i=0;i<count;i++){
		printf("%d ",s[i]);
	}
	putchar(10);

	int key=0;
	printf("请输入key:");
	scanf("%d",&key);
	int countt=count;
	i=0;
	while(i<=countt){
		int f=0;
		if(s[i]==key){	
			for(int j=i;j<count-1;j++){
				int temp=s[j+1];
				s[j+1]=s[j];
				s[j]=temp;
			}
			countt--;
			f=1;
		}
		if(f==0)
			i++;
		else if(f==1)
			i=0;
	}
	//printf("%d",countt);
	for(int i=0;i<=countt;i++){
		printf("%d ",s[i]);
	
	}
	putchar(10);
	return 0;
}

7.循环输入n个数组元素,输入变量k的值,将一个- -维数组循环右移k位

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n=0;int count=0;
	printf("请输入想要输入的元素个数:");
	scanf("%d",&count);
	int s[count];
	bzero(s,sizeof(s));

	int i=0;int j=count-1;
	while(i!=count){
		printf("请输入第%d整数元素:",i+1);
		scanf("%d",&s[i]);
		i++;
	}
	
	for(i=0;i<count;i++){
		printf("%d ",s[i]);	
	}
	putchar(10);
	int k=0;int z=0;
	printf("请输入变量K的值:");
	scanf("%d",&k);
	int a[count];
	bzero(a,sizeof(a));
	for(int i=count-k;i<count;i++){
		a[z]=s[i];
		z++;
	}
	for(int i=0;i<=k;i++){
		a[z]=s[i];
		z++;
	}
	for(int i=0;i<count;i++){
		printf("%d ",a[i]);
		
	}
	putchar(10);
	return 0;
}

.

7.思维导图

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值