2019高級語言程序設(shè)計實驗任務(wù)書24_第1頁
2019高級語言程序設(shè)計實驗任務(wù)書24_第2頁
2019高級語言程序設(shè)計實驗任務(wù)書24_第3頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第第24頁實驗一順序結(jié)構(gòu)程序設(shè)計一、實驗?zāi)康恼莆誄二、實驗的內(nèi)容和步驟以下程序多處有錯。要按下面指定的形式輸入數(shù)據(jù)和輸出數(shù)據(jù)時,請對該程序做相應(yīng)的修改。#include<stdio.h>void main(){double a,b,c,s,v;printf(inputa,b,c:\n);scanf("%d%d%d",a,b,c);s=a*b;v=a*b*c;printf("%d %d %d",a,b,c);printf("s=%f\n",s,"v=%d\n",v);當(dāng)程序執(zhí)行時,屏幕的顯示和要求輸入形式如下:inputa,b,c:1.0 2.0 3.0 此處的1.02.03.0是用戶輸入的數(shù)a=1.000000 b=2.000000,c=3.000000 此處是要求的輸出格式s=2.000000,v=6.000000相關(guān)知識:①檢查程序錯誤時應(yīng)注意幾點:改正了一些錯誤后應(yīng)及時對源程序重新進行編譯;字符,就可能導(dǎo)致系統(tǒng)對錯誤定位不準,此時應(yīng)該重新編譯;d)②正確調(diào)用scanf函數(shù)和printf函數(shù)構(gòu)成輸入和輸出語句。有以下程序#include<stdio.h>void main(){charc1,c2;intn1,n2;c1=getchar();c2=getchar();n1=c1-'0';n2=n1*10+(c2-'0');printf("%d\n",n2);程序運行時輸入:12<回車>,執(zhí)行后輸出結(jié)果是什么?相關(guān)知識:①getchar()函數(shù)用來輸入兩個字符分別賦給變量c1和c2;②n1=c1-'0'相當(dāng)于n1='1'-'0',字符1的ASCII碼值比0大一,所以n1中的值為1,c2-'0'相當(dāng)于'2'-'0';③把字符串轉(zhuǎn)換為多位數(shù)的算法。若有以下程序#include<stdio.h>voidmain(){inti,j;intx,y;scanf("i=%d,j=%d",&i,&j);scanf("%d%d",&x,&y);printf("i=%d,j=%d\n",i,j);printf("%4d%4d\n",x,y);要求給i賦值為10,j賦值為20,則應(yīng)該怎樣從鍵盤輸入數(shù)字?scanf()數(shù)據(jù)時在對應(yīng)的位置上輸入完全匹配的字符;②scanf()函數(shù)只包含格式描述符時可用跳格鍵Tab、空格和回車分隔數(shù)據(jù);printf()的位置上輸出完全匹配的字符,%d當(dāng)?shù)姆歉袷椒员銋^(qū)分各個輸出結(jié)果。10,20,3020,30,10請?zhí)畛涑绦颉?include“stdio.h”voidmain(){ int a,b,c; ; ; ;a=b;b=c; printf("%d,%d,%d",a,b,c);計算定期存款本利之和rate2.25%ncapitaln年后的本利之和depositratencapital均由鍵盤輸入。三:實驗總結(jié)實驗二邏輯結(jié)構(gòu)程序設(shè)計一、實驗?zāi)康牧私釩語言表示邏輯量的方法。學(xué)會正確使用邏輯運算符和邏輯表達式熟練掌握if語句和switch語句。結(jié)合程序掌握一些簡單的算法。學(xué)習(xí)調(diào)試程序。二、實驗內(nèi)容和步驟源程序中包含有一些錯誤,調(diào)試下列程序,使之具有如下功能:輸入a、、c三個整數(shù),求最小值。#include“stdio.h”voidmain(){inta,b,c;scanf("%d%d%d",a,b,c);if((a>b)&&(a>c))if(b<c)printf("min=%d\n",b);elseprintf("min=%d\n",c);if((a<b)&&(a<c))printf("min=%d\n",a);abc的值是不對的,原因是程序要求輸入數(shù)據(jù)的分隔符是空格(<Tab>鍵)改正輸入數(shù)據(jù)的分隔方式后,程序沒有輸出,還是用單步執(zhí)行的方法,監(jiān)視程序的執(zhí)行過程,發(fā)現(xiàn)程序中條件設(shè)計有誤,經(jīng)過改正的程序如下:#include“stdio.h”void main(){inta,b,c;scanf("%d%d%d",&a,&b,&c);if((a<b)&&(a<c))printf("min=%d\n",a)elseif((b<a)&&(b<c))printf("min=%d\n",b);elseif((c<a)&&(c<b))elseprintf("Nofindminimum\n");格式,一定要采用縮進格式,即不同層次(分支)的可讀性。相關(guān)知識:①類似a<b<c表達式的表示方法;②if簡單算法。C程序,求a、b、c、d編程點撥:①多定義一個變量,并一開始令變量max=a;②if(max<b)max=b;其余多個數(shù)據(jù)中求最值依此類推。4出。scanf()tab法:t=a;a=b;b=t;。0 x130 x13 x4當(dāng)x取其他值時e x 1y |x |2sin( x2)#include#includevoidmain(){floatx,y;scanf("%f",&x);if( )y= ;else if( )y= ;elseprintf("x=%f,y=%f",x,y);相關(guān)知識點:if語句的嵌套;數(shù)學(xué)函數(shù)的調(diào)用方式。5題,寫程序?qū)崿F(xiàn)以下函數(shù):scanfxyx(x<11≤x<10x≥10三種情況),檢查輸出的y值是否正確。相關(guān)知識:①用if的嵌套實現(xiàn)分段函數(shù);②比較運算符的正確使用;③算術(shù)運算符*的正確使用。6.閱讀分析以下程序的功能。#include<stdio.h>voidmain(){ intintvalue;printf("Convert:\n"); /*顯示菜單printf("1:decimaltohexadecimal\n");printf("2:hexadecimaltodecimal\nprintf("3:decimaltooctal\n");printf("4:octaltodecimal\n");printf("enteryourchoice:");scanf("%d",&choice);switch(choice){ case1: /*1時處理*/printf("enterdecimalvalue:");scanf("%d",&value);printf("%dinhexadecimalis:%x\n",value,value);break;case2: /*2時處理*/printf("enterhexadecimalvalue:");scanf("%x",&value);printf("%xindecimalis:%d\n",value,value);break;case3: /*3時處理*/printf("enterdecimalvalue:");scanf("%d",&value);printf("%dinoctalis:%o\n",value,value);break;case4: /*4時處理*/printf("enteroctalvalue:");scanf("%o",&value);printf("%oindecimalis:%d\n",value,value);break;相關(guān)知識:①用switch語句實現(xiàn)菜單的方法;②數(shù)制轉(zhuǎn)換的方法。7.1~75Friday。①編輯、調(diào)試和運行該程序,然后輸入4。其輸出結(jié)果是什么?為什么是這樣的結(jié)果?②該程序有哪些錯誤?如何修改?相關(guān)知識:①switch語句的正確使用;②break在switch語句中的作用。三:實驗總結(jié)實驗三循環(huán)控制一、實驗?zāi)康膚hiledowhilefor語句實現(xiàn)循環(huán)的方法。掌握在程序設(shè)計中用循的方法實現(xiàn)一些常用算法。并進一步學(xué)習(xí)調(diào)試程序的方法。掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法。掌握字符數(shù)組和字符串函數(shù)的使用。掌握與數(shù)組有關(guān)的算法。二、實驗內(nèi)容和步驟程序求和:1+…+100,填空,實現(xiàn)該功能。#include<stdio.h>voidmain()int s,i;s=0; /* 第5*/for( )s=s+i;printf("1+...+100=%d\n",s);思考:(1)第5行能不能去掉?其作用是什么?(2)不用for語句,用while語句改寫該程序,實現(xiàn)同樣的功能。比較下列兩個程序。(驗證)/*第一個程序*/#include<stdio.h>void main(){ inti,n,sum=0;scanf("%d",&i);n=i;while(i<=10){ i++;printf("%d+...+10=%d",n,sum);/* 第二個程序 */#include<stdio.h>voidmain(){inti,n,sum=0;scanf("%d",&i);n=i;do{ i++;}while(i<=10);printf("%d+...+10=%d",n,sum);分別運行這兩題,若輸入7,這兩個程序的結(jié)果分別是多少?若輸入12,這兩個程序的結(jié)果又分別是多少?比較為什么會有這樣的區(qū)別?12345,分析輸出結(jié)果是多少?上機驗證。#include voidmain(){ long data;scanf("%ld",&data);while(data){ data=data/10;Fibonaccin(驗證、調(diào)試)運行程序,寫出運行結(jié)果;采用單步跟蹤技術(shù)運行該程序,觀察一下變量的變化。#include void main(){ longint f1,inti,n;printf("Input n:");/*第5行*/scanf("%d",&n);/* 6行*/f1=f2=1;for(i=1;i<n;i++){ printf("%ld\t%ld\n",f1,f2); /* 第9行 f1=f1+f2;f2=f2+f1;思考:(1)f1、f2這兩個變量為什么定義為longint型?(2)第5行和第6行的相互作用,你會用這種方式來實現(xiàn)輸入嗎?(3)注意第9行的輸出“%ld”中的“1”是字母“L”的小寫形式,不是數(shù)字1。預(yù)習(xí)下面程序,寫出預(yù)習(xí)結(jié)果并上機驗證。(驗證#include <stdio.h>voidmain(){ int i,j,x;for(i=0,x=0;i<2;i++){ x++;for(j=0;j<3;j++){ if(j%2) x++;x++;printf("x=%d\n",x);思考:用一句話概括if(j%2)語句的作用。相關(guān)知識:嵌套for循環(huán)的執(zhí)行過程及continue語句的作用。用1,若輸入大于100分,則提示重新輸入,然后計算最高分、最低分與平均分。請調(diào)試、檢查程序中的錯誤,并改正之。#include voidmain(){intmark;intn=0; sum=0;intmax=100; min=0;for(;;);{ scanf("%d",if(mark>100){ printf("Mark>100,Please reinput\nbreak;if(mark=-1)break;n++;sum=sum+mark;if(mark>max)max=mark;if(mark<min)min=mark;sum=sum/n;printf("max=%d,min=%d,aver=%d\n",max,min,sum);提示:該程序有很多錯誤,下面給出某些錯誤的說明。當(dāng)求一批數(shù)中的最大值時,若已知一批數(shù)的最小值,則將這個最小值作為最大值的初始值;當(dāng)求最小值時,情況相反,即若已知這批數(shù)的最大值,則將這個最大值作為最小值的初始值。本例中求一批分數(shù)的最高分,則最高分的初始值應(yīng)該設(shè)為0,然后在程序循環(huán)中逐漸地升高,直至求出最高分;本例中還要求這批分數(shù)的最低分,則最低分的初始值設(shè)為100,然后在程序循環(huán)中逐漸地降低,直至求出最小值。實現(xiàn)“若輸入大于100分,則提示重新輸入”功能的語句有錯;實現(xiàn)“用1作為結(jié)束標(biāo)志”功能的語句有錯。思考:(1)“一批數(shù)據(jù)”是幾個數(shù)據(jù)?輸入的數(shù)據(jù)如何結(jié)束?程序中哪一行是實現(xiàn)結(jié)束這個要求的,寫出該語句。100出該語句。寫出您的測試數(shù)據(jù)及運行結(jié)果,注意輸入的數(shù)據(jù)序列中最后一個應(yīng)是-1。7.201~901~30、31~60、61~90的數(shù)各有多少個?編程點撥:count11~30的個數(shù),count231~60的個數(shù),count361~90的個數(shù)。for20xcount11x31~60count21x61~90count31。最后,輸出統(tǒng)計的結(jié)果。#include voidmain(){int int i,x;printf(“Pleaseinput20numbers:”);for(i=0;i<20;i++){ scanf(“%d”,&x);……… 補充完成程序*//*輸出統(tǒng)計結(jié)果*/1斷該數(shù)是不是素數(shù)?編程點撥:x。for2~x-12~x-1xxx素數(shù);否則,x就是素數(shù)。最后,將判斷結(jié)果輸出。#include voidmain(){int i,x;printf("Enter one natural integer:scanf("%d",&x);for(i=2;i<x-1;i++) /*補充完成該程序*/x思考:其實,只需要判斷2~ 之間的整數(shù)能否整除x就可以判斷x是否為素數(shù),此時,如x何修改程序?3身。例,153153=13+53+33。有兩種解題思路,選擇其中之一編程實現(xiàn):3花數(shù)。for(i=1;i<=9;i++)for(j=0;j<=9;j++)for(k=0;k<=9;k++)i10jk0開始。100~9993位數(shù)逐位分離后進行判斷。for(i=100;i<999;i++){ a=i/100;b=(i-a*100)/10;c=i%10;編程:輸出下列圖形。 *55列的三角形圖形。每一行*3579??紤]兩點,輸出位置。每一行的星號與行號有關(guān),i*printf(“%c,三:實驗總結(jié)

