C語(yǔ)言練習(xí)考研復(fù)習(xí)題_第1頁(yè)
C語(yǔ)言練習(xí)考研復(fù)習(xí)題_第2頁(yè)
C語(yǔ)言練習(xí)考研復(fù)習(xí)題_第3頁(yè)
C語(yǔ)言練習(xí)考研復(fù)習(xí)題_第4頁(yè)
C語(yǔ)言練習(xí)考研復(fù)習(xí)題_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1. 編寫一個(gè)程序?qū)⒂脩糨斎氲恼麛?shù)轉(zhuǎn)化為對(duì)應(yīng)的二進(jìn)制數(shù)。#include<stdio.h>#include <stdlib.h>int main()int num;printf("請(qǐng)輸入一個(gè)正整數(shù):");scanf("%d", &num);/異常輸入直接結(jié)束if (num < 0)printf("輸入錯(cuò)誤!");exit(0);/將num和2進(jìn)行取余運(yùn)算,存儲(chǔ)在數(shù)組中int a20, i = 0;while (num != 0)ai = num % 2;num = num / 2;i+;/遍歷輸

2、出數(shù)組while (i > 0)printf("%d", a-i);printf("n");return 0;2. 請(qǐng)寫出你所了解的linux系統(tǒng)中常用的命令并解釋其功能。(1)pwd命令 該命令的英文解釋為print working directory(打印工作目錄)。輸入pwd命令,Linux會(huì)輸出當(dāng)前目錄。 (2) cd命令 cd命令用來(lái)改變所在目錄。 cd / 轉(zhuǎn)到根目錄中 cd 轉(zhuǎn)到/home/user用戶目錄下 cd /usr 轉(zhuǎn)到根目錄下的usr目錄中-絕對(duì)路徑 cd test 轉(zhuǎn)到當(dāng)前目錄下的test子目錄中-相對(duì)路徑(3)ls命令

3、 ls命令用來(lái)查看目錄的內(nèi)容。 選項(xiàng) 含義 -a 列舉目錄中的全部文件,包括隱藏文件 -l 列舉目錄中的細(xì)節(jié),包括權(quán)限、所有者、組群、大小、創(chuàng)建日期、文件是否是鏈接等 -f 列舉的文件顯示文件類型 -r 逆向,從后向前地列舉目錄中內(nèi)容 -R 遞歸,該選項(xiàng)遞歸地列舉當(dāng)前目錄下所有子目錄內(nèi)的內(nèi)容 -s 大小,按文件大小排序 -h 以人類可讀的方式顯示文件的大小,如用K、M、G作單位 ls -l examples.doc 列舉文件examples.doc的所有信息 (4) cat命令 cat命令可以用來(lái)合并文件,也可以用來(lái)在屏幕上顯示整個(gè)文件的內(nèi)容。 cat snow.txt 該命令顯示文件snow

4、.txt的內(nèi)容,ctrl+D退出cat。 (5)grep命令 grep命令的最大功能是在一堆文件中查找一個(gè)特定的字符串。 grep money test.txt 以上命令在test.txt中查找money這個(gè)字符串,grep查找是區(qū)分大小寫的。 (6) touch命令 touch命令用來(lái)創(chuàng)建新文件,他可以創(chuàng)建一個(gè)空白的文件,可以在其中添加文本和數(shù)據(jù)。 touch newfile 該命令創(chuàng)建一個(gè)名為newfile的空白文件。 (7)cp命令 cp命令用來(lái)拷貝文件,要復(fù)制文件,輸入命令: cp <source filename> <target filename> cp t

5、.txt Document/t 該命令將把文件t.txt復(fù)制到Document目錄下,并命名為t。 3. 編寫一個(gè)程序計(jì)算任一輸入數(shù)字的各位數(shù)字之和。#include<stdio.h>#include <stdlib.h>int main()int num;printf("請(qǐng)輸入一個(gè)正整數(shù):");scanf("%d", &num);/異常輸入直接結(jié)束if (num < 0)printf("輸入錯(cuò)誤!");exit(0);int result = 0;while (num != 0)result +

