c语言11次实验,c语言第二次实验 - osc_pjx06t57的个人空间 - OSCHINA - 中文开源技术交流社区...

一·实验题目,设计思路,实现方法

11-7找鞍点

设计思路:“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

本题要求编写程序,求一个给定的n阶方阵的鞍点。

实现方法:利用双重for循环,分别比较各列元素和各行元素即可。

12-3字符串逆序

设计思路:先得出字符串的长度,再通过循环使字符交换位置,从而得到逆序的字符串。

实现方法:在while循环中用getchar()得出字符串的长度i,然后字符逆序需要交换的次数为i/2,用for循环使的字符交换,从而得到逆序字符。字符串需要结束符’/0’。

13-2利用指针寻找最大值

本题要求实现一个简单函数,找出两个数中的最大值。

函数接口定义:

void findmax( int *px, int *py, int *pmax );

设计思路:其中px和px是用户传入的两个整数的指针。函数findmax应找出两个指针所指向的整数中的最大值,存放在pmax指向的位置。

实现方法:因为利用指针函数不仅是传值,还可以通过所指向地址的变化来传递变量。所以在比较完大小之后还可以进行转换。

14-4输出月份英文名

设计思路:将月份对应的数组存入二维数组,再根据读取的月份数字对应输出月份英文字母。

实现方法:定义二维数组,将月份对应的英文字母存入数组,若月份存在则返回月份对应的英文字母,否则返回空指针。

15-7用递归求斐波那契数列

设计思路:本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:

f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。

实现方法:利用递归思想,在函数里调用函数本身来实现复杂的循环计算。

二·源程序

题目1:11-7找鞍点

for (i=0;i

for (j=0;j

scanf("%d",&matrix[i][j]);

for (i=0;i

for (j=0;j

if (matrix[i][n]

matrix[i][n] =       matrix[i][j];

for (j=0;j

matrix[n][j] = matrix[0][j];

for (i=0;i

if (matrix[n][j] >   matrix[i][j])                                   matrix[n][j] =       matrix[i][j];

}

f=0;

for (i=0;i

for (j=0;j

if (matrix[i][j] == matrix[n][j] && matrix[i][j] == matrix[i][n]){

f=1;

break;

题目2;12-3字符串逆序

while((str[i]=getchar())!='\n')

i++;

str[i]='\0';

t=i-1;

k=i/2;

for(i=0;i

{

ch=str[i];

str[i]=str[t-i];

str[t-i]=ch;

}

for(i=0;str[i]!='\0';i++)

题目3:13-2利用指针寻找最大值

void findmax( int *px, int *py, int *pmax ) { int a,b,max=0; if(*px>*py){ *pmax=*px; }else if(*px

题目4:14-4输出月份英文名

switch(n)

{

case 1:return "January";

case 2:return "February";

case 3:return "March";

case 4:return "April";

case 5:return "May";

case 6:return "June";

case 7:return "July";

case 8:return "August";

case 9:return "September";

case 10:return "October";case 11:return "November";

case 12:return "December";

default:return NULL;

题目5:15-7用递归求斐波那契数列

int f( int n ) { int result; if(n == 0) result = 0; else if(n == 1) result = 1; else result = f(n - 2) + f(n - 1); return result; }

三、遇到的问题和解决办法。

一、没有掌握指针的思想。

二、没有透彻理解递归的用法。

三、还不能掌握链表的基本操作。

四、输出月份对应英文单词,开始用switch()出现段错误,后面定义一维数组还是答案错误,,知道应该定义成二维数组。

五、字符串长度函数strlen(),使得编程步骤简单很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值