寻找并输出最大行 实验报告 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;}

六、测试结果及讨论
在这里插入图片描述

1.外部变量必须定义在所有函数之外,且只能定义一次,定义后编译程序将为他分配存储单元。
2.在每个需要访问外部变量的函数中,必须声明相应的外部变量,此时说明类型,声明时可以用extern语式显示声明,也可以通过上下文隐式声明。
例如:extern int max;

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

海南大学 信息与通信工程学院
20级智能科学与技术(*好惨,下一届就改成人工智能了,后无来者)
一位不知道怎么谈恋爱的孙姓学生提供

你怕不是冯教授的学生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太阳城S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值