首页 > 其他分享 >0403_C基础5

0403_C基础5

时间:2024-04-07 21:33:09浏览次数:20  
标签:arr 0403 int 基础 数组 printf include 输入

练习1:

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

最大差:最大值-最小值

最小和:最小值+第二小值

最大和:最大值+第二大值

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//定义int类型最大值以及最小值
#define INT_MAX   2147483647
#define INT_MIN    (-INT_MAX - 1)
int main(int argc, const char *argv[])
{
	int n;
	printf("输入数组长度:");
	scanf("%d",&n);
	int arr[n];
	bzero(arr,sizeof(arr));
	int min1=INT_MAX;
	int max1=INT_MIN;
	int min2=INT_MAX;
	int max2=INT_MIN;
	int i;
	for(i=0;i<n;i++)
	{
		printf("请输入第%d个值:",i);
		scanf("%d",&arr[i]);
		if(min1>arr[i])
		{
			min2=min1;
			min1=arr[i];
		}
		else if(min2>arr[i])
		{
			min2=arr[i];
		}
		if(max1<arr[i])
		{
			max2=max1;
			max1=arr[i];
		}
		else if(max2<arr[i])
		{
			max2=arr[i];
		}
	}
	printf("最大差为%d:\n",max1-min1);
	printf("最小和为%d:\n",min1+min2);
	printf("最大和为%d:\n",max1+max2);
	return 0;
}

 练习2:

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

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n;
	printf("输入数组长度:");
	scanf("%d",&n);
	int arr[n];
	bzero(arr,sizeof(arr));
	int min=0;
	int max=0;
	int i;
	for(i=1;i<n;i++)
	{
		printf("请输入第%d个值:",i);
		scanf("%d",&arr[i]);
		if(arr[min]>arr[i])
		{
			min=i;
		}
		if(arr[max]<arr[i])
		{
			max=i;
		}
	}
    int temp;
    temp=arr[max];
    arr[max]=arr[min];
    arr[min]=temp;
	printf("打印后数组元素为:");
    for(i=0;i<n;i++)
    {
        printf("%d ",arr[i]);
    }
	
	return 0;
}

 练习3:

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

如果key在数组中出现1次,则输出对应位置

如果key在数组中出现0次,则提示不存在

如果key在数组中出现多次,则输出出现的次数

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n;
	printf("输入数组长度:");
	scanf("%d",&n);
	int arr[n];
	bzero(arr,sizeof(arr));
	int i;
	for(i=0;i<n;i++)
	{
		printf("请输入第%d个值:",i);
		scanf("%d",&arr[i]);
	}
	printf("打印前数组元素为:");
	for(i=0;i<n;i++)
	{
		printf("%d ",arr[i]);
	}
	printf("输入需要查找的元素:");
	int key;
	scanf("%d",&key);
	int num=0;
	int digit=0;
	for(i=0;i<n;i++)
	{
		if(key==arr[i])
		{
			digit=i;
			num++;
		}
		
	}
	if(num==0)
	{
		printf("数组元素中不存在\n");
	}
	if(num==1)
	{
		printf("该元素在数组中的第%d位\n",digit+1);
	}
	if(num>1)
	{
		printf("该元素在数组中出现%d次\n",num);
	}
	return 0;
}

 练习4:

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

如果flag==1,则实现冒泡升序排序

