C语言程序设计参考答案(湘大出版社)
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
25
积分
还剩页未读,继续阅读
关 键 词:语言程序设计
参考答案
出版社
资源描述:
.
C语言程序设计
——参考答案(湘大版)
主编:长寿湖畔有人家
创建日期:2015.9
修改日期:2016.10
第5章 分支结构
5.2
任给一个三位十进制整数,若该数中有且只有两个数码相同,则输出该数。
#include #include int main()
{
int shu,a,b,c;
printf("请输入一个三位的整数\n");
scanf("%d",&shu);
a=shu%10;
b=shu/10%10;
c=shu/100;
if(a==b&&b!=c) printf("%d\n",shu);
else if(b==c&&c!=a) printf("%d\n",shu);
else if(c==a&&a!=b) printf("%d\n",shu);
return 0;
}
5.3用case实现:
y=cos(x+3.0) 0<=x<10
Y=cos^2(x+7.5) 10<=x<20
Y=cos^4(x+4.0) 20<=x<30
#include #include #include int main()
{
int x;
double a;
printf("请输入一个整数\n");
scanf("%d",&x);
switch(x/10)
{
case 0: printf("%f\n",cos(x+3.0));break;
case 1: a=cos(x+7.5);printf("%f\n",a*a);break;
case 2: a=cos(x+4.0);printf("%f\n",a*a*a*a);
}
return 0;
}
5.4
给定一个整数,判断是奇数还是偶数,如果是奇数,则判断它是不是素数(质数)。
#include #include #include int main()
{
int x;
int i,gen;
printf("请输入一个整数\n");
scanf("%d",&x);
if(x%2==0) printf("偶数\n");
else
{
printf("奇数\n");
if(x>1)
{
gen=sqrt(x);
for(i=3;i<=gen;i+=2)
if(x%i==0) break;
if(i>gen) printf("素数\n");
else printf("非素数\n");
}
}
return 0;
}
5.5
3个数成等差数列,首尾两个数之积为中项的5倍,后2个数的和是第一个数的8倍,求这3个数。
这3个数分别是:3 9 15
第6章 循环结构
6.1
利用公式:…,求的近似值,直到最后一项的绝对值小于10^-6为止。
#include #include int main()
{
int i=1;
double sum=0;
while(1.0/i>0.000001)
{
if((i+1)/2%2==0) sum-=1.0/i;
else sum+=1.0/i;
i+=2;
}
printf("%f\n",sum*4);
return 0;
}
6.2
2/1,3/2,5/3,8/5,13/8,21/13.。。。。,求前20项的和。
#include #include #include int main()
{
int zi=2,mu=1,i=1,te;
double sum=0;
while(i<=20)
{
sum+=(zi/(mu+0.0));
te=zi;
zi=zi+mu;
mu=te;
i++;
}
printf("%f\n",sum);
return 0;
}
6.3
分别编程输出菱形图案
* A
*** BBB
***** CCCCC
******* DDDDDDD
********* EEEEEEEEEE
******* FFFFFFF
***** GGGGG
*** HHH
* I
第一个图
#include #include #include int main()
{
int kong=4,i,k,shu=1;
for(i=1;i<10;i++)
{
if(i<6)
{
for(k=kong;k>0;k--) printf(" ");
kong--;
for(k=0;k0;k--) printf("*");
shu-=2;
printf("\n");
}
}
return 0;
}
第二个图
#include #include #include int main()
{
int kong=4,i,k,shu=1;
for(i=1;i<10;i++)
{
if(i<6)
{
for(k=kong;k>0;k--) printf(" ");
kong--;
for(k=0;k0;k--) printf("%c",i-1+A);
shu-=2;
printf("\n");
}
}
return 0;
}
6.4
求出3000以内的亲密数,即整数A的全部因子(除本身)之和等于B,整数B的全部因子(除本身)之和等于A。
#include #include #include int main()
{
int i,k,gen,sum,s2;
for(i=2;i<=3000;i++)
{
gen=sqrt(i);
sum=0;
for(k=1;k<=gen;k++)
{
if(i%k==0)
{
sum+=k;
if((i/k)!=i) sum+=(i/k);
if(k*k==i) sum-=k;
}
}
if(sum>i&&sum<3000)
{
//printf("%d %d\n",i,sum);
gen=sqrt(sum);
s2=0;
for(k=1;k<=gen;k++)
{
if(sum%k==0)
{
s2+=k;
if((sum/k)!=sum) s2+=(sum/k);
if(k*k==sum) s2-=k;
}
}
if(s2==i) printf("%d %d\n",i,sum);
}
}
return 0;
}
6.5
求出所有水仙花数。即三位数的各位数字的立方和等于自己,例如153=1^3+5^3+3^3.
#include #include #include int main()
{
int a,b,c,i;
for(i=100;i<1000;i++)
{
a=i%10;
b=i/10%10;
c=i/100;
if(i==a*a*a+b*b*b+c*c*c) printf("%d\n",i);
}
return 0;
}
6.6
1000以内的所有完数,即一个数等于它的因子之和,例如
6=1+2+3.并输出它的因子。
#include #include #include int main()
{
int sum,i,k,gen,g;
for(i=6;i<1000;i++)
{
sum=1;
gen=sqrt(i);
for(k=2;k<=gen;k++)
{
if(i%k==0)
{
sum+=k;
sum+=i/k;
if(k*k==i) sum-=k;
if(sum==i)
{
printf("%d\n因子:1 ",sum);
for(g=2;g<=gen;g++)
if(i%g==0)
{
printf("%d ",g);
if(i/g!=g) printf("%d ",i/g);
}
printf("\n");
}
}
}
}
return 0;
}
6.7
3025分成两段30和25,且(30+25)^2=3025,求出全部四位数。
#include #include #include int main()
{
int i,a,b,c;
for(i=1000;i<10000;i++)
{
a=i/100;
b=i%100;
c=a+b;
if(c*c==i) printf("%d\n",i);
}
return 0;
}
6.8
求出满足下面条件的三位数:该数只有两个数字相同,例如121,112
#include #include #include int main()
{
int i,a,b,c;
for(i=100;i<1000;i++)
{
a=i/100;
b=i%10;
c=i/10%10;
if(c==a&&a!=b||a==b&&b!=c||b==c&&c!=a) printf("%d\n",i);
}
return 0;
}
6.9
猴子吃桃问题。第一天吃了一半还多一个,以后每天都这样,第十天发现,只有一个了,问一共有多少桃子?
#include #include #include int main()
{
int i,sum=1;
for(i=9;i>0;i--)
{
sum=(sum+1)*2;
}
printf("%d\n",sum);
return 0;
}
第7章 数组
7.1
输入一个整型十进制数,转成十六进制,并输出。
#include #include int main()
{
int n,i=0,k;
int shu[10];
scanf("%d",&n);
i=0;
while(n>0)
{
shu[i]=n%16;
i++;
n/=16;
}
for(k=i-1;k>=0;k--)
{
if(shu[k]<10) printf("%d",shu[k]);
else printf("%c",A+shu[k]%10);
}
printf("\n");
return 0;
}
7.2
输入一个整数,判断其是不是回文数.
#include #include int main()
{
int n,i,k;
int shu[10];
scanf("%d",&n);
i=0;
while(n>0)
{
shu[i]=n%10;
n/=10;
i++;
}
k=0;
i--;
while(k<=i)
{
if(shu[i]!=shu[k]) break;
k++;
i--;
}
if(k>i)
{
printf("Yes\n");
}
else printf("No\n");
return 0;
}
7.3
有一个34的矩阵,找出其中的最大值,及对应的坐标号。
#include #include int main()
{
int shu[3][4];
int i,k,max=0,xx,yy;
for(i=0;i<3;i++)
{
for(k=0;k<4;k++)
{
scanf("%d",&shu[i][k]);
if(shu[i][k]>max)
{
max=shu[i][k];
xx=i;yy=k;
}
}
}
printf("%d\n%d %d\n",max,xx,yy);
return 0;
}
7.4
求数列第10项及前10项的和。F1=1,f2=1,
F(n)=3*f(n-1)+2*f(n-2)
#include #include int main()
{
int i;
int f[12],sum=2;
f[1]=f[2]=1;
for(i=3;i<=10;i++)
{
f[i]=f[i-1]*3+f[i-2]*2;
sum+=f[i];
}
printf("第10项:%d\n和:%d\n",f[10],sum);
return 0;
}
7.5
打印杨辉三角,8行
#include #include int main()
{
int hui[10][20];
int i,k,kon=7;
for(i=0;i<10;i++)
for(k=0;k<20;k++)
hui[i][k]=0;
for(i=0;i<10;i++)
{
for(k=0;k<=i;k++)
{
hui[i][k]=(k==0)?1:hui[i-1][k-1]+hui[i-1][k];
}
}
for(i=0;i<8;i++)
{
for(k=kon;k>0;k--) printf(" ");
kon--;
for(k=0;k<=i;k++)
{
if(hui[i][k]>0)
{
printf("%2d ",hui[i][k]);
}
}
printf("\n");
}
return 0;
}
7.6
从键盘输入2个字符串,若不相等,则把短的字符串连接到长的字符串后面,输出新的字符串。
#include #include int main()
{
char f1[100],f2[100];
int i,k;
scanf("%s",f1);
scanf("%s",f2);
i=k=0;
while(f1[i]&&f2[k])
{
i++;k++;
}
if(f1[i]||f2[k])
{
if(f1[i])
{
while(f1[i])
{
i++;
}
k=0;
while(f2[k])
{
f1[i]=f2[k];
i++;k++;
}
f1[i]=0;
printf("%s\n",f1);
}
else
{
while(f2[k])
{
k++;
}
i=0;
while(f1[i])
{
f2[k]=f1[i];
i++;k++;
}
f2[k]=0;
printf("%s\n",f2);
}
}
return 0;
}
7.7
输出如下图案:
* *
* * * *
* * * * * *
* * * * * * *
#include #include int main()
{
char tu[4][7];
int i,k,kon=5;
for(i=0;i<4;i++)
for(k=0;k<7;k++)
tu[i][k]=*;
for(i=0;i<4;i++)
{
for(k=i+1;k#include void bian(int n,char f[])
{
int ff[10],i=0,k,g=0;
while(n)
{
ff[i++]=n%16;
n/=16;
}
for(k=i-1;k>=0;k--)
{
if(ff[k]<10) f[g++]=ff[k]+0;
else f[g++]=ff[k]%10+A;
}
f[g]=0;
}
int main()
{
int n;
char f[10];
scanf("%d",&n);
bian(n,f);
printf("%s\n",f);
return 0;
}
8.2
筛法求1000以内的素数。
#include int main()
{
int shu[1001];
int i,k;
for(i=2;i<=1000;i++) shu[i]=0;
for(i=2;i<=1000;i++){
if(shu[i]==0){
printf("%d ",i);
for(k=i*2;k<=1000;k+=i) shu[k]=1;
}
}
return 0;
}
未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。。
8.3
输出NN的反时针方向的螺旋方阵。
8.4
打印n阶魔方阵。
8.5
用移位的方法,实现十进制数以二进制形式输出。
8.6
分别编写5个函数,实现字符串的复制,连接,大写转小写,小写转大写,字符串比较。
8.7
利用海伦公式求三角形面积。S=(a+b+c)/2;分别定义2个函数,一个求s,一个求面积,主函数输入3边的长,并判断是否合法,然后求面积。
8.8
编写程序,求2的n次方,n可以大于100.用数组存结果。
8.9
编写程序,求n!,例如100!
8.10
求1!+2!+......+10!
8.11
在数字插入千分位符,例如1234567,表示成1,234,567
8.12
给定年,月,日,判断那是该年的第几天,并判断是星期几?
8.13
给若干字符串冒泡排序。
8.14
将数字字符串转成数字。如“123”是123.
第9章 指针
9.2
从键盘输入3个整数,从大到小输出。
9.3
自定义strcmp函数,实现字符串比较。
9.4
自定义strlen函数,求出字符串的长度。
9.5
编函数,实现从长度为n的字符串第m个字符开始,截取k个,到另一个字符串中。
9.6
一个班4个学生,5门课程。
①计算每门课的平均分。
②找出2门课不及格的学生,输出他的学号,成绩,姓名,平均分。
③找出平均分90以上,或每科85以上的学生。
(用结构体数组)
9.7
利用辛甫生公式求积分
9.8
用指针数组实现,输入月份,输出对应的英文名。
9.9
编写函数实现2个n阶矩阵相乘。
9.10
输入一行文字,统计大写字母,小写字母,空格,数字,其他字符各几个?
精选文档
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:C语言程序设计参考答案(湘大出版社)
链接地址:https://www.renrendoc.com/p-80871394.html