c语言程序设计实例
// 电话本Dlg.cpp : 实现文件
//
#include stdafx.h
#include 电话本.h
#include 电话本Dlg.h
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// C电话本Dlg 对话框
C电话本Dlg::C电话本Dlg(CWnd* pParent /*=NULL*/)
: CDialog(C电话本Dlg::IDD, pParent)
{
m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);
}
void C电话本Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(C电话本Dlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_EN_CHANGE(IDC_EDIT1, C电话本Dlg::OnName)
ON_EN_CHANGE(IDC_EDIT2, C电话本Dlg::OnPhoto)
ON_EN_CHANGE(IDC_EDIT3, C电话本Dlg::OnAddress)
ON_EN_CHANGE(IDC_EDIT4, C电话本Dlg::OnShow)
ON_BN_CLICKED(IDC_BUTTON1, C电话本Dlg::OnFill)
ON_BN_CLICKED(IDC_BUTTON2, C电话本Dlg::OnInsert)
ON_BN_CLICKED(IDC_BUTTON3, C电话本Dlg::OnFind)
ON_BN_CLICKED(IDC_BUTTON4, C电话本Dlg::OnDelete)
ON_BN_CLICKED(IDC_BUTTON5, C电话本Dlg::OnEdit)
ON_BN_CLICKED(IDC_BUTTON7, C电话本Dlg::OnSave)
END_MESSAGE_MAP()
// C电话本Dlg 消息处理程序
BOOL C电话本Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
ifstream InFile(Wab.fsd,ios::in);
listWabList::iterator ItWab;
char Tmp1[8],Tmp2[16],Tmp3[32];
Wab.clear();
while(InFile Tmp1 Tmp2 Tmp3)
{
OutWab.Name=Tmp1;
OutWab.Photo=Tmp2;
OutWab.Address=Tmp3;
Wab.push_front(OutWab);
}
C电话本Dlg::OnFill();
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void C电话本Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_castWPARAM(dc.GetSafeHdc()), 0);
// 使图标在工作矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(rect);
int x = (rect.Width() - cxIcon 1) / 2;
int y = (rect.Height() - cyIcon 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标显示。
//
HCURSOR C电话本Dlg::OnQueryDragIcon()
{
return static_castHCURSOR(m_hIcon);
}
void C电话本Dlg::OnName()
{
CEdit *pMaxLen=(CEdit*)GetDlgItem(IDC_EDIT1);
pMaxLen-SetLimitText(6);
GetDlgItemText(IDC_EDIT1,InWab.Name);
}
void C电话本Dlg::OnPhoto()
{
CEdit *pMaxLen=(CEdit*)GetDlgItem(IDC_EDIT2);
pMaxLen-SetLimitText(11);
GetDlgItemText(IDC_EDIT2,InWab.Photo);
}
void C电话本Dlg::OnAddress()
{
CEdit *pMaxLen=(CEdit*)GetDlgItem(IDC_EDIT3);
pMaxLen-SetLimitText(30);
GetDlgItemText(IDC_EDIT3,InWab.Address);
}
void C电话本Dlg::OnShow()
{
// TODO: 如果该控件是 RICHEDIT 控件,则它将不会
// 发送该通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
void C电话本Dlg::OnFill()
{
CString OutAll,OutTemp,Space,Enter;
Space=_T( );
Enter=_T(
);
listWabList::iterator ItWab;
for(ItWab=Wab.begin();ItWab!=Wab.end();ItWab )
{
OutWab=*ItWab;
OutTemp=OutWab.Name Space OutWab.Photo Space OutWab.Address;
OutAll=OutAll OutTemp Enter;
}
SetDlgItemText(IDC_EDIT4,OutAll);
}
void C电话本Dlg::OnInsert()
{
Wab.push_front(InWab);
C电话本Dlg::OnFill();
}
void C电话本Dlg::OnFind()
{
CString OutAll,OutTemp,Space,Enter;
Space=_T( );
Enter=_T(
);
listWabList::iterator ItWab;
for(ItWab=Wab.begin();ItWab!=Wab.end();ItWab )
{
if(ItWab-Name==InWab.Name)
{
OutTemp=ItWab-Name Space ItWab-Photo Space ItWab-Address;
OutAll=OutAll OutTemp Enter;
}
}
SetDlgItemText(IDC_EDIT4,OutAll);
}
void C电话本Dlg::OnDelete()
{
CString OutAll,OutTemp,Space,Enter;
Space=_T( );
Enter=_T(
);
listWabList::iterator ItWab;
for(ItWab=Wab.begin();ItWab!=Wab.end();ItWab )
{
if(ItWab-Name==InWab.Name)
{
OutTemp=ItWab-Name Space ItWab-Photo Space ItWab-Address;
OutAll=OutAll OutTemp Enter;
break;
}
}
SetDlgItemText(IDC_EDIT4,OutAll);
if(ItWab!=Wab.end()) Wab.erase(ItWab);
}
void C电话本Dlg::OnEdit()
{
CString OutAll,OutTemp,Space,Enter;
Space=_T( );
Enter=_T(
);
listWabList::iterator ItWab;
for(ItWab=Wab.begin();ItWab!=Wab.end();ItWab )
{
if(ItWab-Name==InWab.Name)
{
OutTemp=ItWab-Name Space ItWab-Photo Space ItWab-Address;
OutAll=OutAll OutTemp Enter;
break;
}
}
SetDlgItemText(IDC_EDIT4,OutAll);
if(ItWab!=Wab.end())
{
Wab.erase(ItWab);
Wab.push_front(InWab);
}
}
void C电话本Dlg::OnSave()
{
CString Tmp1,Tmp2,Tmp3;
ofstream OutFile(Wab.fsd,ios::out);
listWabList::iterator ItWab;
for(ItWab=Wab.begin();ItWab!=Wab.end();ItWab )
{
Tmp1=ItWab-Name;
Tmp2=ItWab-Photo;
Tmp3=ItWab-Address;
OutFile Tmp1 ' ' Tmp2 ' ' Tmp3 endl;
}
}
只是个用C语言编写的电话本程序 很有实用意义
#include u>void main(){float a=10,t=3,s;s=0.5*a*t*t;if(s>100)s=100;printf("%.0fs:%f",t,s);}
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。
#include<stdlib.h>
#define MAX 100
struct addr{
char name[30];
char street[40];
char city[20];
char state[3];
unsigned long int zip;
}add_list[MAX];
void init_list(void),enter(void);
void delete(void),list(void);
void load(void),save(void);
int menu_select(void),find_free(void);
int main(void)
{
char choice;
init_list();/*initialize the structure array*/
for(;;){
choice=menu_select();
switch(choice){
case 1:enter();
break;
case 2:delete();
break;
case 3:list();
break;
case 4:save();
break;
case 5:load();
break;
case 6:exit(0);
}
}
return 0;
}
/*Initialize the list*/
void init_list(void)
{
register int t;
for(t=0;t<MAX;++t)
add_list[t].name[0]='0';
}
/*Get a menu selection*/
int menu_select(void)
{
char s[80];
int c;
printf("1.Enter a name\n");
printf("2.Delete a name\n");
printf("3.List the file\n");
printf("4.Save the file\n");
printf("5.Load the file\n");
printf("6.Quit\n");
do{
printf("\nEnter your choice:");
gets(s);
c=atoi(s);
}while(c<0||c>6);
return c;
}
/*Input addresses into the list*/
void enter(void)
{
int slot;
char s[80];
slot=find_free();
if(slot==-1){
printf("\nList Full");
return;
}
printf("Enter name:");
gets(add_list[slot].name);
printf("Enter street:");
gets(add_list[slot].street);
printf("Enter city:");
gets(add_list[slot].city);
printf("Enter state:");
gets(add_list[slot].state);
printf("Enter zip:");
gets(s);
add_list[slot].zip=strtoul(s,'\0',10);
}
/*Find an unused structure*/
int find_free(void)
{
register int t;
for(t=0;add_list[t].name[0]&&t<MAX;++t);
if(t==MAX)
return -1;/*no slots free*/
return t;
}
/*Delete an address*/
void delete(void)
{
register int slot;
char s[80];
printf("enter record # :");
gets(s);
slot=atoi(s);
if(slot>=0&&slot<MAX)
add_list[slot].name[0]='\0';
}
/*Display the list on the screen*/
void list(void)
{
register int t;
for(t=0;t<MAX;++t){
if(add_list[t].name[0]){
printf("%s\n",add_list[t].name);
printf("%s\n",add_list[t].street);
printf("%s\n",add_list[t].city);
printf("%s\n",add_list[t].state);
printf("%s\n",add_list[t].zip);
}
}
printf("\n\n");
}
/*Save the list*/
void save(void)
{
FILE *fp;
register int i;
if((fp=fopen("maillist","wb"))==NULL)
printf("Cannot open file\n");
return;
for(i=0;i<MAX;i++)
if(*add_list[i].name)
if(fwrite(&add_list[i],sizeof(struct addr),1,fp)!=1)
printf("File write error\n");
fclose(fp);
}
/*Load the file*/
void load(void)
{
FILE *fp;
register int i;
if((fp=fopen("maillist","rb"))==NULL){
printf("Cannot open file\n");
return;
}
init_list();
for(i=0;i<MAX;i++)
if(fread(&add_list[i],sizeof(struct addr),1,fp)!=1){
if(feof(fp))break;
printf("File read error\n");
}
fclose(fp);
}
学生成绩管理系统:#include
<malloc.h>
#include
<stdio.h>
#include
<stdlib.h>
#define
LEN
sizeof(struct
scorenode)
#define
DEBUG
#include
<string.h>
struct
scorenode
{int
number;/*学号*/
char
name[10];/*姓名*/
float
yuwen;/*语文成绩*/
float
yingyu;/*英语成绩*/
float
shuxue;/*数学成绩
*/
struct
scorenode
*next;
};
typedef
struct
scorenode
score;
int
n,k;/*n,k为全局变量,本程序中的函数均可以使用它*/
/*==============================================================================================*/
score
*creat2311(void)
/*函数creat2311,功能:创建链表,此函数带回一个指向链表头的指针*/
{
score*head;
score
*p1,*p2,*p3,*max;
int
i,j;
float
fen;
char
t[10];
n=0;
p1=p2=p3=(score
*)malloc(LEN);head=p3;
/*开辟一个新单元*/
printf("请输入学生资料,输0退出!\n");
repeat1:
printf("请输入学生学号(学号应大于0):");/*输入学号,学号应大于0*/
scanf("%d",&p1->number);
while(p1->number<0)
{getchar();
printf("输入错误,请重新输入学生学号:");
scanf("%d",&p1->number);}
/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
if(p1->number==0)
goto
end;/*当输入的学号为0时,转到末尾,结束创建链表*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("学号重复,请重输!\n");
goto
repeat1;
/*当输入的学号已经存在,程序报错,返回前面重新输入*/
}
}
}
}
printf("请输入学生姓名:");
scanf("%s",&p1->name);/*输入学生姓名*/
printf("请输入语文成绩(0~100):");/*输入语文成绩,成绩应在0-100*/
scanf("%f",&p1->yuwen);
while(p1->yuwen<0||p1->yuwen>100)
{getchar();
printf("输入错误,请重新输入语文成绩");/*输入错误,重新输入语文成绩直到正确为止*/
scanf("%f",&p1->yuwen);}
printf("请输入英语成绩(0~100):");/*输入英语成绩,成绩应在0-100*/
scanf("%f",&p1->yingyu);
while(p1->yingyu<0||p1->yingyu>100)
{getchar();
printf("输入错误,请重新输入英语成绩");/*输入错误,重新输入英语成绩直到正确为止*/
scanf("%f",&p1->yingyu);}
printf("请输入数学成绩(0~100):");/*输入数学成绩,成绩应在0-100*/
scanf("%f",&p1->shuxue);
while(p1->shuxue<0||p1->shuxue>100)
{getchar();
printf("输入错误,请重新输入数学成绩");
scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/
head=NULL;
while(p1->number!=0)
{
n=n+1;
if(n==1)
head=p1;
elsep2->next=p1;
p2=p1;
p1=(score
*)malloc(LEN);
printf("请输入学生资料,输0退出!\n");
repeat2:printf("请输入学生学号(学号应大于0):");
scanf("%d",&p1->number);/*输入学号,学号应大于0*/
while(p1->number<0)
{getchar();
printf("输入错误,请重新输入学生学号:");
scanf("%d",&p1->number);}
/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
if(p1->number==0)
goto
end;/*当输入的学号为0时,转到末尾,结束创建链表*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("学号重复,请重输!\n");
goto
repeat2;
/*当输入的学号已经存在,程序报错,返回前面重新输入*/
}
}
}
}
printf("请输入学生姓名:");
scanf("%s",&p1->name);/*输入学生姓名*/
printf("请输入语文成绩(0~100):");
scanf("%f",&p1->yuwen);/*输入语文成绩,成绩应在0-100*/
while(p1->yuwen<0||p1->yuwen>100)
{getchar();
printf("输入错误,请重新输入语文成绩");
scanf("%f",&p1->yuwen);}/*输入错误,重新输入语文成绩直到正确为止*/
printf("请输入英语成绩(0~100):");
scanf("%f",&p1->yingyu);/*输入英语成绩,成绩应在0-100*/
while(p1->yingyu<0||p1->yingyu>100)
{getchar();
printf("输入错误,请重新输入英语成绩");
scanf("%f",&p1->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/
printf("请输入数学成绩(0~100):");
scanf("%f",&p1->shuxue);/*输入数学成绩,成绩应在0-100*/
while(p1->shuxue<0||p1->shuxue>100)
{getchar();
printf("输入错误,请重新输入数学成绩");
scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/
}end:
p1=head;
p3=p1;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;
if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交换前后结点中的姓名,使之与学号相匹配*/
fen=max->yuwen;
max->yuwen=p1->yuwen;
p1->yuwen=fen;
/*交换前后结点中的语文成绩,使之与学号相匹配*/
fen=max->yingyu;
max->yingyu=p1->yingyu;
p1->yingyu=fen;
/*交换前后结点中的英语成绩,使之与学号相匹配*/
fen=max->shuxue;
max->shuxue=p1->shuxue;
p1->shuxue=fen;
/*交换前后结点中的数学成绩,使之与学号相匹配*/
}}
max=head;p1=head;/*重新使max,p指向链表头*/
}
p2->next=NULL;/*链表结尾*/
printf("输入的学生数为:%d个!\n",n);
return(head);}
/*==============================================================================================*/
/*==============================================================================================*/
score
*load2311(score
*head)
/*函数load2311,功能:从文件读入学生记录*/
{
score
*p1,*p2;
int
m=0;
char
filepn[10];
FILE
*fp;
printf("请输入文件路径及文件名:");
scanf("%s",filepn);/*输入文件路径及名称*/
if((fp=fopen(filepn,"r+"))==NULL)
{
printf("不能打开文件!\n");
return
0;
}
fscanf(fp,"
考试成绩管理系统
\n");
fscanf(fp,"作者:周纯钢
班级:
信息023
学号:11
\n");
fscanf(fp,"-----------------------------------------\n");
fscanf(fp,"|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");
fscanf(fp,"-----------------------------------------\n");/*读入表格域*/
printf("
考试成绩管理系统
\n");
printf("
作者:周纯钢
班级:
信息023
学号:11
\n");
printf("-----------------------------------------\n");
printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");
printf("-----------------------------------------\n");/*打印表格域*/
m=m+1;
if(m==1)
{
p1=(score
*)malloc(LEN);
/*开辟一个新单元*/
fscanf(fp,"%d%s%f%f%f",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);
printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
/*文件读入与显示*/
head=NULL;
do
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(score
*)malloc(LEN);
/*开辟一个新单元*/
fscanf(fp,"%d%s%f%f%f\n",&p1->number,p1->name,&p1->yuwen,&p1->yingyu,&p1->shuxue);
printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
/*文件读入与显示*/
}while(!feof(fp));
p2->next=p1;
p1->next=NULL;
n=n+1;
}printf("-----------------------------------------\n");/*表格下线*/
fclose(fp);/*结束读入,关闭文件*/
return
(head);
}/*==============================================================================================*/
/*==============================================================================================*/
score
*add2311(score
*head,score
*stu)
/*函数add2311,功能:追加学生资料,并且将所有学生资料按学号排序*/
{
score
*p0,*p1,*p2,*p3,*max;
int
i,j;
float
fen;
char
t[10];p3=stu=(score
*)malloc(LEN);/*开辟一个新单元*/
printf("\n输入要增加的学生的资料!");
repeat4:
printf("请输入学生学号(学号应大于0):");
scanf("%d",&stu->number);
/*输入学号,学号应大于0*/
while(stu->number<0)
{getchar();
printf("输入错误,请重新输入学生学号:");
scanf("%d",&stu->number);}/*输入错误,重新输入学号*/
/******************************************************/
if(stu->number==0)
goto
end2;/*当输入的学号为0时,转到末尾,结束追加*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(stu->number!=p3->number)
p3=p3->next;
else
{printf("学号重复,请重输!\n");
goto
repeat4;
/*当输入的学号已经存在,程序报错,返回前面重新输入*/
}
}
}
}
/******************************************************/
printf("输入学生姓名:");
scanf("%s",stu->name);
/*输入学生姓名*/
printf("请输入语文成绩(0~100):");
scanf("%f",&stu->yuwen);
/*输入语文成绩,成绩应在0-100*/
while(stu->yuwen<0||stu->yuwen>100)
{getchar();
printf("输入错误,请重新输入语文成绩");
scanf("%f",&stu->yuwen);}
/*输入错误,重新输入语文成绩直到正确为止*/
printf("请输入英语成绩(0~100):");
scanf("%f",&stu->yingyu);/*输入英语成绩,成绩应在0-100*/
while(stu->yingyu<0||stu->yingyu>100)
{getchar();
printf("输入错误,请重新输入英语成绩");
scanf("%f",&stu->yingyu);}/*输入错误,重新输入英语成绩直到正确为止*/
printf("请输入数学成绩(0~100):");
scanf("%f",&stu->shuxue);/*输入数学成绩,成绩应在0-100*/
while(stu->shuxue<0||stu->shuxue>100)
{getchar();
printf("输入错误,请重新输入数学成绩");
scanf("%f",&stu->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0->next=NULL;}/*当原来链表为空时,从首结点开始存放资料*/
else/*原来链表不为空*/
{
if(p1->next==NULL)/*找到原来链表的末尾*/
{
p1->next=p0;
p0->next=NULL;/*将它与新开单元相连接*/
}
else
{
while(p1->next!=NULL)/*还没找到末尾,继续找*/
{
p2=p1;p1=p1->next;
}
p1->next=p0;
p0->next=NULL;
}}
n=n+1;}printf("-----------------------------------------\n");/*表格下线*/
fclose(fp);/*结束读入,关闭文件*/
return
(head);
}/*==============================================================================================*/
/*==============================================================================================*/
score
*add2311(score
*head,score
*stu)
/*函数add2311,功能:追加学生资料,并且将所有学生资料按学号排序*/
{
score
*p0,*p1,*p2,*p3,*max;
int
i,j;
float
fen;
char
t[10];p3=stu=(score
*)malloc(LEN);/*开辟一个新单元*/
printf("\n输入要增加的学生的资料!");
repeat4:
printf("请输入学生学号(学号应大于0):");
scanf("%d",&stu->number);
/*输入学号,学号应大于0*/
while(stu->number<0)
{getchar();
printf("输入错误,请重新输入学生学号:");
scanf("%d",&stu->number);}/*输入错误,重新输入学号*/
/******************************************************/
if(stu->number==0)
goto
end2;/*当输入的学号为0时,转到末尾,结束追加*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(stu->number!=p3->number)
p3=p3->next;
else
{printf("学号重复,请重输!\n");
goto
repeat4;
/*当输入的学号已经存在,程序报错,返回前面重新输入*/
}
}
}
}
#include<stdio.h>
#include<stdlib.h>
#define MAX 100
struct addr{
char name[30];
char street[40];
char city[20];
char state[3];
unsigned long int zip;
}add_list[MAX];
void init_list(void),enter(void);
void delete(void),list(void);
void load(void),save(void);
int menu_select(void),find_free(void);
int main(void)
{
char choice;
init_list();/*initialize the structure array*/
for(;;){
choice=menu_select();
switch(choice){
case 1:enter();
break;
case 2:delete();
break;
case 3:list();
break;
case 4:save();
break;
case 5:load();
break;
case 6:exit(0);
}
}
return 0;
}
/*Initialize the list*/
void init_list(void)
{
register int t;
for(t=0;t<MAX;++t)
add_list[t].name[0]='0';
}
/*Get a menu selection*/
int menu_select(void)
{
char s[80];
int c;
printf("1.Enter a name\n");
printf("2.Delete a name\n");
printf("3.List the file\n");
printf("4.Save the file\n");
printf("5.Load the file\n");
printf("6.Quit\n");
do{
printf("\nEnter your choice:");
gets(s);
c=atoi(s);
}while(c<0||c>6);
return c;
}
/*Input addresses into the list*/
void enter(void)
{
int slot;
char s[80];
slot=find_free();
if(slot==-1){
printf("\nList Full");
return;
}
printf("Enter name:");
gets(add_list[slot].name);
printf("Enter street:");
gets(add_list[slot].street);
printf("Enter city:");
gets(add_list[slot].city);
printf("Enter state:");
gets(add_list[slot].state);
printf("Enter zip:");
gets(s);
add_list[slot].zip=strtoul(s,'\0',10);
}
/*Find an unused structure*/
int find_free(void)
{
register int t;
for(t=0;add_list[t].name[0]&&t<MAX;++t);
if(t==MAX)
return -1;/*no slots free*/
return t;
}
/*Delete an address*/
void delete(void)
{
register int slot;
char s[80];
printf("enter record # :");
gets(s);
slot=atoi(s);
if(slot>=0&&slot<MAX)
add_list[slot].name[0]='\0';
}
/*Display the list on the screen*/
void list(void)
{
register int t;
for(t=0;t<MAX;++t){
if(add_list[t].name[0]){
printf("%s\n",add_list[t].name);
printf("%s\n",add_list[t].street);
printf("%s\n",add_list[t].city);
printf("%s\n",add_list[t].state);
printf("%s\n",add_list[t].zip);
}
}
printf("\n\n");
}
/*Save the list*/
void save(void)
{
FILE *fp;
register int i;
if((fp=fopen("maillist","wb"))==NULL)
printf("Cannot open file\n");
return;
for(i=0;i<MAX;i++)
if(*add_list[i].name)
if(fwrite(&add_list[i],sizeof(struct addr),1,fp)!=1)
printf("File write error\n");
fclose(fp);
}
/*Load the file*/
void load(void)
{
FILE *fp;
register int i;
if((fp=fopen("maillist","rb"))==NULL){
printf("Cannot open file\n");
return;
}
init_list();
for(i=0;i<MAX;i++)
if(fread(&add_list[i],sizeof(struct addr),1,fp)!=1){
if(feof(fp))break;
printf("File read error\n");
}
fclose(fp);
}
我是运行过再拿上来的,你输入了什么值,然后出了什么错?
=======================================================
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
inline
int
get_value(int
*matrix,
int
n,
int
i,
int
j)
{
return
matrix[i
*
n
+
j];
}
inline
void
set_value(int
*matrix,
int
n,
int
i,
int
j,
int
value)
{
matrix[i
*
n
+
j]
=
value;
}
inline
int
*
get(int
*matrix,
int
n,
int
i,
int
j)
{
return
matrix
+
i
*
n
+
j;
}
inline
int
prev(int
m,
int
n)
{
return
m
>
0
?
m
-
1
:
n
-
1;
}
inline
int
next(int
m,
int
n)
{
return
m
<
n
-
1
?
m
+
1
:
0;
}
inline
void
reverse(int
*matrix,
int
n,
int
i,
int
j,
int
t)
{
set_value(matrix,
n,
i,
j,
t
-
get_value(matrix,
n,
i,
j));
}
inline
void
swap(int
*a,
int
*b)
{
int
t
=
*a;
*a
=
*b;
*b
=
t;
}
int
*
intialize_matrix(int
n)
{
int
len
=
sizeof(int)
*
(n
*
n);
int
*matrix
=
(int
*)
malloc(len);
memset(matrix,
0,
len);
return
matrix;
}
int
int_length(int
n)
{
int
len
=
0;
while
(n
>
0)
{
n
/=
10;
++len;
}
return
len;
}
void
generate_odd_matrix(int
*matrix,
int
n,
int
s)
{
int
i
=
0,
j
=
n
>>
1,
end
=
s
+
n
*
n;
set_value(matrix,
n,
i,
j,
s);
while
(++s
!=
end)
{
if
(get_value(matrix,
n,
prev(i,
n),
next(j,
n))
==
0)
{
i
=
prev(i,
n);
j
=
next(j,
n);
}
else
i
=
next(i,
n);
set_value(matrix,
n,
i,
j,
s);
}
}
void
sequential_fill(int
*matrix,
int
n,
int
s)
{
int
end
=
n
*
n;
while
(s
<=
end)
{
*matrix++
=
s++;
}
}
void
generate_4k_matrix(int
*matrix,
int
n,
int
s)
{
sequential_fill(matrix,
n,
s);
int
i,
j,
m,
t
=
n
*
n
+
1;
for
(i
=
0;
i
<
n;
i
+=
4)
{
for
(j
=
0;
j
<
n;
j
+=
4)
{
for
(m
=
0;
m
<
4;
++m)
{
reverse(matrix,
n,
i
+
m,
j
+
m,
t);
reverse(matrix,
n,
i
+
m,
j
+
3
-
m,
t);
}
}
}
}
void
matrix_fill(int
*matrix,
int
n,
int
*small,
int
m,
int
i,
int
j,
int
offset)
{
int
a,
b;
for
(a
=
0;
a
!=
m;
++a)
{
for
(b
=
0;
b
!=
m;
++b)
{
set_value(matrix,
n,
i
+
a,
j
+
b,
get_value(small,
m,
a,
b)
+
offset);
}
}
}
void
print_matrix(int
*matrix,
int
n);
void
generate_4k2_matrix(int
*matrix,
int
n,
int
s)
{
int
m
=
n
>>
1,
m_sqr
=
m
*
m,
k
=
n
/
4,
i,
j,
p;
int
*small_matrix
=
intialize_matrix(m);
generate_odd_matrix(small_matrix,
m,
s);
matrix_fill(matrix,
n,
small_matrix,
m,
0,
0,
0);
matrix_fill(matrix,
n,
small_matrix,
m,
0,
m,
m_sqr
*
2);
matrix_fill(matrix,
n,
small_matrix,
m,
m,
0,
m_sqr
*
3);
matrix_fill(matrix,
n,
small_matrix,
m,
m,
m,
m_sqr);
p
=
m
>>
1;
for
(i
=
0;
i
<
p;
++i)
{
for
(j
=
0;
j
<
k;
++j)
{
swap(get(matrix,
n,
i,
j),
get(matrix,
n,
i
+
m,
j));
}
}
for
(j
=
p;
j
<
p
+
k;
++j)
{
swap(get(matrix,
n,
i,
j),
get(matrix,
n,
i
+
m,
j));
}
for
(++i
;
i
<
m;
++i)
{
for
(j
=
0;
j
<
k;
++j)
{
swap(get(matrix,
n,
i,
j),
get(matrix,
n,
i
+
m,
j));
}
}
for
(i
=
0;
i
<
m;
++i)
{
for
(j
=
0;
j
<
k
-
1;
++j)
{
swap(get(matrix,
n,
i,
m
+
p
-
j),
get(matrix,
n,
i
+
m,
m
+
p
-
j));
}
}
free(small_matrix);
}
void
print_matrix(int
*matrix,
int
n)
{
int
i,
j;
char
*fof
=
"%%%dd
",
format[10];
sprintf(format,
fof,
int_length(n
*
n));
for
(i
=
0;
i
!=
n;
++i)
{
for
(j
=
0;
j
!=
n;
++j)
{
printf(format,
get_value(matrix,
n,
i,
j));
}
printf("\n");
}
printf("\n");
}
int
main()
{
int
n;
printf("Input
the
dimension
m(n
>
3):
\n");
scanf("%d",
&n);
if
(n
<
3)
{
printf("n
must
be
greater
than
3\n");
return
0;
}
int
*matrix
=
intialize_matrix(n);
if
(n
%
2
!=
0)
{
generate_odd_matrix(matrix,
n,
1);
}
else
if
(n
%
4
==
0)
{
generate_4k_matrix(matrix,
n,
1);
}
else
{
generate_4k2_matrix(matrix,
n,
1);
}
print_matrix(matrix,
n);
free(matrix);
return
0;
}
#define后面的FORMAT
来代表"%d\n%s\n%f\n........"
如果在程序中出现FORMAT
就会被替换成"%d\n%s\n%f\n........“
,给你举个简单的例子.
#define
N
10
就相当于
定义一个变量N=10
,程序中出现的N
都会给替换成10.
希望对你有所帮助
!
C语言程序设计例子
参考代码:
C语言循环结构程序设计题
(1)用while语句实现 include<stdio.h> void main(){ int m,n;printf("请输入两个正整数:");scanf("%d%d",&m,&n);while(m!=n){ if(m>n)m=m-n;else n=n-m;printf("m=%d n=%d\\n",m,n); \\\\输出m,n在运算构成中的变化 } printf("最大公约数为:%d\\n",m);} (2)用do...
结构化程序设计:解锁软件开发的秘密武器!
任何程序都离不开它们哦 128202 三大神器助你一臂之力描述处理过程 没问题 图形 表格和语言 三大神器助你一臂之力 程序流程图 N S图 PAD图 一目了然 判定表 条理清晰 过程设计语言 PDL 让代码说话 128683 GOTO语句GOTO语句曾经被视为禁忌 但现在
用C++语言设计一个简单计算器。用户输入四则运算表达式,程序输出正确...
已经过测试,完全满足你的要求哈。include "iostream"include "string"using namespace std;void check(char *input, double &x, double &y, int &op, char * &err);double chage(char *ch);int main(){ double x,y;int op;char input[40],*err;double result;gets(input);check(input,x...
C语言程序实验设计
年龄分段:main(){ int x;scanf("%d", &x);if(x <= 0){printf("input error\\n"); return;} switch(x){ case 1:case 2:case 3:case 4:case 5:printf("学龄前幼儿\\n");break;case 6:case 7:case 8:case 9:case 10:case 11:printf("儿童\\n");break;case 12:case 13:case...
JAVA语言程序设计练习题
2.4、静态变量也叫类变量,这种变量前加了static修饰符。可以直接用类名调用,也可以用对象调用,而且所有对象的同一个类变量 都是共享同一块内存空间。实例变量也叫对象变量,这种变量没有加static修饰符。只能通过对象调用, 而且所有对象的同一个实例变量是共享不同的内存空间的。2.5、2.6、封装是...
c语言设计编写程序
include <stdio.h> include<math.h> int main(){ float a=0.0,b=0.0,c=0.0;float X1=0.0,X2=0.0,S;printf("Enter a,b,c:");if((scanf("%f,%f,%f",&a,&b,&c))==2){ X1=-a\/b;printf("X=%f\\n",X1);} else { S=b*b-4*a*c;if(S>=0){ X1=((-b)+...
求用C语言编写一个简单的学生信息管理程序和课程设计报告
学生成绩管理系统 功能:用c语言编写一个简单的学生信... 13 2013-06-04 C语言编写设计一个简单的学生成绩管理程序 急求大神帮忙! 2 2012-01-22 如何用C语言编写学生信息管理系统?要求如下 课程设计内容及要... 2007-07-25 C语言课程设计"学生信息管理系统设计 "怎么做? 1 2013-09-10 求一c语言...
用C语言编写AT89C51单片机程序,设计一个智能数字钟。
include<reg52.h> define uint unsigned int define uchar unsigned char sbit QB1=P1^0;sbit QB2=P1^1;\/\/数码管段选 sbit QB3=P1^2;sbit QB4=P1^3;sbit QB5=P1^4;sbit QB6=P1^5;sbit fm=P1^6; \/\/蜂鸣器 sbit s1=P2^4; \/\/s5按键,切换显示 sbit s2=P2^3; \/\/s2按键,设置调...
编写VB程序语言设计
Private Type dbrec Studno As String * 6 Studname As String * 8 English As Integer Math As Integer Computer As Integer End Type Private Sub Command1_Click()Dim myrec As dbrec h = FreeFile Open "c:\\Score1.dat" For Random As h Len = Len(myrec)i = 1 D...
衡平活血: #include#include#define MAX 100struct addr{ char name[30]; char street[40]; char city[20]; char state[3]; unsigned long int zip;}add_list...
于洪区19347699173: c语言程序设计实例?
衡平活血: #include<stdio.h> void main() { int i,j; for(i=1;i<=5;i++) { for(j=1;j<=i;j++) { printf("*"); } printf("\n"); } }
于洪区19347699173: c程序课程设计实例请高手指点下 谢谢了1.编程,用0~9之间不同的三个数构成一个三位数,统计共有多少种这样的三位数.2.规定输入的字符串中,只能包含... - ?
衡平活血:[答案] 第一题: #include using namespace std; void main() { int i,j,k,count=0; for( i=1; i
于洪区19347699173: C语言编程基本案例 ?
衡平活血: 刚开始学习时,存在很多疑问,例如如何使用指针,如何匹配结构和指针,例如功能参数的要求,如何实时更新IO端口数据如果您重新学习C语言,则必须学习很长时间才...
于洪区19347699173: C语言程序设计实例 - ?
衡平活血: 题目:时间函数举例4,一个猜数游戏,判断一个人反应快慢. 1.程序分析: 2.程序源代码:#include "time.h"#include "stdlib.h"#include "stdio.h" main() { char c; clock_t start,end; time_t a,b; double var; int i,guess; srand(time(NULL)); ...
于洪区19347699173: C语言程序设计的例子 - ?
衡平活血: 冒泡法排序 (由小到大) int a[N+1]; for(i=1;i<=N;i++) scanf("%d",&a); for(j=1;j<N;j++) for(i=1;i<=N-j;i++) if(a>a[i+1]) {t=a;a=a[i+1];a[i+1]=t;} for(i=1;i<=N;i++) 判断素数 int isPrime(int n) {int i; for(i=2;i<n/2;i++) if(n%i==0) return 0; return 1; } 求m和...
于洪区19347699173: C语言编程实例 - ?
衡平活血: 首先main中对x进行赋值,是12345678这个无符号长整形数,然后传到part()函数中,结构体那部分不用考虑,其它地方也没有对num进行更改,不会对内容有影响,所以输出结果为12345678; 然后p=&n把n的地址赋给指针p,n.w=num把...
于洪区19347699173: c语言程序设计范例 - ?
衡平活血: #include<stdio.h> void main() { int a[4][4]; int i,j; for(i=0;i<4;i++) { for(j=0;j<4;j++) { scanf("%d",&a[i][j]); } }for(i=0;i<4;i++) { for(j=0;j<4;j++) { int temp; temp=a[i][j]; a[i][j]=a[j][i]; a[j][i]=temp; } }for(i=0;i<4;i++) { for(j=0;j<4;j++) { printf("%d",a[i][j]); } printf("\n"); } }
于洪区19347699173: C语言编程简单实例 - ?
衡平活血: 是条件,不可以少的,for ( 表达式1; 表达式2; 表达式3 ) 一条语句/复合语句 无论 for 循环到底会循环多少次,表达式1 都只会被运算一次——只有当 for 循环第一次执行时才会运算表达式1.表达式2 用于控制是否继续进行循环.如果表达式2 为真,则执行“一条语句/复合语句”,反之则退出循环.出于表达上的方便,我们把循环结构中的“一条语句/复合语句”称为循环体.在表达式2 成立的情况下,并且在循环体执行完毕后,表达式3 才会被运算.表达式3 运算完毕后,再次运算表达式2,若表达式2 为真,则再执行一次循环体,然后再运算表达式3,接着再测试表达式2 的真假性……
于洪区19347699173: C语言编程实例?
衡平活血: 表示用FORMAT来代表"%d\n%s\n%f\n........“ 也就是说在程序中用到FORMAT,其实就是用了"%d\n%s\n%f\n........“