寻找并输出最大行 实验报告 C语言

简介: 寻找并输出最大行 实验报告 C语言



实验项目名称 寻找并输出最大行 实验日期 2020.12.28

教师签名 成 绩


实验报告包含以下7项内容:

一、实验目的 二、实验内容

三、实验环境 四、算法设计和步骤

五、程序具体实现 六、测试结果及讨论

七、实验心得


一、实验目的


1.说明字符数组以及操作字符数组的函数用法。

2.了解并掌握外部变量与作用域


二、实验内容


该程序读入一组文本行,并把最长的文本行打印出来。


三、实验环境


基于macOS Big Sur版本11.1的Xcode编译器

MacBook Pro (16-inch, 2019)

处理器2.6GHz六核Intel Core i7

内存16GB 2667MHz DDR4

图形卡Intel UHD Graphics 630 1536 MB


四、操作方法和实验步骤


1.建立基本框架:


while(还未有处理的行)

if(该行比已处理的最长行还要长)

保存该行

保存该行的长度

打印最长的行


2.构建需要函数:


int get(void) {
int c, i; 
extern char line[];
for (i = 0; (i < MAXLINE - 1)&& ((c=getchar()) != EOF )&& c != '\n'; ++i)
line[i] = c;
if (c == '\n') {
line[i] = c;
++i;}
line[i] = '\0';
return i;}


void copy(void) {
int i; extern char line[], longest[];
i = 0;
while ((longest[i] = line[i]) != '\0') 
++i;}


3.实际构建:


while ((len = get()) > 0) if (len > max) {
max = len;
copy();} 
if (max > 0) 
printf("%s", longest);   


五、程序具体实现


#include <stdio.h>
#define MAXLINE 1000
int max;
char line[MAXLINE]; 
char longest[MAXLINE];
int get(void);
void copy(void);
int main() {
int len;
extern int max;
extern char longest[];
max = 0;
while ((len = get()) > 0) if (len > max) {
max = len;
copy();
} if (max > 0)
printf("%s", longest); 
return 0;}
int get(void) {
int c, i; 
extern char line[];
for (i = 0; (i < MAXLINE - 1)&& ((c=getchar()) != EOF )&& c != '\n'; ++i)
line[i] = c;
if (c == '\n') {
line[i] = c;
++i;}
line[i] = '\0';
return i;}
void copy(void) {
int i; extern char line[], longest[];
i = 0;
while ((longest[i] = line[i]) != '\0') 
++i;}


六、测试结果及讨论


image.png


1.外部变量必须定义在所有函数之外,且只能定义一次,定义后编译程序将为他分配存储单元。


2.在每个需要访问外部变量的函数中,必须声明相应的外部变量,此时说明类型,声明时可以用extern语式显示声明,也可以通过上下文隐式声明。

例如:extern int max;


七、实验心得


灵活设置函数,在出现问题时冷静分析错误提示,总结经验。


海南大学 信息与通信工程学院

20级智能科学与技术(*好惨,下一届就改成人工智能了,后无来者)

一位不知道怎么谈恋爱的孙姓学生提供


你怕不是冯教授的学生


相关文章
|
11月前
|
C语言
C语言栈的行编辑程序讲解
C语言栈的行编辑程序讲解
155 0
|
11月前
|
Java C语言
C语言实验——输出字符串-java
C语言实验——输出字符串-java
|
存储 算法 C语言
C语言---数据结构实验---哈夫曼树及哈夫曼编码的算法实现---图的基本操作
C语言---数据结构实验---哈夫曼树及哈夫曼编码的算法实现---图的基本操作
|
5月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
127 4
|
6月前
|
C语言
大学生期末C语言实验(学生成绩和鞍点)
大学生期末C语言实验(学生成绩和鞍点)
355 0
大学生期末C语言实验(学生成绩和鞍点)
|
9月前
|
人工智能 C语言
7-5 sdut -C语言实验-节约用电
7-5 sdut -C语言实验-节约用电
81 3
|
10月前
|
C语言
C语言---函数---请输入乘法口诀表的行,来打印几几乘法表
C语言---函数---请输入乘法口诀表的行,来打印几几乘法表
50 1
|
11月前
|
存储 C语言
C语言实验-动态顺序表实现简易通讯录(二)
在这个C语言实验中,你将实现一个简单的通讯录,它使用动态顺序表来存储联系人信息。
89 2
|
9月前
|
Linux C语言
【编程小实验】C语言实现:无限循环写入文本文件,支持Ctrl+C中断与数据追加(附完整源码)
在Linux中,文件I/O(输入/输出)是程序与文件进行交互的基本方式,包括读取文件内容和向文件写入数据。这通常通过标准的C库函数来实现,下面是一些基本的文件读写操作和代码示例。
404 0
|
11月前
|
存储 算法 程序员
零基础C语言“函数”教程,有手就行
零基础C语言“函数”教程,有手就行