C語言編程文庫所有題答案_第1頁
C語言編程文庫所有題答案_第2頁
C語言編程文庫所有題答案_第3頁
C語言編程文庫所有題答案_第4頁
C語言編程文庫所有題答案_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、/*編寫一程序P3-311.C實現(xiàn)以下功能從鍵盤上先后讀入兩個字符串,假定存儲在字符數(shù)組s1和s2中。注意,這兩個字符串最長均可達到127個字符、最短均可為0個字符。將字符串s2插入字符串s1中,插入方法為:s2的第i個字符插入到原s1的第i個字符后,如果s2比s1(假定s1的長度為L1)長,則s2的第L1個字符開始到s2結(jié)尾的所有字符按在s2中的順序放在新生成的s1后。提示,合并時可使用中間數(shù)組。例如: s1輸入為"123456789",S2輸入為"abcdefghijk",則輸出的s1為: 1a2b3c4d5e6f7g8h9ijk在屏幕上輸出新生成的

2、s1。程序的運行效果應(yīng)類似地如圖1所示,其中的123456789和abcdefghijk是從鍵盤輸入的內(nèi)容。*/#include<stdio.h>#include<string.h>int main(void)char str1127, str2127;int i, tem;int len1 = 0, len2 = 0;printf("please input string1:");gets(str1);printf("Please input string2:");gets(str2);len1 = strlen(str1);l

3、en2 = strlen(str2);if (len1 > len2)tem = len1;printf("nstring1:");for (i = 0; i < tem; i+)printf("%c", str1i);if (i < len2)printf("%c", str2i);elsetem = len2;printf("nstring1:");for (i = 0; i < tem; i+)if (i < len1)printf("%c", str1i);

4、printf("%c", str2i);printf("n");return 0;/*編寫一程序P4-412.C實現(xiàn)以下功能程序運行時先顯示Please input numbers:,再從鍵盤上讀入一組整數(shù)(只考慮int型),數(shù)與數(shù)之間只使用空格或回車作分隔。數(shù)可正可負,最多10000個,但若讀入的數(shù)為-222時,則表示輸入結(jié)束且-222不算在該組數(shù)內(nèi)。對這一組數(shù)按從小到大的順序進行排序。將排序后的這一組數(shù)輸出到屏幕上,輸出格式為每行6個數(shù),數(shù)與數(shù)之間使用逗號(,)分隔,兩個逗號之間的寬度(不算逗號)為6且使用左對齊格式。注意,行尾沒有逗號。程序的運行效

5、果應(yīng)類似地如圖1所示,其中的100 120 89 72 -19 200 500 210 235 6 24 1234 78 234 -234 -2342 346 23524 7823 -3411 23423 -222是從鍵盤輸入的內(nèi)容。*/#include <stdio.h>int main(void)int dat10000, len;int i, j, tmp;printf("Please input numbers:");len = 0;doscanf("%d", &i);if ( i = -222)break;datlen =

6、i;len+; while (1);for ( i = 0 ; i < len - 1; i+)for ( j = i + 1; j < len ; j+)if ( dati > datj )tmp = dati;dati = datj;datj = tmp;printf("nOutput:n");for (i = 0; i < len; i+)printf("%-6d", dati);if ( i % 6 != 5 && i != len - 1)printf(",");elseprintf(

7、"n");return 0;/*編寫一程序P7-719.C實現(xiàn)以下功能從鍵盤上輸入5個字符串(約定:每個字符串中字符數(shù)80字節(jié)),對其進行升序排序并輸出。編程可用素材:printf("Input 5 strings:n").、printf("-n").。程序的運行效果應(yīng)類似地如圖1所示,圖1中的 hello my dear friend Are you ready?是從鍵盤輸入的內(nèi)容。*/#include<stdio.h>#include<string.h>int main(void)char aa590, k