是行號。

*********實驗四數(shù)組一、實驗?zāi)康募耙螅赫莆找痪S數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法;掌握字符數(shù)組和字符串函數(shù)的使用;掌握與數(shù)組有關(guān)的算法(特別是排序算法)二、實驗內(nèi)容和步驟103個數(shù)輸出這些整數(shù),10#inclue<stdio.h>#define N voidmain(){inti,a[N],av;for(i=0;i<N;i++)scanf("%d",a[i]);for(i=0;i<N;i++){printf("%d",a[i]);if(i%3==0)printf("\n");}for(i=0;i!=N;i++)av+=a[i];printf("av=%f\n",av);}上面給出的程序是完全可以運行的,但是運行結(jié)果是完全錯誤的。調(diào)試時請注意數(shù)組元素的輸入問題、輸出格式問題等。請使用前面實驗所掌握的調(diào)試工具,判斷程序中的錯誤并改正。相關(guān)知識:①數(shù)組元素值的輸入;②求和求平均值的相關(guān)變量初始化問題;③輸出格式符的正確使用。④數(shù)組元素的格式化輸出。5個數(shù)據(jù),然后求它們的和并輸出結(jié)果。#include<stdio.h>voidmain(){int i,a[5],sum=0;scanf("%d,%d,%d,%d,%d",afor(i=0;i<=4;i++)sum+=a[i];printf("sum=%d\n",sum);該程序中有哪些錯誤?如何修改?寫出正確運行后的結(jié)果。相關(guān)知識:數(shù)組元素的輸入和輸出只能逐個元素操作,而不能以數(shù)組名作整體操作。34程序的初始說明和輸出語句如下所示,請補充完成該程序。#include<stdio.h>voidmain(){編程點撥:

