C語言程序設(shè)計實驗與習(xí)題答案_第1頁
C語言程序設(shè)計實驗與習(xí)題答案_第2頁
C語言程序設(shè)計實驗與習(xí)題答案_第3頁
C語言程序設(shè)計實驗與習(xí)題答案_第4頁
C語言程序設(shè)計實驗與習(xí)題答案_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

/2.程序填空(1)以下程序的功能是計算1~50之間能被7整除的整數(shù)之和。#include<stdio.h>voidmain(){inti,sum=

0;for(i=1;50;i++)if(i%7==0)sum+=i;printf("sum=%d\n",sum);}

(2)下面程序接收來自鍵盤的輸入,直到輸入<Ctrl>+Z(值為-1)鍵為止。這些字符被原樣輸出,但若有連續(xù)一個以上的空格時只輸出一個空格。請?zhí)羁铡?include<stdio.h>voidmain(){charcx;charfront=’’;while((cx=getchar())!=’\n’){if(cx!=’’)putchar(cx);if(cx==’’)if(front!=’’)putchar(cx);front=cx;}}

3.程序改錯(1)下列程序的功能是求1+3+5+…99的和。#include<stdio.h>voidmain(){ints,i;★

//ints=0,i;i=1;while(i<=99)s=s+i;★

//{s=s+i;i++;}printf("1+3+5+…99的和是:%d\n",s);}(2)下面程序的功能是輸入一個正整數(shù),判斷是否是素數(shù),若為素數(shù)輸出1,否則輸出0。

#include<stdio.h>voidmain(){inti,x,y=0;★

//y=1scanf("%d",&x);for(i=2;i<=x/2&&y;i++)if((x%i)!=0)y=0;★

//x%i==0printf("%d\n",y);}

4.設(shè)計性實驗

(1)題

/*方法(1)精度控制

*/

#include<stdio.h>

#include<math.h>

main()

{

ints;

floatn,t,pi;

t=1;

pi=0;

n=1.0;

s=1;

while((fabs(t))>=1e-6)

{

pi=pi+t;

n=n+2;

s=-s;

t=s/n;

}

pi=pi*4;

printf("pi=%10.6f\n",pi);

}

/*方法(2)次數(shù)控制*/

#include<stdio.h>

#include<math.h>

main()

{

ints;

longtimes;

floatn,t,pi;

t=1;

pi=0;

n=1.0;

s=1;

for(times=1;times<=1e9;times++)

{

pi=pi+t;

n=n+2;

s=-s;

t=s/n;

}

pi=pi*4;

printf("pi=%10.6f\n",pi);

}

(2)題

main()

{

inti,j,frame;

doublewheattal=0;

doublewheatfnu=1;

printf("Pleaseinputframe’snumbers:");

scanf("%d",&frame);

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

{

wheattal+=wheatfnu;

wheatfnu+=wheatfnu;

}

printf("\nTotalwheattatol’stimeter=%e\n",wheattal/1.40e8);

}(3)題/*方法一:使用遞推公式n=n+2*/

main()

{

int

i,n=1;

doubles=0,t=1;

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

{

t*=n;

s+=t;

n+=2;

}

printf("s=%lf",s);

getch();

}

/*方法二:使用通項公式2*i+1*/main()

{

int

i;

doubles=0,t=1;

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

{

t*=2*i+1;

s+=t;

}

printf("s=%lf",s);

getch();

}

/*方法三*/#include"stdio.h"

main()

{

longtotal,sum,m,n,t;

total=0;

for(m=1;m<=20;m++)

{

sum=1;t=1;

for(n=1;n<=m;n++){sum=sum*t;t=t+2;}

total=total+sum;

}

printf("total=%ld",total);

}

2.程序填空(1)以下程序的功能是計算1~50之間能被7整除的整數(shù)之和。#include<stdio.h>voidmain(){inti,sum=

0;for(i=1;50;i++)if(i%7==0)sum+=i;printf("sum=%d\n",sum);}

