实 验 报 告
实验项目名称 寻找并输出最大行 实验日期 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;}
六、测试结果及讨论
1.外部变量必须定义在所有函数之外,且只能定义一次,定义后编译程序将为他分配存储单元。
2.在每个需要访问外部变量的函数中,必须声明相应的外部变量,此时说明类型,声明时可以用extern语式显示声明,也可以通过上下文隐式声明。
例如:extern int max;
七、实验心得
灵活设置函数,在出现问题时冷静分析错误提示,总结经验。
海南大学 信息与通信工程学院
20级智能科学与技术(*好惨,下一届就改成人工智能了,后无来者)
一位不知道怎么谈恋爱的孙姓学生提供
你怕不是冯教授的学生