1、C语言练习考研复习题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 /
2、 转到根目录中 cd 转到/home/user用户目录下 cd /usr 转到根目录下的usr目录中-绝对路径 cd test 转到当前目录下的test子目录中-相对路径(3)ls命令 ls命令用来查看目录的容。 选项 含义 -a 列举目录中的全部文件,包括隐藏文件 -l 列举目录中的细节,包括权限、所有者、组群、大小、创建日期、文件是否是等 -f 列举的文件显示文件类型 -r 逆向,从后向前地列举目录中容 -R 递归,该选项递归地列举当前目录下所有子目录的容 -s 大小,按文件大小排序 -h 以人类可读的方式显示文件的大小,如用K、M、G作单位 ls -l examples.doc 列举文件
3、examples.doc的所有信息 (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
4、)cp命令 cp命令用来拷贝文件,要复制文件,输入命令: 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; pr
5、intf(%dn, result); return 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
6、 =false; /发现了其他因子,不是素数 break; if (flag = true) printf(%d是素数。n, num); else printf(%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, curm
7、ax, max; len1 = strlen(str1); len2 = strlen(str2); 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)
8、 max = curmax; k = s1_start + idx - 1; /保存连续子串长度增加时连续子串最后一个字符在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; p
9、rintf(最长公共子串为:); puts(s); return max;int main(void) char str1100, 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 CalcD
10、ay(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,31,30,31 ;int main() int year1, year2, month1, month2, day1, day2; printf(请输入第一个日期(年 月 日):); scanf(%d%d%d, &year1, &month1, &day
11、1); printf(请输入第二个日期(年 月 日):); scanf(%d%d%d, &year2, &month2, &day2); int sum = 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 mo
12、nth1, int day1, int year2, int month2, int day2) int result=0; if (yerar1!=year2) for (int i = yerar1+1; i year2; i+) /计算相差的整年 if (isLeapYear(i) result += 366; else result += 365; if (isLeapYear(yerar1) for (int i = month1+1; i = 12; i+) result += leapMonthi - 1; result += leapMonthmonth1 - 1 - day1; if (isLeapYear(yerar1) = false)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1