(2)下面程序接收來自鍵盤的輸入,直到輸入<Ctrl>+Z(值為-1)鍵為止。這些字符被原樣輸出,但若有連續(xù)一個以上的空格時只輸出一個空格。請?zhí)羁铡?include<stdio.h>voidmain(){charcx;charfront=’’;while((cx=getchar())!=’\n’){if(cx!=’’)putchar(cx);if(cx==’’)if(front!=’’)putchar(cx);front=cx;}}

3.程序改錯(1)下列程序的功能是求1+3+5+…99的和。#include<stdio.h>voidmain(){ints,i;★

//ints=0,i;i=1;while(i<=99)s=s+i;★

//{s=s+i;i++;}printf("1+3+5+…99的和是:%d\n",s);}(2)下面程序的功能是輸入一個正整數(shù),判斷是否是素數(shù),若為素數(shù)輸出1,否則輸出0。

#include<stdio.h>voidmain(){inti,x,y=0;★

//y=1scanf("%d",&x);for(i=2;i<=x/2&&y;i++)if((x%i)!=0)y=0;★

//x%i==0printf("%d\n",y);}

4.設(shè)計性實驗

(1)題

/*方法(1)精度控制

*/

#include<stdio.h>

#include<math.h>

main()

{

ints;

floatn,t,pi;

t=1;

pi=0;

n=1.0;

s=1;

while((fabs(t))>=1e-6)

{

pi=pi+t;

n=n+2;

s=-s;

t=s/n;

}

pi=pi*4;

printf("pi=%10.6f\n",pi);

}

/*方法(2)次數(shù)控制*/

#include<stdio.h>

#include<math.h>

main()

{

ints;

longtimes;

floatn,t,pi;

t=1;

pi=0;

n=1.0;

s=1;

for(times=1;times<=1e9;times++)

{

pi=pi+t;

n=n+2;

s=-s;

t=s/n;

}

pi=pi*4;

printf("pi=%10.6f\n",pi);

}

(2)題

main()

{

inti,j,frame;

doublewheattal=0;

doublewheatfnu=1;

printf("Pleaseinputframe’snumbers:");

scanf("%d",&frame);

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

{

wheattal+=wheatfnu;

wheatfnu+=wheatfnu;

}

printf("\nTotalwheattatol’stimeter=%e\n",wheattal/1.40e8);

}(3)題/*方法一:使用遞推公式n=n+2*/

main()

{

int

i,n=1;

doubles=0,t=1;

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

{

t*=n;

s+=t;

n+=2;

}

printf("s=%lf",s);

getch();

}

/*方法二:使用通項公式2*i+1*/main()

{

int

i;

doubles=0,t=1;

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

{

t*=2*i+1;

s+=t;

}

printf("s=%lf",s);

getch();

}

/*方法三*/#include"stdio.h"

main()

{

longtotal,sum,m,n,t;

total=0;

for(m=1;m<=20;m++)

{

sum=1;t=1;

for(n=1;n<=m;n++){sum=sum*t;t=t+2;}

total=total+sum;

}

printf("total=%ld",total);

}

2.程序填空(1)求任意兩個整數(shù)之間所有的素數(shù)。

#include<stdio.h>

voidmain(){inti1,i2,i,j,flag;printf("inputtwointeger(i1,i2):");scanf("%d%d",&i1,&i2);printf("primenumber:\n");for(i=i1;i<=i2;i++){flag=1;for(j=2;j<=i-1;j++){if(i%j==0){ flag=0; break;}}if(flag==1)printf("%d\t",i);}printf("\n");}

(2)以下程序的功能是輸出下三角九九乘法表。#include<stdio.h>voidmain(){inti,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%d*%d=%d\t",i,j,i*j);printf("\n");}}

3.程序改錯(1)下列程序的功能是輸出所有的“水仙花數(shù)”。所謂“水仙花數(shù)”是指一個三位數(shù),該數(shù)的各位數(shù)字立方和等于該數(shù)本身的數(shù)。例如:153是一個“水仙花數(shù)”,因為153=13+53+33。#include<stdio.h>voidmain(){intx,s,a;for(s=0,x=100;x<1000;s=0,x++)★

{a=x;while(a!=0){s=s+(a%10)*(a%10)*(a%10);★

a=a/10;}if(x==s)printf("%d",x);★}}

