[C语言选择笔试题]选择题 (1)下列关于栈叙述正确的是 A)栈顶元素最先能被删除 B)栈顶元素最后才能被删除 C)栈底元素永远不能被删除 D)以上三种说法都不对 (2)下列叙述中正确的是 A)有一个以...+阅读
C语言试题链表部分
/*以前写的一个,看看吧...*//*单向链表的反向输出*/#include#include#define MAX_LEN 10typedef struct _LINKNODE{ int value; struct _LINKNODE *next;}LINKNODE;/*链表逆置的原理就是前插,把原链表中的元素一个一个的前插到新的链表中*/LINKNODE* revertLink(LINKNODE* head){ LINKNODE* revert = NULL; LINKNODE* temp = NULL; while(head != NULL) { temp = head->next; head->next = revert; revert = head; head = temp; } return revert;}void main(){ int array[MAX_LEN] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; LINKNODE* head = NULL; LINKNODE* curNode = NULL; LINKNODE* temp = NULL; LINKNODE* revert = NULL; for(int i=0; ivalue = array[i]; temp->next = NULL; if(head == NULL) { head = temp; curNode = temp; } curNode->next = temp; curNode = curNode->next; } printf("初始化后的链表是:\n"); curNode = head; while(curNode != NULL) { printf("%d ", curNode->value); curNode = curNode->next; } revert = revertLink(head); printf("\n逆置后链表是:\n"); while(revert != NULL) { printf("%d ", revert->value); revert = revert->next; } printf("\n");}
c程序题目链表
#include#include#include#include#define ID struct id struct id { char name[20]; int num; int a; int b; int c; double ave; ID *next; // }; int pc=0; ID *creat() { ID *p1,*p2,*head; int pd; p1=p2=head=NULL; printf("\t\t\t 开始输入记录(学号0结束)!\n"); while
(1) { printf("请输入学生的学号:\n");scanf("%d",&pd); if(pd==0) break; p1=(ID*)malloc(sizeof(ID)); p1->num=pd; printf("请输入学生的姓名:\n");scanf("%s",p1->name); printf("请输入学生的语文成绩:\n");scanf("%d",&p1->a); printf("请输入学生的数学成绩:\n");scanf("%d",&p1->b); printf("请输入学生的外语成绩:\n");scanf("%d",&p1->c); p1->ave=(p1->a+p1->b+p1->c)/3.0; if(head==NULL) { head=p1; p2=p1; } else { p2->next=p1; p2=p1; } pc++; } p2->next=NULL; return(head); } ID *sort(ID *head) { int temp; char str[100]; double dbl; ID *p1,*p2; for(p1=head;p1!=NULL;p1=p1->next) { for(p2=p1->next;p2!=NULL;p2=p2->next) { if(p1->aveave) { temp=p1->num; p1->num=p2->num; p2->num=temp; strcpy(str,p1->name); strcpy(p1->name,p2->name); strcpy(p2->name,str); temp=p1->a; p1->a=p2->a; p2->a=temp; temp=p1->b; p1->b=p2->b; p2->b=temp; temp=p1->c; p1->c=p2->c; p2->c=temp; dbl=p1->ave; p1->ave=p2->ave; p2->ave=dbl; } } } printf("排序成功!!!\n"); return (head); } /*输入/添加记录*/ ID *insert(ID *head) { ID *temp,*p1,*p2; printf("插入操作开始!!!\n"); temp=(ID *)malloc(sizeof(ID)); printf("请输入学生的学号:\n");scanf("%d",&temp->num); printf("请输入学生的姓名:\n");scanf("%s",temp->name); printf("请输入学生的语文成绩:\n");scanf("%d",&temp->a); printf("请输入学生的数学成绩:\n");scanf("%d",&temp->b); printf("请输入学生的外语成绩:\n");scanf("%d",&temp->c); temp->ave=(temp->a+temp->b+temp->c)/3.0; if (head==NULL) { head=temp; temp->next=NULL; } else { p1=head; while(p1!=NULL & p1->ave >temp->ave) { p2=p1; p1=p1->next; } p2->next=temp; temp->next=p1; } printf("插入成功"); pc++; return (head); } /*删除学生记录*/ ID *delet(ID *head) { ID *p1,*p2; int num; printf("请输入要删除的学生的学号:");scanf("%d",&num); p1=head; if (head==NULL) { printf("没有记录\n"); goto end; } while(num!=p1->num & p1!=NULL) { p2=p1;p1=p1->next; } if(num==p1->num) { if (p1==head) head=p1->next; else p2->next=p1->next; printf("删除成功!!!\n"); pc--; } end:return head; } /*查找学生记录*/ ID *search(ID *head) { ID *p1,*p2; char str[100]; printf("请输入要查找的学生的姓名:");scanf("%s",str); p1=head; while(strcmp(str,p1->name) & p1!=NULL) { p2=p1;p1=p1->next; } if(strcmp(str,p1->name)==0) { printf("学生的学号:%d\n",p1->num); printf("学生的姓名:%s\n",p1->name); printf("学生的语文成绩:%d\n",p1->a); printf("学生的数学成绩:%d\n",p1->b); printf("学生的外语成绩:%d\n",p1->c); printf("学生的平均成绩:%.2lf\n",p1->ave); } return head; } /*显示结果函数*/ void print(ID *head) { ID *p; p=head; printf("\t\t\t*****************\n"); printf("显示结果是:\n"); if(head!=NULL) do { printf("%10d%10s%10d%10d%10d%10.2lf\n",p->num,p->name,p->a,p->b,p->c,p->ave); p=p->next; } while(p!=NULL); } void main() { ID *head=NULL; int choise; printf("\t\t\t* * * * C语言课设* * * *\n"); while
(1) { printf("\t\t 学生信息管理系统\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\t\t 1.输入\n"); printf("\t\t 2.显示\n"); printf("\t\t 3.查找\n"); printf("\t\t 4.排序\n"); printf("\t\t 5.插入\n"); printf("\t\t 6.删除\n"); printf("\t\t 0.退出\n"); printf("\n"); printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("请选择(0-6):"); scanf("%d",&choise); switch(choise) { case 1: head=creat(); break; case 2: print(head); break; case 3: head=search(head); break; case 4: head=sort(head); break; case 5: head=insert(head); break; case 6: head=delet(head); break; case 0: exit(0); break; default :printf("输入错误,请重新输入!\n"); } } }
求C语言题目要具体的程序!建立一个链表将数据放入链表
#include
C语言链表操作
包括链表的创建删除添加和释放操作!! #include#includestruct node *create(); void print_list(struct node *head); struct node * insert_node(struct node *h,int x,int y); struct node * delete_node(struct node *h,int z); void shifang(struct node *head); struct node { char data; struct node *next; }; void main() { struct node *head; int x,y,z; head=create(); print_list(head); printf("\n输入插入结点的位置的值和插入的数值:"); scanf("%d%d",&x,&y); head=insert_node(head,x,y); print_list(head); printf("\n输入要删除的结点:"); scanf("%d",&z); head=delete_node(head,z); print_list(head); printf("\n释放链表.\n"); } struct node *create() //建立链表函数 { printf("请输入各节点(以-1结尾):\n"); int x; //定义指针*head,*tail,*s; struct node *head,*tail,*s; //head和tail初始化,生成一个头结点 head=tail=(struct node *)malloc(sizeof(struct node)); //在循环中,生成新结点、赋值、连接、尾指针后移 scanf("%d",&x); while(x!=-1) { s=(struct node *)malloc(sizeof(struct node)); s->data=x; tail->next=s; tail=s; scanf("%d",&x); } //尾结点的指针域赋NULL tail->next=NULL; return head; } void print_list(struct node *head) //输出链表函数 { //定义工作指针*p并赋初值p=head->next;即指向第一个结点 struct node *p; p=head->next; //判断链表是否为空,空:输出空表的信息,否则:输出所有结点 if(p==NULL) printf("The list is NULL."); else //在循环中输出当前结点,工作指针后移 { printf("head->"); while(p!=NULL) { printf("%d->",p->data); p=p->next; } printf("end."); } } struct node * insert_node(struct node *h,int x,int y) //添加结点函数 { struct node *p,*q,*s; //生成要插入的新结点 s=(struct node *)malloc(sizeof(struct node)); s->data=y; q=h; p=h->next; //查找要插入结点的位置 while((p!=NULL)&(p->data!=x)) { q=p; p=p->next; } //插入结点 q->next=s;s->next=p; return(h); } struct node * delete_node(struct node *h,int z) //删除结点函数 { struct node *p,*q; q=h; p=h->next ; //查找要删除结点的位置 if(p!=NULL) { while((p!=NULL)&(p->data!=z)) { q=p; p=p->next; } //释放结点 if(p->data ==z) { q->next=p->next ; free(p); } } return(h); } void shifang(struct node *head) //释放链表函数 { struct node *p; //逐个释放结点 while(head!=NULL) { p=head; head=head->next; free(p); } }
延伸阅读:
C语言笔试试题及答案(1)在计算机中,一个字节所包含二进制位的个数是 A)2 B)4 C)8 D)16 (2)在多媒体计算机中,CD-ROM属于 A)存储媒体 B)传输媒体 C)表现媒体 D)表示媒体 (3)在DOS系统中,带有通配符的文件名*.*表示...
华为招聘C语言笔试试题一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分) 1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。( ) 2、int (*ptr) (),则ptr是一维数组的名字。( ) 3、指针在任...
华为C语言笔试题一、判断题(对的写t,错的写f并说明原因,每小题4分,共20分) 1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。( ) 2、int (*ptr) (),则ptr是一维数组的名字。( ) 3、指...
c语言笔试题大全以下是华为c语言笔试题大全。 1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用:: 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名...
腾讯C语言笔试题1.static有什么用途?(请至少说明两种) 1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模...
C语言求职笔试题C语言求职笔试题: 1、在64位高档机中,long占字节数为 a、4 b、8 c、32 d、 64 b 2、函数中局部变量生成于__中 a、堆 b、栈 c、静态存储区 d、代码存储区 c 3、不正确的附值或...
三道C语言笔试题1)输出是31,49,1 原因是%x是指按16进制输出,而1的ASCII码是49,换成16进制就是31;%d就是49,也许你会说这里应该是1才对吧,但是你要注意他加上了单引号,就代表他是将1作为字符处理,所...
C语言笔试题一道整形数字去减字符2, 等于 c 的 ASCII 值 减 字符2 的ASCII 值。2743回车:c = '2', c-'2' 等于 0。进case 0: case 1: 打 ASCII 值 等于 c+4 的符号 ,就是符号6,没有 break; 进case...
c语言常见面试题网上找的 #include int cal(int h1,int length,int b[]); int main(){ unsigned int n[]=; int length=7; printf("%d",cal(-2,length,n)); return 0; } int cal(int h1,int l...