C语言集中上机实验报告
学 生:
学 号:
班 级:重修六班
专 业:市场营销
重庆邮电大学移通学院
20##年12月
1.1 实验目的
(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法
(2)掌握字符数组和字符串函数的使用;
(3)掌握与数组有关的算法。
1.2 实验要求
(1) 在报告中记录建立、保存C程序实习过程。
(2) 完成典型题目,分析遇到的困难和实验中的收获。
1.3 实验基本内容
1.3.1 题目一
打印出以下图案
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
(1) 题目分析:当i=0时,第一行为1。当i=1时,第二行为3。当i=2时,第三行为5。当i=4时,第四行为7;依次循环,要使用两次内循环。
(2) 程序:#include<stdio.h>
void main()
{
int i,j,k;
for(i=0;i<=3;i++)
{
for(j=0;j<=2-i;j++)
printf(" ");
for(k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
for(i=0;i<=2;i++)
{
for(j=0;j<=i;j++)
printf(" ");
for(k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
printf("\n");
}
(3) 运行结果:
1.3.2 题目二
编写程序实现输入整数n,输出如下所示由数字组成的菱形。(图中n=5)
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 3 2 1
1 2 3 2 1
1 2 1
1
(1) 题目分析:每一行中间那个数往两边依次递减。上下以中间为对称轴对称。
(2) 程序:#include<stdio.h>
void main()
{
int i,j;
printf("\n");
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)
printf("%2d",j);
for(j=i-1;j>=1;j--)
printf("%2d",j);
printf("\n");
}
for(i=4;i>=1;i--)
{
for(j=1;j<=i;j++)
printf("%2d",j);
for(j=i-1;j>=1;j--)
printf("%2d",j);
printf("\n");
}
}
(3) 运行结果:
集中上机总结
第二篇:C语言集中上机实验报告《通信录管理》
C语言集中上机实验报告
院 系:
班 级:
姓 名:
学 号: 指导教师:
题目二:通讯录管理
目 录
一.概述............................................................................................. 3
二.流程图 ......................................................................................... 3
三.主程序 ......................................................................................... 5
四.程序的调试与运行结果说明 ....................................................... 8
五.课程设计总结 .............................................................................. 9
六.心得体会 ....................................................................................11
参考文献............................................................................................11
一 概述
1. 课程设计的地位、作用与目的
为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。
2.课程的基本要求
1学生从后面参考题中选取一道题目来做,自己选题的学生必需经指导老师的同意方可,否则视为无效选题。限1人选的题目只能由1人单独完成,限2人选的题目可由1-2人完成。
2模块化程序设计?
3锯齿型书写格式?
4必须上机调试通过?
3. 课程设计的主要设计思想
1、设一个通信录由以下几项数据信息构成:
数据项 类型
姓名 字符串
地址 字符串
邮政编码 字符串
电话号码 字符串
试为通信录数据定义类型和定义通信录变量, 实现功能:存取、显示、删除记录、查询记录等功能。
二 流程图
1。打开程序;
2。显示主菜单;
3。选择相应功能的编号: 选择1为输入联系人信息;
选择2为显示所有联系人信息;
选择3为查询联系人信息;
选择4为删除联系人信息;
选择0为退出系统;
4。功能一:输入1。再输入相应联系人的信息后,按回车,数据存入lxr.txt文档,再按回
车同时返回主菜单;
功能二:输入2。显示以前输入的联系人信息; 按回车结束,同时返回主菜单; 功能三:输入3。再输入相应联系人的姓名后,按回车确定查询,即刻显示出早期存入
的数据;按回车结,;同时返回主菜单;
功能四:输入4。再输入相应联系人的姓名后,按回车确定删除;按回车结,;同时返
回主菜单;
功能五:输入0。退出系统;
三 主程序
#include <stdio.h>
#include<string.h>
struct lxr
{
char name[8]; char addres[10]; char number[10];
char phonenum[12];
char sex[4];
}lxr;//定义一个结构体 并第一个结构体的全局变量lxr void main()
{
void save();
void read();
void search(); void delet();
int n;
do
{
printf("主菜单:\n");
printf("\n 1 输入联系人信息:\n"); printf("\n 2 显示所有联系人信息:\n"); printf("\n 3 查询联系人信息:\n"); printf("\n 4 删除联系人信息:\n"); printf("\n 0 退出系统\n"); printf("\n请选择功能:"); scanf("%d",&n); switch(n) { case 1:save();break; case 2:read();break; case 3:search();break; case 4:delet();break; default:printf("退出系统\n"); } }while(n!=0);
}
void save()
{
FILE*fp,*fpp;//定义两个文件指针
int n=0;
fpp=fopen("num.txt","rb");//fopen(文件名,使用文件方式) "rb"(只读):为输入打开一个二进制文件
fread(&n,sizeof(int),1,fpp);//sizeof为保存字节数 fclose(fpp); fp=fopen("lxr.txt","a"); printf("请录入信息\n");
printf("\n姓名 地址 邮政编 电话号码 性别 \n");
printf("\n");
scanf("%s%s%s%s%s",lxr.name,lxr.addres,lxr.number,lxr.phonenum,lxr.sex);
fwrite(&lxr,sizeof(struct lxr),1,fp);//fwrite函数就是向fstu指向的文件里写入信息 n++;
fpp=fopen("num.txt","wb");
fwrite(&n,sizeof(int),1,fpp);
fclose(fpp);//fclose表示关闭文件
fclose(fp);
}
void read()
{
FILE*fp,*fpp;
int i,n; fp=fopen("lxr.txt","r");//"r"(只读):为输入打开一个文本文件
fpp=fopen("num.txt","r");
fread(&n,sizeof(int),1,fpp);//人数文件里的人数存到变量n里; fread(buffer,size,count,fp) count:要进行读写多少个size字节的数据项
printf("\n"); printf("联系人信息如下:\n");
printf("*****************************************************************************\n");
printf("姓名 地址 邮政编 电话号码 性别 \n");
} printf("\n"); for(i=0;i<n;i++) { fread(&lxr,sizeof(struct lxr),1,fp);//fread函数把 文件里的信息读出 printf("\n%-8s%8s%8s } fclose(fp); %8s%8s \n",lxr.name,lxr.addres,lxr.number,lxr.phonenum,lxr.sex);
void search()
{
FILE*fp,*fpp;
int i,j,m;
char n[10];
m=0;
printf("输入要查找的姓名:");
scanf("%s",n);
printf("姓名 地址 邮政编码 电话号码 性别 \n"); fpp=fopen("num.txt","r");
fp=fopen("lxr.txt","r");
fread(&j,sizeof(int),1,fpp);
for(i=0;i<j;i++)
{
fread(&lxr,sizeof(struct lxr),1,fp);
if(strcmp(lxr.name,n)==0)
{
printf("\n%-8s%8s%8s
\n",lxr.name,lxr.addres,lxr.number,lxr.phonenum,lxr.sex);
m++;
}
}
if(m==0)printf("没有符合的信息\n");
void delet()
{
FILE*fp,*fpp;
struct lxr lxr[10];
int i,j,n,flag;
char name[10];
printf("请输入要删除的联系人姓名:");
scanf("%s",name);
fp=fopen("lxr.txt","r");
fpp=fopen("num.txt","r");
fread(&j,sizeof(int),1,fpp);
fclose(fpp);
for(i=0;i<j;i++)
fread(&lxr[i],sizeof(struct lxr),1,fp);
for(i=0,flag=1;i<j&&flag;i++)
{
if(strcmp(lxr[i].name,name)==0)
{
for(n=i;n<j-1;n++)
{
strcpy(lxr[n].name,lxr[n+1].name); %8s%8s
} } strcpy(lxr[n].addres,lxr[n+1].addres); strcpy(lxr[n].number,lxr[n+1].number); strcpy(lxr[n].phonenum,lxr[n+1].phonenum); strcpy(lxr[n].sex,lxr[n+1].sex); } flag=0; fpp=fopen("num.txt","w"); fwrite(&j,sizeof(int),1,fpp); j--; fclose(fpp);
fclose(fp);
fp=fopen("lxr.txt","w");
for(i=0;i<j;i++)
fwrite(&lxr[i],sizeof(struct lxr),1,fp);
} fclose(fp);
四 程序的调试与运行结果说明 主界面运行截图
各种功能截图 输入
显示
查询
删除
五 课程设计总结
本次设计基本达到了要求,设计了一个具有相关功能的通讯录,能进行简单的操作,包括存取、显示、删除记录、查询记录 。
六 心得体会
通过本次C语言上机实验的练习,加深了我对C语言的应用。了解了C语言中更多的应用功能,例如FILE*fp,fp=fopen(文件名,使用文件方式),fread( ), fclose( ),fwrite( ),sizeof( )等函数的应用。虽然在运用的过程中仍旧存在许多不足,但对培养我们的自主性与解决问题的能力有很大的帮助。在今后的学习,应用中相信我们能更好的掌握C语言的运用。
参考文献
[1] 谭浩强,C程序设计(第二版),北京,清华大学出版社,20xx年9月。