C语言实验报告
集美大学计算机工程学院实验报告
课程名称:高级语言程序设计 |
班级:网络1713 |
实验成绩: |
指导教师:贺冰琰 |
姓名:庞礴 |
|
实验项目名称: |
学号:201721123086 |
上机实践日期: |
|
|
|
一、目的:’掌握二维数组的定义、赋值、使用和输入输出方法
二、实验内容:
第十一次作业:
11-1 求矩阵的局部极大值
给定M行N列的整数矩阵A,如果A的非边界元素A[i][j]大于相邻的上下左右4个元素,那么就称元素A[i][j]是矩阵的局部极大值。本题要求给定矩阵的全部局部极大值及其所在的位置。
输入格式:
输入在第一行中给出矩阵A的行数M和列数N(3≤M,N≤20);最后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;
}