#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>族弯
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define SERVPORT 3333
#define MAXDATASIZE 100 /*每次最大数据传输量 */
int main(int argc, char *argv[])
{
int sockfd, recvbytes
char buf[MAXDATASIZE]
struct hostent *host
struct sockaddr_in serv_addr
if (argc <2)
{ fprintf(stderr,"Please enter the server's hostname!\
")exit(1) }
if ((host=gethostbyname(argv[1]))==NULL)
{ perror("gethostbyname出错!")exit(1)}
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{ perror("socket创建出错!")exit(1) }
//初始化客户端
serv_addr.sin_family=AF_INET
serv_addr.sin_port=htons(SERVPORT)
serv_addr.sin_addr = *((struct in_addr *)host->h_addr)
bzero(&(serv_addr.sin_zero),8)
//connect
if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr)) == -1)
{ perror("connect error!")exit(1)}
//recv
if ((recvbytes=recv(sockfd, buf, MAXDATASIZE, 0)) ==-1)
{ perror("recv出错!")exit(1)}
buf[recvbytes] = '\\0'
printf("Received: %s",buf)
close(sockfd)
return 0
}
客户端#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define SERVPORT 3333 /*服务器监听端口号 */
#define BACKLOG 10 /* 最大同时连接请求数 */
int main()
{
int sockfd,client_fd,sin_size/*sock_fd:监听socket;client_fd:数据传输socket */
struct sockaddr_in my_addr/* 本机地址信息 */
struct sockaddr_in remote_addr/* 客户端地址信息 */
//创建一磨雀个套接字,PF_INET,流式,
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{ perror("socket")exit(1) }
//初始化服务端
my_addr.sin_family=AF_INET
my_addr.sin_port=htons(SERVPORT)
my_addr.sin_addr.s_addr = INADDR_ANY
bzero(&(my_addr.sin_zero),8)
//将套接字地址与所创建的套接字号联系起来
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1)
{ perror("bind") exit(1) }
//愿意接收连接
if (listen(sockfd, BACKLOG) == -1)
{ perror("listen") exit(1) }
while(1)
{
sin_size = sizeof(struct sockaddr_in)
if ((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr, &sin_size)) == -1)
{ perror("accept") continue}
printf("received a connection from %s\
", inet_ntoa(remote_addr.sin_addr))
if (!fork()) { /* 子进程代码段 */
if (send(client_fd, "Hello, you are connected!\
", 26, 0) == -1)
perror("send")close(client_fd)exit(0)}
close(client_fd) }
return 0
}
#include <stdio.h>void main()
{
int a[4],i,j,m
char t
printf(”*********************************\n1.红烧肉5.0元2.炸鸡翅3.0元\n3.炒芹菜2.0元4.五香蛋1.0元\n5.退出\n********************************\n\n”)
printf(“请输入您点的菜\n”)
for(i=0i<=3i++)
{scanf(“%d”,&a[i])j=i
if(i<=2)
{printf(“是否继续点菜\n回复Y OR N\n”)
scanf(“%c”,&t)
if(t==Y)
continue
else if(t==N){j=ibreak}
else {printf(“error,自动结算\n”)j=ibreak}}
}
for(i=0,m=0i<=ji++)
m=m+a[i]
printf(“总金额悄辩雹%d\n”,m)
}
/启帆/手机编灶棚写,错误难免,问题不大,多多包含
输出的格式对齐你自己可以调一下,程序本身没有任何问题。程序是在Visual Studio 2008上编译运行的。
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
using namespace std
char menu[6][8][16]={
{"菜单","开胃菜","主菜","主食","饭后甜点","饮料"},
{"开 胃 菜","烧椒皮蛋","蓝莓山药墩","竹笋干炒肉","干煎野山菌","小炒黄牛肉"},
{"主菜","菠萝古老肉","水煮鱼","茄汁基围虾","盐焗手撕鸡","红烧黄花鱼","蚝油生菜","金牌蒜香骨"},
{"主食","三鲜水饺","手擀面","米饭"},
{"饭后甜点","草莓奶昔","冰激凌","蛋铅和源糕"},
{"饮料","雪碧","蔬菜汁","啤酒","果汁"},
}
double price[6][8]={
{0},
{0,8,10,8,13,12},
{0,15,20,35,30,28,8,18},
{0,15,12,2},
{0,10,16,10},
{0,5,8,8,8}
}
vector<int>menuvec //保存选了那些菜单项
vector<int>foodvec //保存选了那些食物
vector<int>countvec//保存每个食物都选了几份
bool dinner()
{
for(int i = 0i <6i++)
{
if (i == 0)
{
cout <<menu[0][i]
cout<<":"<<endl
}
else
{
cout <<" " <<i <<"."
cout <<menu[0][i] <<endl
}
}
cout <<" "<<"0点餐结束"<<endl
int imenu = 0//选择菜单项
cout <<"请选择 "
cin >>imenu
if (imenu == 0)
return false
cout <<" "<<imenu <<"." <<menu[0][imenu] <<endl
for(int i = 1i <8 i ++)
{
if (strcmp(menu[imenu][i],"") == 0)//如果没有此项食物则退出输出
break
cout <<" "<<棚扰 i <<"." <<menu[imenu][i] <<"" <<price[imenu][i] <<endl
}
cout <<" 0 返回" <<endl
int ifood = 0//选择要点的食物
int icount = 0//选择要点的食物的份数
cout <<"请选择"
cin >>ifood
if (ifood == 0)
return true
cout <<"你点的是" <<menu[imenu][ifood] <<","<<"请问你要几分:"
cin >>icount
menuvec.push_back(imenu)
foodvec.push_back(ifood)
countvec.push_back(icount)
return true
}
int main()
{
while(dinner())
{
system("cls")
}
system("cls")
cout <<"你点的菜单是:" <<endl
cout <<" 菜名 "<<"单价 "<<" 数量 " <<" 价格 "<<endl
vector<int>::iterator menuIter = menuvec.begin()
vector<int>槐态::iterator foodIter = foodvec.begin()
vector<int>::iterator countIter = countvec.begin()
double pricesum = 0//计算总价钱
for(menuIter != menuvec.end(),foodIter!= foodvec.end(),countIter != countvec.end()menuIter++,foodIter++,countIter++)
{
int menutemp = *menuIter
cout <<menu[0][menutemp]
cout <<":"
int foodtemp = *foodIter
cout <<menu[menutemp][foodtemp]
cout <<" " <<price[menutemp][foodtemp]
int counttemp = *countIter
cout <<" "<<counttemp
cout <<" "<<counttemp*price[menutemp][foodtemp] <<endl
pricesum += counttemp*price[menutemp][foodtemp]
}
cout <<"-----------------------------------------------------------------------------"<<endl
cout <<" "<<"总价是 "<<pricesum <<endl
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)