6、= num % 10;num = num / 10;printf("%dn", result);return 0;4. 編寫一個(gè)程序判斷用戶輸入任一正整數(shù)是否為素?cái)?shù)。#include<stdio.h>#include <stdlib.h>int main()int num;printf("請(qǐng)輸入一個(gè)大于1正整數(shù):");scanf("%d", &num);/異常輸入直接結(jié)束if (num < 0 | num = 1)printf("輸入錯(cuò)誤!");exit(0);if (num=

7、2)printf("%d是素?cái)?shù)。n", num);exit(0);bool flag = true; /默認(rèn)判斷是素?cái)?shù)for (int i = 2; i < num; i+)if (num%i = 0)flag =false; /發(fā)現(xiàn)了其他因子,不是素?cái)?shù)break;if (flag = true)printf("%d是素?cái)?shù)。n", num);elseprintf("%d不是素?cái)?shù)。n", num);return 0;5. 編寫一個(gè)程序求給定三個(gè)字符串的最長(zhǎng)公共字串。(難)這里我只寫了兩個(gè)字符串的比較方法,三個(gè)字符串的意思是一樣的。

8、#include <stdio.h> #include <string.h> #include <stdlib.h> int longest_common_substring(char *str1, char *str2)int i, k, len1, len2, len, s1_start, s2_start, idx, curmax, max;len1 = strlen(str1);len2 = strlen(str2);len = len1 + len2;max = 0;for (i = 0; i < len; i+)s1_start = s2_

9、start = 0;if (i < len1)s1_start = len1 - i; /每次開(kāi)始匹配的起始位置 else s2_start = i - len1;curmax = 0;for (idx = 0; (s1_start + idx < len1) && (s2_start + idx < len2); idx+)if (str1s1_start + idx = str2s2_start + idx)curmax+;else /只要有一個(gè)不相等,就說(shuō)明相等的公共字符斷了,不連續(xù)了, /要保存curmax與max中的最大值,并將curmax重置為0

10、/max = curmax > max ? curmax : max; if (curmax > max)max = curmax;k = s1_start + idx - 1; /保存連續(xù)子串長(zhǎng)度增加時(shí)連續(xù)子串最后一個(gè)字符在str1字符串中的下標(biāo)位置,/便于輸出公共連續(xù)子串 curmax = 0;/max = curmax > max ? curmax : max; if (curmax > max)max = curmax;k = s1_start + idx - 1;/輸出公共子串 char s100;for (i = 0; i < max; i+)si =

11、 str1k - max + 1 + i; /公共字串在str1中的下標(biāo)起始位置為k-max+1,結(jié)束位置為k si = '0'printf("最長(zhǎng)公共子串為:");puts(s);return max;int main(void)char str1100, str2100;printf("請(qǐng)輸入第一個(gè)字符串:");gets(str1);printf("請(qǐng)輸入第二個(gè)字符串:");gets(str2);int len = longest_common_substring(str1, str2);printf("

12、最長(zhǎng)公共連續(xù)子串的長(zhǎng)度為:%dn", len);return 0;6. 編寫一個(gè)程序計(jì)算用戶輸入的起始時(shí)間到終止時(shí)間的天數(shù)。#include <stdio.h> bool isLeapYear(int year);int CalcDay(int yerar1, int month1, int day1, int year2, int month2, int day2);int leapMonth12 = 31,29,31,30,31,30,31,31,30,31,30,31 ;int normalMonth12 = 31,28,31,30,31,30,31,31,30,3

13、1,30,31 ;int main()int year1, year2, month1, month2, day1, day2;printf("請(qǐng)輸入第一個(gè)日期(年 月 日):");scanf("%d%d%d", &year1, &month1, &day1);printf("請(qǐng)輸入第二個(gè)日期(年 月 日):");scanf("%d%d%d", &year2, &month2, &day2);int sum = CalcDay(year1, month1, day1,

14、 year2, month2, day2);printf("%dn", sum);return 0;/判斷是否為閏年bool isLeapYear(int year)if (year % 4 = 0 && year % 100 != 0 | year % 400 = 0)return true;return false;int CalcDay(int yerar1, int month1, int day1, int year2, int month2, int day2)int result=0;if (yerar1!=year2)for (int i =

15、 yerar1+1; i < year2; i+) /計(jì)算相差的整年if (isLeapYear(i)result += 366;elseresult += 365;if (isLeapYear(yerar1)for (int i = month1+1; i <= 12; i+)result += leapMonthi - 1;result += leapMonthmonth1 - 1 - day1;if (isLeapYear(yerar1) = false)for (int i = month1+1; i <= 12; i+)result += normalMonthi

16、- 1;result += normalMonthmonth1 - 1 - day1;if (isLeapYear(year2)for (int i = 1; i < month2; i+) result += leapMonthi - 1;result += day2;if (isLeapYear(year2) = false)for (int i = 1; i < month2; i+)result += normalMonthi - 1;result += day2;elseif (isLeapYear(yerar1)if (month1 != month2)for (int

17、 i = month1; i < month2 - 1; i+)result += normalMonthi;result += day2 + normalMonthmonth1 - 1 - day1;elseresult += day2 - day1;elseif (month1 != month2)for (int i = month1; i < month2 - 1; i+)result += normalMonthi;result += day2 + normalMonthmonth1 - 1 - day1;elseresult += day2 - day1;return

18、result;7. 編寫一個(gè)程序從鍵盤輸入圓錐體的半徑r和高度h,并計(jì)算體積。#include <stdio.h> int main()double r, h;printf("請(qǐng)輸入圓錐的半徑:");scanf("%lf", &r);printf("請(qǐng)輸入圓錐的高度:");scanf("%lf", &h);double v = r*h / 3;printf("該圓錐的體積為:%lfn", v);return 0;8. 編寫一個(gè)判定一個(gè)字符串是否為另一個(gè)字符串子字符串的

19、程序。#include <stdio.h>#include <string.h>int cmpsubstr(char a50, char b50)int i, j, flag = -1;for (i = 0; i <= (strlen(a) - strlen(b); i+)flag = i;for (j = 0; j < strlen(b); j+)if (bj != ai + j)break;if (j = strlen(b)return flag;return -1;int main()char a50, b50;int n;printf("輸

20、入字符串a(chǎn):");gets(a);printf("輸入字符串b:");gets(b);if (strlen(a) >= strlen(b)n = cmpsubstr(a, b);if (n != -1)printf("b是a的子串,位置從a%d開(kāi)始.n", n);elseprintf("b不是a的子串");elsen = cmpsubstr(b, a);if (n != -1)printf("a是b的子串,位置從b%d開(kāi)始.n", n);elseprintf("a不是b的子串")

21、;return 0;9. 編寫一個(gè)程序?qū)崿F(xiàn)一個(gè)整數(shù)、長(zhǎng)整數(shù)、浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)除以2的計(jì)算,要求所有類型的數(shù)除以2只用一個(gè)函數(shù)。#include <stdio.h>#define Calc(x) x/2int main()int a;printf("請(qǐng)輸入一個(gè)整數(shù):");scanf("%d", &a);printf("%d運(yùn)算后的結(jié)果是:%dn", a, Calc(a);printf("n");long b;printf("請(qǐng)輸入一個(gè)長(zhǎng)整數(shù):");scanf("%

22、ld", &b);printf("%ld運(yùn)算后的結(jié)果是:%ldn", b, Calc(b);printf("n");float c;printf("請(qǐng)輸入一個(gè)浮點(diǎn)數(shù):");scanf("%f", &c);printf("%f運(yùn)算后的結(jié)果是:%fn", c, Calc(c);printf("n");double d;printf("請(qǐng)輸入一個(gè)浮點(diǎn)數(shù):");scanf("%lf", &d);printf(&

23、quot;%lf運(yùn)算后的結(jié)果是:%lfn", d, Calc(d);printf("n");return 0;10. 編寫一個(gè)程序從鍵盤輸入50個(gè)學(xué)生的成績(jī),并求出最高分、最低分、平均分。#include <stdio.h>int main()double score50;for (int i = 0; i < 50; i+)scanf("%lf", &scorei);/求最高分和最低分double max = score0;double min = score0;for (int i = 1; i < 50;

24、i+)if (max < scorei)max = scorei;if (min > scorei)min = scorei;/求平均分double average, sum = 0;for (int i = 0; i < 50; i+)sum += scorei;average = sum / 50;printf("最高分:%lfn", max);printf("最低分:%lfn", min);printf("平均分:%lfn", average);return 0;11. 一個(gè)素?cái)?shù),當(dāng)它的數(shù)字位置對(duì)換后仍為素?cái)?shù),

