《C程序设计第3版》谭浩强 著部分课后习题答案主要是第678章.docx
《《C程序设计第3版》谭浩强 著部分课后习题答案主要是第678章.docx》由会员分享,可在线阅读,更多相关《《C程序设计第3版》谭浩强 著部分课后习题答案主要是第678章.docx(19页珍藏版)》请在冰豆网上搜索。
![《C程序设计第3版》谭浩强 著部分课后习题答案主要是第678章.docx](https://file1.bdocx.com/fileroot1/2022-10/28/33b2d6b1-925d-4a17-b742-00af4de323d6/33b2d6b1-925d-4a17-b742-00af4de323d61.gif)
《C程序设计第3版》谭浩强著部分课后习题答案主要是第678章
《C程序设计(第三版)》部分课后习题答案(谭浩强著)
6.4求
源代码如下:
#include
floatfactorial(intn)//定义阶乘函数
{
inti;
floatproduct=1;
for(i=1;i<=n;i++)
{
product=product*i;
}
returnproduct;
}
intmain(void)
{
intj;
floatsum=0;
for(j=1;j<=3;j++)
{
sum+=factorial(j);
}
printf("%g\n",sum);
return0;
}
6.6“水仙花数”
源代码如下:
#include
#include
intfun(intnum)
{
inti=0;
intarray[3];
intsum=0;
while(num)
{
array[i]=num%10;
i++;
num=num/10;
}
for(i=0;i<3;i++)
{
sum+=pow(array[i],3);
}
returnsum;
}
intmain()
{
intj;
printf("输出所有的“水仙花数”:
\n");
for(j=100;j<=999;j++)
{
if(j==fun(j))
{
printf("%-7d",j);
}
}
printf("\n");
return0;
}
6.7完数
源代码如下:
#include
#defineM20
voidmain()
{
inti,j;
intsum;
intarray[M];//用于存放“完数”的数组
intk=0;//数组下标
intn;//“完数”的个数
for(i=1;i<=1000;i++)
{
sum=0;
for(j=1;j<=i/2;j++)
{
if(i%j==0)
{
sum=sum+j;
}
}
if(sum==i)
{
array[k]=i;
k++;
}
}
printf("输出“完数”及其因子:
\n");
n=k;
for(k=0;k{
printf("%ditsfactorsare",array[k]);
for(j=1;j<=array[k]/2;j++)
{
if(array[k]%j==0)
{
printf("%d,",j);
}
}
printf("\n");
}
}
7.14比较两个字符串
源代码如下:
#include
#include
#defineM20
voidmain()
{
chars1[M],s2[M];//定义两个字符串数组
intlen1,len2;
intmax_len;
inti;
intd;
printf("Inputthestringone:
\n");
gets(s1);
printf("Inputthestringtwo:
\n");
gets(s2);
len1=strlen(s1);
len2=strlen(s2);
max_len=len1>len2?
len1:
len2;//求二者中的较大值
for(i=0;i{
d=s1[i]-s2[i];
if(d!
=0)
{
break;
}
}
printf("Theresultaftercomparingis%d.\n",d);
}
8.3判断素数的算法
源代码如下:
#include
#include
intPrime(intnumber)
{
inti;
doublek;
k=sqrt(number);
for(i=2;i<=k;i++)
{
if(number%i==0)
{
break;
}
}
if(i>k)
{
return1;
}
else
{
return0;
}
}
intmain()
{
intnum;
intresult;
printf("Inputaintegralnumber:
\n");
scanf("%d",&num);
if(num==1)
{
printf("%d既不是素数也不是合数。
\n",num);
return0;
}
result=Prime(num);
if(result)
{
printf("%disaprimenumber.\n",num);
}
else
{
printf("%disnotaprimenumber.\n",num);
}
return0;
}
8.4对3×3的矩阵实现转置
源代码如下:
#include
voidTranspose(intarray_1[][3])
{
inti,j;
intarray_2[3][3];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
array_2[j][i]=array_1[i][j];
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
array_1[i][j]=array_2[i][j];
}
}
}
voidmain()
{
inta[3][3];
inti,j;
printf("输入一个3×3的矩阵:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
}
Transpose(a);
printf("转置矩阵为:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
printf("%-5d",a[i][j]);
if(j==2)
{
printf("\n");
}
}
}
}
8.5对字符串进行反序处理
源代码如下:
#include
#include
#defineN20
voidReverse(char*pointer,intlen)
{
inti;
chartemp;
for(i=0;i{
temp=pointer[i];
pointer[i]=pointer[len-1-i];
pointer[len-1-i]=temp;
}
}
voidmain()
{
charstr[N];
intlength;//字符串长度
printf("Inputastring:
\n");
gets(str);
length=strlen(str);
Reverse(str,length);
printf("Thenewstring:
\n");
puts(str);
}
8.6对两个字符串进行连接处理
源代码如下:
#include
voidmy_strcat(char*pointer1,char*pointer2)
{
while(*pointer1)
{
pointer1++;
}
while(*pointer2)
{
*pointer1=*pointer2;
pointer1++;
pointer2++;
}
*pointer1=NULL;
}
voidmain()
{
charstr1[30],str2[10];
printf("InputstringA:
\n");
gets(str1);
printf("InputstringB:
\n");
gets(str2);
my_strcat(str1,str2);
printf("ThestringA&B:
\n");
puts(str1);
}
8.8将“1990”转换成“1990”
源代码如下:
#include
voidfun(intnum)
{
intarray1[4],array2[7];
inti=0;
while(num)
{
array1[i]=num%10;
num=num/10;
i++;
}
for(i=0;i<4;i++)
{
array1[i]=array1[i]+'0';//将数字转化为相应的字符
}
for(i=0;i<4;i++)
{
array2[2*i]=array1[i];
}
for(i=0;i<=2;i++)
{
array2[2*i+1]='';
}
for(i=6;i>=0;i--)
{
printf("%c",array2[i]);//以字符的形式输出
}
}
voidmain()
{
intnumber;
printf("输入一个4位数字:
\n");
scanf("%d",&number);
printf("输出形式为:
\n");
fun(number);
printf("\n");
}
8.11对字符数组进行排序
源代码如下:
#include
voidsort(charpointer[])
{
inti,j;
chartemp;
for(j=0;j<9;j++)
{
for(i=0;i<9-j;i++)
{
if(pointer[i]>pointer[i+1])
{
temp=pointer[i];
pointer[i]=pointer[i+1];
pointer[i+1]=temp;
}
}
}
}
voidmain()
{
chararray[10]={'a','s','d','f','g','h','j','k','l','x'};
inti;
printf("输入的10个字符为:
\n");
for(i=0;i<10;i++)
{
printf("%-5c",array[i]);
}
printf("\n");
sort(array);
printf("Thesortednumbers:
\n");
for(i=0;i<10;i++)
{
printf("%-5c",array[i]);
}
printf("\n");
}
8.13递归算法求勒让