C語言實驗-15電本通信參考模板_第1頁
C語言實驗-15電本通信參考模板_第2頁
C語言實驗-15電本通信參考模板_第3頁
C語言實驗-15電本通信參考模板_第4頁
C語言實驗-15電本通信參考模板_第5頁
已閱讀5頁,還剩38頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗一 順序程序設計 【實驗目的】 1、熟悉C語言數據類型的概念,熟悉如何定義整型、字符型和實型變量2、掌握C語言中的算術運算符3、熟悉C語言表達式語句、空語句和復合語句4、能編寫簡單的順序結構的程序【預習內容】 1、C語言中類型定義的標志符int 、short、unsigned 、char、float 、double2、C語言中的運算符所能實現的操作3、輸入輸出函數的調用語句getchar()、putchar()、scanf()、printf()【實驗內容及步驟】 1 上機改錯題 #include <stdio.h>int main() int a, b;scanf("

2、%d%d", &a, &b); printf("%dn", a/b); return 0;程序糾錯后,若從鍵盤輸入15,4,則程序的運行結果為( 3)。 1 / 43#include <stdio.h>int main() float r, s;scanf("%f",&r);s=3.14159*r*r;printf("%fn", s); /s是float型,%d打印的是整形。數據不一致會出錯 return 0;程序糾錯后,若從鍵盤輸入3.5,則程序的運行結果為( 38.484477)。 2

3、上機驗證題 int main() char c1='b',c2='e'printf("%d,%cn",c2-c1,c2-'a'+'A');return 0;程序運行結果:( ) int main() int x=10, y=3, z;printf("%d %dn", x/y, x%y);return 0;程序運行結果:( ) int main() int sum=5, pad=5;pad = sum +, pad +, + pad;printf("%dn", pad);r

4、eturn 0;程序運行結果:( ) int main()short int n=65536;n+;printf("%dn",n);return 0;程序運行結果:( ) 3上機編程題 1、從鍵盤上任意輸入三個整型數據a、b和c,要求將其交換輸出a、b和c的值。如從鍵盤輸入a=10,b=20,c=30,程序運行后輸出a=20,b=30,c=10。程序清單 #include <stdio.h>int main()int a,b,c; /定義三個整形變量int temp;/交換用的臨時變量/*賦值(要嚴格按照格式輸入,在這里,除了%d,其他字符要原樣輸入,

5、比如a=和,不能缺少。見下面運行結果)*/scanf("a=%d,b=%d,c=%d", &a, &b, &c); temp = a;a = b ;b = c;c = temp;printf("a=%d,b=%d,c=%dn", a, b, c);  程序運行過程第一行是輸入。第二行是輸出2、編程從鍵盤任意輸入一個三位數組成的整數,將其個位、十位和百位分離后輸出,例輸入256,則輸出a=2,b=5,c=6。程序清單 #include <stdio.h>int main()int numbe

6、r; /定義你將要輸入的三位數整數的變量int a,b,c; /定義三個整形變量,接收number分離出來的值scanf("%d", &number); c = number%10; /使用取余得到個位/* 下面這行,假設number現在為256,number除以10本來是得25.6。但是25.6又賦值回給number,由于number是整形的,25.6后面的0.6會被截斷。number值為25 */number = number/10;b = number%10;/取到十位的數/*下面這行除10之后number現在就是一個個位數了。這個數就是以前百位上的數。所以在

7、下下面直接賦值就行*/number = number/10;a = number;printf("a=%d,b=%d,c=%dn", a, b, c);  程序運行結果實驗二 分支程序設計一、實驗目的 1、掌握C語言表示邏輯量的方法(0表示“假”,1或非0表示“真”) 2、學會正確使用關系運算表達式和邏輯表達式 3、熟練使用if語句、if-else語句和switch語句 二、預習內容 1、熟悉關系表達式和邏輯表達式的表示和使用 2、熟悉if語句、if-else語句和switch語句的格式、作用和用法 三、上機內容 1、找出程序中的錯誤,并加以簡化 #in

8、clude "stdio.h"int main( )float max, min, median;/沒有定義變量,怎么賦值? scanf("%f,%f,%f",&max,&min,&median);if (max=0) min=0; median=(max-median)/2; else min=max/2; printf("max=%f,min=%f,median=%fn", max, min, median); /*這里沒錯,只是沒輸出的話怎么看結果是不?*/return 0;修改程序后:(1) 若從鍵盤輸