25、這樣的數(shù)稱為絕對(duì)素?cái)?shù),設(shè)計(jì)一個(gè)算法,求出所有的兩位數(shù)的絕對(duì)素?cái)?shù)。#include <stdio.h>bool isPrime(int num);int Exchange(int num);int main()for (int i = 11; i < 99; i+)if (isPrime(i)&&isPrime(Exchange(i)printf("%d ", i);printf("n"); return 0;/判斷一個(gè)數(shù)是否為質(zhì)數(shù)bool isPrime(int num)bool flag = true; /默認(rèn)判斷是素

26、數(shù)for (int i = 2; i < num; i+)if (num%i = 0)flag = false; /發(fā)現(xiàn)了其他因子,不是素?cái)?shù)break;return flag;/求出對(duì)換后num的值int Exchange(int num)if (num % 10 != 0) /排除20,30,40.int gewei = num % 10; /個(gè)位int shiwei = num / 10; /十位num = gewei * 10 + shiwei; /個(gè)位和十位交換return num;12. 編寫一個(gè)C程序?qū)崿F(xiàn)兩個(gè)字符串的前后連接和后前連接。#include <stdio.h

27、>#include <string.h>#include <stdlib.h>char * Link(char *a, char *b);int main()char a20, b20;gets_s(a);gets_s(b);char *c = Link(a, b);for (int i = 0; i < strlen(c); i+)printf("%c", ci); return 0;char * Link(char *a, char *b)unsigned i, j;char *c;c = (char *)malloc(strlen(

28、a) + strlen(b) - 1); /為指針c動(dòng)態(tài)分配內(nèi)存for (i = 0; i <= strlen(a)-1; i+)ci = ai;for (j = 0; j <= strlen(b); j+, i+)ci = bj;return c;13. 編寫一個(gè)復(fù)制字符串的程序。#include <stdio.h>#include <string.h>void Copy(char *a, char *b);int main()char a20, b20;gets_s(a);Copy(a, b);puts(b);return 0;void Copy(cha

29、r *a, char *b)int i;for (i = 0; i < strlen(a); i+)bi = ai;bi = '0'14. 編寫一個(gè)程序逆序(從大到小)重新放置數(shù)組a中的元素,a10=2,4,6,5,1,8,7,9,0,3.#include <stdio.h>int main()int a10 = 2,4,6,5,1,8,7,9,0,3 ;int temp, i, j;/選擇排序,重要for (i = 0; i < 9; i+)for (j = i + 1; j < 10; j+)if (ai < aj)temp = ai;a

30、i = aj;aj = temp;printf("降序:n");for (i = 0; i < 10; i+)printf("%d ", ai);printf("n");return 0;15. 寫出計(jì)算機(jī)的結(jié)構(gòu)并說(shuō)出功能。(這道題不會(huì),百度搜的)1.計(jì)算機(jī)由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備等五大部件組成計(jì)算機(jī)硬件系統(tǒng)。(1)運(yùn)算器:又稱算術(shù)邏輯單元,用來(lái)進(jìn)行算術(shù)或邏輯運(yùn)算以及移位循環(huán)等操作。(2)控制器:又稱控制單元,是全機(jī)的指揮控制中心。它負(fù)責(zé)把指令逐條從存儲(chǔ)器中取出,經(jīng)譯碼分析后向全機(jī)發(fā)出取數(shù)、執(zhí)行、存數(shù)等控制命