8、k5 90;int i, j;printf("input 5 stringn");for (i = 0; i < 5; i+)gets(aai);for (i = 0; i < 4; i+)for (j = 0; j < 4 - i; j+)if (strcmp(aaj, aaj + 1) > 0) strcpy(kkj, aaj);strcpy(aaj, aaj + 1);strcpy(aaj + 1, kkj);printf("-n");for (i = 0; i < 5; i+)puts(aai);return(0);

9、/*根據(jù)要求編寫程序P7-761.C的指定部分:程序P7-761.C已編寫部分代碼(單擊此處下載),請根據(jù)程序中的要求編寫函數(shù)Move的代碼注意,除指定位置外,不能對程序中已有部分作任何修改或重新編寫一個程序,否則作0分處理。函數(shù)void move(int array, int n, int m)的功能為:在數(shù)組array中有n個整數(shù),使其前面各數(shù)順序向后移m(0<=m<=n)個位置,最后m個數(shù)變成最前面的m個數(shù),編寫該函數(shù)。程序的運行效果應(yīng)類似地如圖1所示,圖1中的10、3和1 2 3 4 5 6 7 8 9 10是從鍵盤輸入的內(nèi)容。*/*P7-761*.C/#include &

10、lt;stdio.h>#include <stdlib.h>/* User Code Begin(考生可在本行后添加代碼,例如全局變量的定義、函數(shù)原型聲明等,行數(shù)不限) */void move(int array, int n, int m);/* User Code End(考生添加代碼結(jié)束) */int main(void)int *number, n, m, i;printf("the total numbers is:");scanf("%d", &n);printf("back m:");scanf

