C語言課后答案_第1頁
C語言課后答案_第2頁
C語言課后答案_第3頁
C語言課后答案_第4頁
C語言課后答案_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第3章

三、編程題

1.編寫程序,輸入一個(gè)非負(fù)數(shù),輸出以此數(shù)為半徑的圓周長以及面積。

^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.編寫程序,輸出下面結(jié)果,注意,雙引號也要輸出:

mastudent!”

#include<stdio.h>

voidmain()

(

printf("VIVmastudent!

)

3.編寫程序,輸入一個(gè)小寫字母,將其轉(zhuǎn)換為大寫字母輸出。例如輸入b,則輸出B。提示:小寫字母和

對應(yīng)的大寫字母的ASCII碼值相差32o

voidmain()

(

charch;

ch=getchar();

ch-=32;

putchar(ch);

//printf(u%cn,ch);

)

4.編寫程序,輸入一個(gè)華氏溫度f,輸出其相應(yīng)的攝氏溫度c。華氏溫度和攝氏溫度的轉(zhuǎn)換公式為:

c=|(f-32)

#include<stdio.h>

voidmain()

(

floatf,c;

scanf(“%f”,&f);

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

printf(“華氏溫度%5.2f轉(zhuǎn)換為攝氏溫度為:%5.2f\n",f,c);

第4章

三、編程題

1.輸入一個(gè)整數(shù),判斷這個(gè)整數(shù)是奇數(shù)還是偶數(shù)(提示:整數(shù)的奇偶性可以利用取余運(yùn)算符%判定)。

#include<stdio.h>

voidmain()

(

inta;

scanf(n%d",&a);

if(a%2)

printf("奇數(shù)\n“);

else

printf("偶數(shù)也”);

)

2.編寫程序,輸入一個(gè)24小時(shí)制的時(shí)間,轉(zhuǎn)換為12小時(shí)制時(shí)間后進(jìn)行輸出。以13點(diǎn)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.輸入一個(gè)字符,如果是大寫字母則輸出對應(yīng)的小寫字母,如果是小寫字母則輸出相應(yīng)的大寫字母,如

果都不是則原樣輸出。

#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.設(shè)計(jì)一個(gè)簡單的計(jì)算器程序,能輸入整型運(yùn)算數(shù)和基本運(yùn)算符(+,-,*,/),輸出計(jì)算結(jié)果。例如:

輸入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的所有整數(shù)。

#include"stdio.h"

main()

{inti;

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

(if(i%7==2)

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

1

2.輸入n個(gè)整數(shù),求這n個(gè)整數(shù)中的最大數(shù)、最小數(shù)和偶數(shù)平均數(shù),并輸出。

#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.輸入一串字符,以回車作為結(jié)束標(biāo)志。統(tǒng)計(jì)并輸出這串字符中大寫字母、小寫字母和數(shù)字字符的個(gè)數(shù)。

#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之間全部素?cái)?shù)。

#include<stdio.h>

#include"math,h”

voidmainO

(

intk,data,tag;

for(data=3;data<=1000;data+-i-)〃外層循環(huán),用來產(chǎn)生2?1000之間的整數(shù)

{

tag=0;//tag用于表示數(shù)i是否是素?cái)?shù),沒有判斷前先假定是素?cái)?shù)

for(k=2;k<=sqrt(data)&&!tag;k++)//內(nèi)層循環(huán)用來判斷data是否有約數(shù)

(

if(data%k==0)

tag=l;

)

if(tag==l)printf(繪4d”,data);〃如果i是素?cái)?shù),則輸出

)

)

6.輸入?個(gè)三位數(shù),判斷其是否是“水仙花數(shù)”。水仙花數(shù)是指3位數(shù)中的各位數(shù)字的立方和等于這3

位數(shù)本身。如153=l*l*l+5*5*5+3*3*3o

#include,,stdio.h"

voidmain。

(

intS,a,b,c;

printf("請輸入一個(gè)3位數(shù):");

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是水仙花數(shù)?!?S);

else

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

I

7.編程求Fibonacci數(shù)列的前40個(gè)數(shù)。該數(shù)列的生成方法是:F,=l,艮=1,F?=F?-,+F?-2(n>=3)(即從第三個(gè)

數(shù)起,每個(gè)數(shù)等于前2個(gè)數(shù)之和)?

#include"stdio.h"

voidmain()

(

intf[40],n;

fl0]=l;

printf(nFibonacci數(shù)列的前40個(gè)數(shù)是:%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.?個(gè)窮人找到一個(gè)百萬富翁,給他商討一個(gè)換錢計(jì)劃如下:我每天給你十萬元,而你第一天只需給我

一元錢,第二天給我二元錢,第三天給我四元錢,……,即我每天都給你十萬元,你每天給我的錢都

是前一天的兩倍,直到滿一個(gè)月(30天)。百萬富翁很高興地接受了這個(gè)換錢計(jì)劃。請編寫程序計(jì)算

滿一個(gè)月時(shí),窮人給了富翁多少錢,而富翁又給了窮人多少錢。

^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.猴子吃桃問題。猴子第一天摘下若干桃子,立即吃了一半,不過癮又多吃了一個(gè)。第二天早上又將剩

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

上時(shí)只剩下一個(gè)桃子了。編寫程序,求猴子第一天共摘了多少桃子。

/*有一群猴子摘了一堆桃子,他們每天都吃當(dāng)前桃子的一半且再多吃一個(gè)*/

/*到了第10天就只余下一個(gè)桃子。(C語言實(shí)現(xiàn))*/

/*用多種方法實(shí)現(xiàn)求出原來這群猴子共摘了多少個(gè)桃子。*/

/*運(yùn)行環(huán)境:VC++6.0*/

ttinclude"stdio.h"

mainO

(

inti,j.k;/*j是最后的桃子數(shù),k是中間變量,也是桃子總數(shù)*/

j=1;

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

(

k=(j+1)*2;

j=k:

}

printf("機(jī)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個(gè)優(yōu)秀,%d個(gè)不及格,平均分:%個(gè)",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個(gè)由小到大排列的整數(shù):”,N);

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

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

prinlf(”請輸入要插入的數(shù):”);

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個(gè)整數(shù):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("排序后的數(shù)列:”);

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個(gè),數(shù)字%d個(gè),其他%d個(gè)。[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("第一個(gè))break;

caseLprintf("第二個(gè))break;

case2:pHntf("第三個(gè))break;

case3:printf("第四個(gè))break;

case4:printf("第五個(gè)");break;

)

printf("企業(yè)的總產(chǎn)值是:%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(”產(chǎn)品的總產(chǎn)值是:%d萬元。\n'\sum);

)

)

15.#include<stdio.h>

#defineN5

voidmain()

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

printf("請輸入%d個(gè)數(shù):”,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(”請輸入數(shù)組a中的數(shù)據(jù),以0結(jié)束:”);

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

while(a[i]!=0)

{i++;

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

)

printf("請輸入數(shù)組b中的數(shù)據(jù),以0結(jié)束:”);

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中下標(biāo)為%&在b中下標(biāo)為%&

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("請輸入數(shù)組a的一維長度:”);

scanf("%d",&k);

prinlf("請輸入數(shù)組a的二維長度:”);

scanf("%d",&l);

printf("請輸入數(shù)組a中的數(shù)據(jù):”);

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("請輸入數(shù)組b的一維長度:");

scanf("%d",&m);

printf("請輸入數(shù)組b的二維長度:");

scanf("%d",&n);

printf("請輸入數(shù)組b中的數(shù)據(jù):");

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("只在一個(gè)數(shù)組中存在的有:");

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("請輸入方陣的維數(shù):");

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("排序前結(jié)果如下:\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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論