实习七答案
1、 电话薄管理程序设计
/* exer 7-1 手机电话簿管理 */
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int N=0; /* 定义全局变量,代表电话簿长度 */ struct stud /* 定义结构类型 */ {
char name[15];
char phone_num[15];
char mobile_num[15];
} book[100];
void creat( );
void insert( );
void search( );
void delete( );
void output( );
int main(void)
{
int k;
do
{
printf(" 0: exit\n");
printf(" 1: creat\n");
printf(" 2: search\n");
printf(" 3: insert\n");
printf(" 4: delete\n");
printf(" 5: output\n");
printf("please select:");
scanf("%d",&k);
switch(k)
{
case 0:
exit(0);
case 1:
creat( );
break;
case 2:
search( );
break;
case 3: /* 定义结构数组 */ /* 函数的原型声明 */ /* 主函数 */ /* 打印菜单项 */ /* 输入选择项 */ /* 退出函数 */
insert( );
break;
case 4:
delete( );
break;
case 5:
output( );
break; /* 调用子函数 */
default:
exit(0);
}
}
while(1);
return 0;
}
void creat(void) /* 生成子函数 */
{
char appella[15];
getchar();
while(1) /* 输入结构数组 */ {
gets(appella);
if(*appella=='*') break; /* 输入*,则结束 */ strcpy(book[N].name, appella);
gets(book[N].phone_num);
gets(book[N].mobile_num);
N++; /* 统计长度 */ }
}
void search(void) /*查找子函数 */
{
char appella[15];
int i=0;
getchar();
gets(appella);
while(i<N && strcmp(book[i].name,appella)!=0)
{
i++;
}
if(i<N)
printf("%s %s %s\n",
book[i].name,book[i].phone_num,book[i].mobile_num);
else
printf("not found");
}
void insert(void) /* 插入子函数 */
{
getchar();
gets(book[N].name);
gets(book[N].phone_num);
gets(book[N].mobile_num);
N++; /* 长度加1 */
}
void delete(void) /*删除子函数 */
{
char appella[15];
int i=0,j;
getchar();
gets(appella);
while(i<N && strcmp(book[i].name,appella)!=0)
{
i++;
}
if(i<N)
{
for(j=i+1; j<N; j++)
{
book[j-1] = book[j];
}
N--; /* 长度减1 */ }
else
printf("not found");
}
void output(void) /* 输出子函数 */
{
int i;
for(i=0; i<N; i++)
printf("%s %s %s\n",
book[i].name,book[i].phone_num,book[i].mobile_num); }
2、 正负数判断
/* exer 8-1 判断数是正数、负数 */
#include<stdio.h>
int main(void)
{
short num,mask,bit;
mask = 0x8000; /* 构造掩码 */ scanf("%hx",&num); /* 输入数据 */ bit = (mask & num)?1:0; /* 取出第一位 */ if(bit == 0)
printf("is positive number\n"); /* 输出正数 */ else
printf("is negative number\n"); /* 输出负数 */ return 0;
}
3、 偶数位清零
/* exer 8-3 将偶数位清零,其它位保留 */
#include<stdio.h>
int main(void)
{
unsigned short a,b,mask;
mask = 0x5555; /* 构造掩码 */ scanf("%hx",&a); /* 输入数据a */
b = a & mask; /* 与掩码按位与 */ printf("%x\n",b); /* 输出 */
return 0;
}
4、 结构体的定义与引用
#include<stdio.h>
/*定义结构体*/
struct employee
{
char name[100];
char ID[20];
int age;
float salary;
};
int main()
{
/*定义结构体变量*/
struct employee staff;
/*输入数据*/
gets(staff.name);
gets(staff.ID);
scanf("%d", &staff.age);
scanf("%f", &staff.salary);
/*输出数据*/
puts(staff.name);
puts(staff.ID);
printf("%d\n", staff.age);
printf("%.2f\n", staff.salary); return 0;
}
5、 结构体数组的定义与引用 #include<stdio.h>
/*定义结构体*/
struct employee
{
char name[100];
char ID[20];
int age;
float salary;
};
int main()
{
int i = 0;
float MaxSalary = 0.0f;
/*定义结构体变量*/
struct employee staff[5];
/*输入数据*/
for(i = 0; i < 5; i++)
{
scanf("%s", staff[i].name); scanf("%s", staff[i].ID); scanf("%d", &staff[i].age); scanf("%f", &staff[i].salary); }
MaxSalary = staff[0].salary; for(i = 1; i < 5; i++)
{
if(staff[i].salary > MaxSalary) MaxSalary = staff[i].salary; }
printf("%.2f\n", MaxSalary); return 0;
}
1. 文本文件中字符个数统计
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char ch, filename[200];
int count = 0;
FILE *fp;
scanf("%s", filename);
if((fp = fopen(filename, "r")) == NULL)
{
printf("File open error!\n");
exit(1);
}
while((ch = fgetc(fp)) != EOF)
{
count++;
}
printf("%d\n",count);
if( fclose(fp))
{
printf("File close error!\n");
exit(1);
}
return 0;
}
2. 文件中数据的排序
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a[10], temp = 0, i = 0, j = 0, k = 0;
char filename1[80], filename2[80];
FILE *fp1,*fp2;
scanf("%s", filename1);
scanf("%s", filename2);
if((fp1 = fopen(filename1, "rb")) == NULL)
{
printf("Input file open error!\n");
exit(1);
}
if((fp2 = fopen(filename2,"wb")) == NULL)
{
printf("Output file create error!\n");
exit(1);
}
for(i = 0; i < 10; i++)
{
fread(&a[i], sizeof(int), 1, fp1); /* 读出数据 */ }
for(i = 0; i < 9; i++)
{
k = i;
for(j = i + 1; j < 10; j++)
if(a[k] > a[j]) k = j;
if(k != i)
{
temp = a[k];
a[k] = a[i];
a[i] = temp;
}
}
for(i = 0; i < 10; i++) /*
{
fwrite(&a[i], sizeof(int), 1, fp2);
}
if( fclose(fp1))
{
printf("Input file close error!\n");
exit(1);
}
if( fclose(fp2))
{
printf("Output file close error!\n");
exit(1);
}
/*验证结果的代码,请不要改动*/
if((fp1 = fopen(filename2, "rb")) == NULL)
{
printf("Result file open error!\n");
exit(1);
}
/* 排序 */ 写入数据 */
for(i = 0; i < 10; i++)
{
fread(&a[i], sizeof(int), 1, fp1); /* 读出数据 */ }
if( fclose(fp1))
{
printf("Result file close error!\n");
exit(1);
}
for(i = 0; i < 9; i++)
printf("%d ", a[i]);
printf("%d\n", a[i]);
return 0;
}
3 二进制数据文件/
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a[10], temp = 0, i = 0, j = 0, k = 0;
char filename1[80], filename2[80];
FILE *fp1,*fp2;
scanf("%s", filename1);
scanf("%s", filename2);
if((fp1 = fopen(filename1, "r")) == NULL)
{
printf("Input file open error!\n");
exit(1);
}
if((fp2 = fopen(filename2, "wb")) == NULL)
{
printf("Output file open error!\n");
exit(1);
}
for(i = 0; i < 10; i++)
{
fscanf(fp1, "%d", &a[i]);
fwrite(&a[i], sizeof(int), 1, fp2);
}
if( fclose(fp1))
{
printf("Input file close error!\n"); exit(1);
}
if( fclose(fp2))
{
printf("Output file close error!\n"); exit(1);
}
if((fp1 = fopen(filename2, "rb")) == NULL) {
printf("Result file open error!\n"); exit(1);
}
for(i = 0; i < 10; i++)
{
fread(&a[i], sizeof(int), 1, fp1); }
if( fclose(fp1))
{
printf("Result file close error!\n"); exit(1);
}
for(i = 0; i < 9; i++)
printf("%d ", a[i]);
printf("%d\n", a[i]);
return 0;
}
4. 比较2个文本文件的内容
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i = 1, flag = 0;
char filename1[80], filename2[80]; FILE *fp1, *fp2; /* 读出数据 */
scanf("%s", filename1);
scanf("%s", filename2);
if((fp1 = fopen(filename1, "r")) == NULL) {
printf("Input file1 open error!\n"); exit(1);
}
if((fp2 = fopen(filename2,"r")) == NULL) {
printf("Input file2 open error!\n"); exit(1);
}
while(!feof(fp1))
{
if(fgetc(fp1) == fgetc(fp2)) i++;
else
{
flag = 1;
break;
}
}
if (flag)
printf("%d\n", i);
else
printf("is equal\n");
if( fclose(fp1))
{
printf("Input file1 close error!\n"); exit(1);
}
if( fclose(fp2))
{
printf("Input file2 close error!\n"); exit(1);
}
return 0;
}
大学生实习单位鉴定评语推荐1、xx同志,在我单位实习期间,工作认真负责积极主动,能够很好的完成领导交给的各项任务。人际关系方面能够…
实习单位意见一该生在本服务处实习的这一段时间能够严格要求自己工作勤恳负责责任心强知识面广基础知识扎实在专业技术上遇到的问题能及时解…
最新大学生实习评语大全勤奋好学遵守厂规厂纪带来先进管理理念工作能力及专长在不断的社会实践中自己以认真敬业责任心强工作效率高执行公司…
实习学生工作认真负责虚心好学在业务紧迫时加班加点毫无怨言在工作中能够主动地学习和请教别人比较仔细认真能够完成指导老师和领导安排的工…
毕业生实习单位评语大全毕业生实习单位意见及表现评语大全如下,多条评语供您参考。该同学在实习期间工作认真,勤奋好学,踏实肯干,在工作…
在科技高度发展的今天,计算机在人们之中的作用越来越突出。而C语言作为一种计算机的语言,学习它将有助于我们更好的了解计算机,与计算机…
单片机c语言学习心得(一)相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什…
C语言实习心得20xx-7-6在这个学期的实习过程中,我们进行了为期俩个礼拜的c语言实习。首先得保证的一点就是我们要按时实习,遵守…
C语言学习心得C语言是一门低级计算机编程语言,设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何…
c语言学习心得体会c语言学习心得体会一c语言学习心得体会c语言作为一种计算机的语言我们学习它有助于我们更好的了解计算机与计算机进行…
C语言实训心得10903090113李新程在初学C语言的一个学期后,我们进行了C语言实训阶段,尝试编写一个比较复杂的程序系统。在为…