(2)以下程序的功能是輸出1至1000之間的所有完數(shù)。若一個整數(shù)等于該數(shù)的所有因子之和,則稱該整數(shù)為完數(shù)。#include<stdio.h>voidmain(){inti,j;ints;for(i=1;i<=999;i++){s=1;★

//s=0;

for(j=1;j<i-1;j++)★

//for(j=1;j<=i-1;j++){if(i/j==0)s=s+j;}★//i%jif(s=i)printf("%5d",i);★

//s==i}}

4.設(shè)計性實驗SY61.Cmain()

{

inti,j,k,n=0;

/*i,j,k分別代表三位整數(shù)的百位,十位,個位.n代表個數(shù)*/

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

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

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

if(i*i*i+j*j*j+k*k*k==1099)

/*在所有組合中找出滿足指定條件的*/

{

printf("%4d",100*i+10*j+k);

n++;

if(n%5==0)

printf("\n");

/*表示每行輸出5個數(shù)*/

}

}SY62.C#include<stdio.h>

#include<string.h>

main()

{

inti,j,k;

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

/*上三角形有4行,每循環(huán)1次輸出1行*/

{

for(k=1;k<8-((2*i-1)/2);k++)

/*該循環(huán)輸出每行的空格.8用于調(diào)節(jié)偏離位置,可換成別的數(shù)(>=8)*/

printf("");

for(j=1;j<=2*i-1;j++)

/*該循環(huán)輸出每行的’*’字符*/

printf("*");

putchar(’\n’);

/*換行*/

}

for(i=3;i>=1;i--)

/*下面為倒三角形,有3行*/

{

for(k=1;k<8-((2*i-1)/2);k++)

printf("");

for(j=1;j<=2*i-1;j++)

printf("*");

putchar(’\n’);

}

}

sy63.cmain(){intn=1,score,t;scanf("%d",&score);while(score>=0&&n<=5){n++;t=0;while(score!=0){t=t+(score%10)*(score%10);score=score/10;}if(t==108)printf("%d",score);scanf("%d",&score);}}

SY64.C#include"math.h"

main()

{

floatx0,x1,x2,fx0,fx1,fx2;/*x1,x2分別表示每次區(qū)間的左右端點,x0代表區(qū)間的中間點,fx0,fx1,fx2代表相應(yīng)點的函數(shù)值*/

do

{printf("pleaseinputx1&x2:");

scanf("%f,%f",&x1,&x2);

fx1=x1*((2*x1-4)*x1+3)-6;

fx2=x2*((2*x2-4)*x2+3)-6;

}while(fx1*fx2>0);

/*該循環(huán)指定有根的區(qū)間*/

do

{

x0=(x1+x2)/2;

fx0=x0*((2*x0-4)*x0+3)-6;

if((fx0*fx1)<0)

/*丟掉右區(qū)間*/

{

x2=x0;

fx2=fx0;

}

else

/*丟掉左區(qū)間*/

{

x1=x0;

fx1=fx0;

}

}while(fabs(fx0)>1e-5);

/*該循環(huán)實現(xiàn)二分法求根*/

printf("rootx=%f",x0);

}

2)程序填空(1)#include<stdio.h>

voidmain()

{

intm,n,num1,num2,temp;

printf("Inputtwopositiveinteger:\n");

scanf("%d,%d",&num1,__&num2_______);

if(num1<num2)

{temp=num1;num1=num2;num2=__temp_______;}

m=num1;

n=num2;

while(n!=0)

{temp=__m%n__________;

m=n;

n=temp;

}

printf("Thegrestestcommondivisoris%d\n",m);

printf("Thelowestcommonmultipleis%d\n",num1*num2/__m____);

}

(2)下面程序是計算表達(dá)式1+(1+2)+(1+2+3)+…+(1+2+3+…+10)和。#include<stdio.h>voidmain(){intsum,i,j,t;sum=①;for(i=1;i<=10;i++) {t=0; for(j=1;j<=②;j++) t=t+j; sum=③; }printf("1+(1+2)+(1+2+3)+…+(1+2+3+…+10)=%d\n",sum);}

①0

②i

