C语言实验报告第五章 - 图文

更新时间:2023-10-13 15:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实 验 报 告

课程名称 _____ C语言程序设计_____ 实验项目 ___数组(1)___ 实验仪器 ______计算机___________

系 别_____信息与通信工程学院_______ 专 业______通信_________ 班级/学号____

学生姓名 ______ ___

实验日期 ____2013年06月19日___ 成 绩 _______________________

指导教师

______李文杰_________

一、 实验目的

1、 掌握一维数组的定义及初始化。 2、 掌握一维数组元素的引用及其应用。

3、 掌握一维数组的常见算法:遍历,查找算法(顺序,折半),排序算法,插入算法,删除算法。 二、 实验内容

1.

描述

津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。 但是津津如果一天上课超过八个小时就会不高兴,而且,上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴。如果会的话,哪天最不高兴。

输入

输入数据有多组,第一行包含一个整数T,表示有T组数据。

每组输入包括七行数据,分别表示周一到周日的日程安排。每行包括两个小于10的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出

输出包括一行,这一行只包含一个数字。如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1,2,3,4,5,6,7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的—天。

样例输入

1 5 3 6 2

7 2 5 3 5 4 0 4 0 6

样例输出

3

程序代码:

# include \ int main() {

int a[10000];

int n, r; int i, ii, tt; char c; int k, maxm; a[0]=0;

