⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c.txt

📁 C语言数课后答案
💻 TXT
📖 第 1 页 / 共 2 页
字号:
case 8: 
k7=i; 
break; 
case 9: 
k8=i; 
break; 
case 10: 
k9=i; 
break; 
} 
} 
} 
if(s==0) 
{ 
printf("%d是一个‘完数’,它的因子是",j); 
if(n>1) 
printf("%d,%d",k0,k1); 
if(n>2) 
printf(",%d",k2); 
if(n>3) 
printf(",%d",k3); 
if(n>4) 
printf(",%d",k4); 
if(n>5) 
printf(",%d",k5); 
if(n>6) 
printf(",%d",k6); 
if(n>7) 
printf(",%d",k7); 
if(n>8) 
printf(",%d",k8); 
if(n>9) 
printf(",%d",k9); 
printf("\n"); 
} 
} 
方法二:此题用数组方法更为简单. 
main() 
{ 
static int k[10]; 
int i,j,n,s; 
for(j=2;j<=1000;j++) 
{ 
n=-1; 
s=j; 
for(i=1;i<j;i++) 
{ 
if((j%i)==0) 
{ 
n++; 
s=s-i; 
k[n]=i;/*将每个因子赋给k0,k1...k9*/ 
} 
} 
if(s==0) 
{ 
printf("%d是一个完数,它的因子是:",j); 
for(i=0;i<n;i++) 
printf("%d,",k[i]); 
printf("%d\n",k[n]); 
} 
} 
5.8 有一个分数序列:2/1,3/2,5/3,8/5……求出这个数列的前20项之和. 
解: main() 
{ 
int n,t,number=20; 
float a=2,b=1,s=0; 
for(n=1;n<=number;n++) 
{ 
s=s+a/b; 
t=a,a=a+b,b=t; 
} 
printf("总和=%9.6f\n",s); 
} 
6.9球反弹问题 
main() 
{ 
float sn=100.0,hn=sn/2; 
int n; 
for(n=2;n<=10;n++) 
{ 
sn=sn+2*hn;/*第n次落地时共经过的米数*/ 
hn=hn/2;/*第n次反跳高度*/ 
} 
printf("第10次落地时共经过%f米 \n",sn); 
printf("第10次反弹%f米.\n",hn); 
} 
6.10猴子吃桃 
main() 
{ 
int day,x1,x2; 
day=9; 
x2=1; 
while(day>0) 
{ 
x1=(x2+1)*2; 
x2=x1; 
day--; 
} 
printf("桃子总数=%d\n",x1); 
} 
6.14打印图案 
main() 
{ 
int i,j,k; 
for(i=0;i<=3;i++) 
{ 
for(j=0;j<=2-1;j++) 
printf(" "); 
for(k=0;k<=2*i;k++) 
printf("*"); 
printf("\n"); 
} 
for(i=0;i<=2;i++) 
{ 
for(j=0;j<=i;j++) 
printf(" "); 
for(k=0;k<=4-2*i;k++) 
printf("*"); 
printf("\n"); 
} 
6.15乒乓比赛 
main() 
{ 
char i,j,k;/*i是a是对手;j是b是对手;k是c的对手*/ 
for(i='x';i<='z';i++) 
for(j='x';j<='z';j++) 
{ 
if(i!=j) 
for(k='x';k<='z';k++) 
{ 
if(i!=k&&j!=k) 
{if(i!='x' && k!='x' && k! ='z') 
printf("顺序为:\na-%c\tb--%c\tc--%c\n",i,j,k); 
} 
} 
} 
} 
7.1用筛选法求100之内的素数. 
/*用筛选法求100之内的素数*/ 
#include<math.h> 
#define N 101 
main() 
{int i,j,line,a[N]; 
for(i=2;i<N;i++) a[i]=i; 
for(i=2;i<sqrl(N);i++) 
for(j=i+1;j<N;j++) 
{if(a[i]!=0 && a[j]!=0) 
if(a[j]%a[i]==0) 
a[j]=0; 
printf("\n"); 
for(i=2,line=0;i<N;i++) 
{ if(a[i]!=0) 
{printf("%5d",a[i]); 
line++; 
if(line==10) 
{printf("\n"); 
line=0;} 
} 
} 
7.2用选择法对10个数排序. 
/*选择法排序.*/ 
#define N 10 
main() 
{ int i,j,min,temp,a[N]; 
/*输入数据*/ 
printf("请输入十个数:\n"); 
for (i=0;i<N;i++) 
{ printf("a[%d]=",i); 
scanf("%d",&a[i]); 
} 
printf("\n"); 
for(i=0;i<N;i++) 
printf("%5d",a[i]); 
printf("\n"); 
/*排序*/ 
for (i=0;i<N-1;i++) 
{ min=i; 
for(j=i+1;j<N;j++) 
if(a[min]>a[j]) min=j; 
temp=a[i]; 
a[i]=a[min]; 
a[min]=temp; 
} 
/*输出*/ 
printf("\n排序结果如下:\n"); 
for(i=0;i<N;i++) 
printf("%5d",a[i]); 
} 
7.3对角线和: 
/*计算矩阵对角线元素之和*/ 
main() 
{ 
float a[3][3],sum=0; 
int i,j; 
printf("请输入矩阵元素:\n"); 
for(i=0;i<3;i++) 
for(j=0;j<3;j++) 
scanf("%f",&a[i][j]); 
for(i=0;i<3;i++) 
sum=sum+a[i][i]; 
printf("对角元素之和=6.2f",sum); 
} 
7.4插入数据到数组 
/*插入数据到数组*/ 
main() 
{int a[11]={1,4,6,9,13,16,19,28,40,100}; 
int temp1,temp2,number,end,i,j; 
printf("初始数组如下:"); 
for (i=0;i<10;i++) 
printf("%5d",a[i]); 
printf("\n"); 
printf("输入插入数据:"); 
scanf("%d",&number); 
end=a[9]; 
if(number>end) 
a[10]=number; 
else 
{for(i=0;i<10;i++) 
{ if(a[i]>number) 
{temp1=a[i]; 
a[i]=number; 
for(j=i+1;j<11;j++) 
{temp2=a[j]; 
a[j]=temp1; 
temp1=temp2; 
} 
break; 
} 
} 
} 
for(i=0;j<11;i++) 
printf("a%6d",a[i]); 
} 
7.5将一个数组逆序存放。 
/*数组逆序存放*/ 
#define N 5 
main() 
{ int a[N]={8,6,5,4,1},i,temp; 
printf("\n 初始数组:\n"); 
for(i=0;i<N;i++) 
printf("%4d",a[i]); 
for(i=0;i<N/2;i++) 
{ temp=a[i]; 
a[i]=a[N-i-1]; 
a[N-i-1]=temp; 
} 
printf("\n 交换后的数组:\n"); 
for(i=0;i<N;i++) 
printf("%4d",a[i]); 
} 
7.6杨辉三角 
/*打印杨辉三角形*/ 
#define N 11 
main() 
{ int i,j,a[N][N]; 
for(i=1;i<N;i++) 
{a[i][i]=1; 
a[i][1]=1; 
} 
for(i=3;i<N;i++) 
for(j=2;j<=i-1;j++) 
a[i][j]=a[i01][j-1]+a[i-1][j]; 
for(i=1;i<N;i++) 
{ for(j=1;j<=i;j++) 
printf("%6d",a[i][j]; 
printf("\n"); 
} 
printf("\n"); 
} 
7.8鞍点 
/*查找鞍点*/ 
#define N 10 
#define M 10 
main() 
{ int i,j,k,m,n,flag1,flag2,a[N][M],max,maxi,maxj; 
printf("\n输入行数n:"); 
scanf("%d",&n); 
printf("\n输入列数m:"); 
scanf("%d",&m); 

for(i=0;i<n;i++) 
{ printf("第%d行?\n",i); 
for(j=0;j<m,j++); 
scanf("%d",&a[i][j]; 
} 
for(i=0;i<n;i++) 
{ for(j=0;j<m;j++) 
printf("%5d",a[i][j]); 
pritf("\n"); 
} 
flag2=0; 
for(i=0;i<n;i++) 
{ max=a[i][0]; 
for(j=0;j<m;j++) 
if(a[i][j]>max) 
{ max=a[i][j]; 
maxj=j; 
} 
for (k=0,flag1=1;k<n && flag1;k++) 
if(max>a[k][max]) 
flag1=0; 
if(flag1) 
{ printf("\n第%d行,第%d列的%d是鞍点\n",i,maxj,max); 
flag2=1; 
} 
} 
if(!flag2) 
printf("\n 矩阵中无鞍点! \n"); 
} 
7.9变量说明:top,bott:查找区间两端点的下标;loca:查找成功与否的开关变量. 
/*折半查找*/ 
#include<stdio.h> 
#define N 15 
main() 
{ int i,j,number,top,bott,min,loca,a[N],flag; 
char c; 
printf("输入15个数(a[i]>[i-1])\n); 
scanf("%d",&a[0]); 
i=1; 
while(i<N) 
{ scanf("%d",&a[i]); 
if(a[i]>=a[i-1]) 
i++; 
esle 
{printf("请重输入a[i]"); 
printf("必须大于%d\n",a[i-1]); 
} 
} 
printf("\n"); 
for(i=0;i<N;i++) 
printf("%4d",a[i]); 
printf("\n"); 

flag=1; 
while(flag) 
{ 
printf("请输入查找数据:"); 
scanf("%d",&number); 
loca=0; 
top=0; 
bott=N-1; 
if((number<a[0])||(number>a[N-1])) 
loca=-1; 
while((loca==0)&&(top<=bott)) 
{ min=(bott+top)/2; 
if(number==a[min]) 
{ loca=min; 
printf("%d位于表中第%d个数\n",number,loca+1); 
} 
else if(number<a[min]) 
bott=min-1; 
else 
top=min+1; 
} 
if(loca==0||loca==-1) 
printf("%d不在表中\n",number); 
printf("是否继续查找?Y/N!\n"); 
c=getchar(); 
if(c=='N'||c=='n') 
flag=0; 
} 
} 
7.10/*统计字符数*/ 
main() 
{ int i,j,uppn,lown,dign,span,othn; 
char text[3][80]; 
uppn=lown=dign=span=othn=0; 
for(i=0;i<3;i++) 
{ printf("\n请输入第%d行:\n",i); 
gets(text[i]); 
for(j=0;j<80 && text[i][j]!='\0';j++) 
{if(text[i][j]>='A' && text[i][j]<='Z') 
uppn+=1; 
else if(text[i][j]>='a' && text[i][j]<='z') 
lown+=1; 
else if(text[i][j]>='1' && text[i][j]<='9') 
dign+=1; 
else if(text[i][j]=' ') 
span+=1; 
else 
othn+=1; 
} 
} 
for(i=0;i<3;i++) 
printf("%s=n",text[i]); 
printf("大写字母数:%d\n",uppn); 
printf("小写字母数:%d\n",lown); 
printf("数字个数:%d\n",dign); 
printf("空格个数:%d\n",span); 
printf("其它字符:%d\n",othn); 
} 
7.11/*打印图案*/ 
main() 
{static char a[5]={'*','*','*','*','*'}; 
int i,j,k; 
char space=' '; 
for(i=0;i<=5;i++) 
{printf("\n"); 
for(j=1;j<=3*i;j++) 
printf("%lc",space); 
for(k=0;k<=5;k++) 
printf("%3c",a[k]; 
} 
} 
7.12/*译电文*/ 
#include<stdio.h> 
main() 
{int i,n; 
char ch[80],tran[80]; 
printf("请输入字符:"); 
gets(ch); 
printf("\n密码是%c",ch); 
i=0; 
while(ch[i]!='\0') 
{if((ch[i]>='A')&&(ch[i]<='Z')) 
tran[i]=26+64-ch[i]+1+64; 
else if((ch[i]>='a')&&(ch[i]<='z')) 
tran[i]=26+96-ch[i]+1+96; 
else 
tran[i]=ch[i]; 
i++; 
} 
n=i; 
printf("\n原文是:"); 
for(i=0;i<n;i++) 
putchar(tran[i]); 
} 
7.13/*连接两个字符串(不用'stract')*/ 
main() 
{ 
char s1[80],s2[40]; 
int i=0,j=0; 
printf("\n请输入字符串1:"); 
scanf("%s",s1); 
printf("\n请输入字符串2:"); 
scanf("%s",s2); 
while(s1[i]!='\0') 
i++; 
while(s2[j]!='\0') 
s1[i++]=s2[j++]; 
s1[i]='\0'; 
printf("\n连接后字符串为:%s",s1); 
} 
7.14/*字符串比较*/ 
#include<stdio.h> 
main() 
{int i,resu; 
char s1[100],s2[100]; 
printf("请输入字符串1:\n"); 
gets(s1); 
printf("\n 请输入字符串2:\n"); 
gets(s2); 
i=0; 
while((s1[i]==s2[i]) && (s1[i]!='\0'))i++; 
if(s1[i]=='\0' && s2[i]=='\0')resu=0; 
else 
resu=s1[i]-s2[i]; 
printf(" %s与%s比较结果是%d",s1,s2,resu); 
} 
7.15/*字符串复制*/ 
#include<stdio.h> 
main() 
{ 
char from[80],to[80]; 
int i; 
printf("请输入字符串"); 
scanf("%s",from); 
for(i=0;i<=strlen(from);i++) 
to[i]=from[i]; 
printf("复制字符串为:%s\n",to); 
} 
第八章 函数 
8.1(最小公倍数=u*v/最大公约数.) 
hcf(u,v) 
int u,v; 
(int a,b,t,r; 
if(u>v) 
{t=u;u=v;v=t;} 
a=u;b=v; 
while((r=b%a)!=0) 
{b=a;a=r;} 
return(a); 
} 

lcd(u,v,h) 
int u,v,h; 
{int u,v,h,l; 
scanf("%d,%d",&u,&v); 
h=hcf(u,v); 
printf("H.C.F=%d\n",h); 
l=lcd(u,v,h); 
printf("L.C.d=%d\n",l); 
} 

{return(u*v/h);} 
main() 
{int u,v,h,l; 
scanf("%d,%d",&u,&v); 
h=hcf(u,v); 
printf("H.C.F=%d\n",h); 
l=lcd(u,v,h); 
printf("L.C.D=%d\n",l); 
} 
8.2求方程根 
#include<math.h> 
float x1,x2,disc,p,q; 

greater_than_zero(a,b) 
float a,b; 
{ 
x1=(-b+sqrt(disc))/(2*a); 
x2=(-b-sqrt(disc))/(2*a); 
} 

equal_to_zero(a,b) 
float a,b; 
{x1=x2=(-b)/(2*a);} 

smaller_than_zero(a,b) 
float a,b; 
{p=-b/(2*a); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -