1.输入一组数据,进行按从小到大的顺序排列出来(冒泡排序的方法)
int [5] = {0}, n;
printf("请输入5个数:\n");
for(int i = 0; i < 5; i++) {
scanf("%d", &a[i]);
}
//在控制台输入数据
for(int m = 0; m < 4; m++) {
for (int n = 0; n < 4 - m; n++) {
if(a[i] > a[i + 1])
{
n = a[i];
a[i] = a[i + 1];
a[i + 1] = n;
}
}
}
//for循环进行嵌套,将数组a[i]中的数据进行一轮又一轮的比较,直至最大值在后,最小值在前。
for(int i = 0; i < 5; i++) {
printf("%d ", a[i]);
}
printf("\n");
//将比较后得到的新数组依次输出。
2.随机产生20个10-50的正整数存放到数组中,并求数组中的最大值、最小值、各元素之和和平均值
int b[20] = {0};
int min = 50, max = 0, sum = 0;
float ave = 0;
//将最小值赋初值为50,进行20次的比较,将最小的数输出。同样最大值赋初值为0,在进行比较的时候,凡是大于Max的值就交换,进行下一次的比较,直到最后输出最大值。平均值有可能是小数,所以 用float定义。
for (int c = 0; c <20; c++) {
b[c] = arc4random() % (50 - 10 + 1) + 10;
printf ("b[%d] = %d\n", c + 1, b[c]);
sum += b[c];
ave = sum / 20.0;
//使用随机数的公式,在规定范围内随机输出20个数字,然后按照下标顺序依次输出,在进行求和和平均值的计算。
if (max < b[c]) {
max = b[c];
}
if (b[c] < min) {
min = b[c];
}
//最大值和最小值分别与数组里的随机数进行比较,直至比较出最大的和最小的,赋值输出。
3.给定某年某月某日,将其转换成这一年的第几天并输出
(1)int a[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
int b[12] = {31,29,31,30,31,30,31,31,30,31,30,31};
//定义两个数组a[12]和 b[12],分别代表平年和闰年的月份天数(平年和闰年在2月只差一天)。
int sum = 0,year, month, day;
printf("输入日期:\n");
scanf("%d %d %d", &year, &month, &day);
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
{
for (int i = 0; i < month - 1; i++) {
sum += b[i] ;
}
}
else {
for (int i = 0; i < month - 1; i++) {
sum += a[i];
}
}
sum += day;
printf("sum = %d\n", sum);
//在控制台输入年月日,然后进行判断输入的年份是否是闰年,如果是闰年,for循环里输入的月份-1(当月不能算整月,要剔除),使用数组b[12]来计算month-1月的总天数,在最后输出sum的时候要加上所输入的天数(day),最后的sum才是这一年中的第几天。如果不是闰年,执行else里的语句,使用数组a[12]来计算month-1月的总天数,然后再加上day就可以正确的输出你所写的日期是这一年的第几天。
(2)switch语句一一列举出输入月份的总天数
switch (month){
case 1:sum = 31;break;
case 2:sum = 59;break;
case 3:sum = 90;break;
…………
case 12:sum= 365;break;
}
if(year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
{
if(month > 2){
sum += day;
sum += 1;
printf("sum = %d\n", sum);
}
//在闰年的时候,二月比平年的二月多一天,所以在输入的月份大于2时,总天数要+1,如果不大于2,就直接输出总天数。
else printf("sum = %d\n",sum);
}
else {
sum += day;
printf("sum = %d\n",sum);
}