L17 return 0; L18 }
4-3-14、下面函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。以下程序只允许修改两行。【2014年】 L1 #include
L4 for( ; s[i]!='\\0';i++)
L5 if(s[i]>='0' & s[i]<='9') L6 s[j]=s[i]; L7 j--; L8 }
L9 s[j]='\\0'; L10 }
4-3-15、函数creatList()用于从键盘读入整数,并根据输入的顺序建立链表,当输入-1时结束从键盘读取,链表创建完成,其中-1不存入链表,头节点不存储数据,在main函数中调用creatList()函数创建链表,随后遍历链表输出链表所保存的数据。以下程序只允许修改三行。【2014年】
L1 #include
L4 struct Node *next; L5 };
L6 struct Node *creatList(){ L7 struct Node p,q,head; L8 int a;
L9 head=(struct Node *)malloc(sizeof(struct Node)); L10 p=q=head; L11 printf(\L12 scanf(\L13 while(a!=-1){ L14 p=( struct Node *)malloc(sizeof(struct Node)); L15 p->data=a; L16 q->next=p; L17 q=p; L18 p->next=NULL; L19 scanf(\L20 } L21 return head; L22 } L23 main(){ L24 struct Node *head,*p; L25 head=creatList(); L26 p=head->next; L27 while(p){ L28 printf(\
第 36 页 共 46 页
L29 p->next=p L30 } L31 }
4-3-16、产生一个0—9之间的随机整数,要求用户猜这个整数。用户输入一个整数,程序判断是否与所产生的随机数相等,由屏幕显式判断结果。如果猜得不对,再次提示输入,进行判断,直到猜出这个数为止。以下程序只允许修改两行。【2015年】 L1 #include
L6 int x,a=-1;
L7 srand((unsigned)time(NULL)); /*设置随机数的种子*/
L8 x=rand(); /*产生0—9之间的一个随机整数*/ L9 while(a!=x) L10 {
L11 scanf(\L12 if(a=x) L13 puts(\猜对!\L14 if(a>x) L15 puts(\太大,请重试\L16 if(a 4-3-17、函数convertNum用于实现无符号十进制数到其它进制数的转换,转换结果的每一位以字符存储于字符数组s中(如十进制3转换为二进制后,数组s中存储的字符串为11),参数srcInt为待转换数据,d为转换的目标进制。函数convertNum转换成功返回1,失败返回0。以下程序只允许修改三行。【2015年】 L1 #include L3 #define M sizeof(unsigned int)*8 L4 int convertNum(unsigned srcInt,int d,char s[]) L5 { L6 static char digits[]=\L7 char buf[M+1]; L8 int j,i=M; L9 if(d<2||d>16) L10 { L11 s[0]='\\0'; L12 return 0; L13 } L14 buf[i]='\\0'; L15 do L16 { L17 buf[--i]=digits[srcInt/d]; 第 37 页 共 46 页 L18 srcInt=srcInt%d; L19 }while(srcInt); L20 for(j=0; buf[i]!='\\0'; j++,i++) L21 { L22 s[j]=buf[i]; L23 }; L24 s[j+1]='\\0'; L25 return 1; L26 } 4-3-18、下面程序的功能是打印如下图所示的图形。以下程序只允许修改两行。【2016年】 * *** ***** *** * L1 #include L3 { int i,j,k,b; L4 for(i=1;i<=5;i++) L5 { b=3-i; L6 for(j=b;j>0;j--) L7 printf(\L8 for(k=5-b;k>0;k--) L9 printf(\L10 printf(\L11 } L12 return 0; L13 } 4-3-19、下面程序中,creatlist()函数的功能是创建一个带有头结点的链表。fun()函数的功能是:根据输入的字符,查找链表中的字符数据,如果找到了就输出满足条件的第一个结点位置,如果没找到,就输出“not found!”。以下程序只允许修改三行。【2016年】 L1 #include L5 struct list *next; L6 }SLIST; L7 SLIST *creatlist(char *a); L8 void fun(SLIST *h,char c) /* c用来存放要查找的字符 */ L9 { SLIST *p; int n=1; int flag=0; /* flag表示是否找到满足条件的结点 */ L10 p=h->next; L11 while(p) L12 { if(p->data==c) L13 { flag=1; L14 continue; L15 } 第 38 页 共 46 页 L16 else L17 { n++; p=p->next; } L18 } L19 if(flag) L20 printf(\L21 else L22 printf(\L23 } /* fun()函数结束 */ L24 int main() L25 { SLIST *head; char c; /* c表示要查找的字符,head表示链表的头部 */ L26 char a[N]={'1','2','3','4','5'}; L27 head=creatlist(a); L28 scanf(\L29 fun(head,c); L30 return 0; L31 } /* main()函数结束 */ L32 SLIST *creatlist(char *a) L33 { SLIST *h,*p,*q; int i; L34 h=p=(SLIST *)malloc(sizeof(SLIST)); L35 for(i=0;i 五、程序设计题 5-1、已知一个数列从1项开始的前6项为:0,0,1, 1,2,4,以后的各项都是其相邻的前3项之和,计算 并输出该数列前20项之和。【2007年】 5-2、下面程序的功能是:用选择法对10个数进行排 序(由小到大)。请完成sort()函数。【2007年选做题】 void sort(int x[],int n) { } main() { int i; int a[]={12,21,2,34,87,65,43,25,765,11}; sort(a,10); printf(\排序后的数是:\\n\ for(i=0;i<10;i++) printf(\ } 5-3、有一辆在高速公路上行驶的汽车,司机在某一时刻看到里程表显示的数值为95859公里(95859为回文数,回文数是指正读反读均一样的数),7小时后,里程表上又出现了一个回文数。 第 39 页 共 46 页 编程求出此回文数和汽车时速?(注:高速公路限速60公里以上,汽车的里程表为5位数)【2008年】 5-4、弦数是指平方值等于某两个正整数平方之和的正整数,如:32+42=52,因此5为弦数。编程输出10到100之内的所有弦数及弦数的数量。【2008年选做】 5-5、某学校操场上有一些学生,老师想知道有多少人,便让学生排队报数:按从1到5报,最后一名学生报的数为1,按从1到6报,最后一名学生报的数为5;按从1到7报,最后一名学生报的数为4,最后再按从1到11报,最后一名学生报的数为10。编写程序求操场上共有多少学生。【2009年】 5-6、将自然数1~100按顺时针围成一圈,首先取出1,然后按顺时针方向以步长30取数,(已取出的数不再参加计数),直至所有的数取完为止。编程求最后一个取出的数是多少?(共15分)【2009年选做题】 5-7、在全国青年歌手大奖赛中,有20个评委为参赛选手打分。分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余18个分数的平均值。请编写程序实现,输入20个评委评分,求出选手最后得分。【2010年】 第 40 页 共 46 页