scanf (\ for (tt=1;tt<=n;tt++) { k=0; maxm=0; for (i=1;i<=7;i++) {

scanf(\ r+=ii; a[i]=r; if (r>8) { k++; if(a[maxm]

printf (\ printf (\ } return 0; }

2、描述

某公司邀请40个顾客参加投票活动,选举他们最喜爱的产品,以决定公司今后的销售策略。共有编号为1号~10号的10个产品,每人只能选择一个产品。编写程序,在整数数组中设置这40个值(投票情况),然后统计投票结果(每一个产品的得票数目)。

输入

40个数值在1~10(含1和10)之间的整数

输出

如下所示:

样例输入

1 1 1 1 1 2 3 3 3 3 3 4 4 5 5 5 5 6 6 6 6 6 6 6 6 7 7 7 7 7 8 8 8 8 8 9 9 9 10 10

样例输出

如上图所示

提示

表头汉字之间用1个空格分隔。表体各列之间用5个空格分隔。

程序代码:

#include \ int main() {

int a[40],i,b[10]={0},j; for(i=0;i<40;i++) scanf(\

printf(\ú?· μ??± ?±·?í?\\n\ for(i=0;i<40;i++) b[a[i]-1]++; for(i=0;i<10;i++) {

printf(\ %d \ for(j=1;j<=b[i];j++) printf(\

printf(\ }

return 0; }

3、描述

有n个(n<=40)学生,现要统计这n个学生一次考试中不及格的人数 输入

有两行,第一行为整数n;第二行为n个整数成绩(100(含)以内) 输出

一个整数,表示n个成绩中低于60分的个数 样例输入 5

90 45 67 80 56 样例输出 2

程序代码:

#include \int main() {

int a[40],i,n,k=0; scanf(\for(i=0;i

printf(\return 0; }

4、描述

有一个长度为n的整数序列。请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。

输入

输入包括两行。

第一行为正整数n(1≤n≤10)。 第二行为n个正整数组成的序列。

输出

输出转换好的序列。数据之间用一个空格隔开。

样例输入

5

3 1 5 4 2

样例输出

1 3 2 4 5

提示

注意输出时,每个数据后都有一个空格,包括最后一个数据。

程序代码:

# include \ # include \ int a[100]; int b;

void hanshu(int c,int d) {

b=a[d]; a[d]=a[c]; a[c]=b;

}

int main(void) {

a[50]=888888;

int i,k,n,max=0,min=50; scanf(\ for(i=1;i<=n;i++) {

scanf(\ if(a[i]>a[max]) max=i;

if(a[i]

hanshu(1,min); hanshu(n,max); for(i=1;i<=n;i++) printf(\ printf(\ return 0; }

5、描述

有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m

输入

输入数据有2行,第一行的第一个数为n,后面是n个整数, 第二行整数m。

输出

按先后顺序输出n个整数。

样例输入

5 1 2 3 4 5 2

样例输出

4 5 1 2 3

程序代码:

# include \ int main() {

int a[100],i,n,m; scanf(\for(i=0;i

scanf(\

scanf(\for(i=n-m;i

printf(\

for(i=0;i

printf(\

return 0; }

6、描述

有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数m,请将该数插入到序列中,并使新的序列仍然有序。

输入

输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。

输出

对于每个测试实例,输出插入新的元素后的数列。

样例输入

3 3 1 2 4 0 0

样例输出

1 2 3 4

提示

输出的数据每个后面有一个空格。

程序代码:

#include \ #include \ int main()

{ int a[100]; int k; int n, m, i;

scanf(\ while(n!=0 && m!=0) { k=0;

for(i=1;i<=n;i++) {

scanf(\ }

for (i=1; i<=n;i++)

{

if (a[i]>=m && a[i-1]<=m && k==0) {

printf(\ }

printf(\ } if(k==0) printf(\ printf(\

scanf(\ } return 0; }

7. 描述

已知元素从小到大排列的两个数组x[]和y[],请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个,这叫做数组的距离。

输入

第一行为两个整数m, n(1≤m, n≤1000),分别代表数组f[], g[]的长度。 第二行有m个元素,为数组f[]。 第三行有n个元素,为数组g[]。

输出

数组的最短距离

样例输入

5 5

1 2 3 4 5 6 7 8 9 10

样例输出

1

程序代码:

#include \ #include \ int main() { int f[10000]; int g[10000]; int minn1,minn2;

int n, m, i, j;

minn1=minn2=9999999;

}

scanf(\ for(i=1;i<=n;i++)

scanf(\

for (i=1;i<=m;i++)

scanf(\

for(i=1;i<=n;i++) { }

printf(\ return 0;

for(j=1;j<=m;j++) { }

if (abs(f[i]-g[j])

minn1=abs(f[i]-g[j]);

8. 描述

编一个程序,输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。

输入

一个字符串,长度不超过80个字符。

输出

删掉非英文字母后的字符串。

样例输入

qqwqw567bhnabc123+xyz.5

样例输出

qqwqwbhnabcxyz

程序代码:

# include \# include \int main() {

char a[80]; int i=0; gets(a);

while(a[i]!='\\0') {

if(a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z') printf(\ i++; }

printf(\ return 0; }

9. 描述

从键盘输入一行字符,统计其中单词的个数,各单词以空格分隔,且空格数可以是多个。

输入

输入只有一行句子。仅有空格和英文字母构成。

输出

单词的个数。

样例输入

stable marriage problem Consists of Matching members

样例输出

7

程序代码:

#include \

int main() {

char c[1000]; int i=0;

while(scanf(\ {

i++; }

printf(\ return 0; }

10. 描述

把一个字符串里所有的大写字母换成小写字母,小写字母换成大写字母。其他字符保持不变。

输入

输入为一行字符串,其中不含空格。长度不超过80个字符。

输出

输出转换好的字符串。

样例输入

ABCDefgh123

样例输出

abcdEFGH123

程序代码:

# include int main() {

char c[1000]; int i=0;

scanf(\ while(c[i]!='\\0') {

if(c[i]>=65&&c[i]<=90) printf(\ else if(c[i]>=97&&c[i]<=122) printf(\ else

printf(\ i++; }

return 0; }

11. 描述

读入N名学生的成绩,将获得某一给定分数的学生人数输出。 输入

测试输入包含若干测试用例,每个测试用例的格式为

第1行:N

第2行:N名学生的成绩,相邻两数字用一个空格间隔。 第3行:给定分数

当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。 输出

对每个测试用例,将获得给定分数的学生人数输出(每行一个输出结果)。 样例输入 3

80 60 90 60 2 85 66 0 5

60 75 90 55 75 75 0 样例输出 1 0 2

程序代码:

# include int main() {

}

int c[1000];

int i, n, m, num;

while(scanf(\{ if(n==0) break;

num=0;

for(i=1;i<=n;i++) {

scanf(\ }

scanf(\ for(i=1;i<=n;i++) {

if(c[i]==m) num++; }

printf(\}

return 0;

12. 描述

编写一个进制转换函数,可以把一个十进制数N,转换成R进制数。

使用该函数完成对输入的一个十进制数及一个要转换的进制,输出转换结果。

输入

输入数据包含多个测试实例,每个测试实例包含两个整数N(<=32bit整数)和R(2<=R<=16, R<>10)。

输出

为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

样例输入

7 2 23 12 -4 3

样例输出

111 1B -11

程序代码:

# include int main() {

int a[10000]; int n, r; int i, j; char c;

while(scanf(\ {

i=0; if(n<0) {

printf(\ n*=-1; }

while(n!=0) {

}

i++;

a[i]=n%r; n/=r; }

for(j=i;j>=1;j--) {

if(a[j]<10)

printf(\ else {

c=a[j]+55;

printf(\ } }

printf(\}

return 0;

三、 实验体会

通过这次试验,我掌握了一维数组,二维数组的定义。并掌握了一维数组,二维数组,字符数组,数组作为函数的参数。 不足之处是数组常见算法,例如排序算法,插入算法等的运用不是很熟练。

最后,在学习到知识的同时,我对C程序的精密和美感有了更深的体会,第五章的学习使我更加爱上了独特的计算机语言。

本文来源:https://www.bwwdw.com/article/lr4f.html

Top