31、令,以保證正確完成程序所要求的功能。與運(yùn)算器一起成為CPU。(3)存儲(chǔ)器:(分為內(nèi)存和外存)是計(jì)算機(jī)的存儲(chǔ)和記憶裝置,用來(lái)存放指令、原始數(shù)據(jù)、中間結(jié)果和最終結(jié)果。(4)輸入、輸出設(shè)備:是計(jì)算機(jī)和外界進(jìn)行信息交換的橋梁。程序、數(shù)據(jù)及現(xiàn)場(chǎng)信息要通過(guò)輸入設(shè)備輸入給計(jì)算機(jī);計(jì)算機(jī)的處理結(jié)果要通過(guò)輸出設(shè)備輸出,以便用戶使用。常用的輸入設(shè)備有:鍵盤、鼠標(biāo)、掃描儀等;常用的輸出設(shè)備有:顯示器、打印機(jī)、繪圖儀等。2.(1)計(jì)算機(jī)硬件系統(tǒng):到目前為止,計(jì)算機(jī)仍沿用由馮.諾依曼首先提出的基于總線的計(jì)算機(jī)硬件系統(tǒng)。其基本設(shè)計(jì)思想為:a.以二進(jìn)制形式表示指令和數(shù)據(jù)b.程序和數(shù)據(jù)事先存放在存儲(chǔ)器中,計(jì)算機(jī)在工作時(shí)能夠高

32、速地從存儲(chǔ)器中取出指令加以執(zhí)行c.由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備等五大部件組成計(jì)算機(jī)硬件系統(tǒng)。 (2)計(jì)算機(jī)軟件系統(tǒng):所謂軟件,就是為了管理、維護(hù)計(jì)算機(jī)以及為完成用戶的某種特定任務(wù)而編寫的各種程序的總和。計(jì)算機(jī)的工作就是運(yùn)行程序,通過(guò)逐條的從存儲(chǔ)器中取出程序中的指令并執(zhí)行指令所規(guī)定的操作而實(shí)現(xiàn)某種特定的功能。微型計(jì)算機(jī)的軟件包括系統(tǒng)軟件和用戶(應(yīng)用)軟件。16. 編寫一個(gè)程序求出兩個(gè)字符串: s = "This is C programming text" t = "This is a text for C programming"包含的最

33、長(zhǎng)的相同的單詞。(區(qū)分大小寫)說(shuō)明:自左向右順序掃描字符串s,逐個(gè)找出單詞(單詞開(kāi)始位置和單詞長(zhǎng)度),當(dāng)該單詞的長(zhǎng)度比已找到的單詞更長(zhǎng)時(shí),就從頭到尾掃描字符串t。在從t字符串中找出與該字符串長(zhǎng)度相等、字符相同的單詞后,記錄下該單詞的和的長(zhǎng)度,并回到s,在其中找出下一個(gè)更長(zhǎng)的單詞。上述尋找過(guò)程直到字符串s掃描結(jié)束,最后輸出找到的單詞。#include <stdio.h>#include <string.h>void maxword(char *s, char *t);int main() char s = "This is C programming text&

34、quot;char t = "This is a text for C programming"maxword(s, t);return 0;void maxword(char *s, char *t)char *res, *temp, chs, cht;int i, j, found, maxlen = 0;while (*s != '0')while (*s = ' ') s+;for (i = 0; si != ' ' && si != '0' i+);if (i > maxlen)

35、chs = si;si = '0'temp = t;found = 0;while (*temp != '0' && !found)while (*temp = ' ') temp+;for (j = 0; tempj != ' ' && tempj != '0' j+);if (j = i)cht = tempj;tempj = '0'if (strcmp(s, temp) = 0)maxlen = i;res = s;found = 1;tempj = cht;t

36、emp = &tempj;si = chs;s = &si;if (maxlen = 0)printf("沒(méi)有相同的單詞.n");elsechs = resmaxlen;resmaxlen = '0'printf("%sn", res);resmaxlen = chs;17. 編寫一個(gè)計(jì)算字符串長(zhǎng)度的程序。#include <stdio.h>#include <string.h>int main() char a100;gets_s(a);int length;for (int i = 0; ai

37、!= '0' i+)length = i+1;printf("%dn", length);return 0;18. 編寫求一個(gè)字符在字符串中位置的程序。#include <stdio.h>#include <string.h>int main() char a100, b;int position;bool flag = false; /是否查找到的標(biāo)志printf("請(qǐng)輸入字符串:");gets_s(a);printf("請(qǐng)輸入要查找的字符:");scanf("%c", &b);for (int i = 0; i < strlen(a); i+)if (ai = b)flag = true; /找到position = i +

溫馨提示

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

評(píng)論

0/150

提交評(píng)論