课程网站开发的开题报告,计算机网络技术是什么,沙田做网站,58.搜房等网站怎么做效果才好第09套#xff1a; 给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为#xff1a;10、4、2、8、6#xff0c;排序后链表结点数据域从头至尾的数据为#xff1a;2、4、6、8、10。 请在程序的下划线处…第09套 给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头至尾的数据为10、4、2、8、6排序后链表结点数据域从头至尾的数据为2、4、6、8、10。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意源程序存放在考生文件夹下的BLANK1.C中。 不得增行或删行也不得更改程序的结构 给定源程序
#include stdio.h
#include stdlib.h
#define N 6
typedef struct node {
int data;
struct node *next;
} NODE;
void fun(NODE *h)
{ NODE *p, *q; int t;
p h;
while (p) {
q __1__ ;
while (__2__)
{ if (p-data q-data)
{ t p-data; p-data q-data; q-data t; }
q q-next;
}
p __3__ ;
}
}
NODE *creatlist(int a[])
{ NODE *h,*p,*q; int i;
hNULL;
for(i0; iN; i)
{ q(NODE *)malloc(sizeof(NODE));
q-dataa[i];
q-next NULL;
if (h NULL) h p q;
else { p-next q; p q; }
}
return h;
}
void outlist(NODE *h)
{ NODE *p;
ph;
if (pNULL) printf(The list is NULL!\n);
else
{ printf(\nHead );
do
{ printf(-%d, p-data); pp-next; }
while(p!NULL);
printf(-End\n);
}
}
main()
{ NODE *head;
int a[N] {0, 10, 4, 2, 8, 6 };
headcreatlist(a);
printf(\nThe original list:\n);
outlist(head);
fun(head);
printf(\nThe list after inverting :\n);
outlist(head);
} 解题思路 本题是考察使用链表方法使用两重while循环语句对链表的结点数据进行升序排列。 第一处由于外循环变量使用p指针内循环变量使用q指针所以q指向必须指向p的next 指针因此应填写p.next。 第二处判断内循环q指针是否结束所以应填q。 第三处外循环控制变量p指向自己的next指针所以应填p.next。 给定程序MODI1.C中函数fun的功能是: 将s所指字符串中的字母转换为按字母 序列的后续字母(但Z转换为A, z转换为a),其它字符不变。 请改正函数fun中指定部位的错误, 使它能得出正确的结果。 注意: 不要改动main函数, 不得增行或删行, 也不得更改程序的结构! 给定源程序
#include stdio.h
#include ctype.h
void fun (char *s)
{
while(*s!)
{ if(*sA *sZ || *sa *sz)
{ if(*sZ) *sA;
else if(*sz) *sa;
else *s 1;
}
(*s);
}
}
main()
{ char s[80];
printf(\n Enter a string with length 80. :\n\n ); gets(s);
printf(\n The string : \n\n ); puts(s);
fun ( s );
printf (\n\n The Cords :\n\n ); puts(s);
} 解题思路 第一处: 使用while循环来判断字符串指针s是否结束所以应改为while(*s)。 第二处: 取字符串指针s的下一个位置所以应改为s;。 请编写函数fun, 函数的功能是: 移动一维数组中的内容; 若数组中有n个整数, 要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。 例如, 一维数组中的原始内容为: 1,2,3,4,5,6,7,8,9,10; p的值为3。移动 后, 一维数组中的内容应为: 5,6,7,8,9,10,1,2,3,4。 注意部分源程序在文件PROG1.C中。 请勿改动主函数main和其它函数中的任何内容仅在函数fun的花括号中填入你编写的若干语句。 给定源程序
#include stdio.h
#define N 80
void fun(int *w, int p, int n)
{
}
main()
{ int a[N]{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int i,p,n15;
printf(The original data:\n);
for(i0; in; i)printf(%3d,a[i]);
printf(\n\nEnter p: );scanf(%d,p);
fun(a,p,n);
printf(\nThe data after moving:\n);
for(i0; in; i)printf(%3d,a[i]);
printf(\n\n);
NONO();
}
解题思路
本题是考察一维数组的操作。
1. 定义一维数组中间变量b把n值后面数组中的内容存入b中。
2. 再把m前的数组中的内容存入b中。
3. 最后把数组b的内容依次存放到w中。
参考答案
void fun(int *w, int p, int n)
{
int i, j 0, b[N] ;
for(i p 1 ; i n ; i) b[j] w[i] ;
for(i 0 ; i p ; i) b[j] w[i] ;
for(i 0 ; i n ; i) w[i] b[i] ;
}