哥们今天刚学习了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]);
}
}