11、("%d", &m);number = (int *)malloc(n * sizeof(int);printf("input %d integers:", n);for (i=0; i<n; i+)scanf("%d", &numberi);move(number, n, m);printf("after move %d: n", m);for (i=0; i<n; i+)printf("%d ", numberi);printf("n");re

12、turn 0;/* User Code Begin(考生在此后根據(jù)設(shè)計需要完成程序的其它部分,如函數(shù)move,行數(shù)不限) */void move(int array, int n, int m)int i = 0, flag = m;int *shuzu;shuzu = (int *)malloc(n * sizeof(int);for (i = 0; i < n; i+)shuzui = arrayi;for (i = 0; i < n; i+)if (i < flag)arrayi = shuzun - m;m-;elsearrayi = shuzui - flag;/*

13、根據(jù)要求編寫程序P7-765.C的指定部分:程序P7-765.C已編寫部分代碼(單擊此處下載),請根據(jù)程序中的要求完善程序注意,除指定位置外,不能對程序中已有部分作任何修改或重新編寫一個程序,否則作0分處理。程序的功能是:有五個學生,每個學生的數(shù)據(jù)包括學號、姓名(最長19字節(jié))、三門課的成績,從鍵盤輸入五個學生的數(shù)據(jù),計算每個學生的平均成績并按平均成績由高到低排序,并將排序結(jié)果顯示。要求用結(jié)構(gòu)體編程,變量數(shù)據(jù)類型的選擇應(yīng)適當,在保證滿足設(shè)計要求精度的情況下,養(yǎng)成不浪費內(nèi)存空間和計算時間的好習慣。編程可用素材:printf("Please input info of students:

14、No Name Math English Computern").。程序的運行效果應(yīng)類似地如圖1所示,圖1中的:2001 wanghai 78 83 902003 zhangzhong 82 80 982005 liumei 95 81 902006 sunqian 70 77 902009 jiansansa 63 87 90是從鍵盤輸入的內(nèi)容。*/#include <stdio.h>#include <stdlib.h>/* User Code Begin(考生可在本行后添加代碼,行數(shù)不限) */struct STUDENTint num;char nam

15、e20;int math;int english;int computer;float average;typedef struct STUDENT STUDENT;/* User Code End(考生添加代碼結(jié)束) */int main(void)STUDENT myclass5, *pStu = myclass;int i;const int N = 5;/* User Code Begin(考生可在本行后添加代碼,行數(shù)不限) */int j , n = 0;STUDENT myclass11;printf("Please input info of students:No N

16、ame Math English Computern");for (i = 0 ; i < 5 ; i+)printf("%d:" , i+1);scanf("%d" , &myclassi.num);scanf("%s" , );scanf("%d" , &myclassi.math);scanf("%d" , &myclassi.english);scanf("%d" , &

17、puter);for (i = 0 ; i < 5 ; i+)myclassi.average = (float)(myclassi.math + myclassi.english + puter) / 3.0);for (i = 0 ; i < 4 ; i+)for (j = 0; j < 4-i ; j+)if (myclassj+1.average > myclassj.average)myclass1n = myclassj+1;myclassj+1 = myclassj;myclassj = myclass1n;/* User Code

18、 End(考生添加代碼結(jié)束) */printf("nResult of sort:n");printf("Num Name Math English Computer Averagen");for (i=0; i<N; i+)printf("%-5d %-20s %-8d %-8d %-8d %-.2fn", (pStu+i)->num, (pStu+i)->name,(pStu+i)->math, (pStu+i)->english, (pStu+i)->computer, (pStu+i)-&g

19、t;average);return 0;/*根據(jù)要求編寫程序P7-768.C的指定部分:程序P7-768.C已編寫部分代碼(單擊此處下載),請根據(jù)程序中的要求完善程序注意,除指定位置外,不能對程序中已有部分作任何修改或重新編寫一個程序,否則作0分處理。程序的功能是:將從鍵盤讀入的一個十六進制字符串轉(zhuǎn)換成一個十進制數(shù)后輸出。注意:(1)可以只考慮轉(zhuǎn)換成的十進制大小不會超過long int型所能表示的最大數(shù)。(2)只需處理正數(shù),不處理負數(shù)。(3)輸入的字母可以是大寫也可以小寫。(4)程序中不能使用庫函數(shù)isxdigit、sscanf或使用同名的變量、函數(shù)、單詞。程序的運行效果應(yīng)類似地如圖1、圖2和

20、圖3所示,圖1中的7fAa23Bf、圖2中的12F和圖3中的39fg是從鍵盤輸入的內(nèi)容。*/*P7-768.C*/#include<stdio.h>/* User Code Begin(考生可在本行后添加代碼,例如全局變量的定義、函數(shù)原型聲明等,行數(shù)不限) */#include <string.h>int i, sw, wei, len;/* User Code End(考生添加代碼結(jié)束) */int main(void)int flag; /* 標志輸入數(shù)據(jù)是否合法,0表示不合法 */long int result10; /* 轉(zhuǎn)換結(jié)果 */char str20;pr

21、intf("input a data:");gets(str);/* User Code Begin(考生可在本行后添加代碼,行數(shù)不限) */result10 = 0;flag = 1;wei = 1;len = strlen(str) - 1;for (i = 0; i <= len; i+)if (i != 0)wei = wei * 16;if (strlen - i >= '0' && strlen - i <= '9')sw = (strlen - i - '0') * wei);r

22、esult10 = result10 + sw;else if (strlen - i >= 'A' && strlen - i <= 'F')sw = (strlen - i - 'A' + 10) * wei);result10 = result10 + sw;else if (strlen - i >= 'a' && strlen - i <= 'f')sw = (strlen - i - 'a' + 10) * wei);result1

23、0 = result10 + sw;elseflag = 0;break;/* User Code End(考生添加代碼結(jié)束) */if (0 = flag)printf("ndata is error.n");elseprintf("nThe result is: %ldn", result10);return 0;/*編寫一程序P7-769.C實現(xiàn)以下功能輸出m和n之間的回文素數(shù),m和n從鍵盤讀入(假定滿足5<=m<=n<=100000),回文是指正向與反向的字符都一樣,例如1、11、101、131等。編程可用素材:printf(&

24、quot;please input m, n(5<=m<=n<=100000): ").、printf("Result(%d-%d):n".、printf("%d ".。程序的運行效果應(yīng)類似地如圖1所示,圖1中的5,1000是從鍵盤輸入的內(nèi)容。*/#include <stdio.h>int main(void)int m, n;int i, j, k, x, num, wei6;printf("please input m, n(5<=m<=n<=100000): ");sca

