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