教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 资格考试 >

C语言实验总答案(4)

来源:网络收集 时间:2026-05-14
导读: } { sum=0; for(i=1;i if(m%i==0) sum=sum+i; } if(m==sum) printf(\} printf(\ 4、36 块砖,36 人搬。男搬4,女搬3,两个小儿抬一砖。要求一次全搬完。问需男、女、小儿各若干?(穷举法)。 #include void main()

}

{

sum=0;

for(i=1;i

if(m%i==0) sum=sum+i; }

if(m==sum)

printf(\}

printf(\

4、36 块砖,36 人搬。男搬4,女搬3,两个小儿抬一砖。要求一次全搬完。问需男、女、小儿各若干?(穷举法)。 #include void main() {

int x,y,z,n=0; }

printf(\序号 男 女 小儿\\n\for(x=0; x<=9; x++)

for(y=0; y<=12; y++) {

z=36-x-y;

if(8*x+6*y+z==72 )

printf(\ }

实验6 数组

【实验目的】

1. 熟练掌握使用数组编程的方法。 2. 熟练掌握排序算法。

3. 熟练掌握字符串的存储和操作方法。

【实验内容】 一、一维数组实验

1. 以下程序功能为:输入一个正整数n,再输入n个整数,将它们排序后由小到大输出。找出并改正以下源程序中错误,得出正确的运行结果。

源程序(有错误的程序) #include void main()

{

int i,j,num,a[num]; int change,t;

printf(\scanf(\printf(\for(i=0;i

for(i=num-1,change=1;i>0 && change;i--) { change=0; for(j=0;j<=i;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; /*调试时设置断点*/ a[j+1]=t; change=1; }

}

printf(\ /*调试时设置断点*/ for(i=0;i

}

运行结果(改正后程序的运行结果) Enter Number:6

Enter Data:23 77 14 89 6 68 Sorted data:6 14 23 68 77 89

说明:

程序编译时出现的错误信息是指定义数组a时,数组长度必须是常量,把a[num]改为a[50]即可,重新编译连接没有错误,但是输出结果有误。为了找出程序的问题,关闭运行窗口,准备调试程序。

调试程序的步骤:

(1)设置断点:设置2个断点,具体位置见源程序的注释。

在当前光标所在行

设置或取消断点

(2)点击调试工具栏上的察数组a中的数据正确。

变量 值显示

(3)继续点击

(Go)按钮,输入2个数据:22 ,11;程序运行到第一个断点处停止。观

调试工具栏,可以进行单步执行,终止调试等操作 (Go)按钮,观察a中数据是否正确,直到程序运行到第二个断点:a[1]中的数据有

问题,为什么呢?本来数组真正存储了2个元素,但是后面交换的时a中第2个元素交换了a中的第3个元素,而a中第3个元素是一个随机值,所以结果不正确了。

(4)找出问题后,点击调试工具栏

(Stop Debugging)按钮停止调试,把程序中的“j<=i”改为“j

后,重新编译并运行程序,得到正确结果。

2. 编程:输入长度为10的整型数组并输出;然后将其逆序存放后再输出。例如: Input 10 number: 0 1 2 3 4 5 6 7 8 9 After reversed: 9 8 7 6 5 4 3 2 1 0

3. 编程:输入n个(1

Input n: 5

Input 5 integer: 8 2 5 1 4 max=8 index=0 min=1 index=3 average=4

4. 编程:青年歌手参加歌曲大奖赛,有10个评委对她(他)进行打分,试编程求这位选手的平均得分并输出(去掉一个最高分和一个最低分)。

5. 编程:用两种方法输出斐波那切数列的前40项(参考例6-4)。 要求: (1)方法1:不使用数组; (2)方法2:使用一维数组。

6. 编程:输入n个(1

Input n: 5

Input 5 number: 8.5 2.3 5.1 1.4 4.9 After sorted: 8.50 5.10 4.90 2.30 1.40

7. 在已经排好序的数组(长度不足10)中插入一个数m(键盘输入)后输出,保持数组的降序排列。 提示:已经排好序的数组(长度不足10)可以直接在程序中赋值,而不必从键盘输入。

二、二维数组实验

1. 以下程序功能为:将下列矩阵中的元素向右移动一列,最后一列移至第一列。找出并改正以下源程序中错误,通过调试得出正确的运行结果。

1 4 6 8 10 12

源程序(有错误的程序) #include #define ROW 2 #define COL 3

int main() {

int a[ROW][COL]={1,4,6,8,10,12}; int i,j,temp;

for(i=0;i=0;j--) { a[i][j]=a[i][j+1]; /*调试时设置断点*/ } a[i][0]=temp; /*调试时设置断点*/ }

for(int i=0;i

return 0; }

运行结果(改正后程序的运行结果) 6 1 4 12 8 10

2. 编程:利用二维数组计算并打印一个n行的杨辉三角。例如: Input n: 6 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1

1 5 10 10 5 1

提示:第一列及对角线上的元素都是1,其他元素通过计算得出:

如果用i表示行,j表示列,则第i行j列的元素

pi,j?pi?1,j?1?pi?1,j

3. 编程:通过键盘输入3行4列的二维数组,分别按行和按列输出数组。例如: Input numner: 1 2 3 4 5 6 7 8 9 10 11 0

output by row: 1 2 3 4 5 6 7 8 9 10 11 0 output by col: 1 5 9 2 6 10 3 7 11 4 8 0

4. 编程:输入一个m*n矩阵,求他们的各行元素之和。例如: Input m , n: 2 2 Input 2*2 matrix: 4 5 5 6 sum[0]=9 sum[1]=11

5. 编程:判断一个二维数组是否存在鞍点,若存在,则输出鞍点及其行号和列号;否则输出没有鞍点信息。“鞍点”是指这样的元素:它在本行是最大元素,而在本列是最小的元素。 Input m , n: 2 2

Input 2*2 matrix: 4 5 5 6

i=0, j=1, saddle point: 5

提示:找鞍点需要处理三件事情:(1)找每行中最大值所在的列下标;(2)判断该元素在本列上是否为最小;(3)判断是否找到了鞍点,若找到,输出。

三、字符串实验

1. 以下程序功能为:输入一个字符串,将其逆序输出。找出并改正以下源程序中错误,通过调试得出正确的运行结果。

源代码(有错误的程序) #include #include void main() { int i,j; char s[80],result[80];

…… 此处隐藏:1103字,全部文档内容请下载后查看。喜欢就下载吧 ……
C语言实验总答案(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/412690.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)