9、入0,5,8,則程序的運行結果為( )。(2)若從鍵盤輸入5,8,11,則程序的運行結果為( )。#include "stdio.h"int main( ) int a;scanf("%d", &a);if (a>0) /if是判斷,要有條件if (a<10 )printf("a>0 and a<10n");else /用來輸出除了0到10之間的數外還有后誰。(優化部分) printf("a>=10n");elseprintf("a<=0n");ret

10、urn 0;修改程序后:(1) 若從鍵盤輸入3,則程序的運行結果為( )。(2) 若從鍵盤輸入-5,則程序的運行結果為( )。(3) 若從鍵盤輸入16,則程序的運行結果為( )。#include "stdio.h"int main( ) int a=1,b=1, c;/*看不懂這題說的是什么,如果是輸出c的值,直接把if (c=(a-b)變成c=(a-b);不就得了。但還是看不出來它想表達什么*/if (c=(a-b)printf("c is %dn", c);return 0;修改程序后,程序的運行結果為( c is 0)。 2、上機驗證程序

11、,并分析結果 #include "stdio.h"int main() int a= 2, b= -1, c= 2;if ( a<b ) /2<(-1) 顯然是錯的,所以a<b的值是false;if ( b<0 ) c=0;/這個if在上面的if體中,上面if不執行。這里肯定也不執行else c+;/注意else的一一對應關系。是屬于哪個if的printf( “%dn”, c); /*由于上面的第一個if為false,所以上面的語句都不執行了。直接就到了輸出。*/return 0;該程序的運行結果是( )。#include "stdio.h

12、"int main() int a;scanf( “%d”, &a);if ( a>50 ) printf( “%dn”, a );/*判斷a是否大于50.如果大于50.三句printf都會打印,應為a大于50的話,必定大于40,30嘛 */if ( a>40 ) printf( “%dn”, a );/同上面思路if (a>30 ) printf ( “%dn”, a );return 0;(1) 若從鍵盤輸入25,則程序的運行結果為( )。(2) 若從鍵盤輸入35,則程序的運行結果為( )。下面這些直接賦值粘貼在vc上都可以運行的。我就不寫了(3)若從鍵

13、盤輸入45,則程序的運行結果為( )。(4)若從鍵盤輸入55,則程序的運行結果為( )。#include "stdio.h"int main() int x=10, y=20, t=0;if ( x=y ) t=x ; x=y ; y=t ;/注意if有無大括號的區別,這里的if范圍只到t=x;printf( “%d %dn”, x, y );return 0;該程序的運行結果是( )。  #include "stdio.h"int main() int n ;scanf( “%d”, &n ) ;if ( n+<10 ) pri

14、ntf( %dn”, n ) ;/注意n+與+n的區別,n+是先運算,后執行+.else printf( “%dn”, n- ) ;return 0;(1)若從鍵盤輸入9,則程序的運行結果為( )。(2)若從鍵盤輸入10,則程序的運行結果為( )。3、編程題 (1)從鍵盤任意輸入四個int類型的整數,要求將其中的最大數輸出。#include "stdio.h"int main() int a,b,c,d;int temp;scanf("%d%d%d%d", &a,&b,&c,&d);temp=a;/把第一值賦給tempif

15、(temp<b) /逐一比較,始終保持temp要最大temp = b;if(temp<c)temp=c;if(temp<d)temp=d;printf("max=%dn",temp);return 0;(2)從鍵盤任意輸入四個int類型的整數,要求將它們按從小到大的順序輸出。#include "stdio.h"int main() int a,b,c,d;int temp;/交換時用的臨時變量printf("請輸入四個整數(用空格隔開):n");scanf("%d%d%d%d", &a,&

16、amp;b,&c,&d);if(a>b)temp = a;a = b;b = temp;if(a>c)temp = a;a = c;c = temp;if(a>d)temp = a;a = d;d = temp;/*上面的用a逐一與b,c,c比較,交換。保證a最小. 同理,下面用b與c,d比較交換。保證b是 b,c,d中最小的。再往下原理一樣*/if(b>c)temp = b;b = c;c = temp;if(b>d)temp = b;b = d;d = temp;if(c>d)temp = c;c = d;d = temp;printf(

17、"從小到大: %d %d %d %dn", a, b, c, d);return 0; (3) 給出一百分制成績,要求輸出成績等級,90分以上為'A',8089分為'B',7079分為'C',6069分為'D',60分以下為'E'。規定使用switch結構。#include "stdio.h"int main() int grade;/定義成績變量printf("請輸入成績:");scanf("%d", &grade);grad