int i,j,row,colum,max;staticint a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};printf("Max=%d,Row=%d,Colum=%d\n", max, row, colum);①初始化row、colum及max。②使用formaxmaxmaxrowcolum的值。③最后輸出max,row和colum的值。相關(guān)知識:①二維數(shù)組的定義和初始化;②使用二重循環(huán)對二維數(shù)組元素的訪問;③求最值時相關(guān)變量初值的設(shè)定。10個整數(shù),從鍵盤輸入一個整數(shù),輸出與該值相同的數(shù)組元素下標(biāo)。編程點撥:①輸入要查找的變量x的值;②使用循環(huán)將輸入的數(shù)和數(shù)組元素逐個進行比較,若找到,則提前退出循環(huán);③根據(jù)循環(huán)是正常結(jié)束還是提前結(jié)束來判斷是否找到x。部分源代碼:#include voidmain(){ int i,x,a[10]={1,2,3,4,5,6,7,8,9,10};for(i=0;i<10;i++) printf("\n");

/*輸入x變量的值*//*循環(huán)查找與x相等的元素*/if ( )printf("%d\n",i); /*輸出查找結(jié)論,輸出下標(biāo)值else printf("Notfound%d\n",x);a④插入。k15編寫程序,任意輸入10a④插入。k15編程點撥:①定義數(shù)組時多開辟一個存儲單元;j=30j=30123456789102018161412108642下標(biāo)=k15k15找合適的插入位置:j=3j=0a[j]≥k?即20≥15?是j++j=1a[j]≥k?即18≥15?是j++j=2a[j]≥k?即16≥15?是j++j=3 a[j]≥k? 14≥15? 不是,結(jié)束循環(huán)while(a[j]>=k&&j<10) j++;找不到比k小的元素時也要退出循環(huán)③向右移動插入點后的元素;先把a[9]移到a[10],a[8]移到a[9],…a[i]移到a[i+1],直到把a[j]移到a[j+1],即:i=j停止移動元素。for(i=9;i>=j;i--) a[i+1]=a[i];012301234567892018161412108642部分源代碼:#include #defineN11voidmain(){ inti,j,a[N];printf(“Pleaseinput10numbers:”);for(i=0;i<N-1;i++)scanf(“%d”,&a[i]);/*亂序輸入10個整數(shù)*/相關(guān)知識:①比較排序法、選擇排序法和冒泡排序法;②數(shù)據(jù)元素的插入。編程點撥:①求最大值所在元素下標(biāo):不必用max記住最大值,只要用k記住最大值所在的元素下標(biāo);②刪除最大值:從最大值開始將其后面元素依次前移一個位置。下標(biāo)=a

