C语言第二次实验报告

11-1 求矩阵的局部极大值

给定M行N列的整数矩阵A,如果A的非边界元素[大于相邻的上下左右4个元素,那么就称元素[是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。

#include <stdio.h>
int main()
{
int m,n;
scanf("%d %d", &m, &n);
int a[m][n], i, j;
for(i = 0; i < m; i++) {
for(j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
int flag = 0;
for(i = 1; i < m-1; i++) {
for(j = 1; j < n-1; j++) {
if(a[i][j] > a[i][j-1] && a[i][j] > a[i][j+1] && a[i][j] > a[i-1][j] && a[i][j] > a[i+1][j]) {
printf("%d %d %d\n", a[i][j], i+1, j+1);
flag = 1; } } }
if(flag == 0) {
printf("None %d %d", m, n);
}

return 0; }

设计思路:通过定义二位数组储存函数值,值得注意的是最大值在数组里的位置以及判断条件是否完全。

12-4 字符串字母大小写转换

本题要求编写程序,对一个以“#”结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出。

#include<stdio.h>
int main()
{
int i=1;
char a;
while(i>0)
{
scanf("%c",&a);
if(a!='#')
{
if(a<=90&&a>=65)
{
printf("%c",a+32);
}
else if(a>=97&&a<=122)
{
printf("%c",a-32);
}
else
{
printf("%c",a);
}

}
else
{
i=0;
}
}

return 0;
}

设计思路:利用ASCII码表顺序,也就是大小写字母相差32编译代码实现。

 

13-5 判断回文字符串

本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。

#include <iostream>
using namespace std;
int fun(int low, int high, char *str, int length)
{
if (length == 0 || length == 1)
return 1;
if (str[low] != str[high])
return 0;
return fun(low+1, high-1, str, length-2);
}
int main()
{
char str[]="aaabdaaa";
int length = strlen(str);
cout << fun(0, length-1, str, length) << endl;
return 0;
}

设计思路:注意题目中的细节,利用递归方法实现。

 

14-2 删除字符

本题要求实现一个删除字符串中的指定字符的简单函数。

#include <stdio.h>
#include <string.h>
#define MAXN 20

void delchar( charchar *str, char c );

int main()
{
char str[MAXN]="happy new year", c;

scanf("%c", &c);
delchar(str, c);
printf("%s\n", str);

return 0;
}

void delchar( charchar *str, char c ){
int i,j,len;

len = strlen(str);
printf("len = %d\n", len);

for(i=0;i<len;i++){
if(str[i]==c){
for(j=i;j<len;j++)
str[j]=str[j+1];
}
}
str[j]='\0';
}

设计思路:建立新的数组存放,在使用删去字符的方法。

15-1 拆分实数的整数与小数部分

本题要求实现一个拆分实数的整数与小数部分的简单函数

void splitfloat( float x, int *intpart, float *fracpart )
{
int *k;
float *j;
int m;
float n;
m=x;
n=x-m;
k=&m;
j=&n;
*intpart=*k;
*fracpart=*j;
}

实验感谢:读懂题目意识,意识提供的条件,与指针结合实现代码。

 

posted @ 2018-01-28 15:30  刘元星  阅读(376)  评论(0编辑  收藏  举报