C语言课后作业答案.docx
《C语言课后作业答案.docx》由会员分享,可在线阅读,更多相关《C语言课后作业答案.docx(37页珍藏版)》请在冰豆网上搜索。
C语言课后作业答案
3-5-1正确
大写字母转化成小写或者小写变大写
#include
voidmain()
{
charch;
printf("请输入一个字符:
");
scanf("%c",&ch);
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')
{
if(ch>='A'&&ch<='Z')ch=ch+32;
elsech=ch-32;
}
elsech=ch;
printf("%c\n",ch);
}
3-5-2大写转化成小写或者小写变大写
#include
voidmain()
{
charch;
printf("请输入一个字符:
");
scanf("%c",&ch);
ch=ch;
{
if(ch>='A'&&ch<='Z')ch=ch+32;
elsech=ch-32;
}
printf("%c\n",ch);
}
3-5-3大写转化成小写或者小写变大写
#include
voidmain()
{
charch;
printf("请输入一个字符:
");
scanf("%c",&ch);
if(ch>='a'&&ch<='z')ch=ch-32;
elseif(ch>='A'&&ch<='Z')ch=ch+32;
elsech=ch;
printf("%c\n",ch);
}
3-6-1正确分段函数
#include
voidmain()
{
intx,y;
printf("请输入x:
");
scanf("%d",&x);
if(x<=1)y=x;
else
{
if(1elsey=3*x-8;
}
printf("x=%d,y=%d\n",x,y);
}
3-6-2正确分段函数
#include
voidmain()
{
intx,y;
printf("请输入x:
");
scanf("%d",&x);
if(x>=10)y=3*x-8;
elseif(x>1)y=2*x+1;
elsey=x;
printf("x=%d,y=%d\n",x,y);
}
3-6-3正确
#include
voidmain()
{
intx,y;
printf("请输入x:
");
scanf("%d",&x);
if(x<=1)y=x;
else
if(1else
if(x>=10)y=3*x-8;
printf("x=%d,y=%d\n",x,y);
}
计算器正确
#include
voidmain()
{
floatx,y,z;
charch;
printf("请输入操作数运算符操作数:
");
scanf("%f%c%f",&x,&ch,&y);
switch(ch)
{
case'+':
printf("%f+%f=%f\n",x,y,x+y);break;
case'-':
printf("%f-%f=%f\n",x,y,x-y);break;
case'*':
printf("%f*%f=%f\n",x,y,x*y);break;
case'/':
printf("%f/%f=%f\n",x,y,x/y);break;
default:
printf("输入的运算符错误!
\n");
}
}
7—6正确
#include
voidmain()
{
intx;
printf("请输入一个整数:
");
scanf("%d",&x);
if(x%2==0)x=x;
elsex=x+1;
printf("%d\n",x);
}
实验四的补充试验题
计算由键盘输入的N个数的平均值
#include
voidmain()
{
inti=1,n;
floatx,y,s=0;
printf("请输入要计算的数的个数:
");
scanf("%d",&n);
do
{
scanf("%f",&x);
s=s+x;
i=i+1;
}
while(i<=n);
printf("%f\n",y=s/n);
}
4-6计算s=a+aa+aaa+aaaa+…..的值
#include
voidmain()
{
inta,n,i=1;
longintt=0,s=0;
printf("请输入a和n:
");
scanf("%d%d",&a,&n);
while(i<=n)
{
t=t+a;
s=s+t;
a=a*10;
i++;
}
printf("a+aa+aaa+...=%d\n",s);
}
4-5
#include
voidmain()
{
charc;
intnum1=0,num2=0,num3=0,num4=0;
printf("请输入一行字符:
\n");
while((c=getchar())!
='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')num1++;
elseif(c=='')num2++;
elseif(c>='0'&&c<='9')num3++;
elsenum4++;
}
printf("字母:
%d,空格:
%d,数字:
%d,其他:
%d\n",num1,num2,num3,num4);
}
4——7输出由*组成的菱形(最左边有空列)
#include
voidmain()
{
inti,a,b;
for(i=1;i<=3;i++)
{
for(a=4-i;a>0;a--)printf("");
for(b=2*i-1;b>0;b--)printf("*");
printf("\n");
}
for(i=1;i<=2;i++)
{
for(a=i+1;a>=1;a--)printf("");
for(b=5-i*2;b>=1;b--)printf("*");
printf("\n");
}
}
副本输出由*组成的菱形(最左边无空列)
#include
voidmain()
{
inti,a,b;
for(i=1;i<=3;i++)
{
for(a=3-i;a>0;a--)printf("");
for(b=2*i-1;b>0;b--)printf("*");
printf("\n");
}
for(i=1;i<=2;i++)
{
for(a=i;a>=1;a--)printf("");
for(b=5-i*2;b>=1;b--)printf("*");
printf("\n");
}
}
鸡兔同笼
#include
voidmain()
{
inta,b;
for(a=0;a<=35;a++)
for(b=0;b<=24;b++)
{
if(a*2+b*4==94&&a+b==35)
printf("a=%d,b=%d\n",a,b);
}
}
水仙花数1
#include
voidmain()
{
intm,i,j,k,n=0;
for(m=100;m<=999;m++)
{
i=m/100;
j=m/10-i*10;
k=m%10;
if(m==i*i*i+j*j*j+k*k*k)n++,
printf("%d\n",m);
}printf("水仙花数的个数=%d\n",n);
}
水仙花数2
#include
voidmain()
{
inta=0,i,j,k,m,n;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{
m=i*100+j*10+k;
n=i*i*i+j*j*j+k*k*k;
if(m==n)a++,
printf("%d\n",m);
}printf("水仙花数的个数=%d\n",a);
}
三—7—16
#include
voidmain()
{
floats=100,h;
intn;
h=s/2;
for(n=2;n<=10;n++)
{
s=s+2*h;
h=h/2;
}
printf("第十次落地共经过的米数:
%f\n",s);
printf("第十次反弹的高度:
%f\n",h);
}
#include
#include
voidmain()
{
inta;
floatb,x,sum;
a=1;
b=1;
x=1;
sum=0;
while((fabs(x))>1e-7)
{
sum=sum+x;
b=b*2;
x=a/b;
}
sum=sum*100+100;
printf("%f\n",sum);
}
课本习题四第四大题第一小题数组的值逆序输出
#include
voidmain()
{
inti,a[5];
for(i=0;i<5;i++)scanf("%d",&a[i]);
for(i=4;i>=0;i--)printf("%3d",a[i]);
}
实验五的补充题5名学生3门课成绩求各科的平均分
#include
voidmain()
{
inti,j,s,v[3],score[5][3];
for(i=0;i<5;i++)
for(j=0;j<3;j++)
scanf("%d",&score[i][j]);
for(i=0;i<3;i++)
{
s=0;
for(j=0;j<5;j++)s=s+score[j][i];
v[i]=s/5;
}
printf("各科平均成绩为:
");
for(i=0;i<3;i++)printf("%4d",v[i]);
}
矩阵相加
正确
#include
voidmain()
{
inti,j;
inta[3][3],b[3][3],c[3][3];
printf("请输入矩阵a[3][3]:
\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("请输入矩阵b[3][3]:
\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&b[i][j]);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
c[i][j]=a[i][j]+b[i][j];
printf("矩阵相加结果c[3][3]:
\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%d",c[i][j]);
printf("\n");
}
}
最高最低温度
正确
#include
voidmain()
{
floatmax,min,a[31];
inti;
printf("请输入31天的温度:
");
for(i=0;i<31;i++)
{
scanf("%f",&a[i]);
}
min=max=a[0];
for(i=0;i<31;i++)
{
if(a[i]>max)max=a[i];
if(a[i]}
printf("最高温度:
%f,最低温度:
%f",max,min);
}
5-6计算字符串长度
用指向字符串指针变量实现
#include
voidmain()
{
intn=0;
char*c="hello,goodmoring.";
while(*(c+n)!
='\0')
n++;
printf("%d\n",n);
}
#include
#include
voidmain()
{
chara[100];
inti=0;
printf("inputstring\n");
gets(a);
while(a[i]!
='\0')i++;
printf("你输入的字符串的长度为%d\n",i);
}
#include
main()
{
chara[100],*p;
intn;
p=a;
scanf("%s",a);
for(n=0;*(p+n)!
='\0';n++);
printf("%d\n",n);
}
输入一个字符串,将其逆序输出
#include
#include
voidmain()
{
charstr[100];
inti;
gets(str);
i=strlen(str)-1;
for(;i>=0;i--)putchar(str[i]);
printf("\n");
}
判断一个字符串是否回文
#include
#include
voidmain()
{
intx,i;
charstr[100]={0};
gets(str);
x=strlen(str)-1;
for(i=0;i<=x/2;i++)///比到一半就不比了,原理已讲
if(str[i]!
=str[x-i])///这就是比较两端的字符
break;//不是回文
if(i>x/2)///没执行break,就是回文
printf("是回文\n");
elseprintf("不是回文\n");
}
#include
#include
#defineN50
voidmain()
{
inti,x=0;
charst1[N+1];
char*pst1,*pst2;
printf("pleaseinputastring:
\n");
scanf("%s",st1);
pst1=st1;
pst2=st1;
while(*pst1!
='\0')pst1++;
i=0;
pst1--;
while(*pst1==*pst2&&*pst1!
='\0')
{
pst1--;
pst2++;
i++;
}
x=strlen(st1);
if(i==x)printf("yes\n");
elseprintf("no\n");
}
支持多个字符串判断是否回文
#include
#include
voidmain()
{
charstr[20][20];
inti,j,k,n,flag;
printf("请输入多行字符串(end结束)\n");
for(k=0;k<=20;k++)
gets(str[k]);
if(str[k]==end)break;
}
printf("判断结果如下:
\n");
{
flag=1;
n=strlen(str[i]);
for(j=0;jif(str[i][j]!
=str[i][n-j-1])
{
flag=0;
break;
}
if()
printf("%s回文\n",str[i]);
elseprintf("%s不是回文\n",str[i]);
}
6—4输入三个整数,按由小到大的顺序输出,用指针实现
#include
voidmain()
{
inta,b,c,temp,*pa,*pb,*pc;
pa=&a;pb=&b;pc=&c;
scanf("%d,%d,%d",&a,&b,&c);
if(a>b){temp=*pa;*pa=*pb;*pb=temp;}
if(a>c){temp=*pa;*pa=*pc;*pc=temp;}
if(b>c){temp=*pb;*pb=*pc;*pc=temp;}
printf("%d,%d,%d\n",a,b,c);
}
补充2在一组指定数据中删除指定数据
#include
voidmain()
{
char*p="1234555656789",a[100],x;
inti=0;
x='5';
for(;*p!
='\0';p++)
if(*p!
=x)a[i++]=*p;
a[i]='\0';
printf("新的数据是:
%s\n",a);
}
6---5
从键盘输入两个字符串,将其连接起来。
#include
voidmain()
{
chars1[20],s2[10],*pt1=s1,*pt2=s2;
printf("请输入字符串1:
\n");
scanf("%s",s1);
printf("请输入字符串2:
\n");
scanf("%s",s2);
while(*pt1++!
='\0');
*pt1--;
while(*pt1++=*pt2++)
*pt1='\0';
printf("连接后的字符串:
\n");
printf("%s\n",s1);
}
统计字符串1在字符串2中出现的次数
#include
#include
main()
{
chara[100],s[100];
inti,j,flag,sum=0;
printf("请输入主字符串\n");
gets(a);
printf("请输入子字符串\n");
gets(s);
for(i=0;i{
flag=0;
for(j=0;j{
if(s[j]==a[i+j])
flag++;
}
if(flag==strlen(s))
sum++;
}
printf("出现的次数:
%d\n",sum);
}
strlen(a)是主串长度,从主串第一个字符开始与子串比较,flag每次进入循环先赋值为0,主串与子串每相同一个字符,flag加1,当退出第二个for循环时若flag等于子串长度,也就是子串在主串中出现1次,num加1
7---4
#include
#defineN2
structstudent
{intnum;
charname[10];
charsex;
union
{charvis;
floathw[2];
}sta;
};
voidmain()
{
structstudentstu[N];
inti;
for(i=0;i{
printf("请输入第%d个学生信息:
\n",i+1);
scanf("%d",&stu[i].num),getchar();
scanf("%s",stu[i].name),getchar();
scanf("%c",&stu[i].sex),getchar();
if(stu[i].sex=='m')scanf("%c",&stu[i].sta.vis);
else
scanf("%f%f",&stu[i].sta.hw[0],&stu[i].sta.hw[1]);
}
for(i=0;iif(stu[i].sex=='m')
printf("%d\t%s\t%c\t%c\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].sta.vis);
else
printf("%d\t%s\t%c\t%.2f/%.2f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].sta.hw[0],stu[i].sta.hw[1]);
}
统计候选人得票数。
设有3个候选人,每次输入一个候选人名,最后输出每个候选人的得票数。
#include
#include
structperson
{charname[20];
intcount;
}leader[3]={"Li",0,"Zhang",0,"Fun",0};
voidmain()
{inti,j;
charleader_name[20];
for(i=1;i<10;i++)
{scanf("%s",leader_name);
for(j=0;j<3;j++)
if(strcmp(leader_name,leader[j].name)==0)
leader[j].count++;
}
printf("\n");
for(j=0;j<3;j++)
printf("%5s:
%d\n",leader[j].name,leader[j].count);
}
有30名学生参加数学、英语、计算机考试,计算每个学生的三门课程的总分、平均分。
若三门课程成绩均在90分以上者,输出“Y”;否则,输出“N”;并输出学生成绩单,格式如下:
NumNamMatEngComSumAve>=90
1Haoli90929527792Y
6Yansu85958126197N
#include