25、nf("%d,%d", &m, &n);printf("Result(%d-%d):n", m, n);for (i=m; i<=n; i+)for (x=2; x<i/2; x+)if (i%x = 0)break;if (x >= i/2)num = i;j = 0;while (num)weij = num % 10;j+;num = num / 10;for (k=0; k<j/2; k+)if (weik != weij-1-k)break;if (k >= j/2)printf("%d

26、", i);printf("n");return 0;/*編寫一程序P7-772.C實現(xiàn)以下功能對從鍵盤輸入的一行字符(約定:字符數(shù)127字節(jié))進行排序(按每個字符的ASCII碼由小到大)并輸出。注意:程序中不能使用庫函數(shù)gets、fgets或使用同名的變量、函數(shù)、單詞,編程可用素材:printf("input the string: n").、printf("nResult:").。程序的運行效果應(yīng)類似地如圖1所示,圖1中的32679 dsg j7u6k dsvs346r23v5h#sfsaf是從鍵盤輸入的內(nèi)容。*/#in

27、clude<stdio.h>#include<string.h>int main(void)int i, j, tt;char tem, sr128;printf("input the string: n");for (i = 0; i < 127; i+)scanf("%c", &sri);if (sri = 'n')tt = i;break;/puts(sr);for (i = 0; i < tt - 2; i+)for (j = 0; j < tt - i - 1; j+)if (s

28、rj > srj + 1)tem = srj;srj = srj + 1;srj + 1 = tem;printf("nResult:");for (i = 0; i < tt; i+) printf("%c", sri);printf("n");return 0;/*編寫一程序P7-773.C實現(xiàn)以下功能計算兩個日期之間的天數(shù)。注:判斷年份是否為閏年的方法為400的倍數(shù)為閏年,如2000年;若非100的倍數(shù),而是4的倍數(shù),為閏年,如1996年。編程可用素材:printf("from the date (*/*/