0 1 2 3 4 5 6 7 8 9 1022816141108164206部分源代碼:k=0;if(a[k]<a[1])真k=1; 執(zhí)行if(a[k]<a[2])假k=2; 不執(zhí)行if(a[k]<a[3])真k=3; 執(zhí)行相關(guān)知識:①刪除數(shù)組元素的概念;②移動數(shù)組元素的算法;③求最大值位置的算法。分的學(xué)生成績,用輸入負數(shù)結(jié)束輸入。請?zhí)羁眨?include<stdio.h>void main(){floatx[1000],sum=0.0,ave,a;intn=0,i;printf("Enter mark:\n")scanf("%f",&a);while(a>=0.0&&n<1000){sum+= ; x[n]= ;n++; scanf("%f",ave= ;printf("Output:\n");printf("ave=%f\n",ave);for(i=0;i<n;i++)if( ) printf("%f\n",x[i]);打印如下楊輝三角形11112113311464115101051編程點撥:楊輝三角形有如下特點:① 只有下半三角形有確定的值;② 1;③ 其它元素值均是前一行同一列元素與前一行前一列元素之和。三:實驗總結(jié)

實驗五函數(shù)與編譯預(yù)處理一、實驗?zāi)康恼莆斩x函數(shù)的方法?!爸祩鬟f”的方法。掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用的方法。掌握全局變量和局部變量,動態(tài)變量、靜態(tài)變量的概念和使用方法。二、實驗內(nèi)容和步驟閱讀程序,通過調(diào)試該程序,熟悉函數(shù)的調(diào)用方法及單步跟蹤鍵。#include<stdio.h>voidmain(){void fun(inti,intj,intintx,y,z;x=y=z=6;fun(x,y,z);printf("%x=%d;y=%d;z=%d\n",x,y,z);void fun(inti,intj,intk){ intt;t=(i+j+k)*2;printf("t=%d\n",t);閱讀程序注意函數(shù)調(diào)用過程中形參、實參的關(guān)系。#include<stdio.h>voidmain(){intx=10,y=20;void swap(int,int);printf("(1)inmain:x=%d,y=%d\n",x,y);swap(x,y);printf("(4)inmain:x=%d,y=%d\n",x,y);voidswap(intm,intn){ int temp;printf("(2)inmain:m=%d,n=%d\n",m,n);temp=m;m=n;n=temp;printf("(3)inmain:m=%d,n=%d\n",m,n);把用戶自定義函數(shù)swap()中的形式參數(shù)m和n對應(yīng)改成x和y,使其與實參變量同名,再用F7跟蹤程序的運行,看看有什么變化。函數(shù)定義時,函數(shù)名后面圓括號內(nèi)的參數(shù)稱為形參;在函數(shù)調(diào)用時,函數(shù)名后面圓括號內(nèi)的參數(shù)稱為實參。對于實參,在調(diào)用函數(shù)中對其進行定義時,不僅指明它的類型,而且系統(tǒng)還為其分配存儲單元。而對于形參,定義時僅僅只是指明它返回調(diào)用函數(shù)時,該存儲單元立即撤銷。程序是實現(xiàn)求素數(shù)的,請?zhí)羁胀瓿稍摮绦?,并上機運行測試。#include<math.h>#include<stdio.h>voidmain(){intm;; /*申明求素數(shù)函數(shù)printf("Pleaseinputadatam=:");scanf("%d",&m);; /*調(diào)用求素數(shù)函數(shù)void prime(intn){inti,k;k=sqrt(n);for(i=2;i<=k;i++)if(n%i==0)break;if(i>=k+1)printf("Thisisaprimenumber");else printf("Thisisn’taprimenumber");程序的功能是從鍵盤上輸入的若干個數(shù)并求出最大值。請?zhí)羁胀瓿稍摮绦颉?include<stdio.h>voidmain( ){ int i;int s[10], max;/* Findmax()函數(shù)的申明*/printf("Input10number:/*10s*//*Findmax函數(shù)for(i=0;i<10;i++)printf("%4d",s[i]);printf("\nthe max is%dint Findmax(int x[], int n){ int max=x[0];for(i=1;i<n;i++)if(max<x[i])max=x[i];returnmax;相關(guān)知識:練習(xí)形參是數(shù)組的函數(shù)申明、調(diào)用格式;復(fù)習(xí)數(shù)組的輸入方法。程序的功能是從鍵盤上輸入的若干個數(shù)按升序排序。請調(diào)試檢查該程序中的錯誤,程序如下:#include<stdio.h>voidmain( ){ int i, k;float s[100], jprintf("Inputnumber:\n");for(i=0;scanf("%f",&j);i++)s[i]=j;sort(s,i);for(k=0;k<i;k++)printf("%f",s[k]);printf("\n");voidsort(int x[n], int n){ int i,j,temp,min;for(i=0;i<n-1;i++){ min=i;for(j=i+1;j<n;j++)if(x[j]<x[min])min=j;if(min!=i){ temp=x[i];x[i]=x[min];x[min]=temp;錯誤提示:形參和實參的數(shù)據(jù)類型不一致;一般形參數(shù)組在說明時不指定數(shù)組的長度,而僅給出類型、數(shù)組名和一對方括號;用戶自定義函數(shù)sort()沒有申明過。注意:for(i=0;scanf("%f",&j);i++)這一行中for語句第二個表達式的使用形式,此處用了scanf()scanf()此時就可以結(jié)束循環(huán)。閱讀如下遞歸程序,其功能是什么?上機調(diào)試。#include<stdio.h>voidmain( ){ int m,k;voiddtoo(int n,intr);printf("Pleaeinputthedecimalnumber:");scanf("%d",&m);printf("\nPleaseinput anumber inscanf("%d",&k);dtoo(m,k);voiddtoo(int n,intr){ if(n>=r) dtoo(n/r,r);printf("%d",n%r);變量的作用范圍# define LOW # define HIGH 5# define CHANGE int i=LOW;#include<stdio.h>voidmain(){ int workover(int i),reset(int iint i=HIGH;reset(i/2);printf("i=%d\n",ireset(i=i/2);printf("i=%d\n",ireset(i/2);printf("i=%d\n",i);workover(i);printf("i=%d\n",iintworkover(int i){ i=(i%i)*((i*i)/(2*i)+4)printf("i=%d\n",i);return(i);int reset(int i){ i=i<=CHANGE?HIGH:LOW;return(i);。在main(reset(i/2)和reset(i=i/2)resetireseti上機調(diào)試程序,觀察靜態(tài)局部變量在調(diào)用過程中的變化。#include<stdio.h>voidmain( ){ int i;int f(int);for(i=1;i<=5;i++)printf("(%d):%d\n",i,f(i));printf("\n");intf(int n){ static int j=j=j*n;return(j);如果希望在函數(shù)調(diào)用結(jié)束后仍然保留函數(shù)中定義的局部變量的值,則可以將該局部變量定義為靜態(tài)局部變量(或稱局部靜態(tài)變量)0(數(shù)值型)或空字符(字符型)。預(yù)習(xí)程序,分析在程序運行前宏NUM#include #define N 2#define M N+1#define NUM main(){ inti,n=0;for(i=1;i<=NUM;i++){n++;printf("%d\n",n);}printf("\n");分析程序的運行結(jié)果,上機驗證。#definePOWER(x)((x)*(x))#defineMAX(x,y)(x)>(y)?(x):(y)#define PR #include<stdio.h>voidmain(){ inta,b,c,d,x;a=5;b=10;x=200;c=POWER(a+b);x=x/POWER(a+b);d=MAX(a+6,b);PR("c=%d,d=%d,x=%d\n",c,d,x);三:實驗總結(jié)

實驗六指針一、實驗?zāi)康?會定義和使用指針變量;;;;了解指向指針的指針的概念及其使用方法。二、實驗內(nèi)容和步驟編程序并上機調(diào)試運行程序(都要求用指針處理)。上機驗證以下程序的運行結(jié)果#include<stdio.h>voidmain(){inti,j,*pi,*pj;pi=&i;pj=&j;i=5;j=7;printf("\n%d\t%d\t%d\t%d",i,j,pi,pj);printf("\n%d\t%d\t%d\t%d",&i,*&i,&j,*&j);運行結(jié)果:57-34-32-345-327相關(guān)知識:指針的值與指針指向的變量值的區(qū)別。在VC環(huán)境下,以上運行結(jié)果中的負數(shù)是另一個值。#include<stdio.h>voidmain(){inti,a[]={1,2,3},*p;p=a;/*將數(shù)組a首地址賦給指針p*/for(i=0;i<3;i++)printf("%d,%d,%d,%d\n",a[i],p[i],*(p+i),*(a+i));運行結(jié)果:1,1,1,12,2,2,23,3,3,3種表示方法。調(diào)試下列程序,使之具有如下功能:用指針法輸入124輸出。寫出調(diào)試過程。#include<stdio.h>voidmain(){intj,a[12],*p=a;for(j=0;j<12;j++)scanf("%d",p++);p=a;for(j=1;j<=12;j++){printf("%4d",*p++);if(j%4==0)printf("\n");相關(guān)知識:①調(diào)試時指針變量指向哪個目標(biāo)變量;②區(qū)分指針的值和指針指向變量的值;③通過指針操作數(shù)組元素。調(diào)試下列程序,使之具有如下功能:任意輸入2個數(shù),調(diào)用兩個函數(shù)分別求:⑴2個數(shù)和, ⑵2個數(shù)交換值。#include<stdio.h>voidmain(){inta,b,c,*p=&c;void sum(int ,int,intvoidswap(int*,int*);scanf("%d,%d",&a,&b);sum(a,b,p);swap(&a,&b);printf("sum=%d\n",c);printf("a=%d,b=%d\n",a,b);void sum(inta,intb,int*c){*c=a+b;voidswap(int*a,int*b){int*t;t=a;a=b;b=t;相關(guān)知識:①調(diào)試程序時注意參數(shù)傳遞的是數(shù)值還是地址。②指針作為參數(shù);③利用指針得到多個返回值。#include<stdio.h>inttable[10];voidlookup(int*t,int*a,intn){intk;*a=t[0];for(k=1;k<n;k++)if( )*a=t[k];voidmain(){intk,min,*p=&min;for(k=0;k<10;k++)scanf("%d",table+k);lookup( , printf("min=%d\n",min);相關(guān)知識:①用數(shù)組名加地址偏移量表示數(shù)組元素地址的方法;②數(shù)組名作為函數(shù)參數(shù);③指針變量作為函數(shù)參數(shù)。擇項中,選擇正確的填入。1000101010001000101010001#include<stdio.h>voidmain(){inta[5][5]={0},*p[5],i,j;for(i=0;i<5;i++)p[i]= (1) ;for(i=0;i<5;i++){ *(p[i]+ (2) )=1;*(p[i]+5- (3) )=1;for(i=0;i<5;i++){for(j=0;j<5;j++)printf("%2d",p[i][j]);(4);(1)A.&a[i][0]B.&a[i][1]C.&p[i]D.&a[0][i](2)A.0B.1C.iD.(i+1)(3)A.0B.1C.iD.(i+1)(4)A.putchar("\n");B.putchar('\n');C.putchar(\n);D.printf('\n');相關(guān)知識:①二維數(shù)組與指針;②數(shù)組指針的概念和使用。a[5]4,6,8,10,12三:實驗總結(jié)實驗七結(jié)構(gòu)體和共用體一、實驗?zāi)康?;掌握鏈表的概念,;二、實驗內(nèi)容和步驟編

溫馨提示

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

評論

0/150

提交評論