14 .输入10个整数,排序并输出排序后的数列。(一维数组的经典案例)
#include <stdio.h>
#include<stdlib.h>
main()
{
int i, j, p, q, s, a[10]; /*输入的时候加上空格*/
printf("\n请输入十个数字:\n");
for (i = 0; i < 10; i++) /*for循环赋赋值*/
scanf_s("%d", &a[i]);
for (i = 0; i < 10; i++) /*for循环用于排序,采用逐个比较的方法(注:外循环10次,内循环9次,一共循环90次!)*/
{
p = i; q = a[i]; /*将元素a[i]的下标保存在变量p中,元素a[i]的数值保存在q中,然后进入内循环*/
for (j = i + 1; j < 10; j++) /*此语句意思是从第二项开始,前一项与后一项逐渐比较大小*/
if (q < a[j]) /*若成立,则大值将其下标送给p,数值送给q。*/
{
p = j; q = a[j]; /*一次循环结束后(这里说的一次循环是指内循环进行了9次,已经找到最大数,而外循环只进行一次!),p的值即为最大元素的下标,q即为最大元素的数值,*/
}
if (i != p) /*若此时i≠p,说明p,q均不是进入内循环之前所赋的值 ,于是a[i]和a[j]交换,并输出a[i],此时a[i]已排序完;如果i=p,说明“if (q < a[j])”不成立,即q>=a[j],则不交换,直接输出a[i]*/
{
s = a[i];
a[i] = a[p];
a[p] = s;
}
printf("%d\t", a[i]); /*注意这个printf仍在for语句里*/
}
system("pause");
}
15 .一个班有50个人,每个人有三门课的考试成绩。求全班分科的平均成绩和每个学生的总成绩。(二维数组的经典案例,以三名学生为例)
#include <stdio.h>
#include<stdlib.h>
#define N 4
main()
{
int i, j, s = 0, v[3], a[N][4]; /*a[N][4]用来存放每个人的成绩,v[3]存放各科平均成绩, a[N][4]可以表示4*N个数据*/
printf("请输入学生成绩:\n");
for (i = 0; i < N; i++)
{
for (j = 0; j < 3; j++)
scanf_s("%d", &a[i][j]);
a[i][3]=0; /*初始化数组,这里是给a[i][3]赋值(必须放在这!!作用是给数组赋值时所有人的初始总分都为“0”!!!)*/
}
for (j = 0; j< 3; j++) /*这里j范围限定为0-3,可以理解为a[N][4]虽然是N*4的矩阵,但是这里只取N*3的那部分。*/
{
for (i = 0; i < N; i++)
{
s = s + a[i][j];
a[i][3] += a[i][j];
}
v[j] = s / N;
s = 0; /*中间求和变量s清零,以便再循环*/
}
for (i = 0; i< N; i++)
printf("编号:%d 总分%d\n", i + 1, a[i][3]);
printf("第一门平均分:%d\n第二门平均分:%d\n第三门平均分:%d\n", v[0], v[1], v[2]);
system("pause");
}
理解方法:相当于一个表格
|
科目1 |
科目2 |
科目3 |
总分 |
编号1 |
10 |
20 |
30 |
0 |
编号2 |
10 |
20 |
30 |
0 |
编号3 |
10 |
20 |
30 |
0 |
a[i][j]=a[编号1][科目1]=10
当外循环j=0时,内循环开始计算科目1的总成绩(循环50次计算一科),一共循环150次后,也计算出每一个的a[i][3](总分)了,并写入数字,最后挨个输出。错误!未定义书签。
16 .输入a,b两个整数,按先大后小的顺序输出a,b。(指针,不交换整形变量的值,而是交换指针变量的值)
#include<stdio.h>
#include<stdlib.h>
main()
{
int *p1, *p2, *p, a, b;
printf("请输入两个整数:");
scanf_s("%d,%d", &a, &b); /*输入方式与sanf保持一致,用逗号分隔,而不是空格*/
p1 = &a;
p2 = &b;
if (a < b)
{
P1=&b;p2=&a; /*直接取地址赋值,更高效,实际a,b的值并未交换*/
}
printf("a=%d,b=%d\n", a, b);
printf("最大值=%d,最小值=%d\n",*p1, *p2);
system("pause");
}