29、*):n").、printf("to the date(*/*/*):n")、printf("nsum=%dn".。程序的運行效果應(yīng)類似地如圖1和圖2所示,圖1中的2008/02/13、2010/04/24和圖2中的2010/04/24、2008/02/13是從鍵盤輸入的內(nèi)容。*/#include<stdio.h>int panduan(unsigned int y); /對是否為閏年判斷int main(void)int x1, x2, x3, x4, x5, x6, y, y1, y2, M1,M2, m, m1, m2, dd

30、, d1, d2, D1, D2, sum, Tt, k;sum = 0;printf("from the date (*/*/*):n");scanf("%d/%d/%d", &x1, &x2, &x3);printf("to the date(*/*/*):n");scanf("%d/%d/%d", &x4, &x5, &x6);if (x1 < x4)y1 = x1;m1 = x2;d1 = x3;y2 = x4;m2 = x5;d2 = x6;else

31、if (x1 > x4)y1 = x4;m1 = x5;d1 = x6;y2 = x1;m2 = x2;d2 = x3;else if ( x2 < x5)y1 = x1;m1 = x2;d1 = x3;y2 = x4;m2 = x5;d2 = x6;else if (x2 > x5)y1 = x4;m1 = x5;d1 = x6;y2 = x1;m2 = x2;d2 = x3;else sum = x3 - x6;if (sum < 0)sum = -sum;sum = sum + 1;goto end;/使得y1,m2,d1為年份小的對應(yīng),如果年月相同則到后面直接相

32、減結(jié)束D1 = d1;M1 = m1; /初始到要加的第一月的第一天for (y = y1; y <= y2; y+) /從年份開始計算k = panduan(y); /判斷年份是否為閏年是則k=1;否則為0.if (y = y2)M2 = m2;elseM2 = 12;/從較小的年份的開始月的哪天累加。如果不是第一年則,從1月1日累加。如果最后一年則只加到最后一天。for (m = M1; m <= M2; m+) /從每個月開始計算if (m = 1 | m = 3 | m = 5 | m = 7 | m = 8 | m = 10 | m = 11)Tt = 31;else i

33、f (m = 2)if ( k = 1)Tt = 29;else Tt = 28;elseTt = 30; /判斷每個月的具體天數(shù)if ( y = y2 && m = m2)D2 = d2;elseD2 = Tt;for ( dd = D1; dd <= D2; dd+) /對每天進行累加sum+;D1 = 1;M1 = 1; /到第二年則從一月一日開始end: printf("sum=%dn", sum - 1);return 0;int panduan(unsigned int y)int k;if (y%4 = 0)if (y % 100 = 0

34、)if (y % 400 = 0)k = 1;elsek = 0;elsek = 1;elsek = 0;return k;6/*編寫一程序P3-313.C實現(xiàn)以下功能求任意的一個m×n矩陣的鞍點鞍點是指該位置上的元素在該行上為最大、在該列上為最小,矩陣中可能沒有鞍點,但最多只有一個鞍點。m、n(2<=m<=20、2<=n<=20)及矩陣元素從鍵盤輸入(只考慮int型和每行、每列中沒有并列最大最小的情況)。編程可用素材:printf("Please input m and n:").、printf("Please input a

35、juZhen(. hang, . lie):n.、printf("nmei you an dian.n").、printf("nyou an dian, wei: juZhen.=.n.。程序的運行效果應(yīng)類似地如圖1和圖2所示,圖1中的5 6和31 42 36 74 2358 8832 57 37 43 47 144797 51 257 7 445 45933 65 44 3 425 4368 3425 82 789 123 2134及圖2中的5 6和31 42 1136 74 2358 8832 57 4137 43 47 144797 51 1257 7 44

36、5 45933 65 744 3 425 4368 3425 2182 789 123 2134是從鍵盤輸入的內(nèi)容。*/#include <stdio.h>#define M 20#define N 20int main(void)int i, j, k, max, maxj, flag2 = 0, flag1;int aaMN, m, n;printf("Please input m and n:");scanf("%d%d", &m, &n);for (i=0; i<m; i+)for (j=0; j<n; j

37、+)scanf("%d", &aaij);for (i=0; i<m; i+)max = aai0;for (j=1; j<n; j+)/*找第i行最大*/if (aaij > max)max = aaij;maxj = j;for (k=0, flag1=1; k<m && flag1; k+)/*flag1作為行中的最大值是否就是鞍點的標志*/if (max > aakmaxj)/*判斷行中的最大值是否也是列中的是大值*/flag1 = 0;if (flag1) printf("nyou an dian,

38、wei: a%d%d=%dn", i, maxj, max);flag2 = 1;/*flag2作為是否有鞍點的標志*/if (!flag2)printf("nmei you an dian.n");return 0;/*編寫一程序P3-315.C實現(xiàn)以下功能程序運行時,先從鍵盤輸入一個文本文件的文件名(約定:字符數(shù)127字節(jié),可含路徑)和一個字符串(約定:字符數(shù)20字節(jié),其中不含空格、TAB等,后面稱之為Str),再在屏幕上顯示該文件的內(nèi)容。要求顯示完內(nèi)容后,在屏幕上輸出文件的行數(shù)(行之間以n為分隔、每行的長度不定但均200個字節(jié))、字符串Str在文件中第1次出

39、現(xiàn)的行號和最后一次出現(xiàn)的行號(查找時不分區(qū)大小寫、不跨行查找,若未找到,則行號顯示為-1)。注意,程序中不能使用庫函數(shù)fgets或使用同名的變量、函數(shù)、單詞,行的編號從1開始計。單擊此處下載程序運行時測試用的文件315.txt。編程可用素材:printf("input the file's name and the string: ").、printf("nfile open error!").、printf("-File content:-n").、printf("n-File summary:-n").

40、、printf(". lines, first line: ., last line: .n".。程序的運行效果應(yīng)類似地如圖1所示,圖1中的“input the file's name and the string: C:Temp315.txt Value”中的“C:Temp315.txt Value”是從鍵盤輸入的內(nèi)容(“C:Temp315.txt”是文件名,“Value”是需查找的字符串)。圖1中的“11 lines, first line: 6, last line: 11”表示文件一共有11行,字符串“Value”在文件中第一次出現(xiàn)的行號為6、最后一次出現(xiàn)的

41、行號為11。*/#include <stdio.h>#include <stdlib.h>#include <string.h>int main(void)char filename128, str21, hang200, ch;FILE *fp;int sum = 0, i = 0, first = -1, last = -1;printf("input the file's name and the string: ");scanf("%s %s", filename, str);printf("

42、-File content:-n");fp=fopen(filename, "r");if (fp = NULL)/* 打開文件 */printf("cannot open file!n");exit(1);while (!feof(fp)ch = fgetc(fp);if (ch = 'n' | ch = EOF | i = 199)sum+;hangi = '0'putchar('n');i = 0;if (strstr(strupr(hang), strupr(str)if (first =

43、 -1)first = sum;last = sum;elsehangi = ch;putchar(ch);i+;printf("-File summary:-n");printf("%d lines, first line: %d, last line: %dn", sum, first, last);fclose(fp);return 0;/*根據(jù)要求編寫程序P3-316.C的指定部分:程序P3-316.C已編寫部分代碼(單擊此處下載),請根據(jù)程序中的要求編寫相應(yīng)部分的代碼注意,除指定位置外,不能對程序中已有部分作任何修改或重新編寫一個程序,否則作0

44、分處理。程序的運行效果應(yīng)類似地如圖1所示,圖1中每行“:”后的內(nèi)容#af2346asfkl7123vdsg#sdfe3gerg67823;632235235562vrweggsd124kl63g512jk57463sdgkdlgh45657478358756235135fwesdvg#safsa均為從鍵盤輸入的內(nèi)容,注意,在“input string-2:”處輸入時直接按了回車鍵,這是題目所允許的。*/#include<stdio.h>#include<string.h>/* GetString的功能是從鍵盤讀入最多n個字符(遇到由endFlag指定的字符或回車則結(jié)束讀

45、并且該字符和回車均視為有效字符)存放在buf所指向的內(nèi)存中并加上字符串結(jié)束符0函數(shù)返回值為讀入的字符個數(shù) */int GetString(char *buf, char endFlag, int n);/* CompDigit 的功能是分別統(tǒng)計指針s1、s2、s3、s4所指向的字符串中數(shù)字字符的個數(shù),將包含最多數(shù)字字符(不考慮存在包含相同個數(shù)數(shù)字字符的情況)的字符串的長度放在指針mLen所指向的內(nèi)存單元中,并通過函數(shù)返回值返回該字符串中第1個數(shù)字字符的地址 */char *CompDigit(char *s1, char *s2, char *s3, char *s4, int *mLen);

46、/* clearRestInput的功能是將前一次讀字符后到回車(含回車)之間的字符廢棄 */void clearRestInput(char lastInput);int main(void)char str430, strM30, endChar, lastChar;int totalLen = 0, maxLen = -1, i;const int N = 29;printf("ninput endFlag char: ");scanf("%c", &endChar);for (i=0, lastChar=endChar; i<4; i+)clearRestInput(lastChar);printf("input string-%d: ", i+1);totalLen += GetString(stri, endChar, N);lastChar = stristrlen(str

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論