实验项目名称 寻找并输出最大行 实验日期 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级智能科学与技术(*好惨,下一届就改成人工智能了,后无来者)
一位不知道怎么谈恋爱的孙姓学生提供
你怕不是冯教授的学生