
答案是10
int x = 011; 以0开头表示8进制, x的值为9
printf("%d\n",++x); ++x先执行+1 *** 作,x值为10, 然后执行printf() *** 作,输出x的当前十进制值,为10
%d表示10进制
看代码样子是C,但C能用一个变量来作为大小声明数组吗?像int n;double x[n]这样[]中用一个变量n都是非法的,而且n还没有赋值!我不知道你用的是什么编译器竟能使代码运行起来,这应该连编译都过不了的。
这个问题好说,是你用了\t制表符的原因。\t的大小(多少个字符)是事先设置好的,实际输出字符数超过极限了就“挤”到下一段了,你应该发现变化格式的那一行从第二个字段起都多了一个字符!
这个代码没有“多组”循环,主函数执行完了就结束了。
供参考。
#include<stdioh> //头文件
main() //主函数
{
int i=-1; //定义变量i为整型,并初始化
printf("\ni:dec=%d,oct=%o,hex=%x\n",i,i,i); //输出i 的值,%d是以十进制数输出的值
//%o是以八进制数输出,%x是以十六进
//制数输出
}
1顺序表基本 *** 作
#include<stdioh>
#include<malloch>
#define MaxSize 50
typedef char ElemType;
typedef struct
{ ElemType elem[MaxSize];
int length;
}SqList;
void InitList(SqList &L)
{
L=(SqList )malloc(sizeof(SqList));
L->length=0;
}
void DestroyList(SqListL)
{
free(L);
}
int ListEmpty(SqList L)
{
return(L->length==0);
}
int ListLength(SqList L)
{
return(L->length);
}
void DispList(SqList L)
{
int i;
if(ListEmpty(L)) return;
for(i=0;i<L->length;i++)
printf("%c",L->elem[i]);
printf("\n");
}
int GetElem(SqList L,int i,ElemType &e)
{
if(i<1||i>L->length)
return 0;
e=L->elem[i-1];
return 1;
}
int LocateElem(SqList L,ElemType e)
{
int i=0;
while(i<L->length&&L->elem[i]!=e)i++;
if(i>=L->length)
return 0;
else
return i+1;
}
int ListInsert(SqList &L,int i,ElemType e)
{
int j;
if(i<1||i>L->length+1)
return 0;
i--;
for(j=L->length;j>i;j--)
L->elem[j]=L->elem[j-1];
L->elem[i]=e;
L->length++;
return 1;
}
int ListDelete(SqList &L,int i,ElemType &e)
{
int j;
if(i<1||i>L->length)
return 0;
i--;
e=L->elem[i];
for(j=i;j<L->length-1;j++)
L->elem[j]=L->elem[j+1];
L->length--;
return 1;
}
void main()
{
SqList L;
ElemType e;
printf("(1)初始化顺序表L\n");
InitList(L);
printf("(2)依次采用尾插法插入a,b,c,d,e元素\n");
ListInsert(L,1,'a');
ListInsert(L,2,'b');
ListInsert(L,3,'c');
ListInsert(L,4,'d');
ListInsert(L,5,'e');
printf("(3) 输出顺序表L:");
DispList(L);
printf("(4)顺序表L长度=%d\n",ListLength(L));
printf("(5)顺序表L为%s\n",(ListEmpty(L)"空":"非空"));
GetElem(L,3,e);
printf("(6)顺序表L的第3个元素=%c\n",e);
printf("(7)元素a的位置=%d\n",LocateElem(L,'a'));
printf("(8)在第4个元素位置上插如f元素\n");
ListInsert(L,4,'f');
printf("(9)输出顺序表L:");
DispList(L);
printf("(10)删除L的第3个元素\n");
ListDelete(L,3,e);
printf("(11)输出顺序表L:");
DispList(L);
printf("(12)释放顺序表L\n");
DestroyList(L);
}
2单链表基本 *** 作
#include<stdioh>
#include<stdlibh>
typedef struct LNode
{
char data;
struct LNode next;
}LNode,LinkList;
void InitList(LinkList L) //初始化
{
L = (LinkList)malloc(sizeof(LNode));
(L)->next = NULL;
}
char GetElem(LinkList L,int i) //返回i 位置的元素
{
//L为带头结点的单链表的头指针。
LinkList p;
int j;
p = L->next; j = 1; //初始化,p指向第一个结点,j为计数器
while(p && j<i)
{
p = p->next;
++j;
}
if(!p || j>i) exit(1); //i位置元素不存在
return(p->data);
}
void ListInsert(LinkList L,int i,char e)//插入
{
//在带头结点的单链线性表L中第i个位置前插入元素e
LinkList p,s;
int j;
p = L; j = 0;
while(p && j<i-1)//寻找第i-1个结点
{
p = p->next;
++j;
}
if(!p || j>i-1) exit(1); //i位置不正确
s = (LinkList)malloc(sizeof(LNode)); //新结点
s->data = e;
s->next = p->next;
p->next = s;
}
void ListDelete(LinkList L,int i)//删除i位置元素
{
LinkList p,q;
int j;
p = L; j = 0;
while(p->next && j<i-1)//寻找第i个结点
{//这以p->next开始是为了避开头结点,头结点不可删除
//而且这样是必须的,这样是为了有被删除点前面结点的地址,这样才能有前继结点,连接删除点的后继结点
p = p->next;
++j;
}
if(!(p->next) || j>i-1) exit(1); //删除位置不合理
q = p->next; //删除该点
p->next = q->next;
free(q);
}
void CreateList(LinkList L,int n)
{
//逆位序输入n个元素的值,建立带表头结点的单链线性表L
int i;
LinkList p;
(L) = (LinkList)malloc(sizeof(LNode));
(L)->next = NULL; //先建立带头结点的单链表
for(i=n;i>0;--i)
{
p = (LinkList)malloc(sizeof(LNode)); //生成新结点
scanf("%c",&p->data);
fflush(stdin);
p->next = (L)->next;
(L)->next = p;
}
//另一插入法
q = L = (LinkList)malloc(sizeof(LNode));
(L)->next = NULL;
for(i=n;i>0;--i)
{
p = (LinkList)malloc(sizeof(LNode));
scanf("%c",&p->data);
fflush(stdin);
p->next = NULL;
q->next = p;
q = p;
//q->next = p;
}
//
}
void MergeList(LinkList La,LinkList Lb,LinkList Lc)
{
//链表La,Lb按递增排列
LinkList pa,pb,pc;
pa = (La)->next;
pb = (Lb)->next;
(Lc) = pc = (La);
while(pa && pb)
{
if(pa->data <= pb->data)
{
pc->next = pa;
pc = pa;
pa = pa->next;
}
else
{
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = papa:pb; //插入剩余段
//free(Lb); //释放Lb头结点
}
void display(LinkList L)
{
LinkList di;
di = (L)->next;
while(di!=NULL)
{
printf("%c\t",di->data);
di = di->next;
}
printf("\n");
}
void main()
{
LinkList link,link2,link3;
InitList(&link);
InitList(&link2);
CreateList(&link,5);
CreateList(&link2,5);
display(&link);
display(&link2);
MergeList(&link,&link2,&link3);
display(&link3);
}
3二分查找算法的实现
#include<stdioh>
#include<stdlibh>
#include<timeh>
void xuanzhe(int a[], int n)
{
int i, j, min, t;
for (i=0; i<n-1; i++) /要选择的次数:0~n-2共n-1次/
{
min = i; /假设当前下标为i的数最小,比较后再调整/
for (j=i+1; j<n; j++)/循环找出最小的数的下标是哪个/
{
if (a[j] < a[min])
{
min = j; /如果后面的数比前面的小,则记下它的下标/
}
}
if (min != i) /如果min在循环中改变了,就需要交换数据/
{
t = a[i];
a[i] = a[min];
a[min] = t;
}
}
}
int main(){
int i,n,x;
int mid,left=0,right=999;
int find1=0,find2=0;
double y;
int a[1000];
for(i=0;i<1000;++i){
a[i]=rand();
}
xuanzhe(a,1000);
scanf("%d",&x);
printf("顺序查找:\n");
for(i=0;i<1000;++i){
while(x==a[i]){
printf("找到X=%d,a[%d]\n",x,i);
find1=1;
break;
}
}
if(find1==0){
printf("没有你要找的数\n");
}
printf("%fs\n",clock()/CLOCKS_PER_SEC);
y=clock();
printf("二分查找:\n");
while(!find2&&left<right)
{
mid=(left+right)/2;
if(x==a[mid])
find2=1;
else if(x<a[mid])
right=mid-1;
else left=mid+1;
}
if(find2==1)
printf("找到x=%d ,a[%d]\n",x,mid);
else
printf("没有你要找的数\n");
printf("%fs\n",(clock()-y)/CLOCKS_PER_SEC);
}
4你可以搜一下,网上很多。这个就不帮你谢了。
5固定分区的主存分配思想,用C语言设计并实现模拟固定分区分配方法
#include <stdlibh>
#include <stdioh>
#include <stringh>
typedef int datatype;
//主存分配表的结构体
typedef struct node
{
datatype Num,Size,Address;
int State;//0表示空闲状态,1表示已分配
char Name[10];//作业名,为0表示空闲状态,定义成字符串
struct node next;
}linknode;
typedef linknode linklist;
//作业列表的结构体
typedef struct job
{
char Name[10];
int Size;
struct job next;
}linkjob;
typedef linkjob joblist;
/尾插法创建作业队列/
joblist creatjoblist()
{
joblist head,r,s;
char ch[10];
int x;
head=r=(joblist)malloc(sizeof(linkjob));
printf("\nShanglogo\n");
printf("\nCopyright @ Shanglogo\n");
printf("\n先创建作业队列:\n");
printf("\n");
printf("请分别输入作业的名字及大小并以0结束:\n");
scanf("%s %d",&ch,&x);
while(x)
{
s=(joblist)malloc(sizeof(linkjob));
strcpy(s->Name,ch);
s->Size=x;
r->next=s;
r=s;
scanf("%s %d",&ch,&x);
}
r->next=NULL;
return head;
}
/尾插法创建带头结点的主存分配表/
linklist creatlinklist()
{
linklist head,r,s;
int a,b,c,d;
char ch[10];
head=r=(linklist)malloc(sizeof(linknode));
printf("现将主存分区,状态均为空闲:\n");
printf("\n");
printf("请分别输入分区的分区号、大小、起始地址、状态及占用分区的作业名并以0结束:\n");
scanf("%d %d %d %d %s",&a,&b,&c,&d,&ch);
while (a)
{
s=(linklist)malloc(sizeof(linknode));
s->Num=a;
s->Size=b;
s->Address=c;
s->State=d;
strcpy(s->Name,ch);
r->next=s;
r=s;
scanf("%d %d %d %d %S",&a,&b,&c,&d,&ch);
}
r->next=NULL;
return head;
}
/输出带头结点的单链表/
void print(linklist head)
{
linklist p;
p=head->next;
printf("此时的主存分配表为:\n");
printf("Num Size Address State Name\n");
while(p)
{
printf("%d%6d%6d%9d%7s\n",p->Num,p->Size,p->Address,p->State,p->Name);
p=p->next;
}
printf("\n");
}
void main()
{
joblist start,q;
linklist head,pre,p;
start=creatjoblist();//创建作业队列
head=creatlinklist();//创建主存分配表
print(head);
q=start->next;
pre=head;
p=head->next;
while(p)
{
while(q&&p->Size>=q->Size&&p->State==0)//q不为空并作业q的长度小于分区p的长度并且状态为空闲
{
p->State=1;
strcpy(p->Name,q->Name);
print(head);
q=q->next;
pre=head;
p=head->next;
}
if(q!=NULL)
{
pre=p;
p=p->next;
}
}
}
费了那么大劲,应该对你有所帮助吧!
以上就是关于有关c程序设计八进制全部的内容,包括:有关c程序设计八进制、关于C语言程序运行,代码如下,、有关C程序设计,答案如何分析的,要分析过程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)