C语言课后答案_第1页
C语言课后答案_第2页
C语言课后答案_第3页
C语言课后答案_第4页
C语言课后答案_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章

三、编程题

1.编写程序,输入一个非负数,输出以此数为半径的圆周长以及面积。

^include"stdio.h〃

#definePI3.1415

voidmain()

(

floatr,area,circumference;

scanf(n%f,,&r);

area=PI*r*r;

circumference=2*r*PI;

printf("area=%6.2f\ncircumference=%6.2f\n'\area,circumference);

)

2.编写程序,输出下面结果,注意,双引号也要输出:

mastudent!”

#include<stdio.h>

voidmain()

(

printf("VIVmastudent!

)

3.编写程序,输入一个小写字母,将其转换为大写字母输出。例如输入b,则输出B。提示:小写字母和

对应的大写字母的ASCII码值相差32o

voidmain()

(

charch;

ch=getchar();

ch-=32;

putchar(ch);

//printf(u%cn,ch);

)

4.编写程序,输入一个华氏温度f,输出其相应的摄氏温度c。华氏温度和摄氏温度的转换公式为:

c=|(f-32)

#include<stdio.h>

voidmain()

(

floatf,c;

scanf(“%f”,&f);

c=5.0*(f-32)/9;

printf(“华氏温度%5.2f转换为摄氏温度为:%5.2f\n",f,c);

第4章

三、编程题

1.输入一个整数,判断这个整数是奇数还是偶数(提示:整数的奇偶性可以利用取余运算符%判定)。

#include<stdio.h>

voidmain()

(

inta;

scanf(n%d",&a);

if(a%2)

printf("奇数\n“);

else

printf("偶数也”);

)

2.编写程序,输入一个24小时制的时间,转换为12小时制时间后进行输出。以13点15分为例,输入:

13:15,则输出:下午1:15。

#include<stdio.h>

voidmain()

(

inthour,minute;

scanf("%d:%d”,&hour,&minule);

if(hour>12)hour=hour-12;

printf(n%d:%d\nn,hour,minute);

)

3.输入年号,判断它是否是闰年(如果年号能被400整除,或能被4整除,而不能被100整除,则是闰

年,否则不是)。

voidmain()

(

intyear;

scanf(u%dH,&year);

if(year%400==0||(year%4==0&&year%100==0))

printf("%d是闰年\n",year);

else

printf("%d不是闰年\n”,year);

4.输入一个字符,如果是大写字母则输出对应的小写字母,如果是小写字母则输出相应的大写字母,如

果都不是则原样输出。

#include<stdio.h>

voidmain()

(

charch;

scanf("%c",&ch);

if(ch>='a,&&ch<='z')

ch-=32;

else

if(ch>='A,&&ch<='Z')

ch+=32;

printf(M\n%c\nM,ch);

)

5.设计一个简单的计算器程序,能输入整型运算数和基本运算符(+,-,*,/),输出计算结果。例如:

输入2+6,输出2+6=8。

#include<stdio.h>

main()

(

floata,b,result;

charop;

scanf(,,%f%c%f,,&a,&op,&b);

switch(op)

(

case'':result=a+b;printf(H=%f',result);break;

case'-':result=a-b;printf(,'=%f',result);break;

case'*':result=a*b;printf(M%f,,result);break;

case1/':if(b==0.0)printf(',error!\n,');

result=a/b;

printf(n=%f\result);

default:printf("errorduetotheillegalinput!\n");

第5章

三、编程题

1.编写程序,显示100〜200之间能被7除余2的所有整数。

#include"stdio.h"

main()

{inti;

for(i=100;i<=200;i++)

(if(i%7==2)

printf("\t%d\t",i);

1

2.输入n个整数,求这n个整数中的最大数、最小数和偶数平均数,并输出。

#include<stdio.h>

voidmain()

(

inti,n,data,max=O,min=O,even=O,evennumber=O;

printf("Pleaseinputthenumberofdata:");

scanf(”%d”,&n);

printf("Pleaseinputthedata:\n");

scanf("%d”,&data);

max=data;

min=data;

if(data%2==0)

)

even=even+data;

evennumber+4-;

)

for(i=l;i<n;i++)

(

scanf("%d'\&data);

if(data>max)

max=data;

else

if(data<min)

min=data;

if(data%2==0)

(

evcn=even+data;

evennumber4-+;

)

1

printf("Themaxis%d\nTheminis%d\nTheaverageofeven

is%5.2f\n",max,min,(float)(even)/evennumber);

)

3.输入一串字符,以回车作为结束标志。统计并输出这串字符中大写字母、小写字母和数字字符的个数。

#include<stdio.h>

voidmain()

intupper=0,lower=0,number=0;

charletter;

while((letter=getchar())!='\n')

if(letter>='a'&&letter<=,z')lower++;

elseif(letter>-A'&&letter<='Z,)upper++;

elseif(letter>='0'&&letter<='9,)number++;

}

printf("thenumberofuppercaseis:%d\n",upper);

printf("thenumberoflowercaseis:%d\n",lower);

printf("thenumberofnumberis:%d\n",number);

1

4.输出九九乘法表。

#include<stdio.h>

voidmain()

(

inti,j;

for(i=l;i<=9;i++)

(

for(j=l;j<=i;j++)

printf(',%d*%d=%-3d

printf(n\nn);

)

}

5.编写程序,输出3〜1000之间全部素数。

#include<stdio.h>

#include"math,h”

voidmainO

(

intk,data,tag;

for(data=3;data<=1000;data+-i-)〃外层循环,用来产生2〜1000之间的整数

{

tag=0;//tag用于表示数i是否是素数,没有判断前先假定是素数

for(k=2;k<=sqrt(data)&&!tag;k++)//内层循环用来判断data是否有约数

(

if(data%k==0)

tag=l;

)

if(tag==l)printf(绘4d”,data);〃如果i是素数,则输出

)

)

6.输入•个三位数,判断其是否是“水仙花数”。水仙花数是指3位数中的各位数字的立方和等于这3

位数本身。如153=l*l*l+5*5*5+3*3*3o

#include,,stdio.h"

voidmain。

(

intS,a,b,c;

printf("请输入一个3位数:");

scanf(”%d”,&S);

a=S/100;b=S%100/10;c=S%10;

if(a*a*a+b*b*b+c*c*c==S)

printf(n%d是水仙花数。”,S);

else

printf("%d不是水仙花数。\n",S);

I

7.编程求Fibonacci数列的前40个数。该数列的生成方法是:F,=l,艮=1,F„=F„-,+F„-2(n>=3)(即从第三个

数起,每个数等于前2个数之和)»

#include"stdio.h"

voidmain()

(

intf[40],n;

fl0]=l;

printf(nFibonacci数列的前40个数是:%d\t%d\t",f[O],f[l]);

for(n=2;n<40;n++)

(

f[n]=f[n-l]+f[n-2|;

printf(n%d\t",f[n]);

)

)

8.•个穷人找到一个百万富翁,给他商讨一个换钱计划如下:我每天给你十万元,而你第一天只需给我

一元钱,第二天给我二元钱,第三天给我四元钱,……,即我每天都给你十万元,你每天给我的钱都

是前一天的两倍,直到满一个月(30天)。百万富翁很高兴地接受了这个换钱计划。请编写程序计算

满一个月时,穷人给了富翁多少钱,而富翁又给了穷人多少钱。

^include<stdio.h>

voidmain()

(

longpoor=l00000,rich=l,i;

for(i=2;i<=30;i++)

{

poor=poor+100000;

rich=rich*2;

printf("Moneyofpoorgivingrichis%ld\nMoneyofrichgivingpooris%ld\nz,,poor,rich);

9.猴子吃桃问题。猴子第一天摘下若干桃子,立即吃了一半,不过瘾又多吃了一个。第二天早上又将剩

下的桃子吃了一半,又多吃了一个。以后的每天早上都是吃了前一天剩下的一半加一个。到第10天早

上时只剩下一个桃子了。编写程序,求猴子第一天共摘了多少桃子。

/*有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个*/

/*到了第10天就只余下一个桃子。(C语言实现)*/

/*用多种方法实现求出原来这群猴子共摘了多少个桃子。*/

/*运行环境:VC++6.0*/

ttinclude"stdio.h"

mainO

(

inti,j.k;/*j是最后的桃子数,k是中间变量,也是桃子总数*/

j=1;

for(i=9;i>0;i—)

(

k=(j+1)*2;

j=k:

}

printf("机otal=%d\n”,k);

第6章

三.1.#include<stdio.h>

#definen10

voidmain()

{inta[n],i,countl=0,count2=0,sum=0;floatave;

for(i=0;i<n;i++)

{scanf(u%dH,&a[i]);

sum+=a[i];

if(a[i]>80)

count1+=1;

else

if(a[i]<60)

count2+=l;

)

ave=sum/n;

printf(n%d个优秀,%d个不及格,平均分:%个",countl,count2,ave);

)

2.#include<stdio.h>

#definen10

voidmain()

{inta[n],i,j,k,max,min;

for(i=0;i<n;i++)

{scanf(”%d\&a[i]);

if(!i)

{max=min=a[i];

j=k=i;

)

else

{if(max<a[i])

{max=a[i];

j=i;

}

else

if(min>a[i])

{min=a[i];

k=i;

printf("最大值%d在第%d位,最小值%(1在第%d位。H,max,j+l,min,k+l);

)

3.#include<stdio.h>

#include<string.h>

voidmain()

{chars[20],ch;

inti,n;

printfC请输入字符串:");

gets(s);

n=strlen(s);

for(i=0;i<n/2;i++)

{ch=s[i];

s[i]=s[n-l-i];

s[n-l-i]=ch;

)

prinlf("逆序存放的字符串:”);

puts(s);

)

4.#include<stdio.h>

#defineN10

voidmain()

{inti,j,n,a[N+l];

printf("请输入%d个由小到大排列的整数:”,N);

for(i=0;i<N;i++)

scanf(H%dn,&a[i]);

prinlf(”请输入要插入的数:”);

scanf("%dn,&n);

for(i=0;i<N;i++)

if(a[i]>n)

{j=i;

break;

)

if(i==N)

j=i;

for(i=N-l;i>=j;i-)

a[i+l]=a[i];

afj]=n;

printf("插入后的排列:”);

for(i=0;i<=N;i++)

printf(u%dn,a[i]);

)

5.#include<stdio.h>

#defineN3

voidmain()

{inti,j,a[N][N],sum=O;

printff请输入%d*%d矩阵的元素::N,N);

for(i=0;i<N;i++)

for(j=0;j<N;j++)

{scanf(”%d”,&a口皿);

if(i==j)

sum+=a[i][j];

}

printf("主对角线元素之和:%doM,sum);

}

6.#include<stdio.h>

#include<math.h>

voidmain()

{inti,j,n,k=O,b[300];

for(i=l;i<300;i++)

{n=int(sqrt(i));

for(j=2;j<=n;j++)

{if(i%j==O)

break;

)

ig)

{b[k]=i;

k++;

for(i=0;i<k;i++)

printf("%5d';b[i]);

)

7.#include<stdio.h>

#defineN7

voidmain()

{inti,j,k,a[N],temp;

printf("请输入%d个整数:H,N);

for(i=0;i<N;i++)

scanf("%dH,&a[i]);

for(i=0;i<N-l;i++)

{k=i;

temp=a[i];

for(j=i+l;j<N;j++)

if(temp>a[j])

{k=j;

temp=a[j];

}

if(k!=i)

{a[k]=a[i];

a[i]=temp;

)

)

printf("排序后的数列:”);

for(i=0;i<N;i++)

printf(n%3dn,a[i]);

)

8.#include<stdio.h>

voidmain()

{inti=0,count1=0,count2=0,count3=0;

chars[20];

printf(”请输入字符串:");

gets(s);

while(s[i]!K(r)

{if(s[i]>='a,&&s[i]<=,z,||s[i]>='A,&&s[i]<=,Z')

count1++;

else

if(s[i]>=,O'&&s[i]<=,9')

count2++;

elsecount3++;

i++;

printf("字符%(1个,数字%d个,其他%d个。[countI,counl2,count3);

9.#include<stdio.h>

#include<string.h>

voidmain()

{chars[20],ch;inti=0;

printf("请输入字符串:");

gets(s);

while(s[i]!='\0')

{s[i]+=3;

if-

s[i]-=26;

i++;

}

printf("加密后:");

puts(s);

)

10.#include<stdio.h>

#include<string.h>

voidmain()

{charsl[20],s2[20];inti=0j=0;

printf("请输入字符串1:");

gets(sl);

printf("请输入字符串2:");

gets(s2);

while(sl[i]!='\0')

i++;

sl[i]=s2[j];

do

{i++;

j++;

sl[i]=s2[j];

)

while(s2[j]!='\0');

printf("连接后:");

puts(sl);

)

11.#include<stdio.h>

#include<string.h>

voidmain()

{charsl[20],s2[20],s3[40];inti=O,j=O,k=O;

printf("请输入按字母序排列的字符串1:");

gets(sl);

printf("请输入按字母序排列的字符串2:");

gets(s2);

while(sl[i]!=,\0,&&s2[j]!=,\0,)

{if(sl[i]<s2U])

{s3[k]=sl[i];

k++;i++;

)

else

{s3[k]=s2(j];

k++;j++;

while(sl[i]!='\O')

{s3[k]=sl[i];

k++;i++;

)

while(s2[j]!='\0')

{s3[k]=s2UJ;

k++;j++;

)

s3[k]='\0';

printf("合并后的字符串:");

puts(s3);

)

12.#include<stdio.h>

voidmain()

{inti,j,a[5][5];

for(i=0;i<5;i++)

for(j=4;j>=0;j-)

{ifgi)

a[i]U]=l;

else

a[i][j]=a[i][j+r|+l;

)

for(i=0;i<5;i++)

{for(j=O;j<5;j++)

printf("%3d",a[i][j]);

printf("\n");

)

)

13.#include<stdio.h>

voidmain()

{inti,j,a[8][8];

for(i=0;i<8;i++)

for(j=0;j<8;j++)

{if(j==i||(i+j)==7)

a[i][j]=l;

else

a[i][j]=O;

)

for(i=0;i<8;i++)

{for(j=0;j<8;j++)

printfC%3d*',a[i]U]);

printf('^\n,^);

14.#include<stdio.h>

voidmain()

{inti,j,sum,a[5][3]={20,30,26,30,20,25,25,50,20,46,15,10,35,15,12);

for(i=0;i<5;i++)

{sum=0;

for(j=0;j<3;j++)

sum+=a[il[j];

switch(i)

{caseO:printf("第一个)break;

caseLprintf("第二个)break;

case2:pHntf("第三个)break;

case3:printf("第四个)break;

case4:printf("第五个");break;

)

printf("企业的总产值是:%d万元。\n",sum);

)

for(j=0;j<3;j++)

{sum=0;

for(i=0;i<5;i++)

sum+=a[i][j];

switch(j)

{caseO:printf(nA");break;

casel:printf("BM);break;

case2:printf("C");break;

)

printf(”产品的总产值是:%d万元。\n'\sum);

)

)

15.#include<stdio.h>

#defineN5

voidmain()

{inti,j,a[N][N],b[N];

printf("请输入%d个数:”,N);

for(i=0;i<N;i++)

scanf("%d",&b[i]);

for(i=0;i<N;i++)

{for(j=i;j<N;j++)

a[i]U]=b[j-i];

for(j=0;j<i;j++)

a[i][j]=a[j][i];

}

for(i=0;i<N;i++)

{for(j=0;j<N;j++)

printf("%3d",a[i][j]);

printf("\n");

16.#include<stdio.h>

voidmain()

{inti=0,j=0,m,n,a[20],b[20];

printf(”请输入数组a中的数据,以0结束:”);

scanf(n%d",&a[i]);

while(a[i]!=0)

{i++;

scanf("%d",&a[i]);

)

printf("请输入数组b中的数据,以0结束:”);

scanf("%d”,&b[j]);

while(b[j]!=0)

{j++;

scanf(n%dn,&b|j]);

)

fbr(m=0;m<i;m4-+)

fbr(n=0;n<j;n+4-)

{if(a[m]==b[n])

printf("%3d在a中下标为%&在b中下标为%&

17.#include<stdio.h>

voidmain()

{inta[20][20],b[20][20],flagl[20][20],flag2[20][20],i,j,s,t,k,l,m,n;

printf("请输入数组a的一维长度:”);

scanf("%d",&k);

prinlf("请输入数组a的二维长度:”);

scanf("%d",&l);

printf("请输入数组a中的数据:”);

for(i=0;i<k;i++)

for(j=0;j<l;j++)

scanf(M%d",&a[i]|j]);

for(i=0;i<k;i++)

{for(j=0;j<l;j++)

{printf("%3d",a[i][j]);

flagl[i][j]=l;

)

printf("\n");

}

printf("请输入数组b的一维长度:");

scanf("%d",&m);

printf("请输入数组b的二维长度:");

scanf("%d",&n);

printf("请输入数组b中的数据:");

for(i=0;i<m;i++)

for(j=0;j<n;j++)

scanf("%d",&b[i][j]);

for(i=0;i<m;i++)

{for(j=0;j<n;j++)

{printf("%3d"<b[i][jl);

flag2[i]U]=l;

}

printf("\n");

)

for(i=0;i<k;i++)

for(j=0;j<l;j++)

for(s=0;s<m;s++)

for(t=0;t<n;t++)

if(a[i]U]==b[s][t])

{flagl[i][j]=O;

flag2[s][t]=0;

)

prinlf("只在一个数组中存在的有:");

for(i=0;i<k;i++)

for(j=0;j<l;j++)

if(flagl[i]U])

printf("%3d",a[i][j]);

for(i=0;i<m;i++)

for(j=0;j<n;j++)

if(flag2[i][j])

printf("%3d",b[i]|j]);

)

18.#include<stdio.h>

voidmain()

{inta[101],i,j,count=0;

for(i=l;i<=100;i++)

a[i]=l;

for(i=2;i<=l00;i++)

for(j=i;j<=100;j++)

if(j%i==0)

a[j]*=-l;

for(i=1;i<=100;i++)

if(a[i]==l)

{count++;

printfC第%d张正面朝上。\n”,i);

)

printf("共有%€1张正面朝上。\n",count);

)

19.#include<stdio.h>

voidmain()

{intnJ,j,k,top,bottomjeft,right,goup,godown,goleft,goright,a[20][20];

i=0;j=0;goright=1;goup=0;godown=0;goleft=0;

printf("请输入方阵的维数:");

scanf(n%d",&n);

top=-l;bottom=n;left=-l;right=n;

for(k=l;k<=n*n;k++)

{a[i][j]=k;

if(goright)

{if(j<right-l)

j++;

else

{goright=0;

godown=l;

top++;

i++;

continue;

)

)

if(godown)

{if(i<bottom-l)

i++;

else

{godown=0;

goleft=l;

right-;

j--;

continue;

if(goleft)

{if(j>left+l)

j--;

else

{goleft=0;

goup=l;

bottom—;

i-;

continue;

}

}

if(goup)

{if(i>top+l)

i-;

else

{goup=0;

goright=l;

left++;

j++;

continue;

for(i=0;i<n;i++)

{for(j=O;j<n;j++)

printfT%5d”,a[i皿);

printf(H\nu);

)

}

第7章

第8章

三、编程题

1.

#include"stdio.hM

#defineN10

voidmain()

(

inti_val[N];

int*p;

intij,val,k;

for(i=0;i<N;i++)

scanf(”%d”,i_val+i);

p=&i_val[O];

printf("排序前结果如下:\n");

for(i=0;i<N;i++)

printf("%d\n",*(p+i));

printf("\n");

for(i=0;i<N-l;i++)

(

k=i;

for(j=i+1;j<N;j++)

if(pUl<P[k])

k=j;

if(k!=i)

{

val=p[i];

p[i]=p[k];

p[k]=val;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论