请高手帮我把cout语句转换成c语言中的printf语句
for(j=1;j<=5;j++)cout<<*(L.elem+j-1)<<′′;cout<<endl;...
for(j=1;j<=5;j++)
cout<<*(L.elem+j-1)<<′′;
cout<<endl; 展开
cout<<*(L.elem+j-1)<<′′;
cout<<endl; 展开
3个回答
展开全部
这个没什么难度:-D,代码如下:
#include<iostream>
using namespace std;
#define NULL 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int Elemtype;//定义数据元素类型
typedef struct Cnode
{
Elemtype data;
struct Cnode *next;
}CNode;
CNode *joseph;//定义一个全局变量
Status Create_clist(CNode *clist,int n)
{
CNode *p,*q;
int i;
clist=NULL;
for(i=n;i>=1;i--)
{
p=(CNode *)malloc(sizeof(CNode));
if(p==NULL)
return OVERFLOW;//存储分配失败
p->data=i;
p->next=clist;
clist=p;
if(i==n)
q=p;//用q指向链表的最后一个结点
}
q->next=clist;//把链表的最后一个结点的链域指向链表的第一个结点,构成循环链表
joseph=clist;//把创建好的循环链表头指针赋给全局变量
return OK;
}///////////////////////////end
Status Joseph(CNode *clist,int m,int n,int k)
{
int i;
CNode *p,*q;
if(m>n)
return ERROR;//起始位置
if(!Create_clist(clist,n))
return ERROR;//循环链表创建失败
p=joseph;//*p指向创建号的循环链表
for(i=1;i<m;i++)
p=p->next;//*p指向m位置的结点
while(p)
{
for(i=1;i<k-1;i++)
p=p->next;//找出第k-1个结点
q=p->next;
cout<<q->data;//输出应出列的结点
if(p->next==p)
p=NULL;//删除最后一个结点
else
{
p->next=q->next;
p=p->next;
free(q);
}
}//while
clist=NULL;
}//end
void main()
{
int m,n,k,i;
CNode *clist;
clist=NULL;//初始化clist
cout<<"\n请输入围坐在圆桌周围的人数n:";
cin>>n;
cout<<"\n请输入第一次开始报数人的位置m:";
cin>>m;
cout<<"\n你希望报数到第几个数的人出列?";
cin>>k;
Create_clist(clist,n);//创建一个有n个结点的循环链表clist
cout<<"\n出列的顺序如下:\n";
Joseph(clist,m,n,k);
cout<<"\n以下是数组算法输出结果:\n";
//数组实现部分,其实更简单O(∩_∩)O
int nCountOff=0,nLeave=0,*nArr=new int[n];
for(i=0;i<n;i++) nArr[i]=1;//初始化动态数组nArr为1,表示没有人出列。0表示出列
for(i=m-1;nLeave<n;i++)
{
i%=n;
if(nArr[i]) nCountOff++;//没出列的人报数
if(nCountOff==k)
{
nCountOff=0;
nArr[i]=0;//报数计数器能被k整除则出列
nLeave++;
cout<<i+1<<'\t';
}
}
cout<<endl;
}//main
方便对比,没有删除你原来的算法。
C++在语法上基本与C相同,只是在思想和功能上对C进行了扩充,多了一些概念和关键字。最主要的不同主要在于:
1.C++是面向对象的,有类的概念,包括成员函数、成员变量、继承等。而C是面向过程的,基本单位是函数。
2.C++支持重载和多态。即允许多个函数可以有相同的函数名,而函数实现可以完全不同
3.C++对于动态数组、指针操作上有new操作符,比C方便很多。
想要具体点的,请熟读课本吧:-D
#include<iostream>
using namespace std;
#define NULL 0
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int Elemtype;//定义数据元素类型
typedef struct Cnode
{
Elemtype data;
struct Cnode *next;
}CNode;
CNode *joseph;//定义一个全局变量
Status Create_clist(CNode *clist,int n)
{
CNode *p,*q;
int i;
clist=NULL;
for(i=n;i>=1;i--)
{
p=(CNode *)malloc(sizeof(CNode));
if(p==NULL)
return OVERFLOW;//存储分配失败
p->data=i;
p->next=clist;
clist=p;
if(i==n)
q=p;//用q指向链表的最后一个结点
}
q->next=clist;//把链表的最后一个结点的链域指向链表的第一个结点,构成循环链表
joseph=clist;//把创建好的循环链表头指针赋给全局变量
return OK;
}///////////////////////////end
Status Joseph(CNode *clist,int m,int n,int k)
{
int i;
CNode *p,*q;
if(m>n)
return ERROR;//起始位置
if(!Create_clist(clist,n))
return ERROR;//循环链表创建失败
p=joseph;//*p指向创建号的循环链表
for(i=1;i<m;i++)
p=p->next;//*p指向m位置的结点
while(p)
{
for(i=1;i<k-1;i++)
p=p->next;//找出第k-1个结点
q=p->next;
cout<<q->data;//输出应出列的结点
if(p->next==p)
p=NULL;//删除最后一个结点
else
{
p->next=q->next;
p=p->next;
free(q);
}
}//while
clist=NULL;
}//end
void main()
{
int m,n,k,i;
CNode *clist;
clist=NULL;//初始化clist
cout<<"\n请输入围坐在圆桌周围的人数n:";
cin>>n;
cout<<"\n请输入第一次开始报数人的位置m:";
cin>>m;
cout<<"\n你希望报数到第几个数的人出列?";
cin>>k;
Create_clist(clist,n);//创建一个有n个结点的循环链表clist
cout<<"\n出列的顺序如下:\n";
Joseph(clist,m,n,k);
cout<<"\n以下是数组算法输出结果:\n";
//数组实现部分,其实更简单O(∩_∩)O
int nCountOff=0,nLeave=0,*nArr=new int[n];
for(i=0;i<n;i++) nArr[i]=1;//初始化动态数组nArr为1,表示没有人出列。0表示出列
for(i=m-1;nLeave<n;i++)
{
i%=n;
if(nArr[i]) nCountOff++;//没出列的人报数
if(nCountOff==k)
{
nCountOff=0;
nArr[i]=0;//报数计数器能被k整除则出列
nLeave++;
cout<<i+1<<'\t';
}
}
cout<<endl;
}//main
方便对比,没有删除你原来的算法。
C++在语法上基本与C相同,只是在思想和功能上对C进行了扩充,多了一些概念和关键字。最主要的不同主要在于:
1.C++是面向对象的,有类的概念,包括成员函数、成员变量、继承等。而C是面向过程的,基本单位是函数。
2.C++支持重载和多态。即允许多个函数可以有相同的函数名,而函数实现可以完全不同
3.C++对于动态数组、指针操作上有new操作符,比C方便很多。
想要具体点的,请熟读课本吧:-D
展开全部
for(j=1;j<=5;j++)
printf("%d\n", *(L.elem+j-1)); //假设得到的是int类型
printf("%d\n", *(L.elem+j-1)); //假设得到的是int类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个语法错误的语句我不知道怎么翻译
追问
为什么说是语法错误呢?
追答
cout<<*(L.elem+j-1)<<′′; 最后分号前的是2个单引号还是一个双引号,如果是单引号,输出空字符无意义,如果是双引号就是语法错误,找不到对应的双引号
第二,不知道 *(L.elem+j-1) 的类型,C++会按对应的类型正确输出,在C语言里面,谁知道这是个字符,字符串,整数,单精度浮点数,双数度浮点数,如果弄不清楚类型,在printf()里面用什么控制符输出,%c,%s,%d,%f,%lf 。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询