③sum+t3.程序改錯(1)下面的程序是求1~100之間的素數(shù),并將所有素數(shù)按每行10個輸出。#include<stdio.h>#define<math.h>★

//#include<stdio.h>voidmain(){inti,m,k,n;★

//inti,m,k,n=0;for(m=1;m<=100;m=m+2){if(n/10==0)★

//if(n%10==0)printf("\n");k=1;for(i=2;i<=sqrt(m);i++) if(m%i!=0)★

//if(m%i==0){k=0;break;}if(k==1) {printf("%3d",m);n=n+1;}}printf("\n");}(2)下面程序是求表達(dá)式1-1/2+1/3-1/4+1/5-……-1/100的值,結(jié)果保留小數(shù)后4位。#include<stdio.h>voidmain(){inti;floats;i=0;★

//i=1;s=1;★

//s=0;while(i<100){if(i%2==0)s=s-1/i;★

//s=s-1.0/i;elses=s+1/i;★

//s=s+1.0/ii=i+1;}printf("1-1/2+1/3-1/4+…-1/100=%10.3f\n",s);}

4.設(shè)計性實驗(1)編程輸出以下圖形。

#include<stdio.h>

voidmain()

{

inti,j,k;

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

{

for(k=1;k<=20-(2*i-1)/2;k++)

printf("");

for(j=1;j<=2*i-1;j++)

printf("%d",i);

printf("\n");

}

}

(2)編寫一個程序輸出所有5位數(shù)字的回文。

方法一:#include

<stdio.h>

voidmain()

{

longx,a,t;

//x:原5位整數(shù),a:用來暫存x,t:把a反序后的數(shù)

inti,num=0;

//i:表示原5位數(shù)的某一位,num:回文數(shù)的個數(shù)

for(x=10000;x<=99999;x++)

//每次取出1個5位整數(shù)

{

a=x;

//把取出的5位整數(shù)保存到a

t=0;

//t用來存放反序后的數(shù)

while(a>0)

{i=a%10;

//取出當(dāng)前數(shù)的最后一位到i

t=t*10+i;

//把取出的i組裝到t

a=a/10;

}

if(x==t)

//原來的5位整數(shù)等于反序后的數(shù)t

{printf("%ld,",x);

num++;}

if(num%10==0)

printf("\n");

//每行輸出10個數(shù)

}

}方法二:/*求5位整數(shù)中所有回文*/

#include<stdio.h>

voidmain()

{

longintn,m,t=0;

for(n=10000;n<=99999;n++)

{

if(hw(n)==1)

{printf("%6ld",n);

t++;

if(t%5==0)

printf("\n");

/*每行輸出5個數(shù)*/

}

}

}

inthw(longinta)

/*hw函數(shù)測試a是否是回文*/

{

longint

m,r=0;

m=a;

while(m)

{

r=r*10+m%10;

m/=10;

}

if(a==r)

return1;

/*是回文返回1*/

else

return0;

/*是回文返回0*/

}(3)編程計算e=1+1/1!+1/2!+1/3!+…+1/n!。精度為1e-6(即最后一項1/n!<1e-6就停止循環(huán))。提示:注意1/n!=1/(n-1)!*1/n;利用循環(huán)加上每一次的分項。#include<stdio.h>voidmain(){longi;doublee,t;e=1.0;t=1.0;for(i=1;t>1e-6;i++){t/=(double)i;e+=t;}printf("e=%f\n",e);}

