C语言知识练习提高考-研复习材料题.doc
《C语言知识练习提高考-研复习材料题.doc》由会员分享,可在线阅读,更多相关《C语言知识练习提高考-研复习材料题.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.1. 编写一个程序将用户输入的正整数转化为对应的二进制数。#include#include int main()int num;printf(请输入一个正整数:);scanf(%d, &num);/异常输入直接结束if (num 0)printf(%d, a-i);printf(n);return 0;2. 请写出你所了解的linux系统中常用的命令并解释其功能。(1)pwd命令 该命令的英文解释为print working directory(打印工作目录)。输入pwd命令,Linux会输出当前目录。 (2) cd命令 cd命令用来改变所在目录。 cd / 转到根目录中 cd 转到/hom
2、e/user用户目录下 cd /usr 转到根目录下的usr目录中-绝对路径 cd test 转到当前目录下的test子目录中-相对路径(3)ls命令 ls命令用来查看目录的内容。 选项 含义 -a 列举目录中的全部文件,包括隐藏文件 -l 列举目录中的细节,包括权限、所有者、组群、大小、创建日期、文件是否是链接等 -f 列举的文件显示文件类型 -r 逆向,从后向前地列举目录中内容 -R 递归,该选项递归地列举当前目录下所有子目录内的内容 -s 大小,按文件大小排序 -h 以人类可读的方式显示文件的大小,如用K、M、G作单位 ls -l examples.doc 列举文件examples.do
3、c的所有信息 (4) cat命令 cat命令可以用来合并文件,也可以用来在屏幕上显示整个文件的内容。 cat snow.txt 该命令显示文件snow.txt的内容,ctrl+D退出cat。 (5)grep命令 grep命令的最大功能是在一堆文件中查找一个特定的字符串。 grep money test.txt 以上命令在test.txt中查找money这个字符串,grep查找是区分大小写的。 (6) touch命令 touch命令用来创建新文件,他可以创建一个空白的文件,可以在其中添加文本和数据。 touch newfile 该命令创建一个名为newfile的空白文件。 (7)cp命令 cp命
4、令用来拷贝文件,要复制文件,输入命令: cp cp t.txt Document/t 该命令将把文件t.txt复制到Document目录下,并命名为t。 3. 编写一个程序计算任一输入数字的各位数字之和。#include#include int main()int num;printf(请输入一个正整数:);scanf(%d, &num);/异常输入直接结束if (num 0)printf(输入错误!);exit(0);int result = 0;while (num != 0)result += num % 10;num = num / 10;printf(%dn, result);ret
5、urn 0;4. 编写一个程序判断用户输入任一正整数是否为素数。#include#include int main()int num;printf(请输入一个大于1正整数:);scanf(%d, &num);/异常输入直接结束if (num 0 | num = 1)printf(输入错误!);exit(0);if (num=2)printf(%d是素数。n, num);exit(0);bool flag = true; /默认判断是素数for (int i = 2; i num; i+)if (num%i = 0)flag =false; /发现了其他因子,不是素数break;if (flag
6、 = true)printf(%d是素数。n, num);elseprintf(%d不是素数。n, num);return 0;5. 编写一个程序求给定三个字符串的最长公共字串。(难)这里我只写了两个字符串的比较方法,三个字符串的意思是一样的。#include #include #include 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(s
7、tr2);len = len1 + len2;max = 0;for (i = 0; i len; i+)s1_start = s2_start = 0;if (i len1)s1_start = len1 - i; /每次开始匹配的起始位置 else s2_start = i - len1;curmax = 0;for (idx = 0; (s1_start + idx len1) & (s2_start + idx max ? curmax : max; if (curmax max)max = curmax;k = s1_start + idx - 1; /保存连续子串长度增加时连续子串
8、最后一个字符在str1字符串中的下标位置,/便于输出公共连续子串 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 = str1k - max + 1 + i; /公共字串在str1中的下标起始位置为k-max+1,结束位置为k si = 0;printf(最长公共子串为:);puts(s);return max;int main(void)char str1100,
9、str2100;printf(请输入第一个字符串:);gets(str1);printf(请输入第二个字符串:);gets(str2);int len = longest_common_substring(str1, str2);printf(最长公共连续子串的长度为:%dn, len);return 0;6. 编写一个程序计算用户输入的起始时间到终止时间的天数。#include bool isLeapYear(int year);int CalcDay(int yerar1, int month1, int day1, int year2, int month2, int day2);int
10、 leapMonth12 = 31,29,31,30,31,30,31,31,30,31,30,31 ;int normalMonth12 = 31,28,31,30,31,30,31,31,30,31,30,31 ;int main()int year1, year2, month1, month2, day1, day2;printf(请输入第一个日期(年 月 日):);scanf(%d%d%d, &year1, &month1, &day1);printf(请输入第二个日期(年 月 日):);scanf(%d%d%d, &year2, &month2, &day2);int sum =
11、CalcDay(year1, month1, day1, 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 (
12、int i = yerar1+1; i year2; i+) /计算相差的整年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 - 1;re
13、sult += 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 i = month1; i m
14、onth2 - 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 result;7. 编写一个程序从键盘输入圆锥体的半
15、径r和高度h,并计算体积。#include int main()double r, h;printf(请输入圆锥的半径:);scanf(%lf, &r);printf(请输入圆锥的高度:);scanf(%lf, &h);double v = r*h / 3;printf(该圆锥的体积为:%lfn, v);return 0;8. 编写一个判定一个字符串是否为另一个字符串子字符串的程序。#include #include int cmpsubstr(char a50, char b50)int i, j, flag = -1;for (i = 0; i = (strlen(a) - strlen(
16、b); i+)flag = i;for (j = 0; j = strlen(b)n = cmpsubstr(a, b);if (n != -1)printf(b是a的子串,位置从a%d开始.n, n);elseprintf(b不是a的子串);elsen = cmpsubstr(b, a);if (n != -1)printf(a是b的子串,位置从b%d开始.n, n);elseprintf(a不是b的子串);return 0;9. 编写一个程序实现一个整数、长整数、浮点数和双精度浮点数除以2的计算,要求所有类型的数除以2只用一个函数。#include #define Calc(x) x/2i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 知识 练习 提高 复习 温习 材料
限制150内