實(shí)驗(yàn)內(nèi)容解答_第1頁(yè)
實(shí)驗(yàn)內(nèi)容解答_第2頁(yè)
實(shí)驗(yàn)內(nèi)容解答_第3頁(yè)
實(shí)驗(yàn)內(nèi)容解答_第4頁(yè)
實(shí)驗(yàn)內(nèi)容解答_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

PAGE60 實(shí)驗(yàn)四1.分析以下程序,并通過運(yùn)行程序,得出程序中的else表示的情況是B。#include<stdio.h>voidmain(void){ inta; scanf("%d",&a); if(a%2==0) { if(a%3==0) if(a%4==0) printf("1");//能被12整除輸出“1” } else printf("0");//不能被2整除輸出“0”}//其余整數(shù)無(wú)輸出A)a能被2整除B)a不能被2整除C)a不能被4整除D)a不能被12整除2.完成填空,使程序能實(shí)現(xiàn)判斷輸入的自然數(shù)是否既是3又是5的倍數(shù)。#include<stdio.h>voidmain(void){ intx; printf("inputx:"); scanf("%d",&x);//注意&符號(hào)的寫法 if(x%3==0&&x%5==0)//非逗號(hào), printf("yes"); else printf("no");}5.根據(jù)以下函數(shù)關(guān)系,對(duì)輸入的每個(gè)x值,計(jì)算出相應(yīng)的y值。 #include<stdio.h>main(){floatx,y;printf("請(qǐng)輸入x:");scanf("%f",&x);if(x<0)y=-x;//printf("%f\n",y=-x);elseif(x<10)y=x+5;elseif(x<20)y=x+10;elsey=x+20;printf("y=%f\n",y);}不正確的寫法:(1)f(x<0)y=-x;elseif(x>=0&&x<10)y=x+5;elseif(x>=10&&x<20)y=x+10;elsey=x+20;(2)f(x<0)y=-x;elseif(0<=x<10)y=x+5;elseif(10<=x<20)y=x+10;elsey=x+20;(3)f(x<0)y=-x;elseif(x>=0,x<10)y=x+5;elseif(x>=10,x<20)y=x+10;elsey=x+20;其他方法:實(shí)驗(yàn)課本P61注意:(1)if之后的條件要用()括起來(lái)(2)最后一個(gè)else后面不再加條件if(x>=20)(3)復(fù)合語(yǔ)句要加大括號(hào){}(4)數(shù)學(xué)上的0<x<10關(guān)系在C語(yǔ)言中寫成x>0&&x<10或0<x&&x<10(5)scanf(“格式字符串”,&變量名);printf(“格式字符串”,變量名);例:printf(“y=%d”,y);printf(y);printfy;實(shí)驗(yàn)五第三章流程控制習(xí)題找出下面程序中的錯(cuò)誤,并對(duì)其予以改正:1.分析:原程序在編譯的時(shí)候并沒有出現(xiàn)相應(yīng)的語(yǔ)法錯(cuò)誤,而且程序也可以進(jìn)行運(yùn)行。但程序運(yùn)行達(dá)不到預(yù)期的結(jié)果。每個(gè)if后面的三個(gè)表達(dá)式所要體現(xiàn)的功能是將兩變量的值進(jìn)行互換,是一個(gè)復(fù)合語(yǔ)句,必須用{}括起來(lái)。#include<stdio.h>//包含輸入輸出頭文件voidmain(void){floata,b,c,t;printf("Inputa,b,c:");scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;}//將a,b的值進(jìn)行交換,復(fù)合語(yǔ)句必須用{}括起來(lái)if(a>c){t=a;a=c;c=t;}//將a,c的值進(jìn)行交換,復(fù)合語(yǔ)句必須用{}括起來(lái)if(b>c){t=b;b=c;c=t;}//將b,c的值進(jìn)行交換,復(fù)合語(yǔ)句必須用{}括起來(lái)printf("%f,%f,%f\n",a,b,c);}2.#include<stdio.h>voidmain(void){intn;printf("Pleaseinputthescore:");scanf("%d",&n);if(n<0||n>100)//源程序此處少了邏輯或“||”printf("輸入分值錯(cuò)誤!");elseswitch(n/10){case9:printf("A\n");break;case8:printf("B\n");break;case7:printf("C\n");break;case6:printf("D\n");break;default:if(n==100)printf("A\n");//源程序中的{}多余elseprintf("E\n");//源程序中的{}多余}}3.分析:在程序第九行添加語(yǔ)句if(i==1)min=a;防止系統(tǒng)給min賦一個(gè)隨機(jī)值。return0表示程序正常結(jié)束。#include<stdio.h>intvoidmain(void){ inta,i=1,min; while(i<=5) { printf("請(qǐng)輸入第%d個(gè)數(shù)據(jù):\n",i);//源程序缺少了與%d對(duì)應(yīng)的變量i scanf("%d",&a);if(i==1)min=a;//將輸入的第一個(gè)數(shù)字作為min的初始值 if(min>=a)min=a; i=i+1; } printf("min=%d\n",min);//“+”改為“=” return0;//添加“;”}4.#include<stdio.h>voidmain(void){inti=1,sum=0;//給sum一個(gè)初始值0,否則系統(tǒng)將賦一個(gè)隨機(jī)值。do//去掉do后的“;”sum+=i;//“{}”多余while(++i<=10);printf(“sum=%d”,sum);//添加運(yùn)算結(jié)果輸出語(yǔ)句}實(shí)驗(yàn)六實(shí)驗(yàn)課本P208實(shí)驗(yàn)4二、1、B,循環(huán)3次2、求輸入的自然數(shù)m的所有素?cái)?shù)因子。#include<stdio.h>voidmain(void){ intm,k=2; printf("輸入的自然數(shù)m:"); scanf("%d",&m); while(k<=m) if(m%k==0) {printf("%d,",k); m=m/k; } else k++; printf("\b\n");}3、輸出1~n間不能被7整除的數(shù)。#include<stdio.h>voidmain(void){ inti=1,n;printf("inputthenum:\n");scanf("%d",&n);for(

