实验3的内容和要求
1.同学们在上机的时候,请选择开机菜单中的“Develop”项进入系统。
2.在实验过程中,你编写的程序不要存放在桌面或者C盘,要存在D盘上。
作业要求
实验3上传格式要求:
作业做完之后,会有7个文件:test3-1.c,test3-2.c,test3-3.c,test3-4.c,test3-5.c,test3-6.c和实验内容及其调试成功的程序贴进去生成的:实验3.doc,将这7个文件压缩为:学号-姓名.rar;
实验3上传时间要求:
实验3提交截至时间:2019.4.21,22:00之前。
实验3上传地址要求:
实验3提交地址:ftp://202.204.121.124/caijuan/C语言/homework中各班文 件夹中的实验3文件夹中。
实验3的内容
第1题
编写一段程序,程序名称命名为test3-1.c,完成如下任务:
歌手大奖赛上有10个评委(放在一个数组中)打分,请你设计一个通用程序,该程序可以实现显示每位歌手的成绩、最高分、最低分;还能显示高于平均值的评委号码及其打分的分值;能显示出给最高分的评委的号码,及给最低分的评委的号码。
例如,图1(假设有6位评委打分)的一次运行结果实例(显示的内容仅供参考):
第2题
编写一段程序,程序名称命名为test3-2.c,完成如下任务:
编程实现从键盘输入8个整数存放在一个数组中,由程序自动完成将数组的数据排序后,先从大到小显示,再从小到大显示。(并且要求排序方法分别使用选择法和冒泡法)
一次运行结果实例(显示的内容仅供参考):
第3题
编写一段程序,程序名称命名为test3-3.c,完成如下任务:
应用数组并利用筛选法求出100之内的素数。
第4题
编写一段程序,程序名称命名为test3-4.c,完成如下任务:
有一个已经按从小到大排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。
第5题
5. 编写一段程序,程序名称命名为test3-5.c,完成如下任务:
定义一个3行3列的二维数组,类型为整型,其中的内容为
9 8 7
1 2 3
4 5 6
(1)请在定义数组的时候给数组初始化,并且输出二维数组,其中数组元素的格式为“%2d”。
(2)输出二维数组对角线元素之和;
(3)输出二维数组中最小的那个元素的值,输出的格式为:
数组中值最小的元素为:数组名[行号][列号]=元素值
(4)要求在程序中适当的位置给出提示性的输出语句。
第6题
编写一段程序,程序名称命名为test3-6.c,实现如下任务:
编写一个程序,输入一个字符串,求出该字符串的长度,要求不能利用库函数
第一题
编写一段程序,程序名称命名为test3-1.c,完成如下任务:
歌手大奖赛上有10个评委(放在一个数组中)打分,请你设计一个通用程序,该程序可以实现显示每位歌手的成绩、最高分、最低分;还能显示高于平均值的评委号码及其打分的分值;能显示出给最高分的评委的号码,及给最低分的评委的号码。
例如,图1(假设有6位评委打分)的一次运行结果实例(显示的内容仅供参考):
#include<stdio.h>
#define N 6
int main() {
while (1) {
double score[N], sum = 0, min = 9999, max = -1;
for (int i = 0; i < N; i++) {
printf("Please input a score:");
scanf("%lf", &score[i]);
// min = score[i] > min ? min : score[i];
if (score[i] > min) {
min = min;
} else {
min = score[i];
}
// max = score[i] < max ? max : score[i];
if (score[i] > max) {
max = max;
} else {
max = score[i];
}
sum += score[i];
}
double avg = sum / N;
printf("The average: %lf\n", avg);
printf("The max: %lf\n", max);
printf("The min: %lf\n", min);
for (int i = 0; i < N; i++) {
if (score[i] > avg) {
printf("%d,%f\n", i + 1, score[i]);
}
}
for (int i = 0; i < N; ++i) {
if (score[i] == max) {
printf("max: %d,%f\n", i + 1, score[i]);
}
}
for (int i = 0; i < N; ++i) {
if (score[i] == min) {
printf("min: %d,%f\n", i + 1, score[i]);
}
}
printf("Next singer? < y or Y>: ");
char change;
scanf("%c", &change);
scanf("%c", &change);
if (change == 'y' || change == 'Y') {
continue;
} else {
break;
}
}
return 0;
}
第二题
编写一段程序,程序名称命名为test3-2.c,完成如下任务:
编程实现从键盘输入8个整数存放在一个数组中,由程序自动完成将数组的数据排序后,先从大到小显示,再从小到大显示。(并且要求排序方法分别使用选择法和冒泡法)
#include<stdio.h>
#define N 8
int main() {
int array[N];
for (int i = 0; i < N; ++i) {
scanf("%d", &array[i]);
}
printf("The sorted number:\n");
// 简单选择排序
int max, flag;
for (int i = 0; i < N; ++i) {
// 记录最大的数的下标
flag = i;
// 记录最大的数
max = array[i];
for (int j = i + 1; j < N; ++j) {
if (max < array[j]) {
max = array[j];
flag=j;
}
}
// 如果最大的数不是当前的数
if(i!=flag){
int temp=array[i];
array[i]=array[flag];
array[flag]=temp;
}
}
for (int k = 0; k < N; ++k) {
printf("%d ", array[k]);
}
printf("\n");
// 冒泡排序
for (int l = 0; l < N-1; ++l) {
for (int i = 0; i <N-1-l; ++i) {
if(array[i]>array[i+1]){
int temp=array[i];
array[i]=array[i+1];
array[i+1]=temp;
}
}
}
for (int k = 0; k < N; ++k) {
printf("%d ", array[k]);
}
printf("\n");
return 0;
}
第三题
编写一段程序,程序名称命名为test3-3.c,完成如下任务:
应用数组并利用筛选法求出100之内的素数。
#include<stdio.h>
#define N 100
int main() {
int array[N];
for (int i = 0; i < N; ++i) {
array[i] = i;
}
for (int j = 2; j < N; ++j) {
int flag = 0;
for (int i = 2; i < j; ++i) {
if (array[j] % i) {
continue;
} else {
flag = 1;
break;
}
}
if (!flag) {
printf("%d ", array[j]);
}
}
return 0;
}
第4题
编写一段程序,程序名称命名为test3-4.c,完成如下任务:
有一个已经按从小到大排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。
#include<stdio.h>
#define N 7
int main() {
int array[N+1]={1,3,4,5,6,7,8};
int a;
scanf("%d",&a);
int flag=0,i;
// 先找到插入点下标,i
for (i = 0; i <N ; ++i) {
if(array[i]>a){
break;
}
}
// 数组从后往前挪一个单位
for (int j = N; j >i ; --j) {
array[j]=array[j-1];
}
// 目标
// 插入该位置
array[i]=a;
// 打印结果
for (int k = 0; k < N; ++k) {
printf("%d ",array[k]);
}
// 空行
printf("\n");
return 0;
}
第5题
5. 编写一段程序,程序名称命名为test3-5.c,完成如下任务:
定义一个3行3列的二维数组,类型为整型,其中的内容为
9 8 7
1 2 3
4 5 6
(1)请在定义数组的时候给数组初始化,并且输出二维数组,其中数组元素的格式为“%2d”。
(2)输出二维数组对角线元素之和;
(3)输出二维数组中最小的那个元素的值,输出的格式为:
数组中值最小的元素为:数组名[行号][列号]=元素值
(4)要求在程序中适当的位置给出提示性的输出语句。
#include <stdio.h>
#define N 3
int main(){
int mt[3][3]={
{9,8,7},
{1,2,3},
{4,5,6}
};
// 1
for (int i = 0; i < N; ++i) {
for (int j = 0; j <N ; ++j) {
printf("%2d ",mt[i][j]);
}
printf("\n");
}
// 2
int sum=0;
for (int k = 0; k < N; ++k) {
for (int i = 0; i < N; ++i) {
if(k==i){
sum+=mt[k][i];
}
}
}
for (int k = 0; k < N; ++k) {
for (int i = 0; i < N; ++i) {
if(k+i==N-1){
sum+=mt[k][i];
}
}
}
sum-=mt[N/2][N/2];
printf("对角线元素之和为:%d\n",sum);
// 3
int min=99999,row=-1,colume=-1;
for (int l = 0; l < N; ++l) {
for (int i = 0; i < N; ++i) {
if(mt[l][i]<min){
min=mt[l][i];
row=l;
colume=i;
}
}
}
printf("数组中值最小的元素为:数组名[%d][%d]=%d", row + 1, colume + 1, mt[row][colume]);
// 4
return 0;
}
第6题
编写一段程序,程序名称命名为test3-6.c,实现如下任务:
编写一个程序,输入一个字符串,求出该字符串的长度,要求不能利用库函数
#include <stdio.h>
#define N 100
int main() {
char str[N];
scanf("%s", &str);
int i = 0;
int count = 0;
while (1) {
count++;
if (str[i++] == '\0') {
break;
}
}
printf("%d\n", count - 1);
return 0;
}
网友评论