else{ p2->next = p1 ; p2 = p1 ; } k++; }
p2->next = head ; p1 = head->next ; p1 = p1->next ; for ( j=1 ; j <= k ; j++){
printf(\ p1 = p1->next ; } }
四、程序填空题(每空 2 分,共 20 分)
1.输入10个点的坐标(设坐标为整数值), 输出距原点最远的点(设唯一)的坐标及该点距原点的距离. #include
int x, y; float length; } point[10]; int k, sub=0;
for(k = 0; k <10; k++){
scanf(\ point[k].length = (1) }
for(k=1; k<10; k++)
if( (2) ) (3)
printf(\}
2.将输入的 n 个字符串连接成1个字符串 , 然后输出该字符串. #include
{ char str[10][20], string[200]; int k, n;
scanf(\
for (k=0; k for (k=1; k 3.函数 xtoi 的功能是将放在字符串中的十六进制数(可以出现‘0‘~‘9‘、‘a‘~‘f)转换成十进制整数。例如:调用 xtoi(\将返回31。 xtoi( (6) ) { int k, d=0; for(k=0; s[k] == ‘ ‘ || s[k] == ‘\\t‘; k++); while(s[k] >= ‘0‘ && s[k] <= ‘9‘ || s[k] >= ‘a‘ && s[k] <= ‘f‘ ){ 35 if (s[k] >= '0' && s[k] <= '9') (7) if (s[k] >= 'a' && s[k] <= 'f') (8) k++; } return d; } 4.函数month_day(year, yearday, &month, &day) 的功能是将给定的某年第几天转换为相应的月和日。例如:调用month_day(1988, 60, &m, &d) 后,m 的值是2, d 的值是29(即1988年的第60天是1988年2月29日)。判别闰年的条件:能被4整除但不能被100整除或能被400整除。 void month_day(int year, int yearday, int *pmonth, int *pday) { static int day_tab[2][13]={ {0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}}; int k, leap; leap = year % 4==0 && year % 100 != 0 || year % 400 == 0; for(k=1; yearday > day_tab[leap][k]; k++) (9) *pmonth = (10) *pday = yearday; } 五、程序设计题 (共16分) 1.[程序说明] (5分) 请编写函数 sum_fact(number),返回number 的因子之和。(能整除number的数就是它的因子,number定义为int) 例如sum_fact(6) = 12 (因为1, 2, 3, 6是6的因子) 2.[程序说明] (11分) 文本文件 input.txt 中存放了一批整数,将其中每个数的因子之和顺序写入文件 output.txt。 ( 必须调用第1小题中定义的函数 sum_fact(number) 计算 number 的因子之和 ) 例:若文件 input.txt 中存放了1, 2, 6 ,则每个数的因子之和分别是 1 3 12 ,它们被写入文件output.txt。 综合练习答案 一、判断题 题号 答案 题号 题号 题号 题号 题号 36 1 √ 11 21 31 41 51 2 √ 12 × 22 × 32 × 42 × 52 × 3 × 13 × 23 √ 33 × 43 √ 53 √ 4 √ 14 √ 24 √ 34 √ 44 √ 54 √ 5 × 15 √ 25 √ 35 √ 45 √ 55 √ 6 × 16 × 26 × 36 × 46 × 56 × 7 × 17 × 27 √ 37 √ 47 √ 57 √ 8 √ 18 √ 28 × 38 × 48 × 58 × 9 √ 19 √ 29 √ 39 × 49 × 59 × 10 × 20 × 30 × 40 √ 50 √ 60 √ 答案 √ 答案 × 答案 √ 答案 × 答案 × 二、选择题 题号 1 2 3 4 5 6 7 8 9 10 答案 A B A A C D B A B A 题号 11 12 13 14 15 16 17 18 19 20 答案 B A D D D A A D D B 题号 21 22 23 24 25 26 27 28 29 30 答案 A B A D C B B B A C 题号 31 32 33 34 35 36 37 38 39 40 答案 A C B B C C B B B C 题号 41 42 43 44 45 46 47 48 49 50 答案 A C A B D A B B A B 题号 51 52 53 54 55 56 57 58 59 60 答案 B A D D B B A A C D 题号 61 62 63 64 65 66 67 68 69 70 答案 A C A C A D C A D D 题号 71 72 73 74 75 76 77 78 79 80 答案 A B C C A D B C C D 题号 81 82 83 84 85 86 87 88 89 90 答案 B C B D D C C A A C 题号 91 92 93 94 95 96 97 98 99 100 答案 A D C D A A D B A C 题号 101 102 103 104 105 106 107 108 109 110 答案 C D C A B C D B C C 题号 111 112 113 114 115 116 117 118 119 120 答案 C D A D B D D A B A 三、写输出结果 题号 1 2 3 4 5 6 7 8 9 10 答案 1 0 0 12 3 ### 0 11 5 U 题号 11 12 13 14 15 16 17 18 19 20 答案 0 1 6 10 4 *** 1 13 4 7 题号 21 22 23 24 25 26 27 28 29 30 答案 2.4 0 1 10 3 1 0 35 10 dow 题号 31 32 33 34 35 36 37 38 39 40 答案 1 -1 2 3 1 2 -1 0 5 5 题号 41 42 43 44 45 46 47 48 49 50 答案 1 -128 4 15 2 0 -1 0 2 2 题号 51 52 53 54 55 56 57 58 59 60 答案 10 255 0 43 6 10 -1 -1 6 6 四、阅读下列程序,写出输出结果 1、 3# 7、 2,1#3,2# 13、 4,1,5#2,4,5# 19、 2#3#4#5# 25、150 2、3# 8、2,3#3,5# 14、 3,2,5#3,3,4# 20、 -19# 26、 58 3、0# 9、1#2#3#4# 15、 4,3,8,9# 21、 128 27、 10 4、5# 10、 6,3#1,3# 16、 0,10#10,10# 22、 18#21#26# 28、 14 5、6# 11、11,1#12,3# 17、 -1,3,2,1# 23、 25# 29、 TA 37 6、4# 12、-4,12#2,13# 18、 3,2,1,6# 24、 I 0m 0 st4d1nt. 30、 16 五. 编程序 1. strcmp(char * s1, char * s2 ) { for(; *s1!= ‘\\0‘ ; ++s1, ++s2) if (*s1!= *s2) break; return (*s1-*s2); } 2. #include { int a[SIZE][SIZE], m,n, sum1, sum2; for(m=0;m for(n=0;n for(m=0;m sum2=sum2+ a[m][SIZE-m-1]; } printf(\ } 3. #include \ void main() { int k,count,n,r[10]; scanf(\ for(k=0;k for (k=1;k if (r[k] 4. #include \ void main() { int x,k,sub,count,n,r[10]; scanf(\ for(k=0;k scanf(\ scanf(\ sub=count=0; for (k=0;k if (x==r[k]) count++; for (k=0;k sub=k; break ; } 38 printf(\ if (count>0) printf(\ } 5. #include \ void main() { int x,k,minsub,n,a[10],temp; scanf(\ for(k=0;k for (k=0;k if (a[minsub]>a[k]) minsub=k ; temp=a[0]; a[0]=a[minsub] ; a[minsub]=temp ; for(k=0;k printf(\ } 6. #include \ void main() { int x,k,maxsub,n,a[10],temp; scanf(\ for(k=0;k scanf(\ maxsub=0; for (k=0;k if (a[maxsub] a[n-1]=a[maxsub] ; a[maxsub]=temp ; for(k=0;k printf(\} 7. #include char ch; int count=0; if((fp=fopen(\ printf(\不能打开文件data.txt!\\n\ exit(0); } while((ch=fgetc(fp))!=EOF) if(ch==‘$‘) count++; printf(\ fclose (fp); } 39