C语言编程文库所有题答案_第1页
C语言编程文库所有题答案_第2页
C语言编程文库所有题答案_第3页
C语言编程文库所有题答案_第4页
C语言编程文库所有题答案_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*编写一程序P3-311.C实现以下功能从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。注意,这两个字符串最长均可达到127个字符、最短均可为0个字符。将字符串s2插入字符串s1中,插入方法为:s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为L1)长,则s2的第L1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的s1后。提示,合并时可使用中间数组。例如: s1输入为123456789,S2输入为abcdefghijk,则输出的s1为: 1a2b3c4d5e6f7g8h9ijk在屏幕上输出新生成的s1。程序的运行效果应类似地如图1所示,其中的123456789和abcdefghijk是从键盘输入的内容。*/#include#includeint 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);len2 = 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);printf(%c, str2i);printf(n);return 0;/*编写一程序P4-412.C实现以下功能程序运行时先显示Please input numbers:,再从键盘上读入一组整数(只考虑int型),数与数之间只使用空格或回车作分隔。数可正可负,最多10000个,但若读入的数为-222时,则表示输入结束且-222不算在该组数内。对这一组数按从小到大的顺序进行排序。将排序后的这一组数输出到屏幕上,输出格式为每行6个数,数与数之间使用逗号(,)分隔,两个逗号之间的宽度(不算逗号)为6且使用左对齐格式。注意,行尾没有逗号。程序的运行效果应类似地如图1所示,其中的100 120 89 72 -19 200 500 210 235 6 24 1234 78 234 -234 -2342 346 23524 7823 -3411 23423 -222是从键盘输入的内容。*/#include int main(void)int dat10000, len;int i, j, tmp;printf(Please input numbers:);len = 0;doscanf(%d, &i);if ( i = -222)break;datlen = i;len+; while (1);for ( i = 0 ; i len - 1; i+)for ( j = i + 1; j 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(n);return 0;/*编写一程序P7-719.C实现以下功能从键盘上输入5个字符串(约定:每个字符串中字符数80字节),对其进行升序排序并输出。编程可用素材:printf(Input 5 strings:n).、printf(-n).。程序的运行效果应类似地如图1所示,图1中的 hello my dear friend Are you ready?是从键盘输入的内容。*/#include#includeint main(void)char aa590, kk5 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 0) strcpy(kkj, aaj);strcpy(aaj, aaj + 1);strcpy(aaj + 1, kkj);printf(-n);for (i = 0; i 5; i+)puts(aai);return(0);/*根据要求编写程序P7-761.C的指定部分:程序P7-761.C已编写部分代码(单击此处下载),请根据程序中的要求编写函数Move的代码注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。函数void move(int array, int n, int m)的功能为:在数组array中有n个整数,使其前面各数顺序向后移m(0=m=n)个位置,最后m个数变成最前面的m个数,编写该函数。程序的运行效果应类似地如图1所示,图1中的10、3和1 2 3 4 5 6 7 8 9 10是从键盘输入的内容。*/*P7-761*.C/#include #include /* User Code Begin(考生可在本行后添加代码,例如全局变量的定义、函数原型声明等,行数不限) */void move(int array, int n, int m);/* User Code End(考生添加代码结束) */int main(void)int *number, n, m, i;printf(the total numbers is:);scanf(%d, &n);printf(back m:);scanf(%d, &m);number = (int *)malloc(n * sizeof(int);printf(input %d integers:, n);for (i=0; in; i+)scanf(%d, &numberi);move(number, n, m);printf(after move %d: n, m);for (i=0; in; i+)printf(%d , numberi);printf(n);return 0;/* User Code Begin(考生在此后根据设计需要完成程序的其它部分,如函数move,行数不限) */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;/*根据要求编写程序P7-765.C的指定部分:程序P7-765.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。程序的功能是:有五个学生,每个学生的数据包括学号、姓名(最长19字节)、三门课的成绩,从键盘输入五个学生的数据,计算每个学生的平均成绩并按平均成绩由高到低排序,并将排序结果显示。要求用结构体编程,变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费内存空间和计算时间的好习惯。编程可用素材:printf(Please input info of students:No Name Math English Computern).。程序的运行效果应类似地如图1所示,图1中的:2001 wanghai 78 83 902003 zhangzhong 82 80 982005 liumei 95 81 902006 sunqian 70 77 902009 jiansansa 63 87 90是从键盘输入的内容。*/#include #include /* User Code Begin(考生可在本行后添加代码,行数不限) */struct STUDENTint num;char name20;int math;int english;int computer;float average;typedef struct STUDENT STUDENT;/* User Code End(考生添加代码结束) */int main(void)STUDENT myclass5, *pStu = myclass;int i;const int N = 5;/* User Code Begin(考生可在本行后添加代码,行数不限) */int j , n = 0;STUDENT myclass11;printf(Please input info of students:No Name 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 , &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 myclassj.average)myclass1n = myclassj+1;myclassj+1 = myclassj;myclassj = myclass1n;/* User Code End(考生添加代码结束) */printf(nResult of sort:n);printf(Num Name Math English Computer Averagen);for (i=0; inum, (pStu+i)-name,(pStu+i)-math, (pStu+i)-english, (pStu+i)-computer, (pStu+i)-average);return 0;/*根据要求编写程序P7-768.C的指定部分:程序P7-768.C已编写部分代码(单击此处下载),请根据程序中的要求完善程序注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。程序的功能是:将从键盘读入的一个十六进制字符串转换成一个十进制数后输出。注意:(1)可以只考虑转换成的十进制大小不会超过long int型所能表示的最大数。(2)只需处理正数,不处理负数。(3)输入的字母可以是大写也可以小写。(4)程序中不能使用库函数isxdigit、sscanf或使用同名的变量、函数、单词。程序的运行效果应类似地如图1、图2和图3所示,图1中的7fAa23Bf、图2中的12F和图3中的39fg是从键盘输入的内容。*/*P7-768.C*/#include/* User Code Begin(考生可在本行后添加代码,例如全局变量的定义、函数原型声明等,行数不限) */#include int i, sw, wei, len;/* User Code End(考生添加代码结束) */int main(void)int flag; /* 标志输入数据是否合法,0表示不合法 */long int result10; /* 转换结果 */char str20;printf(input a data:);gets(str);/* User Code Begin(考生可在本行后添加代码,行数不限) */result10 = 0;flag = 1;wei = 1;len = strlen(str) - 1;for (i = 0; i = 0 & strlen - i = A & strlen - i = a & strlen - i = f)sw = (strlen - i - a + 10) * wei);result10 = result10 + sw;elseflag = 0;break;/* User Code End(考生添加代码结束) */if (0 = flag)printf(ndata is error.n);elseprintf(nThe result is: %ldn, result10);return 0;/*编写一程序P7-769.C实现以下功能输出m和n之间的回文素数,m和n从键盘读入(假定满足5=m=n=100000),回文是指正向与反向的字符都一样,例如1、11、101、131等。编程可用素材:printf(please input m, n(5=m=n=100000): ).、printf(Result(%d-%d):n.、printf(%d .。程序的运行效果应类似地如图1所示,图1中的5,1000是从键盘输入的内容。*/#include int main(void)int m, n;int i, j, k, x, num, wei6;printf(please input m, n(5=m=n=100000): );scanf(%d,%d, &m, &n);printf(Result(%d-%d):n, m, n);for (i=m; i=n; i+)for (x=2; x= i/2)num = i;j = 0;while (num)weij = num % 10;j+;num = num / 10;for (k=0; k= j/2)printf(%d , i);printf(n);return 0;/*编写一程序P7-772.C实现以下功能对从键盘输入的一行字符(约定:字符数127字节)进行排序(按每个字符的ASCII码由小到大)并输出。注意:程序中不能使用库函数gets、fgets或使用同名的变量、函数、单词,编程可用素材:printf(input the string: n).、printf(nResult:).。程序的运行效果应类似地如图1所示,图1中的32679 dsg j7u6k dsvs346r23v5h#sfsaf是从键盘输入的内容。*/#include#includeint 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 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实现以下功能计算两个日期之间的天数。注:判断年份是否为闰年的方法为400的倍数为闰年,如2000年;若非100的倍数,而是4的倍数,为闰年,如1996年。编程可用素材:printf(from the date (*/*/*):n).、printf(to the date(*/*/*):n)、printf(nsum=%dn.。程序的运行效果应类似地如图1和图2所示,图1中的2008/02/13、2010/04/24和图2中的2010/04/24、2008/02/13是从键盘输入的内容。*/#includeint panduan(unsigned int y); /对是否为闰年判断int main(void)int x1, x2, x3, x4, x5, x6, y, y1, y2, M1,M2, m, m1, m2, dd, 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 = x4;m1 = x5;d1 = x6;y2 = x1;m2 = x2;d2 = x3;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为年份小的对应,如果年月相同则到后面直接相减结束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 if (m = 2)if ( k = 1)Tt = 29;else Tt = 28;elseTt = 30; /判断每个月的具体天数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)if (y % 400 = 0)k = 1;elsek = 0;elsek = 1;elsek = 0;return k;6/*编写一程序P3-313.C实现以下功能求任意的一个mn矩阵的鞍点鞍点是指该位置上的元素在该行上为最大、在该列上为最小,矩阵中可能没有鞍点,但最多只有一个鞍点。m、n(2=m=20、2=n=20)及矩阵元素从键盘输入(只考虑int型和每行、每列中没有并列最大最小的情况)。编程可用素材:printf(Please input m and n:).、printf(Please input a juZhen(. hang, . lie):n.、printf(nmei you an dian.n).、printf(nyou an dian, wei: juZhen.=.n.。程序的运行效果应类似地如图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 445 45933 65 744 3 425 4368 3425 2182 789 123 2134是从键盘输入的内容。*/#include #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; im; i+)for (j=0; jn; j+)scanf(%d, &aaij);for (i=0; im; i+)max = aai0;for (j=1; j max)max = aaij;maxj = j;for (k=0, flag1=1; k aakmaxj)/*判断行中的最大值是否也是列中的是大值*/flag1 = 0;if (flag1) printf(nyou an dian, wei: a%d%d=%dn, i, maxj, max);flag2 = 1;/*flag2作为是否有鞍点的标志*/if (!flag2)printf(nmei you an dian.n);return 0;/*编写一程序P3-315.C实现以下功能程序运行时,先从键盘输入一个文本文件的文件名(约定:字符数127字节,可含路径)和一个字符串(约定:字符数20字节,其中不含空格、TAB等,后面称之为Str),再在屏幕上显示该文件的内容。要求显示完内容后,在屏幕上输出文件的行数(行之间以n为分隔、每行的长度不定但均200个字节)、字符串Str在文件中第1次出现的行号和最后一次出现的行号(查找时不分区大小写、不跨行查找,若未找到,则行号显示为-1)。注意,程序中不能使用库函数fgets或使用同名的变量、函数、单词,行的编号从1开始计。单击此处下载程序运行时测试用的文件315.txt。编程可用素材:printf(input the files name and the string: ).、printf(nfile open error!).、printf(-File content:-n).、printf(n-File summary:-n).、printf(. lines, first line: ., last line: .n.。程序的运行效果应类似地如图1所示,图1中的“input the files name and the string: C:Temp315.txt Value”中的“C:Temp315.txt Value”是从键盘输入的内容(“C:Temp315.txt”是文件名,“Value”是需查找的字符串)。图1中的“11 lines, first line: 6, last line: 11”表示文件一共有11行,字符串“Value”在文件中第一次出现的行号为6、最后一次出现的行号为11。*/#include #include #include int main(void)char filename128, str21, hang200, ch;FILE *fp;int sum = 0, i = 0, first = -1, last = -1;printf(input the files name and the string: );scanf(%s %s, filename, str);printf(-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 = -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;/*根据要求编写程序P3-316.C的指定部分:程序P3-316.C已编写部分代码(单击此处下载),请根据程序中的要求编写相应部分的代码注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。程序的运行效果应类似地如图1所示,图1中每行“:”后的内容#af2346asfkl7123vdsg#sdfe3gerg67823;632235235562vrweggsd124kl63g512jk57463sdgkdlgh45657478358756235135fwesdvg#safsa均为从键盘输入的内容,注意,在“input string-2:”处输入时直接按了回车键,这是题目所允许的。*/#include#include/* GetString的功能是从键盘读入最多n个字符(遇到由endFlag指定的字符或回车则结束读并且该字符和回车均视为有效字符)存放在buf所指向的内存中并加上字符串结束符0函数返回值为读入的字符个数 */int GetString(char *buf, char endFlag, int n);/* CompDigit 的功能是分别统计指针s1、s2、s3、s4所指向的字符串中数字字符的个数,将包含最多数字字符(不考虑存在包含相同个数数字字符的情况)的字符串的长度放在指针mLen所指向的内存单元中,并通过函数返回值返回该字符串中第1个数字字符的地址 */char *CompDigit(char *s1, char *s2, char *s3, char *s4, int *mLen);/* 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; i4; i+)clearRestInput(lastChar);printf(input string-%d: , i+1);totalLen += GetString(stri, endChar, N);lastChar = stristrlen(stri) - 1;strcpy(strM, CompDigit(str0, str1, str2,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论