2.⑴①a[10]=x;②break;③a[k]=x;附:算法簡析main(){intx,i,j,k;/*感覺似乎j定義了沒什么作用*/inta[11]={8,18,28,38,48,58,68,78,88,98};printf("請輸入需要插入的一個整數(shù):");scanf("%d",&x);a[10]=x;/*把x放到數(shù)據(jù)串最末位置*/for(i=0;i<10;i++)if(x<a[i]){k=i;break;}/*尋找x的插入點,當(dāng)發(fā)現(xiàn)插入點時退出*/for(i=10;i>k;i--)/*將插入點以與其后的每個數(shù)據(jù)后移一個單位(給x騰位)*//*實例演示——騰位8182838485868788898(x)818283838485868788898↑插入點*/a[i]=a[i-1];a[k]=x;/*將x放到插入點位置*/for(i=0;i<11;i++)printf("%3d",a[i]);printf("\n");}⑵①i%7==0||i%11==0②n++③i%5==03.⑴a.將continue;改為break;b.將i=k-1;改為j=k-1;c.將j=k+1;改為i=k+1;d.將for(i=0;i<10;i++)改為for(i=0;i<9;i++);附:算法簡析#include<stdio.h>voidmain(){intx,i,j,k;inta[10]={8,18,28,38,48,58,68,78,88,98}; printf("請輸入需要刪除的一個整數(shù):");scanf("%d",&x);i=0;j=9;while(i<=j){k=(i+j)/2;if(a[k]==x)break;if(a[k]>x)j=k-1;if(a[k]<x)i=k+1;}/*二分法查找x在數(shù)組中的位置,該位置即刪除點,注意始末坐標(biāo)不要弄顛倒*/if(i>j)printf("需要刪除的數(shù)不在數(shù)組中\(zhòng)n");else{for(;k<9;k++)a[k]=a[k+1];/*擠位,后面的數(shù)據(jù)向刪除點靠攏*//*實例演示——擠位(若刪除38)刪除點↓8,18,28,38,48,58,68,78,88,988,18,28,48,58,68,78,88,98,98*/for(i=0;i<9;i++)/*刪除一個數(shù),只剩9個,數(shù)組最末尾儲存的是重復(fù)的數(shù)據(jù)(倒數(shù)第二個),故不輸出*/printf("%5d",a[i]);}}⑵a.將for(i=0,j=0;i<=10;i++)改為for(i=1,j=0;i<=10;i++)b.將if(i%3=0)改為if(i%3==0)c.將for(;j>=0;j++)改為for(;j>=0;j--)4.⑴#include<math.h>#include<stdio.h>intisprime(intx){intk=sqrt(x);for(;k>1;k--)if(x%k==0)return0;returnx;}voidsort(inta[],intx){inti,k,t;for(i=0;i<x-1;i++)for(k=i+1;k<x;k++)if(a[i]>a[k]){t=a[i];a[i]=a[k];a[k]=t;}}voidmain(){intnum[50],prime[50],i,n=0,j;printf("PLeaseinput50integers:\n");for(i=0;i<50;i++){scanf("%d",&num[i]);if((j=isprime(num[i]))!=0)prime[n++]=j;}sort(prime,n);printf("Thesortedprimenumbersare:\n");for(i=0;i<n;i++)printf("%-5d",prime[i]);}⑵#include<stdio.h>#include<string.h>main(){charinput[10],paswor[10]="password",ch,flag=0;intcount=1,i=0;while(count<=3){printf("請輸入密碼:");while((ch=getch())!=13){input[i++]=ch;putchar(’*’);}input[i]=’\0’;if(strcmp(input,paswor)==0){printf("\n\n你好!我的主人!");flag=1;break;}elseprintf("\n\n離我遠(yuǎn)點!");count++;getch();

}if(flag==0)printf("密碼輸入三次錯誤,你不是我的主人!\n\n離我遠(yuǎn)點!\n\n否則,我很生氣,后果很嚴(yán)重!!!");getch();}⑶main(){intnum[10],i,max,min,maxj,minj;printf("Pleaseinputthedata:\n");scanf("%d",&num[0]);max=min=num[0];for(i=1;i<10;i++){scanf("%d",&num[i]);if(max<num[i]){max=num[i];maxj=i;}if(min>num[i]){min=num[i];minj=i;}}printf("Themaximumelement’sundersideis%d,max=%d",maxj,num[maxj]);printf("\nTheminimumelement’sundersideis%d,min=%d",minj,num[minj]);}⑷#include<stdio.h>#include<conio.h>voidinput(inta[],int*n){inti;printf("Howmanydatasdoyouwanttoinput?");scanf("%d",n);printf("\nPleaseinput%ddatas:\n",*n);for(i=0;i<*n;i++)scanf("%d",&a[i]);}voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}voidmenu(inta[],intn){inti;gotoxy(1,24);printf("Datas:");for(i=0;i<n;i++)printf("%-3d",a[i]);gotoxy(1,1);printf("MENU\n");printf("************************\n");printf("**\n");printf("*1.Findadata*\n");printf("**\n");printf("*2.Insertadata*\n");printf("**\n");printf("*3.Deleteadata*\n");printf("**\n");printf("*4.Exit*\n");printf("**\n");printf("************************\n");printf("PLeaseinputacommand==>");

}

