C语言一维数组&&二维数组练习

    哥们今天刚学习了C语言的数组,就课后作业几道小练习,拿给大家分享一下,代码肯定不够简洁,不过思路大致没错,Seeking advice!!!!

/*
输入6个人的成绩(各不相同),打印出最大成绩的是第几个人?
*/
#include <stdio.h>
void main()
{
	int i,a=6,max,z;
	int score[a],two[a];
	for(i=0;i<a;i++)
	{
		printf("请输入第%d个人的成绩(注意:合计需输入6个人的成绩):",i+1);
		scanf("%d",&score[i]);	
	}
	//将用户输入的6个人的成绩赋给two数组; 
	for(i=0;i<a-1;i++)
	{
		two[i]=score[i];					
	} 
	
	//求出输入的6个人的最大成绩 
	for(i=0;i<a-1;i++)
	{
		if(two[i]>two[i+1])
		{
			max=two[i];
			two[i]=two[i+1];
			two[i+1]=max;
		}					
	} 	
	printf("\n");
		
	for(i=0;i<a;i++){
		if(score[i]==max)
		{
			printf("第%3d 个人的成绩是最大的:\n",i+1);	
		}	
	}
}

/*
2、在一个长度为10的整形数组中,前9个元素是{12,23,34,45,56,67,78,89,90}。
现在要求输入一个整数,把它放到数组中正确的位置当中。(不能删除已有元素)
*/ 
#include <stdio.h>
void main()
{
	int i,small;
	int number[10]={12,23,34,45,56,67,78,89,90};
	printf("请输入一个整数:");
	//将用户输入的整数赋给数组名为number的下标为9的元素中; 
	scanf("%d",&number[9]);
	
	//倒序排列,从小到大; 
	for(i=9;i>0;i--)
	{
		if(number[i]<number[i-1])
		{
			small=number[i];
			number[i]=number[i-1];
			number[i-1]=small;	
		}	
	}
	printf("根据你输入的一个整数从小到大排列的顺序是:\n");
	for(i=0;i<10;i++)
	{
		printf("%d\n",number[i]);	
	}
	
}

<pre class="plain" name="code">/*
3、在一个长度为10的整形数组中,已经放置好了任意10个整数。要求用户任意输入
一个整数,判断该数字是否在数组中。如果在,删除数组中该元素,并把后面的
元素往前挪。(让空出的位置在最后)

注意:为了让用户更清楚的知道这个数组中分别有哪些元素,他好决定删除哪一个;
顺便也好让他更清楚的知道该元素是否已经删除,所以这里的10个元素,
采用让用户输入的形式! 
*/
#include <stdio.h>
void main()
{
	int i,j,z,k=0,a=10,b;
	int number[a];
	
	for(i=0;i<a;i++)
	{
		//提示用户输入; 
		printf("请您输入第%d个整数(注意:请任意输入10个整数):",i+1);
		//将获取到用户输入的整数利用for循环分别赋给该数组的每一个元素中;
		scanf("%d",&number[i]); 
	}
	printf("\n");
	//获取用户想要删除的整数 
	printf("不错嘛,这么快就输入完了\n");
	printf("想好了,您要删除哪个整数了吗?不要犹豫,骚年!!!:");
	scanf("%d",&b); 
	
	//为了避免删除的数有重复的,就再循环一次(实现方式很多,小弟初学,只想到这种笨方法,见谅...); 
	for(z=0;z<2;z++)
	{
		for(i=0;i<a;i++)
		{
			//利用循环判断用户要删除的数是否存在该数组的某一个元素中; 
			if(number[i]==b)
			{
				/*当满足条件时,将满足条件的那个元素的后一个元素的值 
				赋给满足条件的那个元素,并利用循环分别将后一个元素的值赋给
				前一个元素; */ 
				for(j=0;j<a-1;j++)
				{
					number[i+j]=number[i+j+1]; 	
				}
				k++;//当删除一个数据时,k自增;
			}
		}
	}
	
	//将用户删除掉的数都赋值为0; 
/*	for(i=a-k;i<a;i++)
	{
		number[i]=0;	
	}  */
	
	printf("考考您的记忆,您自已好好看看删除了没?\n");
	/*这里循环的次数由你决定;如果循环所有的元素,那么for循环的判断条件为i<a;
	因为上面注释掉的for循环里已经将用户需删除掉的数字都赋值为0,所有个人觉得在这里就没必要打印了;
	所以只打印了没有删除掉的数,即判断条件为 i<a-k 
	*/ 
	for(i=0;i<a-k;i++)
	{
		printf("%d\n",number[i]);	
	} 
}

 


/*
4、用户任意输入一个3*3矩阵,要求打印出左右对角线之和。
*/
#include <stdio.h>
void main()
{
	int i,j,a=3,b=3,c,sum=0; 
	int number[a][b];
	//行 
	for(i=0;i<a;i++)
	{
		//列 
		for(j=0;j<b;j++)
		{
			printf("骚年!请输入第%d行的第%d个整数(注意:请任意输入%d个整数)",i+1,j+1,a*b);
			scanf("%d",&number[i][j]); 
		}	
	}
	printf("\n");
	//打印出刚才用户输入的矩形; 
	printf("骚年,这是您刚才输入的%d*%d的矩形\n",a,b);
	for(i=0;i<a;i++)
	{
		for(j=0;j<b;j++)
		{
			printf("%-4d",number[i][j]); 
		}
		printf("\n");	
	}
	
	printf("骚年,想不想打印出左右对角线之和?(注意:如果想的话请输入-1)\n");
	scanf("%d",&c);
	
	if(c==-1)
	{
 		sum=number[0][0]+number[a-1][b-1];
		printf("骚年,左右对角线之和为:%d\n",sum);
	}
	else
	{
		printf("不想拉倒...");
	}
}

/*
5、用户任意输入10个数,把它们按从小到大排序。(冒泡排序)
解析:很简单的冒泡排序练习; 
*/ 
void main()
{
	int i,j,a=10,max;
	int number[a];
	//获取用户输入的10个数; 
	for(i=0;i<a;i++)
	{
		printf("骚年,这是您输入的第%d个数(注意:合计输入10个数):",i+1);
		scanf("%d",&number[i]);
	}
	
	//从小到大排序;
	for(j=0;j<a;j++)
	{
		for(i=0;i<a-1;i++)
		{
			if(number[i]>number[i+1])
			{
				max=number[i];
				number[i]=number[i+1];
				number[i+1]=max;
			}	
		} 
	} 
	
	printf("\n");
	printf("根据骚年您输入的%d位数,从小到大的排列顺序如下:\n",a);
	
	//从小到大打印输出
	for(i=0;i<a;i++)
	{
		printf("%d\n",number[i]);	
	} 
}




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值