int max(int x,int y,int z)
{
int t
t=x>y?x:y
t=t>z?t:z
return(t)
}
int min(int x ,int y,int z)
{
int t
t=x<y?x:y
t=t<z?t:z
return(t)
}
int aver(int x ,int y,int z)
{
int t
t=(x+y+z)/3
return(t)
}
void main()
{ int x,y,z,a,b,c
scanf("%d,%d,%d",&x,&y,&z)
a=(*max)(x,y,z)
b=(*min)(x,y,z)
c=(*aver)(x,y,z)
printf("%d,%d,%d\n",a,b,c)
}
建议改成:
#include<stdio.h>
int max(int x,int y,int z)
{
int t
t=x>y?x:y
t=t>z?t:z
return(t)
}
int min(int x ,int y,int z)
{
int t
t=x<y?x:y
t=t<z?t:z
return(t)
}
float aver(int x ,int y,int z)
{
int t
t=(float)((x+y+z)/3.0)
return(t)
}
void main()
{ int x,y,z,a,bfloat c
scanf("%d,%d,%d",&x,&y,&z)
a=(*max)(x,y,z)
b=(*min)(x,y,z)
c=(*aver)(x,y,z)
printf("max=%d\nmin=%d\naver=%g\n",a,b,c)
}
/* Note:Your choice is C IDE */#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 100
struct student
{
char num[10]
char name[10]
char tel[11]
}
/* 以下是函数原型说明,被调函数的定义在主调函数后面时,要加此部分 */
void myprint()
void mycreate()
void mydisplay()
void mysearch()
/* sch_num与sch_name函数被mysearch调用 */
void sch_num(FILE *fp)
void sch_name(FILE *fp)
void mymodify()
void myadd()
void mydelete()
/* del_num与del_name函数被mydelete调用 */
void del_num(FILE *fp)
void del_name(FILE *fp)
void mysort()
/* sort_num与sort_name函数被mysort调用 */
void sort_num()
void sort_name()
void main()
{
char choose,yes_no
do
{
myprint() /* 显示主菜单 */
printf(" ")
choose=getch()
switch(choose)
{
case '1': mycreate() break /* 创建 */
case '2': mydisplay()break /* 显示 */
case '3': mysearch() break /* 查询 */
case '4': mymodify() break /* 修改 */
case '5': myadd() break /* 添加 */
case '6': mydelete() break /* 删除 */
case '7': mysort() break /* 排序 */
case '0': break
default:printf("\n%c为非法选项!\n",choose)
}
if(choose=='0')
break
printf("\n要继续选择吗(Y/N)?\n")
do
{
yes_no=getch()
}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n')
}while(yes_no!='Y'||yes_no!='y')
}
void myprint() /* 显示菜单界面 */
{
printf("\n\n\n\n\n\n\n\n")
printf(" |----------------------------|\n")
printf(" | 请输入选项编号(0-7): |\n")
printf(" |----------------------------|\n")
printf(" | 1--创建信息管理系统 |\n")
printf(" | 2--显示信息管理系统 |\n")
printf(" | 3--查询信息管理系统 |\n")
printf(" | 4--修改信息管理系统 |\n")
printf(" | 5--添加信息管理系统 |\n")
printf(" | 6--删除信息管理系统 |\n")
printf(" | 7--排序信息管理系统 |\n")
printf(" | 0--退出 |\n")
printf(" |----------------------------|\n")
}
/* 定义创建信息管理系统的函数 */
void mycreate()
{
int i=1
struct student temp
FILE *fp
fp=fopen("d:\\lbh\\guanli.dat","w")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
printf("\n 请输入第1个记录:\n")
printf(" 学号(用#结束输入):")
do
{
gets(temp.num)
}while(strcmp(temp.num,"")==0)
printf(" 姓名(用#结束输入):")
gets(temp.name)
printf(" 电话号码(用#结束输入):")
gets(temp.tel)
while(temp.num[0]!='#'&&temp.name[0]!='#'&&temp.tel[0]!='#')
{
fprintf(fp,"%23s%15s%15s\n",temp.num,temp.name,temp.tel)
i++
printf("\n 请输入第%d个记录:\n",i)
printf(" 学号(用#结束输入):")
do
{
gets(temp.num)
}while(strcmp(temp.num,"")==0)
printf(" 姓名(用#结束输入):")
gets(temp.name)
printf(" 电话号码(用#结束输入):")
gets(temp.tel)
}
fclose(fp)
}
/* 定义显示信息管理系统的函数 */
void mydisplay()
{
int n=0
struct student temp
FILE *fp
fp=fopen("d:\\lbh\\guanli.dat","r+")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
// clrscr()
printf(" 学号 姓名 电话号码\n")
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel)
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel)
n++
}
if(n==0)
printf("\n 文件中无记录!\n")
else
printf("\n 文件中共有%d个记录!\n",n)
fclose(fp)
}
/* 定义查询信息管理系统的函数 */
void mysearch()
{
char c
FILE *fp
fp=fopen("d:\\lbh\\guanli.dat","r+")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
printf("\n 按学号查询(h),还是按姓名查询(m)?")
c=getch()
if(c=='h'||c=='H')
sch_num(fp) /* 按学号查询 */
if(c=='m'||c=='M')
sch_name(fp) /* 按姓名查询 */
else
printf("\n 非法字符!\n")
fclose(fp)
}
/* 定义按学号查询信息管理系统的函数 */
void sch_num(FILE *fp)
{
int flag=0,n=0
char tempnum[10]
struct student temp
printf("\n 请输入要查询记录的学号:")
gets(tempnum)
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel)
if(strcmp(tempnum,temp.num)==0)
{
if(flag==0)
printf(" 学号 姓名 电话号码\n")
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel)
flag=1
}
n++
}
if(n==0)
printf("\n 文件中无记录!\n")
else
if(flag==0)
printf("\n 文件中无此人!\n")
}
/* 定义按姓名查询信息管理系统的函数 */
void sch_name(FILE *fp)
{
int flag=0,n=0
char tempname[10]
struct student temp
printf("\n 请输入要查询记录的姓名:")
gets(tempname)
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",&temp.num,&temp.name,&temp.tel)
if(strcmp(tempname,temp.name)==0)
{
if(flag==0)
printf(" 学号 姓名 电话号码\n")
printf("%23s%15s%15s\n",temp.num,temp.name,temp.tel)
flag=1
}
n++
}
if(n==0)
printf("\n 文件中无记录!\n")
else
if(flag==0)
printf("\n 文件中无此人!\n")
}
/* 定义修改信息管理系统的函数 */
void mymodify()
{
char c
int n=0
struct student *find,temp,record[100],*p/* 最多100个记录 */
FILE *fp
fp=fopen("d:\\lbh\\guanli.dat","r+")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
p=record
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
p++
n++
}
fclose(fp)
if(n==0)
{
printf("\n 文件中无记录!\n")
return
}
printf("\n 请输入要修改记录的学号:")
gets(temp.num)
for(p=recordp<record+np++)
if(strcmp(temp.num,p->num)==0)
{
find=p/* find记住修改记录的位置 */
break
}
if(p==record+n)
{
printf("\n 无此人!\n")
return
}
do
{
printf("\n 请输入正确的学号:")
do
{
gets(temp.num)
}while(strcmp(temp.num,"")==0)
printf(" 请输入正确的姓名:")
gets(temp.name)
printf(" 请输入正确的电话号码:")
gets(temp.tel)
for(p=recordp<record+np++)
if((strcmp(temp.num,p->num)==0)&&(p!=find))
{
printf("\n 学号重复,要重新输入吗(Y/N)?")
do
{
c=getch()
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n')
putchar('\n')
break
}
if(p==record+n)
{
*find=temp /* find指向需要修改记录的位置 */
break
}
}while(c=='Y'||c=='y')
fp=fopen("d:\\lbh\\guanli.dat","r+")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
for(p=recordp<record+np++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
fclose(fp)
}
/* 定义添加信息管理系统的函数 */
void myadd()
{
char c
int n=0
struct student temp,record[N],*p
FILE *fp
fp=fopen("d:\\lbh\\guanli.dat","r+")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
p=record
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
p++
n++
}
fclose(fp)
do
{
printf("\n 请输入新记录的学号:")
do
{
gets(temp.num)
}while(strcmp(temp.num,"")==0)
printf(" 请输入新记录的姓名:")
gets(temp.name)
printf(" 请输入新记录的电话号码:")
gets(temp.tel)
for(p=recordp<record+np++)
if(strcmp(temp.num,p->num)==0)
{
printf("\n 学号重复,要重新输入吗(Y/N)?")
do
{
c=getch()
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n')
putchar('\n')
break
}
if(p==record+n)
{
*p=temp
break
}
}while(c=='Y'||c=='y')
fp=fopen("d:\\lbh\\guanli.dat","r+")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
for(p=recordp<record+n+1p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
fclose(fp)
}
/* 定义删除信息管理系统的函数 */
void mydelete()
{
char c
FILE *fp
fp=fopen("d:\\lbh\\guanli.dat","r+")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
printf("\n 按学号删除(h),还是按姓名删除(m)?")
c=getch()
if(c=='h'||c=='H')
del_num(fp) /* 按学号删除 */
if(c=='m'||c=='M')
del_name(fp) /* 按姓名删 */
else
printf("\n 非法字符!\n")
fclose(fp)
}
/* 定义按学号删除信息管理系统的函数 */
void del_num(FILE *fp)
{
int n=0
char tempnum[10]
struct student record[N],*p,*k
p=record
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
p++
n++
}
fclose(fp)
printf("\n 请输入要删除记录的学号:")
gets(tempnum)
for(k=recordk<record+nk++)
if(strcmp(tempnum,k->num)==0)
break /* 找到要删记录结束循环 */
if(k<record+n) /* 提前结束循环,说明找到人 */
for(p=kp<k+n-1p++) /* 向左移一位,相当于删除记录 */
*p=*(p+1)
else
printf("\n 无此人!\n")
fp=fopen("d:\\lbh\\guanli.dat","w")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
for(p=recordp<record+n-1p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
}
/* 定义按姓名删除信息管理系统的函数 */
void del_name(FILE *fp)
{
int n=0
char tempname[10]
struct student record[N],*p,*k
p=record
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
p++
n++
}
fclose(fp)
printf("\n 请输入要删除记录的姓名:")
gets(tempname)
for(k=recordk<record+nk++)
if(strcmp(tempname,k->name)==0)
break /* 找到要删记录结束循环 */
if(k<record+n) /* 提前结束循环,说明找到人 */
for(p=kp<k+n-1p++) /* 向左移一位,相当于删除记录 */
*p=*(p+1)
else
printf("\n 无此人!\n")
fp=fopen("d:\\lbh\\guanli.dat","w")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
for(p=recordp<record+n-1p++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
}
/* 定义排序信息管理系统的函数 */
void mysort()
{
char c
FILE *fp
fp=fopen("d:\\lbh\\guanli.dat","r+")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
fclose(fp)
printf("\n 按学号排序(h),还是按姓名排序(m)?")
c=getch()
if(c=='h'||c=='H')
sort_num() /* 按学号排序 */
if(c=='m'||c=='M')
sort_name() /* 按姓名排序 */
else
printf("\n 非法字符!\n")
}
/* 定义按学号排序信息管理系统的函数 */
void sort_num()
{
int i,j,k,n=0
char c
struct student record[N],*p,temp
FILE *fp
fp=fopen("d:\\lbh\\guanli.dat","r")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
p=record
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
p++
n++
}
fclose(fp)
printf("\n 按升序(s),还是按降序(j)?")
c=getch()
if(c=='s'||c=='S')/* 按学号的升序排列 */
for(i=0i<n-1i++) /* 选择法排序 */
{
k=i
for(j=i+1j<nj++)
if(strcmp((p+k)->num,(p+j)->num)>0)
k=j
temp=*(p+k)
*(p+k)=*(p+i)
*(p+i)=temp
}
else
if(c=='j'||c=='J')/* 按学号的降序排列 */
for(i=0i<n-1i++) /* 选择法排序 */
{
k=i
for(j=i+1j<nj++)
if(strcmp((p+k)->num,(p+j)->num)<0)
k=j
temp=*(p+k)
*(p+k)=*(p+i)
*(p+i)=temp
}
else
{
printf("\n 非法字符!\n")
return
}
fp=fopen("d:\\lbh\\guanli.dat","w")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
for(p=recordp<record+np++)
{
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
printf("%23s%15s%15s\n",p->num,p->name,p->tel)
}
fclose(fp)
}
/* 定义按姓名排序信息管理系统的函数 */
void sort_name()
{
int i,j,k,n=0
char c
struct student record[N],*p,temp
FILE *fp
fp=fopen("d:\\lbh\\guanli.dat","r+")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
p=record
while(feof(fp)==0)
{
fscanf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
p++
n++
}
fclose(fp)
printf("\n 按升序(s),还是按降序(j)?")
c=getch()
if(c=='s'||c=='S')/* 按姓名的升序排列 */
for(i=0i<n-1i++) /* 选择法排序 */
{
k=i
for(j=i+1j<nj++)
if(strcmp((p+k)->name,(p+j)->name)>0)
k=j
temp=*(p+k)
*(p+k)=*(p+i)
*(p+i)=temp
}
else
if(c=='j'||c=='J')/* 按姓名的降序排列 */
for(i=0i<n-1i++) /* 选择法排序 */
{
k=i
for(j=i+1j<nj++)
if(strcmp((p+k)->name,(p+j)->name)<0)
k=j
temp=*(p+k)
*(p+k)=*(p+i)
*(p+i)=temp
}
else
{
printf("\n 非法字符!\n")
return
}
fp=fopen("d:\\lbh\\guanli.dat","w")
if(fp==NULL)
{
printf("\n 打开文件失败!\n")
return
}
for(p=recordp<record+np++)
fprintf(fp,"%23s%15s%15s\n",p->num,p->name,p->tel)
fclose(fp)
}
第一章 程序设计的基本概念第一节 C语言的发展历史与特点
第二节 程序与程序设计
第三节 算法与算法的描述
第四节 C语言的上机 *** 作
思考题与习题
第二章 C语言程序设计基础
第一节 C语言的程序结构
第二节 数据类型
第三节 运算符与表达式
思考题与习题
第三章 C程序控制结构
第一节 C程序的三种基本控制结构
第二节 顺序结构
第三节 选择结构
第四节 循环结构
思考题与习题
第四章 数组
第一节 数组与数组元素的概念
第二节 一维数组
第三节 二维数组及多维数组
第四节 字符串与字符数组
思考题与习题
第五章 指针
第一节 指针与指针变量的概念
第二节 指针变量的定义和引用
第三节 指针变量与数组
思考题与习题
第六章 函数
第一节 函数的定义
第二节 函数的嵌套调用
第三节 数组作为函数参数
第四节 指针与函数
第五节 变量的使用范围与存储类别
第六节 不同文件中的函数使用
思考题与习题
第七章 编译预处理
第一节 宏定义
第二节 文件包含
第三节 条件编译
思考题与题
第八章 结构体与共用体
第一节 结构体基础
第二节 结构体数组
第三节 结构体指针
第四节 链表
第五节 位段
第六节 共用体
第七节 枚举类型与自定义类型
思考题与习题
第九章 文件
第一节 文件概述
第二节 文件的打开与关闭
第三节 文件的读/写
第四节 文件的定位
思考题与习题
第十章 程序设计方法
第一节 程序设计的基本概念
第二节 结构化程序设计方法
第三节 程序效率
第四节 程序设计风格
思考题与习题
附录
附录A C语言实验
附录B 标准ABSII码表
附录C C语言中的关键字
附录D 运算符的优先级与结合性
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)