voidfind(inta[],intn){intx;intlow=0,high=n-1,mid;printf("\nPLeaseinputadatatobesearched:");scanf("%d",&x);while(low<=high){mid=(low+high)/2;if(x==a[mid])break;elseif(x>a[mid])low=mid+1;elsehigh=mid-1;}if(low>high)printf("\nThisdatacan’tbefoundinthedatabase!");else{printf("\nThisdataisintheposition%d",mid);gotoxy(7+3*(mid+1)-2,23);putchar(25);}}voidinsert(inta[],intn){intx,k,i;printf("\nPLeaseinputadatatobeinserted:");scanf("%d",&x);a[n]=x;for(i=0;i<n;i++)if(x<a[i]){k=i;break;}for(i=n;i>k;i--)a[i]=a[i-1];a[k]=x;gotoxy(1,24);delline();printf("Datas:");for(i=0;i<=n;i++)printf("%-3d",a[i]);}voidDelete(inta[],intn){intx,low,high,mid,i;printf("\nPLeaseinputadatatobedeleted:");scanf("%d",&x);low=0;high=n-1;while(low<=high){mid=(low+high)/2;if(a[mid]==x)break;if(a[mid]>x)high=mid-1;if(a[mid]<x)low=mid+1;}if(low>high)printf("Thedatatobedeletedisnotinthedatabase!\n");else{for(;mid<n-1;mid++)a[mid]=a[mid+1];gotoxy(1,24);delline();printf("Datas:");for(i=0;i<=n-2;i++)printf("%-3d",a[i]);}

}main(){inta[50],n=0;charcom;input(a,&n);sort(a,n);clrscr();menu(a,n);com=getch();switch(com){case’1’:find(a,n);break;case’2’:insert(a,n);break;case’3’:Delete(a,n);break;default:break;}getch();}/*DTmadeitin2009/05/16*/

程序填空:(1)#include<stdio.h>

#defineN4

voidmain()

{inta[N][N],s1=0,s2=1,max,i,j;

for(i=0;

i<N;

i++)

for(j=0;

j<N;

j++)

scanf("%d",

&a[i][j]

);

max=

a[0][0]

;

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

for(j=0;j<

N

;j++)

{

if(i==j)

s1=s1+a[i][j]

;

if(i+j==N-1)s2*=a[i][j];

if(a[i][j]>

max

)max=a[i][j];

}

printf("s1=%d,s2=%d,max=%d\n",s1,s2,max);

}(2)#include<stdio.h>

#defineM4

#defineN3

voidmain()

{inta[M][N]={{1,2,3},{4,5,6},{7,8,9},{10,11,12}};

intsum=

0

,i,j;

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

sum+=a[0][i]+

a[M-1][i]

;

for(j=1;j<M-1;j++)

sum+=a[j][0]+

a[j][N-1]

;

printf("%d\n",sum);

}改錯:(1)#in#include<stdio.h>

#define

M

3

#define

N

4

voidmain()

{inta[M][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

intb[N][M];

inti,j;

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

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

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

printf("\n");}

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

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

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

printf("\n");

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

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

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

printf("\n");}

}(2)#include<stdio.h>

voidmain()

