一维数组练题习~

1.键盘录入一组数列,利用冒泡排序将数据由大到小排序

/*************************************************************************
  > File Name:    demo01.c
  > Author:       阮
  > Description:  
  > Created Time: 
 ************************************************************************/

#include 

int main(int argc,char *argv[])
{
    // 创建一个数组,用来存放冒泡排序的数列
    int arr[10];

    //循环变量和临时变量
    int i,j,temp,desc = 1;

    printf("请输入10个整数:\n");

    //计算数组的大小

    int len = sizeof(arr) / sizeof(arr[0]);

    //控制台输入10个数字
    for (i= 0;i < len; i++)scanf("%d",&arr[i]);//&arr[i]: []的优先级高于&

    printf("\n排序前:");
    for (i = 0;i < len ;i++)printf("%-4d",arr[i]);
    printf("\n");

    //冒泡排序
    //外层循环:实现排序轮数的遍历:轮数=数组大小 - 1
    for ( i = 0;i arr[j+1])
            if (desc)
            {
                if(arr[j] < arr[j+1])
                {
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                    flag = 1;
                }
            }
            else
            {
                //升序
                if(arr[j] > arr[j+1])
                {
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                    flag = 1;
                }

            }
        }

        if (!flag) break; //1,2,3
    }
    printf("\n排序后:");
    for(i = 0; i < len; i++) printf("%-4d",arr[i]);
    printf("\n");
    return 0;
}

一维数组练题习~_第1张图片

2.从键盘输入年、月、日,计算并输出该日是该年第几天

/*************************************************************************
  > File Name:    demo02.c
  > Author:       阮
  > Description:  
  > Created Time: 
 ************************************************************************/

#include 

int main(int argc,char *argv[])
{
    int t[] = {31,28,31,30,31,30,31,31,30,31,30,31};

    int year,month,day;

    printf("请输入年,月,日(yyyy-mm-dd):");
    scanf("%d-%d-%d",&year,&month,&day);

    if (year %4 ==0 && year % 100 != 0 || year % 400 == 0)t[1] = 29;

    int sum = day;

    for(int i = 0;i < month - 1; i++) sum += t[i];

    printf("%d月%d日是%d年的第%d天\n",month,day,year,sum);


    return 0;
}

3.键盘录入一组数列,求最大数、最小数、均值

/*************************************************************************
  > File Name:    demo03.c
  > Author:       阮
  > Description:  三个数的最大最小平均值
  > Created Time: 
 ************************************************************************/

#include 

int main(int argc,char *argv[])
{
    int len;
    printf("请输入数组长度:\n");
    scanf("%d",&len);
    int a[len];
    int i,j,max = -9999,min = 9999,sum = 0;
    len = sizeof(a) / sizeof(a[0]);
	printf("请输入%d个数字",len);
	for(i=0;i max) max=a[i];
       if( a[i] < min) min=a[i];
       sum+=a[i];
    }
    printf("最大值是%d,最小值是%d,平均值是%d\n",max,min,sum/=len);


    return 0;
}

4.从键盘录入一组数列,判断是否是回文,举例:12321,abba,121

/*************************************************************************
  > File Name:    demo04.c
  > Author:       阮
  > Description:  判断回文数
  > Created Time: 
 ************************************************************************/

#include 

int main(int argc,char *argv[])
{
	int len , i ;  //确定数组大小。
	printf ("请输入数组长度:\n");
	scanf("%d",&len);
	char a[len];
 //给数组输入元素   
	printf("给数组输入%d元素:\n",len);
	while(getchar() != '\n');
	for(i = 0;i < len ;i++) scanf("%c",&a[i]);
		len = sizeof(a) / sizeof(a[0]);
 // 判断是否是回文数
		int flag = 1;
		for(i = 0;i < len / 2;i++)
		{
			if(a[i] != a[len - i - 1])
			{
				flag = 0;
				break;
			}
		}
 // 是,不是
	if(flag) printf("是回文数\n");
	else printf("不是回文数\n");
    return 0;
}

一维数组练题习~_第2张图片

5.用数组存储10个整型数,通过键盘输入一个数,找出该数在数组中的下标值

/*************************************************************************
  > File Name:    demo05.c
  > Author:       阮
  > Description:  
  > Created Time: 
 ************************************************************************/

#include 

int main(int argc,char *argv[])
{
    int arr[10]; // 创建长度为10的数组
    int pr,i,index = -1;  //pr:需要查找的数   //index = -1 初始化下标变量
    printf("请输入10个数:\n");
    for(i = 0; i < 10;i++)
    {
        scanf("%d",&arr[i]);
    }

    //请输入要查找的数
    printf("请输入要查找的数:\n");
    scanf("%d",&pr);

    //遍历数组查找目标数
    for(i = 0;i < 10;i++)
    {
        if(arr[i] == pr)
        {
            index = i;
            break;
        }
    }
	
	//输出结果
    if(index != -1)
    {
        printf("该数在数组中的下标是:%d\n",index);

    }
    else
    {
        printf("这个数不再数组中\n");
    }

    return 0;
}

一维数组练题习~_第3张图片

6.通过键盘输入 10 个学员成绩: 1)输出不及格学员的成绩和下标。 2)求最高分的下标值 3)求最低成绩的下标值 4)求总成绩及平均成绩

/*************************************************************************
  > File Name:    demo06.c
  > Author:       阮
  > Description:  
  > Created Time: 
 ************************************************************************/

#include 

int main()
{
    float arr[10];
	int i;
    float total = 0; //总成绩
    float average;   //平均值
    int maxIndex = 0;
    int minIndex = 0;

    printf("请输入10个学员成绩:\n");
    for(i = 0;i < 10;i++)
    {
        scanf("%f",&arr[i]);
		total += arr[i]; //总成绩
    
    //计算最高分下标
		if(arr[i] > arr[maxIndex])
		{
			maxIndex = i;
		}

    //计算最低分下标
		if(arr[i] < arr[minIndex])
		{
			minIndex = i;
		}
	}

    //计算平均
    average = total / 10;

    //输出不及格学员成绩
    printf("不及格学员成绩下标:\n");
    for(i=0;i<10;i++)
    {
        if(arr[i] < 60)
        {
            printf("%d下标,成绩%.2f\n",i,arr[i]);
        }
    }
    printf("最高分下标:%d\n",maxIndex);

    printf("最低分下标:%d\n",minIndex);

    printf("总成绩:%.2f,平均成绩:%.2f\n",total,average);
    return 0;   
}

一维数组练题习~_第4张图片

你可能感兴趣的:(初学者,算法,数据结构,c语言,开发语言,排序算法)