18、e = grade/10;/只要十位上的數字switch(grade)case 9: printf("An");break;case 8: printf("Bn");break;case 7: printf("Cn");break;case 6: printf("Dn");break;default: printf("En");break;return 0;實驗三 循環程序設計一、實驗目的 1、掌握while語句、do-while語句和for語句實現循環的方法 2、理解循環結構程序段中語句的執行

19、過程 3、進一步掌握循環結構程序的應用 二、預習內容 熟悉以下語句: while語句、do-while語句、for、break、continue語句 三、上機內容 1、閱讀以下程序,先預測其結果,再上機運行驗證: #include "stdio.h"int main() int x=-1;dox=x*x; while(!x);printf("%dn", x);return 0;運行結果是( ) #include "stdio.h"int main() int a,s,n,count;a=2;s=0;n=1;count=1;while(

20、count<=7) n=n*a; s=s+n; +count;printf("s=%d",s);return 0;運行結果是 ( )#include "stdio.h" int main() int i=1,s=3;do s+=i+;if(s%7=0) continue;else +i;while(s<15);printf("%d",i);return 0;運行結果是( ) #include "stdio.h"int main()int num=0;while(num<=2)num+;printf

21、("%dn",num);return 0;運行結果是 ( ) 2、編程與程序分析 編程求1-3+5-7+9-11+-99+101的值。 (找規律,1,3,5,7,9.。奇正偶負) #include "stdio.h"int main() int sum=0; /總和int i=1; /過程變量。1,3,5,7,9.int sign=-1;/符號,用來變換正負for(i;i<=101;i=i+2)sign = sign*(-1);/奇正偶負sum = sum+(sign*i);/sign*i是要讓i是正還是負printf("總和:

22、%dn", sum);return 0;從鍵盤輸入一組十進制整數,以9999結束,統計其中正數的個數和其中的正數之和。 (使用while判斷你是否輸入了9999.如果輸入就不再執行循環)#include "stdio.h"int main() int count=0;/定義計數器int sum=0;/正數總和int number;/要輸入的數printf("請輸入一組整數(用空格或回車隔開):n");scanf("%d",&number);while(number!=9999)/如果number不等于9999,就會一

23、直循環if(number>0)count = count+1;/如果number大于0.計數器加1sum = sum+number;/計算和scanf("%d",&number);printf("正數的個數是:%d個,正數之和為:%dn", count, sum);分析程序運行結果#include "stdio.h"int main() int x=1,y=0,a=0,b=0; for ( x=1; x<=4; x+ ) switch(x) case 1: switch (y) case 0: a+; break;

24、case 1: b+; break;case 2: a+; b+; break;case 3: a+; b+;printf("a=%d, b=%dn", a, b);return 0;3、思考題 (1)若有語句while (!x),則退出循環的條件是 ( x為真)。 (2)若有語句 while (x%2 && y>100 ),則繼續循環條件是( x不等于0且y>100),而退出循環的條件是( x等于0或y<=100)。 (3)while (x=0)與while (x=0)兩條語句的循環條件有何區別? While(x=0)相當于while(0

25、),不執行循環。While(x=0)是x與0比較。若x為0執行循環。否則退出循環實驗四 數組的應用一、實驗目的 1、掌握一維、二維數組的定義、數組元素的引用形式和賦值的方法。2、掌握一維、二維數組的輸入和輸出的方法。3、掌握和一維數組有關的典型算法,如求菲波那契數列、最大(小)數、查找、排序等。4、掌握字符串的定義以及它和一維字符數組之間的關系和區別。5、掌握字符串處理函數的功能和應用。二、預習內容 1、預習一維數組的定義及引用的一般方法。2、熟悉循環語句和數組處理語句結合的方法。3、二維數組的定義和二重循環之間的關系。4、字符串的概念。三、實驗內容 1、分析和記錄以下程序運行結果,并上機驗證

26、: (1)#include "stdio.h"int main()int v5;int i;v0=197; v2=-100;v4=350; v1=v0+v2;v3=-v4;for (i=0;i<5;i+)printf( "v%d=%dn", i, vi );return 0;該程序的運行結果是_(2)#include "stdio.h"int main() int t, i;int a10= 1,2,3,4,5,6,7,8,9,10 ;t=a9;for ( i=9; i>1; i-=2)ai=ai-2;a1=t;for (

27、 i=0; i<10; i+ )printf( "%3d", ai );return 0;該程序的運行結果是:_(3)#include "stdio.h"int main() int num44=11,22,33,44,1,2,3,4,10,20,30,40,12,22,32,42;int i, j, s=0;for (j=0; j<3; j+)for ( i=0; i<3; +i )if ( i=j ) s+=numji;printf( "%dn", s); return 0; 該程序的運行結果是:_(4)#inc