如果flag==0,则实现简单排序降序输出

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n;
	printf("输入数组长度:");
	scanf("%d",&n);
	int arr[n];
	bzero(arr,sizeof(arr));
	int i;
	for(i=0;i<n;i++)
	{
		printf("请输入第%d个值:",i);
		scanf("%d",&arr[i]);
	}
	printf("打印前数组元素为:");
	for(i=0;i<n;i++)
	{
		printf("%d ",arr[i]);
	}
	printf("\n请输入需要实现的排序1为冒泡排序 0 为简单选择降序排序:");
	int flag;
	scanf("%d",&flag);
	int j;
	if(flag==1)
	{
		int temp1=0;
		for(i=0;i<n-1;i++)
		{
			for(j=0;j<n-1-i;j++)
			{
				if(arr[j]>arr[j+1])
				{
					temp1=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp1;
				}
			}
		}
		printf("冒泡排序后打印数组为:");
		for(i=0;i<n;i++)
		{
			printf("%d ",arr[i]);
		}
		putchar(10);
	}
	else if(flag==0)
	{
		int temp2=0;
		int max;
		for(i=0;i<n;i++)
		{
			max=i;
			for(j=i+1;j<n;j++)
			{
				if(arr[max]<arr[j])
				{
					max=j;
				}
			}
			if(max!=i)
			{
				temp2=arr[i];
				arr[i]=arr[max];
				arr[max]=temp2;
			}
		}
		printf("简单排序降序排序后打印数组为:");
		for(i=0;i<n;i++)
		{
			printf("%d ",arr[i]);
		}
		putchar(10);
	}
	else if(0!=flag&&1!=flag)
	{
		printf("输入错误,不在代码范围内,系统强制退出\n");
		return -1;
	}
	return 0;
}

练习5:

循环输入数组元素,实现数组元素逆转

eg:

int a[4]={11,22,33,44}

