C语言实验报告

集美大学计算机工程学院实验报告

 

课程名称:高级语言程序设计

班级:网络1713

实验成绩

指导教师:贺冰琰

姓名:庞礴

 

实验项目名称

学号:201721123086

上机实践日期

 

 

 

一、目的:’掌握二维数组的定义、赋值、使用和输入输出方法 

二、实验内容:

第十一次作业:

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

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

输入格式:

输入在第一行中给出矩阵A的行数M和列数N(3M,N20);最后M行,每行给出A在该行的N个元素的值。数字间以空格分隔。

输出格式:

每行按照“元素值 行号 列号”的格式输出一个局部极大值,其中行、列编号从1开始。要求按照行号递增输出;若同行有超过1个局部极大值,则该行按列号递增输出。若没有局部极大值,则输出“None 总行数 总列数”。

#include<stdio.h>
int main ()
{
int i,j,m,n,flag;
int a[99][21];
flag=0;
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
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\n",m,n);
return 0;
}

第十二次作业:

目的:掌握字符数组和字符串的使用。

12-4 字符串字母大小写转换(15 分)

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

输入格式:

输入为一个以“#”结束的字符串(不超过30个字符)。

输出格式:

在一行中输出大小写转换后的结果字符串。

#include <stdio.h>

int main(){
    while(1){
        char x;
        scanf("%c",&x);
        if(x=='#'){
            break;
        }else if(x>='a'&&x<='z'){
            x -= 32;
        }else if(x>='A'&&x<='Z'){
            x += 32;
        }
        printf("%c",x) ;
    }

    
    
    
    return 0;
}
第十三次作业:
目的:掌握指针的概念,会定义和使用指针变量。

13-5 判断回文字符串(20 分)

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

bool palindrome( char *s )
{
    int len=strlen(s);
    int k=0,i=0,j=len-1;
    while(i<j){
        if(s[i]!=s[j])
        break;
        i++;
        j--;
    }

    if(i>=j)
    return true;
    else
    return false;
} 
第十四次作业:
目的: 熟悉递归函数的基本思想,掌握数值型与非数值型递归函数的编程问题

14-1 使用函数实现字符串部分复制(20 分)

本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。

void strmcpy( char *t, int m, char *s )
{
int n=0;

while(n<m-1) //当n>=m-1时,循环结束
{
n++;

t++; //让str 字符串从第m个开始
}

while(*t!='\0')
{
*s=*t; //从第一个字符串的第m个元素开始 复制到第二个字符串

t++;

s++;
}

*s='\0';
}

第十五次作业:

目的:掌握结构体变量的定义和使用、掌握结构体数组的定义和使用、了解结构指针的定义和使用

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

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

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 on 2018-01-28 21:24  Pb991217  阅读(943)  评论(0编辑  收藏  举报