28、lude "stdio.h"int main()int i, j, m, n, a, x34=43,32,22,13,11,22,33,44,55,11,32,31;m=n=0; a=xmn; for (i=0;i<3; i+) for ( j=0; j<4; j+)if ( a>xij ) m=i; n=j; a=xmn; printf("a=%d, m=%d n=%dn", a, m, n );return 0;2、將程序補充完整,以完成以下功能,并上機調試。 (1)以下程序以每行輸出4個數據的格式輸出a數組。(中等難度題) #in

29、clude "stdio.h"int main() int a12, i;for ( i=0; i<12; i+ ) scanf( "%d",&ai) ;for (i=0; i<12; i+ ) if (i%4=0)printf("n");printf( "%6d", ai );printf( "n" );return 0;(2)以下程序將數組中的數據按逆序存放。(中等難度題)#include "stdio.h"#define SIZE 12 /*SIZE

30、為常量12*/int main() int aSIZE, i, j, t;for ( i=0; i<SIZE; i+ ) scanf( "%d",&ai);i=0; j=SIZE-1;while ( i<j ) t=ai;ai=aj;aj=t; i+; j-;for (i=0; i<SIZE; i+) printf( "%4d", ai );printf( "n");return 0;(3)以下程序實現將數組a中的元素按從小到大的順序排列。 #include "stdio.h"int ma

31、in() int i, j, temp, a10;for (i=0; i<10; i+ ) scanf("%d",&ai);for (i=0;i<10;i+ )for (j=0;j<i; j+ )if (aj>ai)temp=aj;aj=ai;ai=temp;for (i=0; i<10; i+) printf( "%d", ai );/改為printf( "%4d", ai );會好看點return 0; (4)若有三個字符串s1、s2和s3,其中s1="abcdef",s2

32、="123456",要求用字符數組實現將s1的內容復制到s3中,再將s2的內容添加到s3的后面,最后輸出s3。 #include "stdio.h"int main() char s1="abcdef", s2="123456",s320=""int i=0, j=0;while ( s1 i !='0') s3 i =s1 i ; i+; i-;while ( s2 j !='0' )s3 i =s2 j ;i+; j+; for ( i=0;s3i!='

33、;0'i+ ) printf( "%c", s3 i ); return 0;3、編程題:(1)讀入10個整數,求出非負數個數及其和,并將10個整數按從小到大的次序輸出。(可結合前面的小到大排序,和計數)#include "stdio.h"int main() int i, j, temp, a10, count=0,sum=0;for (i=0; i<10; i+ )scanf("%d",&ai);if(ai>=0)count = count+1;/計數sum = sum+ai;/計算和 for (i=0

34、;i<10;i+ )for (j=0;j<i; j+ )if (aj>ai)temp=aj;aj=ai;ai=temp;printf("非負數%d個,總和為:%dn",count, sum);printf("從小到大排序:n");for (i=0; i<10; i+) printf( "%4d", ai ); printf("n");return 0; (2) 從鍵盤輸入十個整數對一個一維數組賦值,并將其中的奇數存放到另一個數組中后再輸出,并輸出奇數的個數。如:從鍵盤輸入: 13 14 17

35、 34 45 55 56 76 77 99則輸出: 13 17 45 55 77 99count = 6 #include "stdio.h"int main() int a10,b10;/定義兩個一維數組int i;int j=0;/j是給b數組用的int count=0;for(i=0;i<10;i+)scanf("%d",&ai);for(i=0;i<10;i+)/用來遍歷a數組if(ai%2!=0)/除以2不等于0說明是奇數bj=ai;j=j+1;/*定位到下一位,不改變j就會一直是b0*/count = j;/共有j個奇數f

36、or(i=0;i<j;i+)printf("%3d",bi);printf("n");printf("count=%dn",count);return 0; (3) 編程求一個m*n的二維數組中所有元素的最大值,元素可隨機產生,m,n任意指定。 #include<stdio.h>#include<stdlib.h>#include<time.h>#define M 4 #define N 4int main()int arrMN;int i,j;int temp;/臨時比較的變量srand(t

