C语言编程文库所有题答案.docx
- 文档编号:2952157
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:127
- 大小:49.43KB
C语言编程文库所有题答案.docx
《C语言编程文库所有题答案.docx》由会员分享,可在线阅读,更多相关《C语言编程文库所有题答案.docx(127页珍藏版)》请在冰点文库上搜索。
C语言编程文库所有题答案
/* 编写一程序实现以下功能
①从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。
注意,这两个字符串最长均可达到127个字符、最短均可为0个字符。
②将字符串s2插入字符串s1中,插入方法为:
s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为L1)长,则s2的第L1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的s1后。
提示,合并时可使用中间数组。
例如:
s1输入为"9",S2输入为"abcdefghijk",则输出的s1为:
1a2b3c4d5e6f7g8h9ijk
③在屏幕上输出新生成的s1。
程序的运行效果应类似地如图1所示,其中的9和abcdefghijk是从键盘输入的内容。
*/
#include<>
#include<>
intmain(void)
{
charstr1[127],str2[127];
inti,tem;
intlen1=0,len2=0;
printf("pleaseinputstring1:
");
gets(str1);
printf("Pleaseinputstring2:
");
gets(str2);
len1=strlen(str1);
len2=strlen(str2);
if(len1>len2)
{
tem=len1;
printf("\nstring1:
");
for(i=0;i { printf("%c",str1[i]); if(i { printf("%c",str2[i]); } } } else { tem=len2; printf("\nstring1: "); for(i=0;i { if(i { printf("%c",str1[i]); } printf("%c",str2[i]); } } printf("\n"); return0; } /*编写一程序实现以下功能 ①程序运行时先显示Pleaseinputnumbers: ,再从键盘上读入一组整数(只考虑int型),数与数之间只使用空格或回车作分隔。 数可正可负,最多10000个,但若读入的数为-222时,则表示输入结束且-222不算在该组数内。 ②对这一组数按从小到大的顺序进行排序。 ③将排序后的这一组数输出到屏幕上,输出格式为每行6个数,数与数之间使用逗号(,)分隔,两个逗号之间的宽度(不算逗号)为6且使用左对齐格式。 注意,行尾没有逗号。 程序的运行效果应类似地如图1所示,其中的1001208972-19200500210235624123478234-234-2342346235247823-341123423-222是从键盘输入的内容。 */ #include<> intmain(void) { intdat[10000],len; inti,j,tmp; printf("Pleaseinputnumbers: "); len=0; do { scanf("%d",&i); if(i==-222) { break; } dat[len]=i; len++; }while (1); for(i=0;i { for(j=i+1;j { if(dat[i]>dat[j]) { tmp=dat[i]; dat[i]=dat[j]; dat[j]=tmp; } } } printf("\nOutput: \n"); for(i=0;i { printf("%-6d",dat[i]); if(i%6! =5&&i! =len-1) { printf(","); } else { printf("\n"); } } return0; } /*编写一程序实现以下功能 从键盘上输入5个字符串(约定: 每个字符串中字符数≤80字节),对其进行升序排序并输出。 编程可用素材: printf("Input5strings: \n")...、printf("---------------------------\n")...。 程序的运行效果应类似地如图1所示,图1中的 hello my dear friend Areyouready? 是从键盘输入的内容。 */ #include<> #include<> intmain(void) { charaa[5][90],kk[5][90]; inti,j; printf("input5string\n"); for(i=0;i<5;i++) { gets(aa[i]); } for(i=0;i<4;i++) { for(j=0;j<4-i;j++) { if(strcmp(aa[j],aa[j+1])>0) { strcpy(kk[j],aa[j]); strcpy(aa[j],aa[j+1]); strcpy(aa[j+1],kk[j]); } } } printf("-------------------------------------------------------\n"); for(i=0;i<5;i++) { puts(aa[i]); } return(0); } /*根据要求编写程序的指定部分: 程序已编写部分代码(单击此处下载),请根据程序中的要求编写函数Move的代码——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。 函数voidmove(intarray[],intn,intm)的功能为: 在数组array中有n个整数,使其前面各数顺序向后移m(0<=m<=n)个位置,最后m个数变成最前面的m个数,编写该函数。 程序的运行效果应类似地如图1所示,图1中的10、3和12345678910是从键盘输入的内容。 */ /*P7-761*.C/ #include<> #include<> /*UserCodeBegin(考生可在本行后添加代码,例如全局变量的定义、函数原型声明等,行数不限)*/ voidmove(intarray[],intn,intm); /*UserCodeEnd(考生添加代码结束)*/ intmain(void) { int*number,n,m,i; printf("thetotalnumbersis: "); scanf("%d",&n); printf("backm: "); scanf("%d",&m); number=(int*)malloc(n*sizeof(int)); printf("input%dintegers: ",n); for(i=0;i { scanf("%d",&number[i]); } move(number,n,m); printf("aftermove%d: \n",m); for(i=0;i { printf("%d",number[i]); } printf("\n"); return0; } /*UserCodeBegin(考生在此后根据设计需要完成程序的其它部分,如函数move,行数不限)*/ voidmove(intarray[],intn,intm) { inti=0,flag=m; int*shuzu; shuzu=(int*)malloc(n*sizeof(int)); for(i=0;i { shuzu[i]=array[i]; } for(i=0;i { if(i { array[i]=shuzu[n-m]; m--; } else { array[i]=shuzu[i-flag]; } } } /* 根据要求编写程序的指定部分: 程序已编写部分代码(单击此处下载),请根据程序中的要求完善程序——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。 程序的功能是: 有五个学生,每个学生的数据包括学号、姓名(最长19字节)、三门课的成绩,从键盘输入五个学生的数据,计算每个学生的平均成绩并按平均成绩由高到低排序,并将排序结果显示。 要求用结构体编程,变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费内存空间和计算时间的好习惯。 编程可用素材: printf("Pleaseinputinfoofstudents: NoNameMathEnglishComputer\n")...。 程序的运行效果应类似地如图1所示,图1中的: 2001wanghai788390 2003zhangzhong828098 2005liumei958190 2006sunqian707790 2009jiansansa638790 是从键盘输入的内容。 */ #include<> #include<> /*UserCodeBegin(考生可在本行后添加代码,行数不限)*/ structSTUDENT { intnum; charname[20]; intmath; intenglish; intcomputer; floataverage; }; typedefstructSTUDENTSTUDENT; /*UserCodeEnd(考生添加代码结束)*/ intmain(void) { STUDENTmyclass[5],*pStu=myclass; inti; constintN=5; /*UserCodeBegin(考生可在本行后添加代码,行数不限)*/ intj,n=0; STUDENTmyclass1[1]; printf("Pleaseinputinfoofstudents: NoNameMathEnglishComputer\n"); for(i=0;i<5;i++) { printf("%d: ",i+1); scanf("%d",&myclass[i].num); scanf("%s",myclass[i].name); scanf("%d",&myclass[i].math); scanf("%d",&myclass[i].english); scanf("%d",&myclass[i]puter); } for(i=0;i<5;i++) { myclass[i].average=(float)((myclass[i].math+myclass[i].english+myclass[i]puter)/; } for(i=0;i<4;i++) { for(j=0;j<4-i;j++) { if(myclass[j+1].average>myclass[j].average) { myclass1[n]=myclass[j+1]; myclass[j+1]=myclass[j]; myclass[j]=myclass1[n]; } } } /*UserCodeEnd(考生添加代码结束)*/ printf("\nResultofsort: \n"); printf("NumNameMathEnglishComputerAverage\n"); for(i=0;i { printf("%-5d%-20s%-8d%-8d%-8d%\n",(pStu+i)->num,(pStu+i)->name, (pStu+i)->math,(pStu+i)->english,(pStu+i)->computer,(pStu+i)->average); } return0; } /*根据要求编写程序的指定部分: 程序已编写部分代码(单击此处下载),请根据程序中的要求完善程序——注意,除指定位置外,不能对程序中已有部分作任何修改或重新编写一个程序,否则作0分处理。 程序的功能是: 将从键盘读入的一个十六进制字符串转换成一个十进制数后输出。 注意: (1)可以只考虑转换成的十进制大小不会超过longint型所能表示的最大数。 (2)只需处理正数,不处理负数。 (3)输入的字母可以是大写也可以小写。 (4)程序中不能使用库函数isxdigit、sscanf或使用同名的变量、函数、单词。 程序的运行效果应类似地如图1、图2和图3所示,图1中的7fAa23Bf、图2中的12F和图3中的39fg是从键盘输入的内容。 */ /**/ #include<> /*UserCodeBegin(考生可在本行后添加代码,例如全局变量的定义、函数原型声明等,行数不限)*/ #include<> inti,sw,wei,len; /*UserCodeEnd(考生添加代码结束)*/ intmain(void) { intflag;/*标志输入数据是否合法,0表示不合法*/ longintresult10;/*转换结果*/ charstr[20]; printf("inputadata: "); gets(str); /*UserCodeBegin(考生可在本行后添加代码,行数不限)*/ result10=0; flag=1; wei=1; len=strlen(str)-1; for(i=0;i<=len;i++) { if(i! =0) { wei=wei*16; } if(str[len-i]>='0'&&str[len-i]<='9') { sw=((str[len-i]-'0')*wei); result10=result10+sw; } elseif(str[len-i]>='A'&&str[len-i]<='F') { sw=((str[len-i]-'A'+10)*wei); result10=result10+sw; } elseif(str[len-i]>='a'&&str[len-i]<='f') { sw=((str[len-i]-'a'+10)*wei); result10=result10+sw; } else { flag=0; break; } } /*UserCodeEnd(考生添加代码结束)*/ if(0==flag) { printf("\ndataiserror.\n"); } else { printf("\nTheresultis: %ld\n",result10); } return0; } /* 编写一程序实现以下功能 输出m和n之间的回文素数,m和n从键盘读入(假定满足5<=m<=n<=100000),回文是指正向与反向的字符都一样,例如1、11、101、131等。 编程可用素材: printf("pleaseinputm,n(5<=m<=n<=100000): ")...、printf("Result(%d-%d): \n"...、printf("%d"...。 程序的运行效果应类似地如图1所示,图1中的5,1000是从键盘输入的内容。 */ #include<> intmain(void) { intm,n; inti,j,k,x,num,wei[6]; printf("pleaseinputm,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 { if(i%x==0) { break; } } if(x>=i/2) { num=i; j=0; while(num) { wei[j]=num%10; j++; num=num/10; } for(k=0;k { if(wei[k]! =wei[j-1-k]) { break; } } if(k>=j/2) { printf("%d",i); } } } printf("\n"); return0; } /* 编写一程序实现以下功能 对从键盘输入的一行字符(约定: 字符数≤127字节)进行排序(按每个字符的ASCII码由小到大)并输出。 注意: 程序中不能使用库函数gets、fgets或使用同名的变量、函数、单词,编程可用素材: printf("inputthestring: \n")...、printf("\nResult: ")...。 程序的运行效果应类似地如图1所示,图1中的32679dsgj7u6kdsvs346r23v5h@#sfsaf是从键盘输入的内容。 */ #include<> #include<> intmain(void) { inti,j,tt; chartem,sr[128]; printf("inputthestring: \n"); for(i=0;i<127;i++) { scanf("%c",&sr[i]); if(sr[i]=='\n') { tt=i; break; } } .、printf("tothedate(****/**/**): \n")、printf("\nsum=%d\n"...。 程序的运行效果应类似地如图1和图2所示,图1中的2008/02/13、2010/04/24和图2中的2010/04/24、2008/02/13是从键盘输入的内容。 */ #include<> intpanduan(unsignedinty); if(y==y2) { M2=m2; } else { M2=12; }.、printf("PleaseinputajuZhen(...hang,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 编程 文库 所有 答案