{intd[][4]={{0,0,0,0}},i,j;

printf("\nPleaseinput16num:

");

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

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

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

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

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

if(d[i][j]<d[j][i])

d[i][j]=d[j][i];

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

{printf("\n\n\n\n\n");/*為了保持每行的間隔與每列的相同*/

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

if(j>=i)

printf("\t%d",d[i][j]);/*為了使位數(shù)不同的數(shù)輸出依然保持三角型*/

else

printf("\t");

}

}設(shè)計性實驗:(1)#include<stdio.h>

#defineM3

#defineN6

voidmain()

{

inti,j,max,min,m=0,n=0,p=0,q=0;

inta[M][N];

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

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

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

max=min=a[0][0];

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

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

{if(a[i][j]>max)

{

max=a[i][j];

m=i;

n=j;

}

elseif(a[i][j]<min)

{

min=a[i][j];

p=i;

q=j;

}

}

printf("max(%d,%d)=%d,min(%d,%d)=%d",m,n,max,p,q,min);

}

(3)#include<stdio.h>

#defineN20

voidmain()

{

intn,i,j;

inta[N][N];

printf("pleaseinputthen:");

scanf("%d",&n);

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

{

a[i][0]=1;

a[i][i]=1;

}

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

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

a[i][j]=a[i-1][j-1]+a[i-1][j];

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

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

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

printf("\n");

}

}

2.程序填空(1)以下程序的功能是求數(shù)組a中元素的和。#include<stdio.h>voidmain(){inta[10];int*p,sum=0;for(p=a;p<a+10;p++)scanf("%d",①);//pfor(p=a;p<a+10;p++)sum=sum+②;//*pprintf("sum=③\n",sum);//%d}

(2)以下程序功能是在數(shù)組中查找與x值相同的元素所在的位置。#include<stdio.h>voidmain(){inti,x,a[11];printf(“pleaseinputtennumber:”);for(i=1;i<11;i++)scanf("%d",a+i);printf("pleaseinputx:");scanf("%d",&x);a[0]=①;//xi=10;while(x!=*(a+i))②;//i--if(③)//x==*(a+i)printf("foundpositionis:%d",i);elseprintf("notfound!");}

3.程序改錯(1)以下程序的功能是求一元二次方程的實數(shù)根。#include<stdio.h>#include<math.h>double*quadratic(double*factor){ staticdoubleresult[2]; doubledelta;delta=factor[1]*factor[1]-4*factor[0]*factor[2]; if(delta<0)return0; delta=sqrt(delta); result[0]=(-factor[1]+delta)/(2*factor[0]);result[1]=(-factor[1]-delta)/(2*factor[0]); returnresult;}voidmain(){ doublefun[3],r;★//doublefun[3],*r; printf("Pleaseenterthreefactors:");scanf("%f%f%f",&fun[0],&fun[1],&fun[2]);★//%lf%lf%lf r=quadratic(fun[3]);★//r=quadratic(fun); if(r)printf("Thesolutionis:X1=%lf\tX2=%lf\n",r[0],r[1]); elseprintf("Nosolution!\n");}

(2)以下程序的功能是統(tǒng)計數(shù)組a中所有偶數(shù)的個數(shù)。#include"stdio.h"voidmain(){inta[10],*p,sum=0;printf("請輸入10個整數(shù):");for(p=a;p<a+10;p++)scanf("%d",*p);★//scanf("%d",p);for(;p>=a;p--)★//for(p--;p>=a;p--)if(p%2==0)sum++;★//if(*p%2==0)sum++;printf("共有%d個偶數(shù)",sum);}

2.程序填空(1)以下程序的功能是利用指針找出3個整數(shù)中的最小數(shù)。#include<stdio.h>voidmain(){int*p1,*p2,*p3,min,x,y,z;p1=&x;p2=&y;p3=&z;printf(″pleaseinputthreeinteger:″);scanf(″%d%d%d″,p1,p2,p3);①;//min=*p1if(*p1>*p2)②;//min=*p2if(min>*p3)③;//min=*p3printf(″min=%d\n″,min);}(2)以下程序利用指向函數(shù)的指針實現(xiàn)函數(shù)調(diào)用,完成可選擇的加減乘除運算。#include<stdio.h>/*定義函數(shù)add*/intadd(intx,inty){ printf("%d+%d=",x,y);returnx+y;}/*定義函數(shù)sub*/intsub(intx,inty) {printf("%d-%d=",x,y);returnx-y;} /*定義函數(shù)mult*/intmult(intx,inty){ printf("%d*%d=",x,y);returnx*y;}/*定義函數(shù)dev*/intdev(intx,inty){ printf("%d/%d=",

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論