欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言知识练习提高考-研复习材料题.doc

    • 资源ID:2755035       资源大小:133.60KB        全文页数:36页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言知识练习提高考-研复习材料题.doc

    .1. 编写一个程序将用户输入的正整数转化为对应的二进制数。#include<stdio.h>#include <stdlib.h>int main()int num;printf("请输入一个正整数:");scanf("%d", &num);/异常输入直接结束if (num < 0)printf("输入错误!");exit(0);/将num和2进行取余运算,存储在数组中int a20, i = 0;while (num != 0)ai = num % 2;num = num / 2;i+;/遍历输出数组while (i > 0)printf("%d", a-i);printf("n");return 0;2. 请写出你所了解的linux系统中常用的命令并解释其功能。(1)pwd命令 该命令的英文解释为print working directory(打印工作目录)。输入pwd命令,Linux会输出当前目录。 (2) cd命令 cd命令用来改变所在目录。 cd / 转到根目录中 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 列举文件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)cp命令 cp命令用来拷贝文件,要复制文件,输入命令: cp <source filename> <target filename> cp t.txt Document/t 该命令将把文件t.txt复制到Document目录下,并命名为t。 3. 编写一个程序计算任一输入数字的各位数字之和。#include<stdio.h>#include <stdlib.h>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);return 0;4. 编写一个程序判断用户输入任一正整数是否为素数。#include<stdio.h>#include <stdlib.h>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 = true)printf("%d是素数。n", num);elseprintf("%d不是素数。n", num);return 0;5. 编写一个程序求给定三个字符串的最长公共字串。(难)这里我只写了两个字符串的比较方法,三个字符串的意思是一样的。#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_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 < len2); idx+)if (str1s1_start + idx = str2s2_start + idx)curmax+;else /只要有一个不相等,就说明相等的公共字符断了,不连续了, /要保存curmax与max中的最大值,并将curmax重置为0 /max = curmax > max ? curmax : max; if (curmax > max)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;printf("最长公共子串为:");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 <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,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 = 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 (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;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 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 result;7. 编写一个程序从键盘输入圆锥体的半径r和高度h,并计算体积。#include <stdio.h> 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 <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("输入字符串a:");gets(a);printf("输入字符串b:");gets(b);if (strlen(a) >= 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 <stdio.h>#define Calc(x) x/2int main()int a;printf("请输入一个整数:");scanf("%d", &a);printf("%d运算后的结果是:%dn", a, Calc(a);printf("n");long b;printf("请输入一个长整数:");scanf("%ld", &b);printf("%ld运算后的结果是:%ldn", b, Calc(b);printf("n");float c;printf("请输入一个浮点数:");scanf("%f", &c);printf("%f运算后的结果是:%fn", c, Calc(c);printf("n");double d;printf("请输入一个浮点数:");scanf("%lf", &d);printf("%lf运算后的结果是:%lfn", d, Calc(d);printf("n");return 0;10. 编写一个程序从键盘输入50个学生的成绩,并求出最高分、最低分、平均分。#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; 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. 一个素数,当它的数字位置对换后仍为素数,这样的数称为绝对素数,设计一个算法,求出所有的两位数的绝对素数。#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;/判断一个数是否为质数bool isPrime(int num)bool flag = true; /默认判断是素数for (int i = 2; i < num; i+)if (num%i = 0)flag = false; /发现了其他因子,不是素数break;return flag;/求出对换后num的值int Exchange(int num)if (num % 10 != 0) /排除20,30,40.int gewei = num % 10; /个位int shiwei = num / 10; /十位num = gewei * 10 + shiwei; /个位和十位交换return num;12. 编写一个C程序实现两个字符串的前后连接和后前连接。#include <stdio.h>#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(a) + strlen(b) - 1); /为指针c动态分配内存for (i = 0; i <= strlen(a)-1; i+)ci = ai;for (j = 0; j <= strlen(b); j+, i+)ci = bj;return c;13. 编写一个复制字符串的程序。#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(char *a, char *b)int i;for (i = 0; i < strlen(a); i+)bi = ai;bi = 0;14. 编写一个程序逆序(从大到小)重新放置数组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;ai = aj;aj = temp;printf("降序:n");for (i = 0; i < 10; i+)printf("%d ", ai);printf("n");return 0;15. 写出计算机的结构并说出功能。(这道题不会,百度搜的)1.计算机由运算器、控制器、存储器、输入设备和输出设备等五大部件组成计算机硬件系统。(1)运算器:又称算术逻辑单元,用来进行算术或逻辑运算以及移位循环等操作。(2)控制器:又称控制单元,是全机的指挥控制中心。它负责把指令逐条从存储器中取出,经译码分析后向全机发出取数、执行、存数等控制命令,以保证正确完成程序所要求的功能。与运算器一起成为CPU。(3)存储器:(分为内存和外存)是计算机的存储和记忆装置,用来存放指令、原始数据、中间结果和最终结果。(4)输入、输出设备:是计算机和外界进行信息交换的桥梁。程序、数据及现场信息要通过输入设备输入给计算机;计算机的处理结果要通过输出设备输出,以便用户使用。常用的输入设备有:键盘、鼠标、扫描仪等;常用的输出设备有:显示器、打印机、绘图仪等。2.(1)计算机硬件系统:到目前为止,计算机仍沿用由冯.诺依曼首先提出的基于总线的计算机硬件系统。其基本设计思想为:a.以二进制形式表示指令和数据b.程序和数据事先存放在存储器中,计算机在工作时能够高速地从存储器中取出指令加以执行c.由运算器、控制器、存储器、输入设备和输出设备等五大部件组成计算机硬件系统。 (2)计算机软件系统:所谓软件,就是为了管理、维护计算机以及为完成用户的某种特定任务而编写的各种程序的总和。计算机的工作就是运行程序,通过逐条的从存储器中取出程序中的指令并执行指令所规定的操作而实现某种特定的功能。微型计算机的软件包括系统软件和用户(应用)软件。16. 编写一个程序求出两个字符串: s = "This is C programming text" t = "This is a text for C programming"包含的最长的相同的单词。(区分大小写)说明:自左向右顺序扫描字符串s,逐个找出单词(单词开始位置和单词长度),当该单词的长度比已找到的单词更长时,就从头到尾扫描字符串t。在从t字符串中找出与该字符串长度相等、字符相同的单词后,记录下该单词的和的长度,并回到s,在其中找出下一个更长的单词。上述寻找过程直到字符串s扫描结束,最后输出找到的单词。#include <stdio.h>#include <string.h>void maxword(char *s, char *t);int main() char s = "This is C programming text"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)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;temp = &tempj;si = chs;s = &si;if (maxlen = 0)printf("没有相同的单词.n");elsechs = resmaxlen;resmaxlen = 0;printf("%sn", res);resmaxlen = chs;17. 编写一个计算字符串长度的程序。#include <stdio.h>#include <string.h>int main() char a100;gets_s(a);int length;for (int i = 0; ai != 0; i+)length = i+1;printf("%dn", length);return 0;18. 编写求一个字符在字符串中位置的程序。#include <stdio.h>#include <string.h>int main() char a100, b;int position;bool flag = false; /是否查找到的标志printf("请输入字符串:");gets_s(a);printf("请输入要查找的字符:");scanf("%c", &b);for (int i = 0; i < strlen(a); i+)if (ai = b)flag = true; /找到position = i + 1;printf("%c 是 %s 字符串的第 %d 个字符。n", b, a, position);if (flag = false) /没找到printf("未查找到该字符!n");return 0;19. 编写一个程序将用户输入的由字符和非字符字符串中的数字提取出来,例如输入“asd123rt456fg789”,得到的数是123,456,789.#include <stdio.h>#include <string.h>int main() char a100;gets(a);int i = 0, j = 0;for (i = 0; i < strlen(a); i+)if (ai >= 48 && ai <= 57) /查找到一个数字for (j = i; aj >= 48 && aj <= 57; j+) /判断下一位是不是数字printf("%c", aj);i = j; /找到了这个数字,i 要移到这个数后面的字符printf(" ");return 0;20. 编写一个程序将用户输入的字符串进行加密和解密。说明:这里的加密方式是将字符对应的Ascll码后移五位。#include <stdio.h>#include <string.h>int main() char a100;gets_s(a);printf("加密后:");for (int i = 0; i < strlen(a); i+)ai += 5;printf("%c", ai);printf("n");printf("解密后:");for (int i = 0; i < strlen(a); i+)ai -= 5;printf("%c", ai);printf("n");return 0;21. 你是否熟悉Unix或者Linux操作系统,指出它们与Windows系统的差异。(这个是百度的)最显著的区别是,Linux重视开源,所有系统可以是完全自行构建的系统,而Windows系统、UNIX系统是不开源的,有专门团队维护、升级。UNIX更侧重于客户端-服务器类型的大型远程连网应用,比如你要用UNIX,需要通过登录远方的服务器主机才能使用;Windows侧重单机运行,由于有微软的技术支持和服务,界面统一、操作也统一,缺点是要受强制升级的影响,开发无法自主,必须借助微软提供的开发包,对于系统是否安全无法控制,这也是政府机关不选用Win8的原因之一;Linux可以完全自主,自己可实现保证没有软件后门,免费,开源,充满活力,比前两个更适合嵌入式系统(比如手机)。

    注意事项

    本文(C语言知识练习提高考-研复习材料题.doc)为本站会员(一***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开