37、ime(NULL);/根據系統當前時間設置隨機數種子for(i=0;i<M;i+)/賦值for(j=0;j<N;j+)/rand()%100+1即產生1到100的隨機數arrij=rand()%100+1;temp = arr00;printf("隨機生成的二維數組如下:n");for(i=0;i<M;i+)for(j=0;j<N;j+)printf("%4d",arrij);/打印出二維數組if(temp<arrij)/順便進行比較,找最大temp = arrij;printf("n");printf(

38、"最大值是:%dn",temp);實驗五 函數的應用 一、實驗目的1、掌握定義函數的方法;2、掌握函數實參和形參的對應關系,以及“值傳遞”的方法;3、掌握數組名作為實參時,實參和形參之間的傳遞方法二、預習內容函數的概念、定義格式、變量的作用域以及調用過程中數據的傳遞方法。三、實驗內容1、分析和記錄以下程序運行結果,并上機驗證: #include "stdio.h"int main() int x=2, y=4;int swap( int, int );printf("(1)in main: x=%d, y=%dn", x, y);sw

39、ap(x, y);printf("(4)in main: x=%d, y=%dn",x, y);return 0;swap( int a, int b) int t;printf("(2)in swap: a=%d, b=%dn",a, b);t=a; a=b; b=t;printf("(3)in swap: a=%d, b=%dn",a, b);運行結果:_2、若將以上程序中的形參a、b對應改為x和y,使其與實參變量同名,記錄并分析結果。結果一樣,雖然同名,但卻是完全不相關的兩個數。3、預測以下程序結果,并上機驗證。#include

40、 "stdio.h"void fun1( ) int x=5;printf( "x=%dn", x ); void fun2(int x) printf( "x=%dn", +x ); int main( ) int x=2;fun1( );fun2( x );printf( "x=%dn", x ); return 0;運行結果:_4、分析程序運行結果,并驗證程序。 #include "stdio.h"static int x=20;void fun1(int x) x+=10; printf

41、(“%dfun1()n”,x);fun2( ) x+=10; printf(“%dfun2()n”,x);int main() int x=10; fun1(x); fun2(); printf(“%dint main()n”,x);return 0;運行結果:_5、分析程序運行結果,并驗證程序。 #include "stdio.h"int main( ) void fun( );fun( ); return 0;void fun( ) static int a=2; /*a為靜態變量*/char k='A'a*=2; k+=1;printf("%

42、d, %cn", a, k); 運行結果:_6、分析程序運行結果,并驗證程序。 #include "stdio.h"int k;/*k為全局變量*/int main() void fun();k=3; fun(); printf(“%dn”,k);return 0;void fun() k=k*k;運行結果:_7、編程題:(1)定義一個能判斷任意整數a是否是素數的函數isprime( int a),并利用這一函數,輸出100199之間的所有素數。 #include<stdio.h>int main()int i;

43、int isprime(int k);printf("100到199之間的素數是:n");for(i=100;i<=199;i+)if(isprime(i)/*如果是素數就輸出*/printf("%4d",i);printf("n");return 0;int isprime(int a)/*判斷是不是素數的函數,是素數返回true*/int i=0;for(i=2;i<a;i+)if(a%i=0)return 0;return 1;(3) 定義一個函數遞歸函數 long f (int n) 求n!,并利用此函數,求出su

44、m=4!+6!+7!的值。#include<stdio.h>int main()long f(int n);long sum;sum=f(4)+f(6)+f(7);printf("4!+6!+7!=%dn",sum);long f(int n)if(n=1)return 1;elsereturn n*f(n-1);實驗六 綜合一、實驗目的 1、掌握選擇,循環,數組,函數,指針的定義和引用;2、在程序中熟練應用選擇,循環,數組,函數,指針的相關知識,編寫綜合性的程序。二、預習內容 1、數組,循環,選擇,函數,指針的相關知識三、實驗內容 編程題 (下面的三題網上都可

45、找到)(1) 一輛卡車違反交通規則,撞人逃跑。現場3人目擊,但沒記住車號,只記下車的特征。甲說:牌照前兩位數相同,乙說:牌照后兩位數相同。丙是位數學家,他說:四位的車號剛好是一個整數的平方。請求出車號。#include <stdio.h>#include <math.h>int main() int i,j,num,res;for(i = 11; i < 100; i += 11) /*前兩位相同的數*/for(j = 11; j < 100; j += 11) /*后兩位相同的數*/num = 100 * i + j; /*組成車牌號*/res = (int)sqrt(num);/*開平方函數,所以開頭要引入math.h*/if(res * res = num) /*判斷是不是一個數的平方*/printf("%dn",num);return 0;(2) 設有一數列,包含10個數,已按升序排列。現要求編一程序,它能夠把從指定位置開始的n個數按逆序重新排列并輸出新的完整數列。例如,原數列為1,2,3,4,5,6,7,8,9,10,若要求把從第

溫馨提示

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

評論

0/150

提交評論