1
0

程序填空题1-20.txt 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720
  1. 程序填空题(一)
  2. 下列给定程序中,函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]…中,把奇数从数组中删除,偶数的个数通过函数值返回。
  3. 例如,若a所指数组中的数据最初排列为:9,1,4,2,3,6,5,8,7,删除奇数后a所指数组中的数据为:4,2,6,8,返回值为4。
  4. 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
  5. 注意:不得增行或删行,也不得更改程序的结构!
  6. #include <stdio.h>
  7. #define N 9
  8. int fun(int a[], int n)
  9. { int i,j;
  10. j = 0;
  11. for (i=0; i<n; i++)
  12. /**********found**********/
  13. if (___1___== 0) {
  14. /**********found**********/
  15. ___2___ = a[i]; j++;
  16. }
  17. /**********found**********/
  18. return ___3___;
  19. }
  20. main()
  21. { int b[N]={9,1,4,2,3,6,5,8,7}, i, n;
  22. printf("\nThe original data :\n");
  23. for (i=0; i<N; i++) printf("%4d ", b[i]);
  24. printf("\n");
  25. n = fun(b, N);
  26. printf("\nThe number of even :%d\n", n);
  27. printf("\nThe even :\n");
  28. for (i=0; i<n; i++) printf("%4d ", b[i]);
  29. printf("\n");
  30. }
  31. 程序填空题(二)
  32. 下列给定程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。
  33. 例如,若s所指字符串为"baacda",c中的字符为a,执行后s所指字符串为"baaaacdaa"。
  34. 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
  35. 不得增行或删行,也不得更改程序的结构!
  36. #include <stdio.h>
  37. void fun(char *s, char c)
  38. { int i, j, n;
  39. /**********found**********/
  40. for(i=0; s[i]!=___1___ ; i++)
  41. if(s[i]==c)
  42. {
  43. /**********found**********/
  44. n=___2___ ;
  45. while(s[i+1+n]!='\0') n++;
  46. for(j=i+n+1; j>i; j--) s[j+1]=s[j];
  47. /**********found**********/
  48. s[j+1]=___3___ ;
  49. i=i+1;
  50. }
  51. }
  52. main()
  53. { char s[80]="baacda", c;
  54. printf("\nThe string: %s\n",s);
  55. printf("\nInput a character: "); scanf("%c",&c);
  56. fun(s,c);
  57. printf("\nThe result is: %s\n",s);
  58. }
  59. 程序填空题(三)
  60. 下列给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。
  61. 例如,若N=3,有下列矩阵:
  62. 1  2  3
  63. 4  5  6
  64. 7  8  9
  65. 计算后结果为
  66. 1  0  0
  67. 6  5  0
  68. 10  14  9
  69. 请在程序的下划线处填入正确的内容并把下划线删除。使程序得出正确的结果。
  70. 注意:不得增行或删行,也不得改程序的结构!
  71. #include <stdio.h>
  72. #define N 4
  73. /**********found**********/
  74. void fun(int (*t)___1___ )
  75. { int i, j;
  76. for(i=1; i<N; i++)
  77. { for(j=0; j<i; j++)
  78. {
  79. /**********found**********/
  80. ___2___ =t[i][j]+t[j][i];
  81. /**********found**********/
  82. ___3___ =0;
  83. }
  84. }
  85. }
  86. main()
  87. { int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
  88. printf("\nThe original array:\n");
  89. for(i=0; i<N; i++)
  90. { for(j=0; j<N; j++) printf("%2d ",t[i][j]);
  91. printf("\n");
  92. }
  93. fun(t);
  94. printf("\nThe result is:\n");
  95. for(i=0; i<N; i++)
  96. { for(j=0; j<N; j++) printf("%2d ",t[i][j]);
  97. printf("\n");
  98. }
  99. }
  100. 程序填空题(四)
  101. 下列给定程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。
  102. 例如,形参s所指字符串为"abcdefgh",执行结果为"ahcbedgf"。
  103. 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
  104. 注意:不得增行或删行,也不得更改程序的结构!
  105. #include <stdio.h>
  106. void fun(char *s)
  107. { int i, n, k; char c;
  108. n=0;
  109. for(i=0; s[i]!='\0'; i++) n++;
  110. /**********found**********/
  111. if(n%2==0) k=n-___1___ ;
  112. else k=n-2;
  113. /**********found**********/
  114. c=___2___ ;
  115. for(i=k-2; i>=1; i=i-2) s[i+2]=s[i];
  116. /**********found**********/
  117. s[1]=___3___ ;
  118. }
  119. main()
  120. { char s[80]="abcdefgh";
  121. printf("\nThe original string is : %s\n",s);
  122. fun(s);
  123. printf("\nThe result is : %s\n",s);
  124. }
  125. 程序填空题(五)
  126. 给定程序中,函数fun的功能是:把形参s所指字符串中最右边的n个字符复制到形参t所指字符数组中,形成一个新串。若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。
  127. 例如,形参s所指的字符串为:abcdefgh,n的值为5,程序执行后t所指字符数组中的字符串应为:defgh。
  128. 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  129. 注意:不得增行或删行,也不得更改程序的结构!
  130. #include <stdio.h>
  131. #include <string.h>
  132. #define N 80
  133. void fun(char *s, int n, char *t)
  134. { int len,i,j=0;
  135. len=strlen(s);
  136. /**********found**********/
  137. if(n>=len) strcpy(__1__);
  138. else {
  139. /**********found**********/
  140. for(i=len-n; i<=len-1; i++) t[j++]= __2__ ;
  141. /**********found**********/
  142. t[j]= __3__ ;
  143. }
  144. }
  145. main()
  146. { char s[N],t[N]; int n;
  147. printf("Enter a string: ");gets(s);
  148. printf( "Enter n:"); scanf("%d",&n);
  149. fun(s,n,t);
  150. printf("The string t : "); puts(t);
  151. }
  152. 程序填空题(六)
  153. 给定程序中,函数fun的功能是:统计形参s所指的字符串中数字字符出现的次数,并存放在形参t所指的变量中,最后在主函数中输出。例如,若形参s所指的字符串为"abcdef35adgh3kjsdf7",则输出结果为4。
  154. 请在下划线处填入正确内容并将下划线删除,使程序得出正确的结果。
  155. 注意:不得增行或删行,也不得更改程序的结构!
  156. #include <stdio.h>
  157. void fun(char *s, int *t)
  158. { int i, n;
  159. n=0;
  160. /**********found**********/
  161. for(i=0; ___1___ !=0; i++)
  162. /**********found**********/
  163. if(s[i]>='0'&&s[i]<= ___2___ ) n++;
  164. /**********found**********/
  165. ___3___ ;
  166. }
  167. main()
  168. { char s[80]="abcdef35adgh3kjsdf7";
  169. int t;
  170. printf("\nThe original string is : %s\n",s);
  171. fun(s,&t);
  172. printf("\nThe result is : %d\n",t);
  173. }
  174. 程序填空题(七)
  175. 函数fun的功能是:根据所给的年、月、日,计算出该日是这一年的第几天,并作为函数值返回。其中函数 isleap用来判别某一年是否为闰年。
  176. 例如,若输入:2008 5 1,则程序输出:2008年5月1日是该年的第122天。
  177. 请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的
  178. 结果。
  179. 注意:不得增行或删行,也不得更改程序的结构!
  180. #include <stdio.h>
  181. int isleap(int year)
  182. { int leap;
  183. leap= (year%4==0 && year%100!=0 || year%400==0);
  184. /**********found**********/
  185. return __1__;
  186. }
  187. int fun(int year, int month, int day)
  188. { int table[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
  189. int days=0 , i;
  190. for(i=1; i<month; i++)
  191. days=days + table[i];
  192. /**********found**********/
  193. days=days+__2__ ;
  194. if( isleap(year) && month>2 )
  195. /**********found**********/
  196. days=days+__3__;
  197. return days;
  198. }
  199. main()
  200. { int year, month, day, days ;
  201. printf("请输入年、月、日:");
  202. scanf("%d%d%d",&year, &month, &day);
  203. days = fun(year, month, day);
  204. printf("%d年%d月%d日是该年的第%d天\n",year, month, day, days);
  205. }
  206. 程序填空题(八)
  207. 给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。
  208. 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  209. 注意:不得增行或删行,也不得更改程序的结构!
  210. #include <stdio.h>
  211. #include <string.h>
  212. #define N 5
  213. #define M 8
  214. void fun(char (*ss)[M])
  215. { char *ps[N],*tp; int i,j,k;
  216. for(i=0; i<N; i++) ps[i]=ss[i];
  217. for(i=0; i<N-1; i++) {
  218. /**********found**********/
  219. k= __1__ ;
  220. for(j=i+1; j<N; j++)
  221. /**********found**********/
  222. if(strlen(ps[k]) < strlen(__2__) ) k=j;
  223. /**********found**********/
  224. tp=ps[i]; ps[i]=ps[k]; ps[k]= __3__ ;
  225. }
  226. printf("\nThe string after sorting by length:\n\n");
  227. for(i=0; i<N; i++) puts(ps[i]);
  228. }
  229. main()
  230. { char ch[N][M]={"red","green","blue","yellow","black"};
  231. int i;
  232. printf("\nThe original string\n\n");
  233. for(i=0;i<N;i++)puts(ch[i]); printf("\n");
  234. fun(ch);
  235. }
  236. 程序填空题(九)
  237. 下列给定程序中,函数fun的功能是:将N×N矩阵主对角线元素的值与反向对角线对应位置上元素的值进行交换。
  238. 例如,若N=3,有下列矩阵:
  239. 1  2  3
  240. 4  5  6
  241. 7  8  9
  242. 交换后为:
  243. 3  2  1
  244. 4  5  6
  245. 9  8  7
  246. 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
  247. 注意:不得增行或删行,也不得更改程序的结构!
  248. #include <stdio.h>
  249. #define N 4
  250. /**********found**********/
  251. void fun(int ___1___ , int n)
  252. { int i,s;
  253. /**********found**********/
  254. for(___2___; i++)
  255. { s=t[i][i];
  256. t[i][i]=t[i][n-i-1];
  257. /**********found**********/
  258. t[i][n-1-i]=___3___;
  259. }
  260. }
  261. main()
  262. { int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
  263. printf("\nThe original array:\n");
  264. for(i=0; i<N; i++)
  265. { for(j=0; j<N; j++) printf("%d ",t[i][j]);
  266. printf("\n");
  267. }
  268. fun(t,N);
  269. printf("\nThe result is:\n");
  270. for(i=0; i<N; i++)
  271. { for(j=0; j<N; j++) printf("%d ",t[i][j]);
  272. printf("\n");
  273. }
  274. }
  275. 程序填空题(十)
  276. 下列给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(即下标值),若未找到则返回-1。ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。
  277. 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
  278. 注意:不得增行或删行,也不得更改程序的结构!
  279. #include <stdio.h>
  280. #include <string.h>
  281. #define N 5
  282. #define M 8
  283. int fun(char (*ss)[M],char *t)
  284. { int i;
  285. /**********found**********/
  286. for(i=0; i< __1__ ; i++)
  287. /**********found**********/
  288. if(strcmp(ss[i],t)==0 ) return __2__ ;
  289. return -1;
  290. }
  291. main()
  292. { char ch[N][M]={"if","while","switch","int","for"},t[M];
  293. int n,i;
  294. printf("\nThe original string\n");
  295. for(i=0;i<N;i++)puts(ch[i]); printf("\n");
  296. printf("\nEnter a string for search: "); gets(t);
  297. n=fun(ch,t);
  298. /**********found**********/
  299. if(n== __3__) printf("\nDon't found!\n");
  300. else printf("\nThe position is %d .\n",n);
  301. }
  302. 程序填空题(十一)
  303. 人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。
  304. 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  305. 注意:不得增行或删行,也不得更改程序的结构!
  306. #include <stdio.h>
  307. #define N 8
  308. typedef struct
  309. { int num;
  310. int year,month,day ;
  311. }STU;
  312. int fun(STU *std, STU *k, int year)
  313. { int i,n=0;
  314. for (i=0; i<N; i++)
  315. /**********found**********/
  316. if( ___1___==year)
  317. /**********found**********/
  318. k[n++]= ___2___;
  319. /**********found**********/
  320. return (___3___);
  321. }
  322. main()
  323. { STU std[N]={ {1,1984,2,15},{2,1983,9,21},{3,1984,9,1},{4,1983,7,15},
  324. {5,1985,9,28},{6,1982,11,15},{7,1982,6,22},{8,1984,8,19}};
  325. STU k[N];
  326. int i,n,year;
  327. printf("Enter a year : "); scanf("%d",&year);
  328. n=fun(std,k,year);
  329. if(n==0)
  330. printf("\nNo person was born in %d \n",year);
  331. else
  332. { printf("\nThese persons were born in %d \n",year);
  333. for(i=0; i<n; i++)
  334. printf("%d %d-%d-%d\n",k[i].num,k[i].year,k[i].month,k[i].day);
  335. }
  336. }
  337. 程序填空题(十二)
  338. 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。
  339. 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  340. 注意:不得增行或删行,也不得更改程序的结构!
  341. #include <stdio.h>
  342. typedef struct
  343. { int num;
  344. char name[10];
  345. }PERSON;
  346. /**********found**********/
  347. void fun(PERSON ___1___)
  348. {
  349. /**********found**********/
  350. ___2___ temp;
  351. if(std[0].num>std[1].num)
  352. { temp=std[0]; std[0]=std[1]; std[1]=temp; }
  353. if(std[0].num>std[2].num)
  354. { temp=std[0]; std[0]=std[2]; std[2]=temp; }
  355. if(std[1].num>std[2].num)
  356. { temp=std[1]; std[1]=std[2]; std[2]=temp; }
  357. }
  358. main()
  359. { PERSON std[ ]={ 5,"Zhanghu",2,"WangLi",6,"LinMin" };
  360. int i;
  361. /**********found**********/
  362. fun(___3___);
  363. printf("\nThe result is :\n");
  364. for(i=0; i<3; i++)
  365. printf("%d,%s\n",std[i].num,std[i].name);
  366. }
  367. 程序填空题(十三)
  368. 下列给定程序中,函数fun的功能是:在带头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,函数返回0值。
  369. 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
  370. 注意:不得增行或删行,也不得更改程序的结构!
  371. #include <stdio.h>
  372. #include <stdlib.h>
  373. #define N 8
  374. typedef struct list
  375. { int data;
  376. struct list *next;
  377. } SLIST;
  378. SLIST *creatlist(char *);
  379. void outlist(SLIST *);
  380. int fun( SLIST *h, char ch)
  381. { SLIST *p; int n=0;
  382. p=h->next;
  383. /**********found**********/
  384. while(p!=___1___)
  385. { n++;
  386. /**********found**********/
  387. if (p->data==ch) return ___2___;
  388. else p=p->next;
  389. }
  390. return 0;
  391. }
  392. main()
  393. { SLIST *head; int k; char ch;
  394. char a[N]={'m','p','g','a','w','x','r','d'};
  395. head=creatlist(a);
  396. outlist(head);
  397. printf("Enter a letter:");
  398. scanf("%c",&ch);
  399. /**********found**********/
  400. k=fun(___3___);
  401. if (k==0) printf("\nNot found!\n");
  402. else printf("The sequence number is : %d\n",k);
  403. }
  404. SLIST *creatlist(char *a)
  405. { SLIST *h,*p,*q; int i;
  406. h=p=(SLIST *)malloc(sizeof(SLIST));
  407. for(i=0; i<N; i++)
  408. { q=(SLIST *)malloc(sizeof(SLIST));
  409. q->data=a[i]; p->next=q; p=q;
  410. }
  411. p->next=0;
  412. return h;
  413. }
  414. void outlist(SLIST *h)
  415. { SLIST *p;
  416. p=h->next;
  417. if (p==NULL) printf("\nThe list is NULL!\n");
  418. else
  419. { printf("\nHead");
  420. do
  421. { printf("->%c",p->data); p=p->next; }
  422. while(p!=NULL);
  423. printf("->End\n");
  424. }
  425. }
  426. 程序填空题(十四)
  427. 给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。
  428. 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  429. 注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。
  430. #include <stdio.h>
  431. void fun(char *s, int a, double f)
  432. {
  433. /**********found**********/
  434. __1__ fp;
  435. char ch;
  436. fp = fopen("file1.txt", "w");
  437. fprintf(fp, "%s %d %f\n", s, a, f);
  438. fclose(fp);
  439. fp = fopen("file1.txt", "r");
  440. printf("\nThe result :\n");
  441. ch = fgetc(fp);
  442. /**********found**********/
  443. while (!feof(__2__))
  444. {
  445. /**********found**********/
  446. putchar(__3__);
  447. ch = fgetc(fp);
  448. }
  449. putchar('\n');
  450. fclose(fp);
  451. }
  452. main()
  453. { char a[10]="Hello!"; int b=12345;
  454. double c= 98.76;
  455. fun(a,b,c);
  456. }
  457. 程序填空题(十五)
  458. 下列给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回1,失败时返回0。在复制的过程中,把复制的内容输出到屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。
  459. 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。
  460. 注意:不得增行或删行,也不得更改程序的结构!
  461. #include <stdio.h>
  462. #include <stdlib.h>
  463. int fun(char *source, char *target)
  464. { FILE *fs,*ft; char ch;
  465. /**********found**********/
  466. if((fs=fopen(source, ___1___))==NULL)
  467. return 0;
  468. if((ft=fopen(target, "w"))==NULL)
  469. return 0;
  470. printf("\nThe data in file :\n");
  471. ch=fgetc(fs);
  472. /**********found**********/
  473. while(!feof(___2___))
  474. { putchar( ch );
  475. /**********found**********/
  476. fputc(ch,___3___);
  477. ch=fgetc(fs);
  478. }
  479. fclose(fs); fclose(ft);
  480. printf("\n");
  481. return 1;
  482. }
  483. main()
  484. { char sfname[20] ="myfile1",tfname[20]="myfile2";
  485. FILE *myf; int i; char c;
  486. myf=fopen(sfname,"w");
  487. printf("\nThe original data :\n");
  488. for(i=1; i<30; i++){ c='A'+rand()%25;fprintf(myf,"%c",c); printf("%c",c); }
  489. fclose(myf);printf("\n");
  490. if (fun(sfname, tfname)) printf("Succeed!");
  491. else printf("Fail!");
  492. }
  493. 程序填空题(十六)
  494. 给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。
  495. 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  496. 注意:不得增行或删行,也不得更改程序的结构!
  497. 试题程序:
  498. #include <stdlib.h>
  499. #include <stdio.h>
  500. #define N 20
  501. void fun(int *a)
  502. {
  503. int i, x, n=0;
  504. x=rand()%20;
  505. /**********found**********/
  506. while (n<__1__)
  507. { for(i=0; i<n; i++ )
  508. /**********found**********/
  509. if( x==a[i] )
  510. __2__;
  511. /**********found**********/
  512. if( i==__3__)
  513. {a[n]=x; n++; }
  514. x=rand()%20;
  515. }
  516. }
  517. main()
  518. {
  519. int x[N]={0} ,i;
  520. fun( x );
  521. printf("The result : \n");
  522. for( i=0; i<N; i++ )
  523. {
  524. printf("%4d",x[i]);
  525. if((i+1)%5==0)printf("\n");
  526. }
  527. printf("\n");
  528. }
  529. 程序填空题(十七)
  530. 给定程序的主函数中,已给出由结构体构成的链表结点a、b、c,各结点的数据域中均存入字符,函数fun()的作用是:将a、b、c三个结点链接成一个单向链表,并输出链表结点中的数据。
  531. 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  532. 注意:不得增行或删行,也不得更改程序的结构!
  533. 试题程序:
  534. #include <stdio.h>
  535. typedef struct list
  536. { char data;
  537. struct list *next;
  538. } Q;
  539. void fun( Q *pa, Q *pb, Q *pc)
  540. { Q *p;
  541. /**********found**********/
  542. pa->next=___1___;
  543. pb->next=pc;
  544. p=pa;
  545. while( p )
  546. {
  547. /**********found**********/
  548. printf(" %c",____2_____);
  549. /**********found**********/
  550. p=____3____;
  551. }
  552. printf("\n");
  553. }
  554. main()
  555. { Q a, b, c;
  556. a.data='E'; b.data='F'; c.data='G'; c.next=NULL;
  557. fun( &a, &b, &c );
  558. }
  559. 程序填空题(十八)
  560. 程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。
  561. 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  562. 注意:不得增行或删行,也不得更改程序的结构!
  563. 试题程序:
  564. #include <stdio.h>
  565. #define N 5
  566. typedef struct student {
  567. long sno;
  568. char name[10];
  569. float score[3];} STU;
  570. void fun(char *filename)
  571. {
  572. FILE *fp; int i, j;
  573. STU s[N], t;
  574. /**********found**********/
  575. fp=fopen(filename, __1__);
  576. fread(s,sizeof(STU),N,fp);
  577. fclose(fp);
  578. for (i=0; i<N-1; i++)
  579. for (j=i+1; j<N; j++)
  580. if (s[i].sno __2__ s[j].sno)
  581. {
  582. t = s[i]; s[i] = s[j]; s[j] = t;
  583. }
  584. fp=fopen(filename,"wb");
  585. /**********found**********/
  586. __3__(s, sizeof(STU), N, fp);
  587. fclose(fp);
  588. }
  589. main()
  590. { STU t[N]={ {10005,"ZhangSan", 95, 80, 88}, {10003,"LiSi", 85, 70, 78},{10002,"CaoKai", 75, 60, 88}, {10004,"FangFang", 90, 82, 87},{10001,"MaChao", 91, 92, 77}}, ss[N];
  591. int i,j; FILE *fp;
  592. fp = fopen("student.dat", "wb");
  593. fwrite(t, sizeof(STU), 5, fp);
  594. fclose(fp);
  595. printf("\nThe original data :\n");
  596. for (j=0; j<N; j++)
  597. { printf("\nNo: %ld Name: %-8s Scores: ",t[j].sno, t[j].name);
  598. for (i=0; i<3; i++) printf("%6.2f ", t[j].score[i]);
  599. printf("\n");
  600. }
  601. fun("student.dat");
  602. printf("\nThe data after sorting :\n");
  603. fp = fopen("student.dat", "rb");
  604. fread(ss, sizeof(STU), 5, fp);
  605. fclose(fp);
  606. for (j=0; j<N; j++)
  607. { printf("\nNo: %ld Name: %-8s Scores: ",ss[j].sno, ss[j].name);
  608. for (i=0; i<3; i++) printf("%6.2f ", ss[j].score[i]);
  609. printf("\n");
  610. }
  611. }
  612. 程序填空题(十九)
  613. 函数fun的功能是:在有n个元素的结构体数组std中,查找有不及格科目的学生,找到后输出学生的学号;函数的返回值是有不及格科目的学生人数。
  614. 例如,主函数中给出了4名学生的数据,则程序运行的结果为:
  615. 学号:N1002 学号:N1006
  616. 共有2位学生有不及格科目
  617. 请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。
  618. 注意:不得增行或删行,也不得更改程序的结构!
  619. 试题程序:
  620. #include <stdio.h>
  621. typedef struct
  622. { char num[8];
  623. double score[2];
  624. /**********found**********/
  625. } __(1)__ ;
  626. int fun(STU std[ ], int n)
  627. { int i, k=0;
  628. for(i=0; i<n; i++)
  629. /**********found**********/
  630. if( std[i].score[0]<60__(2)__std[i].score[1]<60 )
  631. { k++;printf("学号:%s ",std[i].num);}
  632. /**********found**********/
  633. return __(3)__ ;
  634. }
  635. main()
  636. { STU std[4]={ "N1001", 76.5,82.0 ,"N1002", 53.5,73.0,
  637. "N1005", 80.5,66.0,"N1006", 81.0,56.0 };
  638. printf( "\n共有%d位学生有不及格科目\n" , fun(std,4) );
  639. }
  640. 程序填空题(二十)
  641. 用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数;依此类推,直到所找的下一个数等于n为止。这样会得到一个序列:2,3,5,7,11,13,17,19,23,…
  642. 函数fun的作用是:用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。
  643. 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
  644. 注意:不得增行或删行,也不得更改程序的结构!
  645. 试题程序:
  646. #include <stdio.h>
  647. int fun(int n)
  648. { int a[10000], i,j, count=0;
  649. for (i=2; i<=n; i++) a[i] = i;
  650. i = 2;
  651. while (i<n)
  652. {
  653. /**********found**********/
  654. for (j=a[i]*2; j<=n; j+=___1___)
  655. a[j] = 0;
  656. i++;
  657. /**********found**********/
  658. while (___2___==0)
  659. i++;
  660. }
  661. printf("\nThe prime number between 2 to %d\n", n);
  662. for (i=2; i<=n; i++)
  663. /**********found**********/
  664. if (a[i]!=___3___)
  665. { count++;
  666. printf( count%15?"%5d":"\n%5d",a[i]);
  667. }
  668. return count;
  669. }
  670. main()
  671. { int n=20, r;
  672. r = fun(n);
  673. printf("\nThe number of prime is : %d\n", r);
  674. }