- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上机实验十一 函数、结构体综合应用
【实验十参考答案
见后 】
目的和要求:
( 1)熟悉结构体的基本语法及基本应用;
( 2)继续熟悉函数调用;
( 3)熟悉省考、国考题型。
实验内容:
一、完善程序题
1.全国二级 C 程序填空题(即完善题) :
人员的记录由编号和出生年、月、日组成, N 名人员的数据已在主函数中存入结构体数组 std
编号唯一。函数 fun 的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号
不存在,返回数据中的编号为空串。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
【 typedef 的功能是:用新的名字替代原类型名,使用格式如下:
typedef 原类型名 新类型名 ;
中,且
例如:
#include
#include
#define
typedef
typedef float single;
single x; /* 此句等价于
<stdio.h>
<string.h>
N 8
struct
float x; */
】
{ char num[10];
int year, month, day ;
}STU ;
//【注意:考试时 不能删除“
”】
___1___ fun(STU *std, char *num)
{ int i; STU a={"",9999,99,99};
for (i=0; i<N; i++)
/**********found**********/
if( strcmp(___2___ ,num)==0 )
/**********found**********/
return (___3___);
return a;
}
main()
{ STU std[N]={ {"111111",1984,2,15},{"222222",1983,9,21},{"333333",1984,9,1}, {"444444",1983,7,15},{"555555",1984,9,28},{"666666",1983,11,15}, {"777777",1983,6,22},{"888888",1984,8,19}};
STU p;
char n[10]="666666";
p=fun(std , n);
if(p.num[0]==0)
printf("\n Not found !\n");
else
{
printf("\n Succeed !\n
");
printf("%s
%d-%d-%d\n", p.num , p.year , p.month , p.day);
}
}
2.下列程序完成的功能是:任意读入一个十进制整数,调用子函数将其转换成二至十六进制中任一指定进制的字符串形式。
例如:读入
-46
16
输出
-2E
#include <stdio.h>
#include <stdlib.h>
main()
{void tran(int m, int r, int *p);
int x, r0; /*r0 为进制基数,只能为
2~16 之间的整数
*/
int i, n; /*n 为生成序列的余数个数
*/
_________ char ys[50];
printf("
输入十进制整数以及进制基数(
2~16) :\n");
scanf("%d%d", &x, &r0);
printf("%d 的 %d 进制形式为 :", x, r0);
if(x<0){putchar('-'); x=-x;}
if(r0>=2&&r0<=16)
{tran(x, r0, ________);
for(i=n-1; i>=0; i--) printf("%c", ys[i]);
printf("\n"); }
else
{printf(" 输入的值不符合题意! \n");
exit(0); /*exit 函数可以终止整个程序的运行
*/
}
}
char ys[50];
/* 全局变量 */
void tran(int m, int r, int *pn)
{char sb[ ]="0123456789ABCDEF";
int i=0, g;
do{g=m%r;
ys[i]=sb[______];
m=m/r;
i++;
}while(m!=0);
_________=i;
}
二、省考改错题
【程序功能】
统计一个字符串中包含的字母串个数并找出其中最长的字母串。 所谓字母串是指一个连续的字母序列
(不区分大小写) ,字母串之间用非字母字符分隔。
函数 count 的功能是统计 p 指向的字符串中包含的字母串个数,并将找出的最长字母串存放在 pmax
指向
文档评论(0)