版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計(jì)習(xí)題解答(參考)習(xí)題一單項(xiàng)選擇題1.D 2.A 3.D二、填空題 1.順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu) 2.算法 3.語言簡潔、運(yùn)算符豐富、結(jié)構(gòu)化語言 4.可移植性強(qiáng)、代碼效率高、書寫格式自由 5.錯誤隱蔽、有時會難以理解、有時會難以修改 6.群舉法(枚舉法)、遞推法(迭代法)、遞歸法 7.做什么怎么做三、應(yīng)用題 1. include<stdio.h> voidmain() { printf(“*************************\n”); printf(“Clanguageprogram\n”); printf(“*************************\n”); } 2. include<stdio.h> voidmain() { inta,b,c,max; scanf(“%d%d%d”,&a,&b,&c); if(a>b)max=a; elsemax=b; if(max<c)max=c; printf(“Max=%d\n”,max); }
習(xí)題二一、單項(xiàng)選擇題1.A,D,E 2.B,E 3.B,D,E,F,H 4.B,F 5.A,B,E二、填空題 1.⑴int ⑵char ⑶double ⑷long ⑸char ⑹char ⑺int ⑻long 2.⑴0 ⑵0 ⑶2 ⑷4 ⑸4 ⑹8 ⑺0 ⑻2 3.2 1 1 1 4.不做 5.sin(25*3.14159/180)+cos(30*3.14159/180) 6.2 8.5三、給出各個程序的運(yùn)行b結(jié)果 1.運(yùn)行結(jié)果如下: 3 21 5 5 2.運(yùn)行結(jié)果如下: 6,9 9,27
習(xí)題三一、單項(xiàng)選擇題1.D2.B3.D4.C5.B6.C7.B8.A9.C10.D11.D12.D13.B14.A15.A16.B17.C18.C19.B20.B21.D22.C23.C24.D25.C26.C27.D28.D29.B30.A二、填空題1.從標(biāo)準(zhǔn)設(shè)備(鍵盤)上讀入一個字符向標(biāo)準(zhǔn)設(shè)備(鍵盤)上輸出一個字符#include<stdio.h>2.以十進(jìn)制形式輸入一個整數(shù)表示從標(biāo)準(zhǔn)輸入設(shè)備(鍵盤)讀取輸入的3個整型數(shù)表示掉過3個整數(shù)不讀取用來輸入一個字符3.以十進(jìn)制形式輸出一個整數(shù)以十六進(jìn)制形式輸出一個整數(shù)以十進(jìn)制小數(shù)形式輸出,輸出的數(shù)據(jù)長度為7位,其中有兩位為小數(shù)以字符形式輸出一個字符4.分程序;; 5.-1 6.非007.a%7==0else 8.3 9.210.forwhiledo-while 11.Continue 12.a=16,y=4213.10 14.y=19 15.2222216.39 17.7 18.5,519.n=4 20.-3 21.8三、程序閱讀分析題 4. 567 5.thisnumberisahuiwen四、編程題1.編寫一個程序,要求用戶輸入兩個整數(shù),判定其中一個是否能整除另一個。#include<stdio.h>intmain(){ inta,b; while(scanf("%d%d",&a,&b)==2){ if(a%b)printf("不能整除\n");elseprintf("能整除\n"); } return0;}2.編程實(shí)現(xiàn):輸入一個整數(shù),判斷它能否被3,5,7整除,并輸出以下信息之一:①能同時被3,5,7整除;②能被其中兩數(shù)(要指出哪兩個)整除;③能被其中一個數(shù)(要指出哪一個)整除;④不能被3,5,7任一個整除。#include<stdio.h>voidmain(){ inta; printf("請輸入一個整數(shù)\n"); scanf("%d",&a); if(a%3==0&&a%5==0&&a%7==0) printf("%d能同時被3,5,7整除\n",a); elseif(a%3!=0&&a%5==0&&a%7==0) printf("%d能同時被5,7整除\n",a); elseif(a%3==0&&a%5!=0&&a%7==0) printf("%d能同時被3,7整除\n",a); elseif(a%3==0&&a%5==0&&a%7!=0) printf("%d能同時被3,5整除\n",a); elseif(a%3==0&&a%5!=0&&a%7!=0) printf("%d能被3整除\n",a); elseif(a%3!=0&&a%5==0&&a%7!=0) printf("%d能被5整除\n",a);elseif(a%3!=0&&a%5!=0&&a%7==0) printf("%d能被7整除\n",a); elseprintf("%d不能被3,5,7整除\n",a);}3.市郊長途電話收費(fèi)標(biāo)準(zhǔn)如下:通話時間在三分鐘以下收費(fèi)一角,三分鐘以上則每超過一分鐘加一角。在7:00—21:00之間通話者,按收費(fèi)標(biāo)準(zhǔn)全價收費(fèi);在其它時間通話者,按收費(fèi)標(biāo)準(zhǔn)的一半收費(fèi)。請計(jì)算某人在x時間通話y分鐘,應(yīng)繳多少電話費(fèi)。(通話時間利用整數(shù)輸入實(shí)現(xiàn))#include<stdio.h>main(){ floatx,y=0; intt; scanf("%f%d",&x,&t);if(t>7&&t<21){if(x<3)y=0.1;elsedo{y=0.2+y;x=x-1;}while(x-3>0); } else {if(x<3)y=0.1/2;elsedo{y=(0.2+y)/2;x=x-1;}while(x-3>0); } printf("%f",y);}4.輸入a、b、c三條邊,判斷它是否構(gòu)成三角形。若能構(gòu)成三角形,則計(jì)算三角形面積。#include<stdio.h>#include<math.h>main(){ floata,b,c,S=0,x=0; printf("輸入三角形三條邊的邊長:"); scanf("%f%f%f",&a,&b,&c); if(a+b>c&&b+c>a&&a+c>b) {x=(a+b+c)/2.0;S=sqrt(x*(x-a)*(x-b)*(x-c));printf("area=%.3f\n",S); } Elseprintf("不能構(gòu)成三角形\n");}5.打印出所有”水仙花數(shù)”。所謂”水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如,153是一個”水仙花數(shù)”,因?yàn)?53=13+53+33。#include"stdio.h"#include"math.h"main(){ inti;inta,b,c;for(i=100;i<=999;i++) {a=i%10;/*取個位數(shù)*/b=i/10%10;/*取十位數(shù)*/c=i/100;/*取百位數(shù)*/if(i==a*a*a+b*b*b+c*c*c)printf("%d",i);}}6.編寫一個程序,在屏幕上顯示如下圖形(圖形的層數(shù)讀者自行設(shè)定):*************************#include<stdio.h>#include<math.h>main(){inti,j,k;for(i=-3;i<=3;i++){for(j=1;j<=abs(i);j++)printf("%c",32);for(j=1;j<=7-2*abs(i);j++)printf("*");printf("\n");}}7.求斐波那契(Fibonacci)數(shù)列:1,1,2,3,5,8,......的前40個數(shù)。斐波那契數(shù)列的定義:F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n≥3)#include<stdio.h>main(){intf1,f2,f;inti;f1=f2=1;printf("%d\n%d\n",f1,f2);for(i=1;i<=38;i++)/*已經(jīng)有兩個數(shù),只要再產(chǎn)生38個數(shù)即可*/{ f=f1+f2; f1=f2; f2=f; printf("%d\n",f);}}8.編程實(shí)現(xiàn)求1+2+3+…+n之和,并輸出當(dāng)其和第一次大于或等于100時的值及n值。#include<stdio.h>main(){ inti,s,t=0; i=1;s=0; while(i<=100) { s=s+i; if(s>=100&&t<1)/*設(shè)定t只求第一次和大于100的內(nèi)容*/ { printf("第一次和大于或等于100時和為%d\n",s); printf("第一次和大于或等于100時n為%d\n",i);t+=1; } i=i+1; } printf("s=%d\n",s);}9.整元換零錢問題。把1元兌換成1分、2分、5分的硬幣,共有多少種不同的換法?#include<stdio.h>main(){ inti,j,k,n; n=100,k=0; for(i=0;i<=n/5;i++) for(j=0;j<=(n-i*5)/2;j++) { printf("5cent=%d\t2cent=%d\t1cent=%d\n",i,j,n-i*5-j*2); k++; } printf("totaltimes=%d\n",k);}10.編寫解雞兔同籠問題的程序。用戶輸入頭的數(shù)目和腳的數(shù)目,輸出雞、兔各有多少只。#include<stdio.h>main(){ intx,y,a,b; printf("輸入雞兔頭的數(shù)目:"); scanf("%d",&x);printf("輸入雞兔腳的數(shù)目:"); scanf("%d",&y);a=x-(y-2*x)/2; b=(y-2*x)/2; printf("雞有%d只,兔有%d只",a,b);}11.打印楊輝三角形,即(x+y)n展開式的各項(xiàng)系數(shù)。并且在程序運(yùn)行開始時,問用戶n的值為多少,接著打印如下形式至指定行數(shù)。111121133114641...#include<stdio.h>intmain(){ intn,k,j,c; printf("Input="); scanf("%d",&n); for(k=1;k<=n;k++) {//printf("%*s",4*(n-k));/*格式控制語句,有和沒有是兩種顯示方式*/c=1;printf("%4d",c);for(j=1;j<=k-1;j++) {c=c*(k-j)/j;printf("%8d",c); }printf("\n"); } return0;}12.個位數(shù)是6,且能被3整除的五位數(shù)共有多少個?#include<stdio.h>main(){ inta,count=0; longi; for(i=10000;i<100000;i++) { a=i%10; if(a==6&&i%3==0) count++; } printf("這樣的數(shù)共計(jì):%d",count);}
習(xí)題四一、單項(xiàng)選擇題1.C2.D3.D4.D5.C6.D7.B8.A9.B10.B二、填空題1.一15014float2.83.連續(xù)數(shù)組名4.按行存儲5.046.3507.368.99.710.#include<stdio.h>#include<string.h>三、程序閱讀分析題1.i==ja[i][j]a[i][j]printf("\n")2.k=323.gbcdefa4. 012345 123456 234567 345678 456789 56789105.you&me四、編程題1.設(shè)數(shù)組V中的數(shù)據(jù)元素遞增有序,現(xiàn)將x插入到數(shù)組V的適當(dāng)位置,使數(shù)組元素的值仍保持有序。#include<stdio.h>voidmain(){ intV[15]={65,70,73,75,79,81,85,88,90};/*有9個初值,有序*/ intn=9,x=77;/*數(shù)組中當(dāng)前有n個數(shù)據(jù),將x插入數(shù)組V中,仍保持有序*/ inti; for(i=n-1;i>=0&&V[i]>x;i--)/*將V數(shù)組中的數(shù)據(jù)從后往前比較*/ V[i+1]=V[i];/*若大于x,后移一個位置*/ V[i+1]=x;/*將x插入數(shù)組V中*/ n++;/*數(shù)組中數(shù)據(jù)個數(shù)增1*/ for(i=0;i<n;i++)/*輸出數(shù)組中的n個數(shù)據(jù)*/ printf("%d",V[i]); printf("\n");}2.定義一個含有30個整型元素的數(shù)組,按順序分別賦予從2開始的偶數(shù),然后按順序每五個數(shù)求出一個平均值,放在另一個數(shù)組中并輸出。#include<stdio.h>voidmain(){ intarray[30],average[6]={0}; inti,j; for(i=0;i<30;i++) array[i]=2*(i+1); for(j=0;j<6;j++) { for(i=5*j;i<5*(j+1);i++) average[j]+=array[i]; average[j]/=5; printf("%d",average[j]); } printf("\n");}3.輸入一個字符串,在指定位置插入一個字符。#include<stdio.h>voidmain(){ charstr[81],ch; inti,position; printf("輸入一個字符串:"); gets(str); printf("輸入要插入字符的位置:"); scanf("%d",&position); printf("輸入要插入的字符:"); scanf("%*c%c",&ch); for(i=0;str[i]!='\0';i++); while(i>=position-1) { str[i+1]=str[i]; i--; } str[position-1]=ch; printf("在指定位置插入字符后的字符串:%s\n",str);}4.輸入一行字符,分別統(tǒng)計(jì)其中十個數(shù)字字符'0','1',…,'9'出現(xiàn)的次數(shù)。#include<stdio.h>voidmain(){ charstr[81]; intcount[10]={0},i; printf("輸入一行字符:\n"); gets(str); for(i=0;str[i]!='\0';i++) if(str[i]>='0'&&str[i]<='9') count[str[i]-'0']++; for(i=0;i<10;i++) printf("\'%c\':%d\n",'0'+i,count[i]);}5.輸入矩陣A(2行3列)和矩陣B(3行4列),計(jì)算它們的乘積C=A·B。(矩陣乘積計(jì)算公式:Cij=∑AikBkj)#include<stdio.h>voidmain(){ inta[2][3],b[3][4],c[2][4]; inti,j,k; printf("輸入2行3列矩陣數(shù)據(jù):\n"); for(i=0;i<2;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); printf("輸入3行4列矩陣數(shù)據(jù):\n"); for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&b[i][j]); for(i=0;i<2;i++) for(j=0;j<4;j++) { c[i][j]=0; for(k=0;k<3;k++) c[i][j]+=a[i][k]*b[k][j]; } printf("兩矩陣的乘積矩陣是:\n"); for(i=0;i<2;i++) { for(j=0;j<4;j++) printf("%5d",c[i][j]); printf("\n"); }}6.下面是一個5×5階的螺旋方陣。試編程打印出此形式的n×n(n<10,順時針方向旋進(jìn))。12345161718196152425207142322218131211109#include<stdio.h>#defineN5voidmain(){ inta[N][N],i,j,k,n; i=0; j=0; n=1; for(k=1;k<=N*N;k++) { if(i==n-1&&j<N-n) a[i][j++]=k; elseif(j==N-n&&i<N-n) a[i++][j]=k; elseif(i==N-n&&j>n-1) a[i][j--]=k; else a[i--][j]=k; if(i==n&&j==n-1) n++; } for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%5d",a[i][j]); printf("\n"); }}7.編一程序,實(shí)現(xiàn)字符串復(fù)制,不使用strcpy()函數(shù)。#include<stdio.h>voidmain(){ charstr1[81],str2[]="Iamastudent."; inti; for(i=0;(str1[i]=str2[i])!='\0';i++); printf("%s\n%s\n",str1,str2);}8.編一程序,求字符串的長度,不使用strlen()函數(shù)。#include<stdio.h>voidmain(){ charstr[81]; intn; printf("輸入一個字符串:"); gets(str); n=0; while(str[n]!='\0') n++; printf("字符串的長度是:%d\n",n);}9.有一篇文章,共有3行文字,每行有80個字符。要求分別統(tǒng)計(jì)出其中英文大寫字母、小寫字母、數(shù)字、空格以及其他字符的個數(shù)。#include<stdio.h>voidmain(){ charstr[3][81]; charcategory[5][10]={"UPPER","LOWER","DIGIT","SPACE","OTHER"}; inti,j,count[5]={0}; printf("輸入3行文字:\n"); for(i=0;i<3;i++) gets(str[i]); for(i=0;i<3;i++) for(j=0;str[i][j]!='\0';j++) if(str[i][j]>='A'&&str[i][j]<='Z') count[0]++; elseif(str[i][j]>='a'&&str[i][j]<='z') count[1]++; elseif(str[i][j]>='0'&&str[i][j]<='9') count[2]++; elseif(str[i][j]=='') count[3]++; else count[4]++; for(i=0;i<5;i++) printf("%s:%d\n",category[i],count[i]);}10.某班期終考試科目為高等數(shù)學(xué)(MT)、英語(EN)和物理(PH)。有30人參加考試。為評定獎學(xué)金,要求統(tǒng)計(jì)并輸出一個表格,表格內(nèi)容包括學(xué)號、各科分?jǐn)?shù)、總分和平均分,并標(biāo)出三門課均在90分以上者(該欄標(biāo)志輸出為“Y”,否則為“N”),表格形式如下:NOMTENPHSUMV>90———————————————————197879227692Y29291902739lY390818225384N可以將學(xué)生的學(xué)號和各科成績放在數(shù)組a[30][4]中,然后進(jìn)行統(tǒng)計(jì)處理。#include<stdio.h>#defineN30voidmain(){ intstu[N][4],sum; inti,j; chargreat90; for(i=0;i<N;i++) { printf("輸入第%d個學(xué)生的數(shù)學(xué)、英語和物理成績(空格分隔):",i+1); stu[i][0]=i+1; for(j=1;j<4;j++) scanf("%d",&stu[i][j]); } printf("NOMTENPHSUMV>90\n"); printf("-----------------------------------\n"); for(i=0;i<N;i++) { sum=0; great90='Y'; printf("%5d",stu[i][0]); for(j=1;j<4;j++) { printf("%5d",stu[i][j]); sum+=stu[i][j]; if(stu[i][j]<90) great90='N'; } printf("%5d",sum); printf("%5d",sum/3); printf("%5c\n",great90); }}
習(xí)題五一、單項(xiàng)選擇題1.B) 2.D) 3.A) 4.D) 5.A) 6.C)二、填空題1.5 2.88 3.24.1212 5.412 6.1行的行地址三、程序分析題1.242.ENGLISHMATHMUSICPHYSICSCHEMISTRY四、編程題(以下題目均要求用指針方法實(shí)現(xiàn))1.#include<stdio.h>#include<string.h>voidmain(){ char*n[]={"china","japan","korea","american","england"},*temp; inti,j,k; for(i=0;i<5;i++) { k=i; for(j=i+1;j<5;j++) if(strcmp(n[k],n[j])>0)k=j; if(k!=i) { temp=n[k];n[k]=n[i];n[i]=temp; } } for(i=0;i<5;i++) printf("%s\n",n[i]);}2.#include<stdio.h>voidmain(){ inta[10]={87,78,69,79,98,86,91,75,71,95},*p,temp; inti,min_order; p=a; for(i=1;i<10;i++) if(*p>a[i])p=a+i; min_order=p-a; printf("Min=a[%d]=%d\n",min_order,a[min_order]); temp=*p;*p=a[0];a[0]=temp; for(i=0;i<10;i++) printf("%4d",a[i]); printf("\n");}3.略4.#include<stdio.h>voidmain(){ inta[10]={10,20,30,40,50,60,70,80,90};/*數(shù)組中9個數(shù)有序*/ int*p,x=35; /*x為待插入的數(shù)據(jù)*/ for(p=&a[8];(p>=a)&&(*p>x);p--) *(p+1)=*p; /*從后向前將比x大的數(shù)據(jù)后移一個位置*/ *(p+1)=x; /*將x插入到數(shù)組中*/ for(p=a;p<a+10;p++) /*輸出數(shù)組中的數(shù)據(jù)*/ printf("%4d",*p); printf("\n");}5.#include<stdio.h>voidmain(){ chars[255],prrior='',*p; printf("輸入一行英文:\n"); gets(s); for(p=s;*p!='\0';p++) /*掃描字符串*/ { if(prrior==''&&*p>='a'&&*p<='z')/*單詞開始且是小寫字母*/ *p-=32; /*將單詞的第一個字母改為大寫*/ prrior=*p; } puts(s);}6.#include<stdio.h>voidmain(){ charstr1[81],str2[]="Iamaboy."; char*s,*t; s=str2; t=str1; while((*t=*s)!='\0') { s++; t++; } puts(str1);}7.略8.略9.編寫程序,實(shí)現(xiàn)輸入月份號,輸出相應(yīng)的英文月份名。10.略11.略12.#include<stdio.h>voidmain(){ charstr[81],*p,*q; printf("輸入一個字符串:\n"); gets(str); for(q=str;*q!='\0';q++); for(p=str,q--;(p<q)&&(*p==*q);p++,q--); if(p<q)printf("字符串:%s不是回文串!\n",str); elseprintf("字符串:%s是回文串!\n",str);}13.#include<stdio.h>voidmain(){ charstr[81],*p,*q,qc,pc; printf("輸入一個字符串:\n"); gets(str); for(q=str;*q!='\0';q++); for(p=str,q--;p<q;p++,q--) { pc=(*p>='a'&&*p<='z')?*p-32:*p; qc=(*q>='a'&&*q<='z')?*q-32:*q; if(pc!=qc)break; } if(p<q)printf("字符串:%s不是回文串!\n",str); elseprintf("字符串:%s是回文串!\n",str);}14.#include<stdio.h>#include<stdlib.h>#include<time.h>voidmain(){ int*a,n,i; printf("輸入一維數(shù)據(jù)的長度:"); a=(int*)malloc(n*sizeof(int));//動態(tài)分配內(nèi)存空間 printf("%d\n",time(NULL)); srand(time(NULL)); //初始化隨機(jī)數(shù)序列 for(i=0;i<n;i++) a[i]=rand()%100; //產(chǎn)生隨機(jī)數(shù) for(i=0;i<n;i++) printf("%d",a[i]); //輸出數(shù)據(jù) printf("\n");}15.略
習(xí)題六單項(xiàng)選擇題ADBDB6-10BAACD填空題1.從定義變量處到程序結(jié)束局部變量2.auto3.return(表達(dá)式)void4.returns;5.*p1>*p2;*p1=*p2;6.floata[],intns+=a[i];7.*s-*t8.w[i-1]9.>(b!=0)10.i<10array[i]average(score)三、程序閱讀分析題maxis22.100,200,3003.last=644.51095.12四、編程題1.函數(shù)root2如下:voidroot2(floata,floatb,floatc,floatroot[]){floatd;d=b*b-4*a*c;root[0]=(-b+sqrt(d))/(2*a);root[1]=(-b-sqrt(d))/(2*a);}2.函數(shù)countc如下:intcountc(chararrry[]){inti,n=0;for(i=0;array[i]!='\0';i++)if(array[i]>='A'&&array[i]<='Z')n++;return(n);}3.解:函數(shù)link如下:intlink(chars1[],chars2[],chars3[]){inti,j;for(i=0;s1[i]!='\0';i++)s3[i]=s1[i];for(j=0;s2[i]!='\0';j++,i++)s3[i]=s2[j];s3[i]='\0';return(i);}4.#include<stdio.h>voidfun(floata[],intn,float*pmax,float*pmin,float*pave){ inti;*pmax=*pmin=*pave=a[0];for(i=1;i<n;i++){ if(*pmax<a[i])*pmax=a[i];if(*pmin>a[i])*pmin=a[i];*pave+=a[i];}*pave/=n;}voidmain(){ floata[10],max,min,ave; intn,i; printf("pleaseinputdata:\n"); for(i=0;i<10;i++) scanf("%f",&a[i]); printf("pleaseinputnnumber:\n"); scanf("%d",&n); fun(a,n,&max,&min,&ave); printf("max=%f,min=%f,ave=%f",max,min,ave);}5.#include<stdio.h>intage(intn){ intc; if(n==1)c=10; elsec=age(n-1)+3; returnc;}voidmain(){ intn=5; printf("%d\n",age(5));}6.#include<stdio.h>floatp(intn,intx){ floatu,v,w; if(n==0)return1; elseif(n==1)returnx; else {u=(2*n-1)*x*p((n-1),x); v=(n-1)*p((n-2),x); w=(u-v)/n; returnw; }}voidmain(){inta,b; floatc; printf("Inputn,x:\n"); scanf("%d,%d",&a,&b); c=p(a,b); printf("theresultis%f",c);}7.#include<stdio.h>voidtriangle(intx,inty,intz){ if(x+y>z&&y+z>x&&x+z>y) {if(x==y&&y==z)printf("Thisisaequilateraltriangle."); elseif(x==y||y==z||x==z)printf("Thisisaisoscelestriangle."); } else printf("Can'tcompositiontriangle!");}voidmain(){ intx,y,z; printf("Inputx,y,z:\n"); scanf("%d,%d,%d",&x,&y,&z); triangle(x,y,z);}8.#include<stdio.h>floatou(intn){floats=0;inti;for(i=2;i<=n;i+=2)s+=1.000000/i;return(s);}floatji(intn){floats=0;inti;for(i=1;i<=n;i+=2)s+=1.000000/i;return(s);}floatcall(float(*fp)(int),intn){return((*fp)(n));}voidmain(){floatsum;intn;scanf("%d",&n);printf("sum=");if(n%2==0)sum=call(ou,n);elsesum=call(ji,n);printf("%f",sum);}
習(xí)題七一、單項(xiàng)選擇題1.A) 2.A) 3.B) 4.C) 5.B) 6.B) 7.C) 8.D) 9.C) 10.B)二、填空題1.typedef 2.union 3.使用字節(jié)數(shù)最大 4.p=&x三、程序分析題1.10,x四、編程題1.#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN10typedefstructnode{ intvalue; structnode*next;}Node;voidmain(){ Node*head,*t,*p; inti,x; srand((unsigned)time(NULL)); //初始化隨機(jī)數(shù)序列 head=(Node*)malloc(sizeof(Node)); head->next=NULL; //建立帶頭節(jié)點(diǎn)的空單鏈表 for(i=0;i<N;i++) { x=rand()%100; printf("%d",x); t=(Node*)malloc(sizeof(Node)); t->value=x; p=head; while(p->next!=NULL&&p->next->value<x) p=p->next; t->next=p->next; p->next=t; } printf("\n"); p=head->next; while(p!=NULL) { printf("%d",p->value); p=p->next; } printf("\n");}2.#include<stdio.h>#include<string.h>#defineN3structstudent{ intnum; charname[11]; charsex[3]; intage; floatscore;};voidmain(){ structstudentstu[N]; intnan=0,nv=0,i; floatpjnl=0,pjcj=0; for(i=0;i<N;i++) { printf("輸入第%d個學(xué)生的數(shù)據(jù):\n",i+1); printf("學(xué)號:");scanf("%d%*c",&stu[i].num); printf("姓名:");gets(stu[i].name); printf("性別:");gets(stu[i].sex); printf("年齡:");scanf("%d",&stu[i].age); printf("成績:");scanf("%f",&stu[i].score); } for(i=0;i<N;i++) { if(strcmp(stu[i].sex,"男")==0)nan++; elsenv++; pjnl+=stu[i].age; pjcj+=stu[i].score; } pjnl=pjnl/N; pjcj=pjcj/N; printf("男生人數(shù):%d,女生人數(shù):%d,平均年齡:%.2f,平均成績:%.2f\n",nan,nv,pjnl,pjcj); for(i=0;i<N;i++) if(stu[i].score<pjcj) printf("%s%.2f\n",stu[i].name,stu[i].score);}3.略
習(xí)題八一、單項(xiàng)選擇題1.A2.A3.B4.B5.A6.C7.B8.D9.A10.A二、填空題1.文本文件二進(jìn)制文件542.文件型指針變量stdio.h3."D:\\abc.dat""r"4.getchar()5.puts(buff)6.rewind(fp)fseek(fp,72L,SEEK_SET)7.將數(shù)組a中的10個整數(shù)寫入fp文件8.二進(jìn)制9.fprintf(stdout,…)10.新建一個文件三、應(yīng)用題1.為什么要打開和關(guān)閉文件?答:通過打開操作可以建立程序和文件之間的通訊通道,并為文件操作建立緩沖區(qū),使程序中的一個文件型指針變量代表一個文件。而關(guān)閉操作可以釋放相關(guān)的資源,如緩沖區(qū)等。2.使用讀寫函數(shù)對文件讀或?qū)懖僮骱螅募恢弥羔槍⑷绾巫兓??答:使用讀寫函數(shù)對文件讀或?qū)懖僮骱螅募恢弥羔槍⒅赶蛩x或?qū)憯?shù)據(jù)之后的數(shù)據(jù)。3.有兩個磁盤文件data1和data2,各存放若干整數(shù),并且這些整數(shù)是按從小到大的順序存放的。將這兩個文件中的數(shù)據(jù)合并輸出到文件data中,data中的數(shù)據(jù)要求有序。假設(shè)是文本文件,且文件中的數(shù)據(jù)是用空格或Tab或回車分隔的(也可考慮是二進(jìn)制文件)。#include<stdio.h>#include<stdlib.h>voidmain(){ FILE*fr1,*fr2,*fw; inti1,i2,s1,s2; fr1=fopen("data1","r");/*打開文件data1*/ fr2=fopen("data2","r");/*打開文件data2*/ fw=fopen("data","w");/*打開文件data*/ s1=fscanf(fr1,"%d",&i1);/*從文件data1讀第一個數(shù)據(jù),不成功返回EOF*/ s2=fscanf(fr2,"%d",&i2);/*從文件data2讀第一個數(shù)據(jù),不成功返回EOF*/ while(s1!=EOF&&s2!=EOF)/*文件data1和data2均未結(jié)束,循環(huán)*/ { if(i1<i2) { fprintf(fw,"%d",i1);/*從文件data1讀的數(shù)據(jù)寫入文件data*/ s1=fscanf(fr1,"%d",&i1);/*從文件data1讀下一個數(shù)據(jù)*/ } else { fprintf(fw,"%d",i2);/*從文件data2讀的數(shù)據(jù)寫入文件data*/ s2=fscanf(fr2,"%d",&i2);/*從文件data2讀下一個數(shù)據(jù)*/ } } while(s1!=EOF)/*文件data1的剩余數(shù)據(jù)寫入文件data*/ { fprintf(fw,"%d",i1); s1=fscanf(fr1,"%d",&i1); } while(s2!=EOF)/*文件data2的剩余數(shù)據(jù)寫入文件data*/ { fprintf(fw,"%d",i2); s2=fscanf(fr2,"%d",&i2); } fcloseall();}4.輸入N個學(xué)生的信息(包括:學(xué)號,姓名,5科成績,總分),統(tǒng)計(jì)所有學(xué)生的總分,存入二進(jìn)制文件stu_sc.dat中。然后讀取該文件,查找總分最高的學(xué)生,并輸出該生的所有信息。#include<stdio.h>#defineN3typedefstruct{ intnum; charname; intscore[5]; inttotal;}STUDENT;voidmain(){ FILE*fp; STUDENTst,smax; inti,j; fp=fopen("stu_sc.dat","wb+"); for(i=0;i<N;i++) { printf("輸入學(xué)生的學(xué)號和5門課成績:"); scanf("%d",&st.num); st.total=0; for(j=0;j<5;j++) { scanf("%d",&st.score[j]); st.total+=st.score[j]; } fwrite(&st,sizeof(STUDENT),1,fp); } rewind(fp); fread(&smax,sizeof(STUDENT),1,fp); while(feof(fp)) { fread(&st,sizeof(STUDENT),1,fp); if(st.total>smax.total) smax=st; } printf("%d",smax.num); for(j=0;j<5;j++) printf("%d",smax.score[j]); printf("%d\n",smax.total); fclose(fp);}5.將上題stu_sc.dat中的數(shù)據(jù),按總分排序(降序),寫入新
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 道路施工材料合格驗(yàn)收方案
- 能源節(jié)約型照明設(shè)計(jì)方案
- 儲備糧倉庫文化建設(shè)方案
- 水源地保護(hù)與管理方案
- 中醫(yī)護(hù)理在婦產(chǎn)科中的應(yīng)用
- 道路工程施工質(zhì)量評審方案
- 江蘇省教師鋪床技能培訓(xùn)
- 施工期間周邊居民溝通方案
- 2026年市場營銷策略分析筆試題目與答案詳解
- 施工現(xiàn)場廢棄物管理方案
- 骨科圍手術(shù)期病人營養(yǎng)支持
- LNG氣化工程項(xiàng)目可行性研究報(bào)告
- 中東地區(qū)禮儀規(guī)范
- 保健食品購銷合同范本
- 廣告牌吊裝安裝施工方案
- 上海軟課題申報(bào)書示范
- 豆制品企業(yè)生產(chǎn)過程節(jié)能降耗方案
- 臨床醫(yī)學(xué)三基三嚴(yán)培訓(xùn)
- 北師版一年級上冊數(shù)學(xué)全冊教案教學(xué)設(shè)計(jì)含教學(xué)反思
- 《危險性較大的分部分項(xiàng)工程專項(xiàng)施工方案嚴(yán)重缺陷清單(試行)》解讀
- 起重機(jī)司機(jī)安全培訓(xùn)課件
評論
0/150
提交評論