版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、導(dǎo)讀: 在程序填空題中, 已經(jīng)給出了程序的主干, 讀者首先要理解程序的思路,再選擇正確的內(nèi)容填入空白處,使程序完成既定的功能。這類習(xí)題的設(shè)計(jì)就是要引導(dǎo)讀者逐步掌握編程的方法。本節(jié)習(xí)題的難度適中,可能有些典型的程序在課堂上已經(jīng)有所接觸,讀者一定要獨(dú)立完成它,這樣就可以逐步提高自己的編程能力。 在程序設(shè)計(jì)語言學(xué)習(xí)的中期, 讀者對(duì)程序設(shè)計(jì)已經(jīng)有了初步的了解,而自己編寫程序又不知從何處入手,此時(shí)解答此類題目可以避免盲目性,從而提高學(xué)習(xí)的效率?!?3.1 】 下面程序的功能是不用第三個(gè)變量, 實(shí)現(xiàn)兩個(gè)數(shù) 的對(duì)調(diào)操作。#include <stdio.h>main() int a,b ;scan
2、f("%d%d",&a,&b);printf("a=%d,b=%dn",a,b);a= ;b= ;a= ; printf("a=%d,b=%dn",a,b);【3.2下面程序的功能是根據(jù)近似公式:22/61/12+1/22+1/32+1/n2,求值。#include <math.h>double pi(long n) double s=0.0;long i ;for(i=1 ; i<=n ; i+)s=s+ ; return( );【 3.3 】下面的程序的功能是求一維數(shù)組中的最小元素。findmin
3、(int *s,int t,int *k) int p ;for(p=0,*k=p ; p<t ; p+)if(sp<s*k) main() int a10,i,*k=&i;for(i=0 ; i<10 ; i+)scanf("%d",&ai);findmin(a,10,k) ;printf("%d,%dn",*k,a*k);【3.4下面程序的功能是計(jì)算1-3+5- 7+-99+101的值。main() int i,t=1,s=0;for(i=1 ; i<=101 ; i+=2) t=t* i;s=s+t ; ;
4、t>0?t=-1:1;printf("%dn",s) ;【 3.5 】有以下程序段:s=1.0 ;for(k=1 ; k<=n ; k+)s=s+1.0/(k*(k+1);printf("%fn",s) ;填空完成下述程序,使之與上述程序的功能完全相同。s=0.0 ;k=0 ; do s=s+d ; ;d=1.0/(k*(k+1);while( );printf("%fn",s);【 3.6 】 下面程序的功能是從鍵盤上輸入若干學(xué)生的學(xué)習(xí)成績(jī),統(tǒng)計(jì)并輸出最高成績(jī)和最低成績(jī),當(dāng)輸入為負(fù)數(shù)時(shí)結(jié)束輸入。main() float
5、x,amax,amin ;scanf("%f",&x) ;amax=x ;amin=x ;while( ) if(x>amax) amax=x ;if( ) amin=x ;scanf("%f",&x) ;printf("namax=%fnamin=%fn",amax,amin);【 3.7 】下面程序的功能是將形參x 的值轉(zhuǎn)換為二進(jìn)制數(shù),所得的二進(jìn)制數(shù)放在一個(gè)一維數(shù)組中返回,二進(jìn)制數(shù)的最低位放在下標(biāo)為 0 的元素中。fun(int x,int b) int k=0,r;do r=x% ;bk+=r ;x/= ;
6、while(x) ;【 3.8 】下面程序的功能是輸出 1 到 100 之間每位數(shù)的乘積大于每位數(shù)的和的數(shù)。例如數(shù)字26 ,數(shù)位上數(shù)字的乘積 12 大于數(shù)字之和8 。main() int n,k=1,s=0,m;for(n=1 ; n<=100 ; n+) k=1 ;s=0 ;while( ) k*=m%10 ;s+=m%10 ;r=m%n ;while( )#include "stdio.h" main()if(k>s) m=n ; int i,a20,s,count;printf("%d",n) ;n=r ;s=count=0 ;r=m%
7、n ;for(i=0 ; i<20 ; i+ )scanf("%d", );【 3.9 】 下面程序的功能是統(tǒng)計(jì)用 0 至 9 之間的不同的數(shù);for(i=0 ; i<20 ; i+)字組成的三位數(shù)的個(gè)數(shù)。 if(ai<0)main()【3.12 】下面程序的功能是使用冒泡法對(duì)輸入的 10 個(gè); int i,j,k,count=0 ;浮點(diǎn)數(shù)從小到大進(jìn)行排序。排好序的 10 個(gè)數(shù)分兩行輸s+=ai ;for(i=1 ; i<=9 ; i+)出。程序如下:count+ ;for(j=0 ; j<=9 ; j+)#include <stdio.
8、h>if( ) continue ;main()printf("s=%dt count=%dn",s,count);else for(k=0 ; k<=9 ; k+) ;if( ) count+ ;int i,j ;【3.14 】下面程序的功能是刪除字符串 s 中的空格。printf("%d",count) ;printf("Input 10 numbers pleasen");#include <stdio.h>for(i=0 ; ; i+ )main()【3.10 】下面程序的功能是輸出 100 以內(nèi)的個(gè)位
9、數(shù)為 6 、scanf("%f", &ai); char *s="Beijing ligong daxue";且能被 3 整除的所有數(shù)。printf("n") ;int i,j ;main()for(i=2 ; ; i+ )for(i=j=0 ; si!='0' ; i+) int i,j ;for(j=0 ; ; j+ )if(si!= ' ') ;for(i=0 ; ; i+)if( )else ; j=i*10+6 ; x=aj ;sj= '0' ;if( ) counti
10、nue ;printf("%s",s) ;printf("%d",j) ;aj+1=x ;【3.15 】下面程序的功能是將字符串 s 中所有的字符'c'printf("The sorted 10 numbers; n") ;刪除。請(qǐng)選擇填空。【3.11 】下面程序的功能是用輾轉(zhuǎn)相除法求兩個(gè)正整數(shù)for(i=0 ; ; i+ )#include<stdio.h>m 和 n 的最大公約數(shù)。 if( )main( )hcf(int m,int n)printf("n") ; char s80;
11、 int r ;printf("%ft",ai) ;int i,j ;if(m<n)gets(s) ; r=m ;printf("n") ;for(i=j=0 ; si!= '0' ; i+ );if(si!= 'c') ;n=r ;【3.13 】下面程序的功能是讀入 20 個(gè)整數(shù),統(tǒng)計(jì)非負(fù)sj= '0' ;數(shù)個(gè)數(shù),并計(jì)算非負(fù)數(shù)之和。for(i=0 ; si!= '0' ; i+ ) for(j=i,k=0 ; && sj=tk; j+,k+);if( )return
12、(i) ;return(-1) ;n【 3.21 】下面程序的功能是計(jì)算S= k! 。k=0long fun(int n) int i ;long s ;for(i=1 ; i ; i+)s*=i ;return( );main() int k,n ;long s ;scanf("%d",&n) ;s= ;for(k=0 ; k<=n ; k+)s+= ;printf("%ldn",s) ;【 3.22 】下面程序的功能是顯示具有n 個(gè)元素的數(shù)組 s中的最大元素。#define N 20main() int i,aN ;for(i=0 ;
13、i<N ; i+)scanf("%d",&ai);printf("%dn", );fmax(int s,int n)puts(s) ; 【3.16 】下面程序的功能是輸出兩個(gè)字符串中對(duì)應(yīng)相等 的字符。請(qǐng)選擇填空。#include <stdio.h>char x="programming" ;char y="Fortran" ; main() int i=0 ;while(xi!= '0' && yi!= '0')if(xi=yi)printf
14、("%c", ); elsei+ ;【3.17 】下面程序的功能是將字符串 s 中的每個(gè)字符按升序的規(guī)則插到數(shù)組 a 中 , 字符串 a 已排好序。#include <string.h> main() char a20="cehiknqtw" ;char s="fbla" ;int i,k,j ;for(k=0 ; sk!= '0'; k+ ) j=0 ;while(sk>=aj && aj!= '0' )j+ ;for( ) ; aj=sk ;puts(a) ;【3.
15、18 】下面程序的功能是對(duì)鍵盤輸入的兩個(gè)字符串進(jìn)行比較,然后輸出兩個(gè)字符串中第一個(gè)不相同字符的ASCII 碼之差。例如:輸入的兩個(gè)字符串分別為"abcdefg"和"abceef",則輸出為-1。#include <stdio.h>main() char str1100,str2100,c;int i,s ;printf("Enter string 1: ");gets(str1) ;printf("Enter string 2: ");gets(str2) ;i=0 ;while(str1i = str
16、2i && str1i!= )i+ ;s= ;printf("%dn", s) ;【3.19 】下面的函數(shù) expand 在將字符串 s 復(fù)制到字符串 t 時(shí), 將其中的換行符和制表符轉(zhuǎn)換為可見的轉(zhuǎn)義字符表示,即用 'n' 表示換行符,用 't' 表示制表符。expand(char s,char t) int i,j ;for(i=j=0 ; si!= '0' ; i+ )switch (si) case 'n': t = ;tj+ = 'n' ;break ;case '
17、;t': t = ;tj+ = 't' ;break ;default: t = si ;break ;tj = ;【 3.20 】下面的函數(shù) index(char s, char t) 檢查字符串 s 中是否包含字符串 t , 若包含, 則返回 t 在 s 中的開始位置(下標(biāo)值),否則送回 -1 。index(char s, char t) int i,j,k ; int k,p ;for(p=0,k=p ; p<n ; p+)if(sp>sk) ;return(k) ;【 3.23 】下面程序的功能是由鍵盤輸入 n ,求滿足下述條件的 x 、 y :nx
18、和ny的末3位數(shù)字相同,且xw y,x、y、n均為自然數(shù),并使x+y 為最小。#include <stdio.h>pow3(int n,int x) int i, last ;for(last=1,i=1 ; i<=x ; i+ )last= ;return(last) ;main() int x,n,min,flag=1 ;scanf("%d", &n);for(min=2 ; flag ; min+)for(x=1 ; x<min && flag ; x+ )if( && pow3(n,x)=pow3(n,
19、min-x) printf("x=%d,y=%dn", x, min-x );【 3.24 】下面的程序是用遞歸算法求a 的平方根。求平方根的迭代公式如下:#include <math.h>double mysqrt( double a, double x0 ) double x1, y ;x1 = ;if( fabs(x1-x0)>0.00001 )y = mysqrt( );else y = x1 ;return( y ) ;main() double x ;printf("Enter x: ");scanf("%lf&q
20、uot;, &x);printf("The sqrt of %lf=%lfn", x, mysqrt( x, 1.0) )【 3.25 】以下程序是計(jì)算學(xué)生的年齡。已知第一位最小的學(xué)生年齡為 10 歲,其余學(xué)生的年齡一個(gè)比一個(gè)大2歲,求第 5 個(gè)學(xué)生的年齡。#include <stdio.h>age( int n ) int c ;if( n=1 ) c=10;else c= ;return(c) ; main() int n=5 ;printf("age:%dn", );【3.26 】下面的函數(shù)sum(int n)完成計(jì)算1和。n
21、的累加sum(int n) if(n<=0)printf("data errorn") ;if(n=1) ;else ;【 3.27 】下面的函數(shù)是一個(gè)求階乘的遞歸調(diào)用函數(shù)。facto(int n) if( n = 1 ) ;else return( );【 3.28 】組合問題,由組合的基本性質(zhì)可知:(1) C(m,n)=C(n-m,n)(2) C(m,n+1)=C(m,n)+C(m-1,n)公式 (2)是一個(gè)遞歸公式,一直到滿足 C(1,n)=n 為止。當(dāng) n<2*m 時(shí),可先用公式(1) 進(jìn)行簡(jiǎn)化,填寫程序中的空白,使程序可以正確運(yùn)行。#include&q
22、uot;stdio.h"main() int m,n ;printf("Input m,n=");scanf("%d%d", &m, &n);printf("The combination numbeers is %dn",combin(m,n) ;combin( int m, int n) int com ;if( n<2*m ) m=n-m ;if( m=0 ) com=1 ;else if(m=1) ;else ;return(com) ;【 3.29 】下列函數(shù)是求一個(gè)字符串 str 的長(zhǎng)度。?
23、 int strlen( char *str )? if( ) return (0) ;? ? else return ( );【 3.30 】 用遞歸實(shí)現(xiàn)將輸入小于32768 的整數(shù)按逆序輸出。如輸入 12345 ,則輸出 54321 。#include"stdio.h"main() int n ;printf("Input n : ");scanf("%d", );r(n) ;printf("n") ;r( int m ) printf("%d", );m = ;if( );【 3.31 】
24、輸入 n 值,輸出高度為 n 的等邊三角形。例如 當(dāng) n=4 時(shí)的圖形如下: *#include <stdio.h>void prt( char c, int n ) if( n>0 ) printf( "%c", c ); main() int i, n ;scanf("%d", &n);for( i=1 ; i<=n ; i+ ) ;printf("n") ;【 3.32 】下面的函數(shù)實(shí)現(xiàn)N 層嵌套平方根的計(jì)算。double y(double x, int n) if( n=0 )return(0)
25、 ;else return ( sqrt(x+( ) ) ;【 3.33 】函數(shù) revstr(s) 將字符串 s 置逆,如輸入的實(shí)參s 為字符串 "abcde" , 則返回時(shí) s 為字符串 "edcba" 。遞歸程序如下:revstr( char *s ) char *p=s, c while(*p) p+ ;if(s<p) c=*s ;*s=*p ;revstr(s+1) ;如下是由非遞歸實(shí)現(xiàn)的 revstr(s) 函數(shù):revstr (s)char *s ; char *p=s, c ;while( *p ) p+;while( s<p
26、 ) c=*s ; = *p ;*p- = c ;【 3.34 】下面函數(shù)用遞歸調(diào)用的方法,將長(zhǎng)度為 n 的字符串反轉(zhuǎn)過來, 例如原來是序?yàn)?"EDCBA" 。void invent(char *strint n)str 中存放的"ABCDE" , 反【 3.35 】從鍵盤上輸入 10 個(gè)整數(shù),程序按降序完成從大到小的排序。#include <stdio.h>int array10 ;sort( int *p, int *q ) int *max, *s ;if( )return ;max=p ; for( s=p+1 ; s<=q i
27、f( *s > *max ) ; swap( ) ;sort( ); swap( int *x, int *y ) int temptemp=*x *x=*y ; *y=temp main() int i ; i+)printf("Enter data :n")scanf("%d", &arrayi) printf("Output:") ; for( i=0 ; i<10 ; i+) printf("%d ", arrayi) ; s+)for( i=0 ; i<10 ;sort( cha
28、r t t=*str ; invent ( else *str=*(str+n-1) , n-2) ;*(str+n-1)=tif( n>2 )【 3.36 】下面函數(shù)的功能是將一個(gè)整數(shù)存放到一個(gè)數(shù)組中。存放時(shí)按逆序存放。例如: 483 存放成 "384" 。#include <stdio.h>void convert(char *a, int n) int i ;if(i=n/10) !=0 )convert( , i ) ;*a = ;char str10= " ";main() int number ; scanf("%
29、d", &number) convert( str, number )【 3.39 】下面程序的功能是:從鍵盤上輸入一行字符, 存入一個(gè)字符數(shù)組中,然后輸出該字符串。 t= ?*a+:*b<*a ? *b+ :();/* 將*a、*b 的小者存入 t */if( *w '0' ) *w=t ;else if( t *w) *+w=t ; /* 將與 *w 不相同的 t 存入puts(str) ;【 3.37 】下面程序的功能是實(shí)現(xiàn)數(shù)組元素中值的逆轉(zhuǎn)。#include <string.h>main() int i,n=10,a10=1,2,3,
30、4,5,6,7,8,9,10;invert(a,n-1) ;for(i=0 ; i<10 ; i+)printf("%4d",ai) ;printf("n") ;invert(int *s,int num) int *t,k ;t=s+num ;while( ) k=*s ;*s=*t ;*t=k ;【 3.38 】下面程序通過指向整型的指針將數(shù)組a34的內(nèi)容按3行X 4列的格式輸出,請(qǐng)給 printf()填入適 當(dāng)?shù)膮?shù),使之通過指針 p 將數(shù)組元素按要求輸出。#include <stdio.h>int a34=1,2,3,4,5,6
31、,7,8,9,10,11,12, *p=a;main() int i,j ;for(i=0 ; i<3 ; i+ ) for(j=0 ; j<4 ; j+ )printf("%4d ", ) ;#include <stdio.h>main ( ) char str81, *sptr ;int i ;for(i=0 ; i<80 ; i+ ) stri=getchar( );if(stri= 'n') break ;stri= ;sptr=str ;while( *sptr )putchar( *sptr ) ;【 3.40 】下
32、面函數(shù)的功能是將字符變量的值插入已經(jīng)按ASCII 碼值從小到大排好序的字符串中。void fun(char *w,char x,int *n) int i,p=0 ;while(x>wp) ;for(i=*n ; i>=p ; i-) ;wp=x ;+*n ;【 3.41 】下面程序的功能是從鍵盤上輸入兩個(gè)字符串,對(duì)兩個(gè)字符串分別排序;然后將它們合并,合并后的字符串按 ASCII 碼值從小到大排序,并刪去相同的字符。#include <stdio.h>strmerge(a , b , c) /* 將已排好序的字符串 a、 b 合并到 c */char *a , *b ,
33、 *c ; char t , *w ;w=c ;while( *a!= '0' *b!='0' )w */while( *a != '0' ) /* 以下將 a 或 b 中剩下的字符存入w */if( *a != *w ) *+w=*a+;else a+ ;while( *b != '0')if( *b != *w ) *+w=*b+;else b+ ;*+w = ;strsort( char *s ) /* 將字符串 s 中的字符排序*/ int i , j, n;char t , *w ;for( n=0 ; *w !=
34、39;0'; )w+ ;for( i=0 ; i<n-1 ;i+ )for( j=i+1 ; j<n ;j+ )if( si>sj ) main( ) char s1100,s2100 , s3200printf("nPlease Input First String:")scanf("%s" , s1) ;printf("nPlease Input Second String:")scanf("%s" , s2) ;strsort(s1) ;strsort(s2) ; = '0&
35、#39; ;strmerge(s1 , s2 , s3) ;printf("nResult:%s" , s3) ;【3.42 】已知某數(shù)列前兩項(xiàng)為 2 和 3 ,其后繼項(xiàng)根據(jù)前面最后兩項(xiàng)的乘積,按下列規(guī)則生成: 若乘積為一位數(shù),則該乘積即為數(shù)列的后繼項(xiàng); 若乘積為二位數(shù), 則該乘積的十位上的數(shù)字和個(gè)位上的數(shù)字依次作為數(shù)列的兩個(gè)后繼項(xiàng)。下面的程序輸出該數(shù)列的前N項(xiàng)及它們的和,其中,函數(shù) sum(n,pa) 返回?cái)?shù)列的前N 項(xiàng)和,并將生成的前N項(xiàng)存入首指針為 pa 的數(shù)組中,程序中規(guī)定輸入的 N 值必須大于 2 ,且不超過給定的常數(shù)值MAXNUM 。例如:若輸入N的值為10 ,
36、則程序輸出如下內(nèi)容:sum(10)=442 3 6 1 8 8 6 4 2 4#include "stdio.h"#define MAXNUM 100int sum(n, pa)int n, *pa ; int count, total, temp ;*pa = 2 ; =3 ;total=5 ;count=2 ;while( count+<n ) temp = *(pa-1) * *pa ;if( temp<10 ) total += temp ;*(+pa) = temp ;else = temp/10 ;total += *pa ; if( count&l
37、t;n ) count + ; pa+ ; = temp%10 ;total += *pa ;? struct student? int rank ;char *name ;float score ;main()?; int n, *p, *q, numMAXNUM;? stu = 3 , "liming"89.3 ,do? 4 , "zhanghua" , 78.2 , printf("Input N=? (2<N<%d):", MAXNUM+1);? 1 , "anli" , 95.1 ,scanf
38、("%d", &n);? 2 , "wangqi" , 90.6while( );printf("nsum(%d)=%dn", n, sum(n, num);?main()for( p=num, q = ; p<q ; p+ )? char str10;printf("%4d", *p);? int i ;printf("n") ;? do printf("Enter a name");【 3.43 】下面程序的功能是輸入學(xué)生的姓名和成績(jī),然? scanf(&q
39、uot;%s" , str) ;后輸出。? for( i=0 ; i<NUM ; i+ )#include <stdio.h>? if( )struct stuinf? printf("Name :%8sn", ) ; char name20 ; /* 學(xué)生姓名 */? printf("Rank :%3dn",stui.rank) ;int score ; /* 學(xué)生成績(jī)*/? printf("Average :%5.1fn", stui.score) ; stu, *p ; main (
40、 )? ;? p=&stu ;? if( i>=NUM ) printf("Not foundn");printf("Enter name:");? while( strcmp(str , "0")!=0 ) ;gets( );?printf("Enter score: ");scanf("%d" , ) ;【 3.45 】下面程序的功能是從終printf("Output: %s, %dn", , );端上輸入5個(gè)人的年齡、性別和 姓名,然后輸出?!?3.44
41、】下面程序的功能是按學(xué)生的姓名查詢其成績(jī)排#include "stdio.h"名和平均成績(jī)。查詢時(shí)可連續(xù)進(jìn)行,直到輸入 0 時(shí)才結(jié)struct man束。 char name20 ;? #include <stdio.h>unsigned age ;#include <string.h>char sex7 ;#define NUM 4;main () struct man person5 ;data_in(person,5) ;data_out(person,5) ;data_in(struct man *p, int n ) struct man
42、*q =;for( ; p<q ; p+ ) printf( "age:sex:name");scanf("%u%s", &p->age,p->sex);data_out( struct man *p, int n ) struct man *q = _ _;for( ; p<q ; p+ )printf("%s ; %u ; %sn”, p->name, p->age, p->sex) ;【3.46】輸入N個(gè)整數(shù),儲(chǔ)存輸入的數(shù)及對(duì)應(yīng)的序號(hào), 并將輸入的數(shù)按從小到大的順序進(jìn)行排列。要求:當(dāng)兩 個(gè)
43、整數(shù)相等時(shí),整數(shù)的排列順序由輸入的先后次序決定。 例如:輸入的第3個(gè)整數(shù)為5,第7個(gè)整數(shù)也為5,則 將先輸入的整數(shù)5排在后輸入的整數(shù) 5的前面。程序如 下:#include "stdio.h"#define N 10 struct int no ; int num ; arrayN;main() int i , j, num ;for( i=0 ; i<N ; i+ ) printf("enter No. %d:", i);scanf("%d" , &num);for(;j>=0&&arrayj.n
44、um num ; ) arrayj+1=arrayj ;array.num=num ;array .no=i ;for( i=0 ; i<N ; i+ )printf("%d=%d , %dn" , i, arrayi.num , arrayi.no) ;3.47 以下程序的功能是:讀入一行字符(如:a、y、z),按輸入時(shí)的逆序建立一個(gè)鏈接式的結(jié)點(diǎn)序列,即先輸入的位于鏈表尾(如下圖),然后再按輸入的相反順序 輸出,并釋放全部結(jié)點(diǎn)。#include <stdio.h>main() struct node char info ;struct node *lin
45、k ; *top , *p;char c ;top=NULL ;while(c= getchar() ) p=(struct node *)malloc(sizeof(struct node) p->info=c ;p->link=top ;top=p ;while( top );top=top->link ;putchar(p->info) ;free(p);3.48 下面函數(shù)將指針p2所指向的線性鏈表,串接到p1所指向的鏈表的末端。假定p1所指向的鏈表非空。#define NULL 0struct link float a ;struct link *next;;c
46、oncatenate ( p1, p2 )struct list *p1, *p2 ; if( p1->next=NULL )p1->next=p2 ;elseconcatenate( ,p2);【3.49下面程序的功能是從鍵盤輸入一個(gè)字符串,然 后反序輸出輸入的字符串。#include <stdio.h>struct node char data ;struct node *link ;*head ;main() char ch ;struct node *p ;head = NULL ;while( ch=getchar()!='n') p = (s
47、truct node *)malloc(sizeof(struct node);p->data = ch ; p->link = ;head = ;while( p!=NULL ) printf("%c ", p->data) ;p = p->link ;【 3.50 】下面程序的功能是從鍵盤上順序輸入整數(shù),直到輸入的整數(shù)小于0 時(shí)才停止輸入。然后反序輸出這些整數(shù)。#include <stdio.h>struct data int x ;struct data *link ;*p ;input() int num ;struct data
48、 *q ;printf("Enter data:") ;scanf("%d", &num) ;if( num<0 );q = ;q->x = num ;q->link = p ;p=q ;main() printf("Enter data until data<0:n");p=NULL ;input() ;printf("Output:") ;while( ) printf("%dn", p->x);【 3.51 】 下面函數(shù)的功能是創(chuàng)建一個(gè)帶有頭結(jié)點(diǎn)的鏈表
49、,將頭結(jié)點(diǎn)返回給主調(diào)函數(shù)。鏈表用于儲(chǔ)存學(xué)生的學(xué)號(hào)和成績(jī)。新產(chǎn)生的結(jié)點(diǎn)總是位于鏈表的尾部。struct student long num ; int score ;struct student *next ;struct student *creat() struct student *head=NULL,*tail ;long num ; int a ;tail= malloc(LEN) ; do scanf("%ld,%d",&num,&a) ; if(num!=0) if(head=NULL) head=tail ;else ;tail->num=
50、num ; tail->score=a ;tail->next=(struct student *)malloc(LEN);else tail->next=NULL ;while(num!=0) ;return( ) ;【 3.52 】 下面 create 函數(shù)的功能是建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,新產(chǎn)生的結(jié)點(diǎn)總是插入在鏈表的末尾。單向鏈表的頭指針作為函數(shù)值返回。#include <stdio.h>#define LEN sizeof(struct student) struct student long num ;int score ;struct student
51、 *next ;struct student *creat() struct student *head=NULL,*tail ;long num ;int a ;tail=( )malloc(LEN) ;do scanf("%ld,%d",&num,&a) ;if(num!=0) if(head=NULL) head=tail ;else tail=tail->next ;tail->num=num ;tail->score=a ;tail->next=( )malloc(LEN) ;else tail->next=NULL
52、;while(num!=0) ;【 3.53 】下面程序的功能是統(tǒng)計(jì)文件中的字符的個(gè)數(shù)。#include <stdio.h>main() long num=0 ; *fp ;if(fp=fopen("fname.dat", "r")=NULL) printf("Can't open the file! ");exit(0) ;while( ) fgetc(fp) ;num+ ;printf("num=%dn",num) ;fclose(fp) ;【 3.54 】 下面程序的功能是把從鍵盤輸入的文
53、件 (用 作為文件結(jié)束標(biāo)志) 復(fù)制到一個(gè)名為 second.txt 的新文件中。#include <stdio.h>FILE *fp ;main() char ch ;if(fp=fopen( )=NULL)exit(0) ;while(ch=getchar()!='')fputc(ch,fp) ;【 3.55 】下面程序的功能是將磁盤上的一個(gè)文件復(fù)制到另一個(gè)文件中,兩個(gè)文件名在命令行中給出(假定給定的文件名無誤)。#include <stdio.h>main(int argc,char *argv) FILE &f1,*f2;if(argc&l
54、t; ) printf("The command line error! ");exit(0) ;f1=fopen(argv1, "r");f2=fopen(arhv2, "w");while( )fputs(fgetc(f1), );【 3.56 】下面程序的功能是根據(jù)命令行參數(shù)分別實(shí)現(xiàn)一個(gè)正整數(shù)的累加或階乘。例如:如果可執(zhí)行文件的文件名是 sm ,則執(zhí)行該程序時(shí)輸入: "sm + 10" ,可以實(shí)現(xiàn)10 的累加;輸入: "sm - 10" ,可以實(shí)現(xiàn)求10 的階乘。#include <
55、stdio.h>#include <stdlib.h>main (int argc,char *argv) int n ;void sum(),mult() ;void (*funcp)() ;n=atoi(argv2) ;if(argc!=3 | n<=0)dispform( ) ;switch ( ) case '+': funcp=sum ;break ;case '-': funcp=mult ;break ;default: dispform( );void sum(int m) int i,s=0 ;for(i=1 ; i&l
56、t;m ; i+ );printf("sum=%dn",s) ;void mult(int m) long int i, s=1;for(i=1 ; i<=m ; i+ )s *= i ;printf("mult= %ldn" ; s) ; dispform( ) printf ("usage:sm n(+/!) (n>0)n");exit (0) ;【 3.57 】下面程序的功能是鍵盤上輸入一個(gè)字符串,把 該字符串中的小寫字母轉(zhuǎn)換為大寫字母,輸出到文件 test.txt 中,然后從該文件讀出字符串并顯示出來。 #include <stdio.h> main() char str100;int i=0 ;FILE *fp ; if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年教育機(jī)構(gòu)校園宣傳欄設(shè)施采購(gòu)及安裝合同3篇
- 二零二五年度木材防腐處理木工班組承包合同樣本4篇
- 2025年食堂食材安全認(rèn)證與采購(gòu)合同3篇
- 2025版家居建材行紀(jì)合同范本2篇
- 第八章生命體征的評(píng)估與護(hù)理護(hù)理學(xué)基礎(chǔ)88課件講解
- 2025年保潔防疫服務(wù)協(xié)議
- 2025年加盟連鎖店經(jīng)銷合作協(xié)議范例
- 2025年大型綜合市場(chǎng)用水電合同
- 2025年專利知識(shí)產(chǎn)權(quán)技術(shù)權(quán)利使用許可轉(zhuǎn)讓合同
- 二零二五版閉門會(huì)議知識(shí)產(chǎn)權(quán)授權(quán)與保密條款合同3篇
- 2024年萍鄉(xiāng)衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- 2024年高考數(shù)學(xué)(理)試卷(全國(guó)甲卷)(空白卷)
- DB32-T 4444-2023 單位消防安全管理規(guī)范
- 臨床三基考試題庫(kù)(附答案)
- 合同簽訂執(zhí)行風(fēng)險(xiǎn)管控培訓(xùn)
- 九宮數(shù)獨(dú)200題(附答案全)
- 人員密集場(chǎng)所消防安全管理培訓(xùn)
- JCT587-2012 玻璃纖維纏繞增強(qiáng)熱固性樹脂耐腐蝕立式貯罐
- 典范英語2b課文電子書
- 員工信息登記表(標(biāo)準(zhǔn)版)
- 春節(jié)工地停工復(fù)工計(jì)劃安排( 共10篇)
評(píng)論
0/150
提交評(píng)論