逆转后{44,33,22,11}

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n;
	printf("输入数组长度:");
	scanf("%d",&n);
	int arr[n];
	bzero(arr,sizeof(arr));
	int i;
	for(i=0;i<n;i++)
	{
		printf("请输入数组第%d位元素:",i);
		scanf("%d",&arr[i]);
	}
	printf("打印前数组为:");
	for(i=0;i<n;i++)
	{
		printf("%d ",arr[i]);
	}
	int temp=0;
	for(i=0;i<n/2;i++)
	{
		temp=arr[i];
		arr[i]=arr[n-1-i];
		arr[n-1-i]=temp;
	}
	printf("\n打印后数组为:");
	for(i=0;i<n;i++)
	{
		printf("%d ",arr[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;
	printf("输入数组长度:");
	scanf("%d",&n);
	int arr[n];
	bzero(arr,sizeof(arr));
	int i;
	for(i=0;i<n;i++)
	{
		printf("请输入数组第%d位元素:",i);
		scanf("%d",&arr[i]);
	}
	printf("打印前数组为:");
	for(i=0;i<n;i++)
	{
		printf("%d ",arr[i]);
	}
	printf("请输入需要删除的元素:");
	int key;
	scanf("%d",&key);
	int j;
	int u;
	for(i=0;i<n;i++)
	{
		if(key==arr[i])
		{
			for(j=i;j<n-1;j++)
			{
				arr[j]=arr[j+1];
			}
			n--;
			i--;
			u=n;
		}
	}
	printf("删除完%d后数组元素为:",key);
	for(i=0;i<u;i++)
	{
		printf("%d ",arr[i]);
	}
	
	return 0;
}

练习7: 

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

eg:

k=2

int arr[] ={11,22,33,44,55}

移动后得结果是

44,55,11,22,33

程序:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	int n;
	printf("输入数组长度:");
	scanf("%d",&n);
	int arr[n];
	bzero(arr,sizeof(arr));
	int i;
	for(i=0;i<n;i++)
	{
		printf("请输入数组第%d位元素:",i);
		scanf("%d",&arr[i]);
	}
	printf("打印前数组为:");
	for(i=0;i<n;i++)
	{
		printf("%d ",arr[i]);
	}
	printf("请输入右移的次数:");
	int k;
	scanf("%d",&k);
	int j;
	int temp;
	for(i=0;i<k;i++)
	{
		temp=arr[n-1];
		for(j=n-1;j>0;j--)
		{
			arr[j]=arr[j-1];
		}
		arr[0]=temp;
		
	}
	printf("右移%d后数组元素为:",k);
	for(i=0;i<n;i++)
	{
		printf("%d ",arr[i]);
	}
	
	return 0;
}

思维导图:

 

标签:arr,0403,int,基础,数组,printf,include,输入
From: https://blog.csdn.net/slander_1120/article/details/137347818

相关文章

  • 0407_C基础6
    练习1:输入m行n列得二维数组,输出每一行的和,以及每一列的和程序:#include<stdio.h>#include<string.h>#include<stdlib.h>intmain(intargc,constchar*argv[]){ intm,n; printf("请输入行数:"); scanf("%d",&m); printf("请输入列数:");......
  • XML文档节点导航与选择指南 | XPath基础知识
    XPath(XMLPathLanguage)是XSLT标准的主要组成部分。它用于在XML文档中浏览元素和属性,提供了一种强大的定位和选择节点的方式。XPath的基本特点代表XML路径语言:XPath是一种用于在XML文档中导航和选择节点的语言。路径样式语法:XPath使用路径表达式的“路径样式”语......
  • 学习 XSLT:XML文档转换的关键 | XSLT基础知识
    XSL(eXtensibleStylesheetLanguage)是一种用于XML的样式语言。XSL(T)语言XSLT是一种用于转换XML文档的语言。XPath是一种用于在XML文档中导航的语言。XQuery是一种用于查询XML文档的语言。它始于XSLXSL代表EXtensibleStylesheetLanguageCSS=HTM......
  • 数学基础
    数学:一:整除概念:如果\(A\)能整除\(B\)则记之为\(A|B\)即存在一个数\(k\inZ\)使\(Ak=B\)。即\(B\)是\(A\)的倍数。性质:1.如果\(a|b,b|c\)那么\(a|c\)表明整除具有传递性。2.如果\(a|b,a|c\)那么对于任意整数对\((x,y)\)满足\(x\inZ,y\inZ\)......
  • Python基础篇-Python基础01
    Python基础-day1!!!注意:本系列所写的文章全部是学习笔记,来自于观看视频的笔记记录,防止丢失。观看的视频笔记来自于:哔哩哔哩武沛齐老师的视频:2022Python的web开发(完整版)入门全套教程,零基础入门到项目实战1.文档工具typora2.环境搭建安装Python解释器学习Python语法Python......
  • springMVC基础
    三:SpringMVC1、SpringMVC简介1.1、什么是MVCMVC是一种软件架构的思想,将软件按照模型、视图、控制器来划分M:Model,模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为实体类Bean:专门存储业务数据的,如Student、User等一类称为业务处理Bean:指Service或......
  • 致远OA系统二次开发基础入门及资料汇总
    公司有几套致远A8,包括V7和V8。虽然一直有二次开发的需求,只是该系统的二开体验,包括社区的建设真的是一言难尽。因此公司几次改动都是直接外包给厂商来进行开发。从公司这些项目中我了解了一下他们的二开情况,怎么说呢。只能说是八仙过海各显神通。在Github上也没有找到多少关于致远......
  • opencv基础操作:读取图片时使用灰度方式、转换颜色空间、使用opencv展示图片、使用open
    包含的操作有:读取图片时使用灰度方式转换颜色空间使用opencv展示图片使用opencv对BGR通道进行划分并展示,需要注意的是直接使用cv2.split()得到的B,G,R分别是单通道的,因此最终展示出来为灰度图像。    如果想保留彩色图像,可以直接对img切片来实现。使用opencv在一个窗口......
  • 学习 Git 基础知识 - 日常开发任务手册
    欢迎来到我关于Git的综合指南,Git是一种分布式版本控制系统,已经在软件开发中彻底改变了协作和代码管理方式。无论你是经验丰富的开发者还是刚开始编程之旅的新手,理解Git对于正确掌控代码、高效管理项目和与他人合作至关重要。在本教程中,我将带领你了解Git的基础知识......
  • HTML基础知识详解(下)(如果想知道html的全部基础知识点,那么只看这一篇就足够了!)
        前言:在上一篇文章中,我们已经学习完了超链接标签、列表标签和表格标签,但是我们还有一些标签没有学习,在这篇文章中,我们将学习剩余的标签。✨✨✨这里是秋刀鱼不做梦的BLOG✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客首先让我们看一下还剩余......