;i<=n

;i++for(

;i<=n

;i++){if(i%7==0)continue;printf("%4d,",i);}{ if(i%7==0) i++;printf("%4d,",i); i++;} printf("\n");}實(shí)驗(yàn)七第三章流程控制習(xí)題五、7.給定一個(gè)自然數(shù),要求:①求它是幾位數(shù);②按逆序打印出各位數(shù)字。例如原數(shù)為4321,應(yīng)輸出1234。#include<stdio.h>voidmain(void){ intnum,i,x; scanf("%d",&num); for(i=0;num>0;i++)//for(i=0;num;i++)或for(i=0;num!=0;i++) { x=num%10; num/=10;//num=num/10;而非num/10=num; printf("%d",x);//a=num/10;printf("%d",num-a*10); } printf("\n這是一個(gè)%d位數(shù)。\n",i);}#include<stdio.h>voidmain(void){ intnum,i,x=0; scanf("%d",&num); for(i=0;num>0;i++) { x=x*10+num%10; num/=10; } printf("這是一個(gè)%d位數(shù)。\n",i); printf("%d\n",x);}實(shí)驗(yàn)八第四章數(shù)組習(xí)題四、找出下面程序中的錯(cuò)誤,并對(duì)其予以改正:1.對(duì)輸入的10個(gè)浮點(diǎn)數(shù)按從小到大順序進(jìn)行冒泡法排序。分析:原程序在編譯的時(shí)候并沒有出現(xiàn)相應(yīng)的語(yǔ)法錯(cuò)誤,而且程序也可以進(jìn)行運(yùn)行。但結(jié)果不正確,原因在于對(duì)數(shù)組整體引用,做輸入\輸出操作是非法的,只能逐個(gè)地引用數(shù)組元素。#include<stdio.h>#defineSIZE10voidmain(void){ floatNum[SIZE],tmp; shorti,j;printf("Input10normalnumbers:\n");for(i=0;i<SIZE;i++) scanf("%f",&Num[i]);//逐個(gè)數(shù)組元素賦值 printf("\n"); for(i=0;i<SIZE;i++) { for(j=0;j<SIZE-i-1;j++) if(Num[j]>Num[j+1]) tmp=Num[j],Num[j]=Num[j+1],Num[j+1]=tmp; } printf("Sortednumbers:");for(i=0;i<SIZE;i++) printf("%5.1f\n",Num[i]);//逐個(gè)數(shù)組元素輸出 printf("\n");}2.把一個(gè)整數(shù)按大小順序插入已排好序的數(shù)組中。原程序編譯通過,但結(jié)果不正確,原因在于變長(zhǎng)數(shù)組初始化后數(shù)組大小就已經(jīng)確定,不能更改,a[]={27,56,123,128,154,168,178,205,362,618}定義后,數(shù)組a的最大數(shù)組元素是a[9],因而a[10]引用時(shí)下標(biāo)越界;同時(shí)算法有誤,在與輸入數(shù)的比較中,應(yīng)該是當(dāng)輸入數(shù)小于數(shù)組元素時(shí),數(shù)組逐個(gè)后移,插入。改正算法如下:#include<stdio.h>voidmain(void){shorti,s,n,a[11]={27,56,123,128,154,168,178,205,362,618};//固定數(shù)組大小printf("inputanumber:\n");scanf("%d",&n);for(i=0;i<10;i++)if(n<a[i])//比較{for(s=9;s>=i;s--)a[s+1]=a[s];break;}a[i]=n; printf("Numbersnow:");for(i=0;i<=10;i++)printf("%d",a[i]);printf("\n");}5.統(tǒng)計(jì)輸入的10個(gè)數(shù)中的最大值和最小值以及它們的序號(hào)。分析:C語(yǔ)言中下標(biāo)越界不做檢查,程序員必須仔細(xì)控制,同時(shí)程序中流程錯(cuò)誤比較嚴(yán)重,具體修改如下#include<stdio.h>#defineSIZE10voidmain(void){intx[SIZE],i,max,min,a,b;printf("Enter10integers:\n");for(i=0;i<SIZE;i++)//數(shù)組下標(biāo)從0開始,最大為9{printf("%d:",i);scanf("%d",&x[i]);//輸入語(yǔ)句要在循環(huán)中,保證10次輸入}max=min=x[0];a=b=0;for(i=1;i<SIZE;i++){if(max<x[i]){max=x[i];a=i;}//兩條賦值語(yǔ)句都在選擇結(jié)構(gòu)中if(min>x[i]){min=x[i];b=i;}//同上}printf("Maximumvalueis%d,第%d個(gè)\n",max,a+1);printf("Minimumvalueis%d,第%d個(gè)\n",min,b+1);}五、編程題1.試編程在一個(gè)已排好序的浮點(diǎn)型數(shù)組中查找是否存在輸入的待查浮點(diǎn)數(shù),如果有,打印出它的位置;如果沒有,則打印“沒有這個(gè)數(shù)!”。【參考答案】#include<stdio.h>#include<math.h>#defineSize7voidmain(void){inti,flag=0;floata[Size]={2.6,2.8,4.7,5.4,6.0,6.7,9.4};floatx;printf("inputanumber:\n");scanf("%f",&x);for(i=0;i<Size;i++)if(fabs(x-a[i])<1.0e-5)//if(x==a[i]) { printf("找到這個(gè)數(shù),在第%d個(gè)位置\n",i+1); flag=1; } if(flag==0)printf("沒有這個(gè)數(shù)\n");}輸入:5.4,程序運(yùn)行結(jié)果如下:實(shí)驗(yàn)九實(shí)驗(yàn)課本P210實(shí)驗(yàn)5二、4、5第四章數(shù)組習(xí)題五、編程題9.編寫程序?qū)斎氲奈鍌€(gè)國(guó)家名稱進(jìn)行冒泡法排序,將其按字典順序排列輸出?!緟⒖即鸢浮?include<stdio.h>#include<string.h>voidmain(void){chars[5][20];chartemp[20];inti,j;for(i=0;i<5;i++)gets(s[i]);for(i=0;i<4;i++)for(j=0;j<4-i;j++)if(strcmp(s[j],s[j+1])>0){strcpy(temp,s[j]);strcpy(s[j],s[j+1]);strcpy(s[j+1],temp);}for(i=0;i<5;i++)printf("%s",s[i]);}輸入:China,Italy,America,Egypt,Japan,程序運(yùn)行結(jié)果如下:圖4-26程序運(yùn)行結(jié)果10.編程將輸入的十進(jìn)制整數(shù)num轉(zhuǎn)換成二進(jìn)制字符串輸出。#include<stdio.h>voidmain(void){intnum;charStringNum[20];inti,j,Num[20];scanf("%d",&num);for(i=0;num!=0;++i) N Num[i-j-1]==1Num[i-j-1]Num[i-j-1]!=0Num[i]=num%2;num/=2;}for(j=0;j<i;++j)StringNum[j]=Num[i-j-1]>0?'1':'0';StringNum[j]=’\0’;puts(StringNum);}四、找出下面程序中的錯(cuò)誤,并對(duì)其予以改正:3.分析:在程序中的錯(cuò)誤關(guān)鍵在于字符串的比較和賦值必須都用字符串函數(shù)實(shí)現(xiàn),不能直接使用賦值語(yǔ)句和比較運(yùn)算符,因使用到字符串函數(shù)需要添加頭文件string.h,改正如下:#include<stdio.h>#include<string.h>//添加頭文件#include<string.h>viodmain(void){charstrtmp[10],StrName[5][10];shorti,j,tmp;printf("inputcountry'sname:\n");for(i=0;i<5;i++)gets(StrName[i]);for(i=0;i<5;i++){ for(tmp=i,j=i+1;j<5;j++)if(strcmp(StrName[j],StrName[tmp])<0)//字符串比較大小使用strcmp函數(shù)tmp=j;if(tmp!=i){ strcpy(strtmp,StrName[tmp]);//字符串賦值使用strcpy函數(shù) strcpy(StrName[tmp],StrName[i]); strcpy(StrName[i],strtmp);}puts(StrName[i]);}printf("\n");}輸入:China,Italy,America,Egypt,Japan,程序運(yùn)行結(jié)果如下:圖4-15程序運(yùn)行結(jié)果實(shí)驗(yàn)十第五章指針習(xí)題三、分析程序,寫出程序運(yùn)行結(jié)果3.閱讀下列程序,寫出程序運(yùn)行結(jié)果。#include<stdio.h>voidmain(void){inta[]={1,2,3,4,5},*p;p=a;*(p+2)+=2;//a[2]=a[2]+2=5printf(“%d,%d”,*p,*(p+2));}運(yùn)行結(jié)果:1,55.閱讀下列程序,寫出程序運(yùn)行結(jié)果。#include<stdio.h>voidmain(void){intnum[]={1,3,5,7},s=1,i,*p=num;for(i=0;i<3;i++)s*=*(p+i);//s=s*num[i]printf("%d\n",s);}運(yùn)行結(jié)果:15四、找出下面程序中的錯(cuò)誤,并對(duì)其予以改正。1、某人編寫了一個(gè)程序?qū)斎氲母↑c(diǎn)數(shù)觀察其地址和數(shù)值。請(qǐng)仔細(xì)閱讀他的程序,指出并糾正程序中的錯(cuò)誤。錯(cuò)誤原因:使用了未初始化的野指針。#include<stdio.h>#defineSIZE10voidmain(void){ float*Pointer;//改為floatNum,*Pointer=&Num; printf("Inputafloat:"); scanf("%f",Pointer); printf("Pointer=%X*Pointer=%f\n",Pointer,*Pointer);}2、某人嘗試用指針輸入10個(gè)整數(shù)卻無(wú)法打印。請(qǐng)仔細(xì)閱讀他的程序,指出并糾正程序中的錯(cuò)誤。錯(cuò)誤原因:指針越界正確的程序?yàn)椋?include<stdio.h>#defineSIZE10voidmain(void){ shortNum[SIZE],*ptr=Num; shorti;printf("Input10normalnumbers:\n");for(i=0;i<SIZE;i++) scanf("%d",ptr++);printf("\n");printf("Inputednumbersare:\n");ptr=Num;for(i=0;i<SIZE;i++) printf("%d\n",*ptr++); printf("\n");}給出的答案:#include<stdio.h>#defineSIZE10voidmain(void){ intNum[SIZE],*ptr=Num; shorti;printf("Input10normalnumbers:\n");for(i=0;i<SIZE;i++){if(i)++ptr; scanf("%d",ptr);}printf("\n");printf("Inputednumbersare:\n");ptr=Num;for(i=0;i<SIZE;i++){if(i)++ptr; printf("%d\n",*ptr);} printf("\n");}實(shí)驗(yàn)十一第五章習(xí)題三、分析程序,寫出程序運(yùn)行結(jié)果4.閱讀下列程序,寫出程序運(yùn)行結(jié)果。#include<stdio.h>voidmain(void){shorta[]={1,3,5,7,9},*p,**k;p=a;k=&p;printf("%d,",*(p++));printf("%d,",**k);}運(yùn)行結(jié)果:1,38.閱讀下列程序,寫出程序運(yùn)行結(jié)果。#include<stdio.h>voidmain(void){inta[2][3]={{1,2,3},{4,5,6}},m,*p;p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));printf("%d",m);}運(yùn)行結(jié)果:1510.閱讀下列程序,寫出程序運(yùn)行結(jié)果。#include<stdio.h>voidmain(void){char*p="1A2B3C4D";while(*p!='4')printf("%c",*(p++)+1);printf("\n%c\n",*(p++));}運(yùn)行結(jié)果:四、找出下面程序中的錯(cuò)誤,并對(duì)其予以改正。4、下面程序嘗試對(duì)3個(gè)字符串排序。請(qǐng)仔細(xì)閱讀程序,指出并糾正程序中的錯(cuò)誤。正確程序?yàn)椋?include<stdio.h>#include<string.h>voidmain(void) { charStr1[]="teacher",tmp[20]; charStr2[]="student"; charStr3[]="computer"; if(strcmp(Str1,Str2)<0) {strcpy(tmp,Str1);strcpy(Str1,Str2);strcpy(Str2,tmp);}if(strcmp(Str1,Str3)<0) {strcpy(tmp,Str1);strcpy(Str1,Str3);strcpy(Str3,tmp);}if(strcmp(Str2,Str3)<0) {strcpy(tmp,Str2);strcpy(Str2,Str3);strcpy(Str3,tmp);} printf("str1=%s\tstr2=%s\tstr2=%s\n",Str1,Str2,Str3);}或者都用指針#include<stdio.h>#include<string.h>voidmain(void) { char*tmp;char*Str1="teacher"; char*Str2="student"; char*Str3="computer"; if(strcmp(Str1,Str2)<0) {tmp=Str1;Str1=Str2;Str2=tmp;}if(strcmp(Str1,Str3)<0) {tmp=Str1;Str1=Str3;Str3=tmp;}if(strcmp(Str2,Str3)<0) {tmp=Str2;Str2=Str3;Str3=tmp;} printf("str1=%s\tstr2=%s\tstr2=%s\n",Str1,Str2,Str3);}常見錯(cuò)誤:(1)voidmain(void) { charStr1[]="teacher",*tmp; charStr2[]="student"; charStr3[]="computer"; if(strcmp(Str1,Str2)<0) {strcpy(tmp,Str1);strcpy(Str1,Str2);strcpy(Str2,tmp);}……}錯(cuò)誤原因:使用了未初始化的野指針。給野指針指向的隨機(jī)內(nèi)存copy字符串。(2)voidmain(void) { charStr1[]="teacher",*tmp; charStr2[]="student"; charStr3[]="computer"; if(strcmp(Str1,Str2)<0) {tmp=Str1;strcpy(Str1,Str2);strcpy(Str2,tmp);}……}錯(cuò)誤原因:無(wú)法實(shí)現(xiàn)字符串的交換,最后Str1和Str2中全部都是原來(lái)Str2的內(nèi)容。(3)voidmain(void) { char*tmp;char*Str1="teacher"; char*Str2="student"; char*Str3="computer"; if(Str1<Str2) {tmp=Str1;Str1=Str2;Str2=tmp;}……}實(shí)驗(yàn)十二第五章習(xí)題三、分析程序,寫出程序運(yùn)行結(jié)果6.閱讀下列程序,寫出程序運(yùn)行結(jié)果。#include<stdio.h>#include"string.h"voidmain(void){chars[][10]={"12","23","34","45","56"};char*s1[5],**s2=s1,s3[10];inti,j;for(i=0;i<5;i++)s1[i]=s[i];for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(strcmp(*(s2+i),*(s2+j))<0){strcpy(s3,*(s2+i));strcpy(*(s2+i

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論