單片機C語言作業(yè)及上機習(xí)題及答案_第1頁
單片機C語言作業(yè)及上機習(xí)題及答案_第2頁
單片機C語言作業(yè)及上機習(xí)題及答案_第3頁
單片機C語言作業(yè)及上機習(xí)題及答案_第4頁
單片機C語言作業(yè)及上機習(xí)題及答案_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一次課熟悉win-TC編譯環(huán)境、熟悉C語言程序結(jié)構(gòu)1.使用C語言編譯環(huán)境,輸入下面的源程序。將你的程序命名為hello.c,然后編譯運行它。/*programwritesthewords"Hello,world"tothescreen*File:Hello.c*By:NJCIT*Date:07-03-09*/#include<stdio.h>main(){printf("Hello,world\n");return(0);}2.main()/*求兩數(shù)之和*/{inta,b,sum;/*這是變量定義*/a=123;b=456;sum=a+b;printf(“sumis%d\n”,sum);}回答下列問題:C語言中的標(biāo)識由字母、數(shù)字和下劃線組成,以字母和下劃線開頭,不可使用關(guān)鍵字。C語言源程序從main開始執(zhí)行?每個C語言程序必須有一個且只能有一個主函數(shù),主函數(shù)的名字為main。C程序的函數(shù)由函數(shù)頭和函數(shù)體兩部分構(gòu)成,函數(shù)頭包括函數(shù)屬性、函數(shù)類型、函數(shù)名和形參表;函數(shù)體由一系列的語句組成,語句由分號結(jié)束,函數(shù)休包含在一對花括號中。程序中的注釋內(nèi)容是用符號/**/界定。計算機上實現(xiàn)C語言程序要經(jīng)過編輯(產(chǎn)生*.C文件)、編譯(產(chǎn)生*.OBJ文件)、鏈接(產(chǎn)生*.EXE文件)和調(diào)試四個階段。第二次課熟悉printf()函數(shù)、常見轉(zhuǎn)義字符及各種數(shù)據(jù)類型的輸出格式1.#include<stdio.h>#include<stdio.h>main(){printf("\n12345678901234567890");printf("\n\n\n\nafewnewlines");printf("\n\t\tand\nsome\ntabs");printf("\nandabeepjusttobeheard.\a\n");printf("\nthi");printf("swor");printf("kstoo\n");return(0);}(1)printf()函數(shù)的功能是什么?按指定的格式在屏幕上顯示指定的內(nèi)容(2)在printf()函數(shù)中’\n’的起什么作用?回車換行(3)在printf()函數(shù)中’\t’的起什么作用?水平跳格(4)在printf()函數(shù)中’\a’的起什么作用?蜂嗚器響2.main(){inta=5,b=7,c=-1;floatx=67.8564,y=-789.124;charc=‘A’;longn=1234567;unsignedu=65535;printf(“%d%d\n”,a,b); /*57 */printf(“%3d%3d\n”,a,b);/*57 */printf(“%f,%f\n”,x,y);/*67.856400,-789.124000*/printf(“%-10f%-10f\n”,x,y);/*67.856400,-789.124000*/printf(“%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n”,x,y,x,y,x,y);/*67.85,-789.12,67.8564,-789.1240,67.856400,-789.124000*/printf(“%e,%10.2e\n”,x,y);/*6.78564e+01,-7.9e+02*/printf(“%c,%d,%o,%x\n”,c,c,c,c);/*A,65,101,41*/printf(“%ld,%lo,%x\n”,n,n,n);/*1234567,4553207,d687*/printf(“%u,%o,%x,%d\n”,u,u,u,u);/*65535,177777,ffff,-1*/printf(“%s,%5.3s\n”,”COMPUTER”,”COMPUTER”);/*COMPUTER,COM*/}3.假設(shè)下面的例子都是完整程序的一部分,那么他們每一個將會輸出什么?a.printf("BaaBaaBlackSheep.");a.printf("BaaBaaBlackSheep.");b.printf("Haveyouanywool?\n");c.printf("Begone!\nOcreatureoflard!");d.printf("What?\nNolnBonzo?\n");e.intnum;num=2;f.printf("%d+%d=%d",num,num,num+num);4.加載,編譯并運行下面的程序。顯示輸出界面然后回答下面的問題。#include<stdio.h>#include<stdio.h>main(){charch;intx;floaty;doublez;ch=‘A’;printf("ch=%canditsasciivalueis%d.WhatisASCIIIwonder?\n",ch,ch);x=10;printf("x=%d\n",x);y=3.1415926;printf("y=%f\n",y);z=4.75E5;printf("z=%lf\n",z);return(0);}1.字符的A的ASCII碼是多少? 652.“%f”默認(rèn)情況下小數(shù)點后面有幾位數(shù)字? 6位3.程序中的字符被指定的值為’A’,為什么不是“A”?'A'為字常量,"A"為字符串常量4.改變程序使它以10個字符位寬度和2位小數(shù)的形式輸出浮點型數(shù)據(jù)。%f改為%10.2f5.改變程序使它以6個字符位寬度輸出整型數(shù),左對齊。 %d改為-6d%3.問答題1)C語言的基本數(shù)據(jù)類型有幾種,分別是什么,并指出各種數(shù)據(jù)類型的關(guān)鍵字?變量類型字節(jié)長度值范圍無符號數(shù)(unsigned)有符號數(shù)(signed)字符(char)10~255或ASCⅡ碼-128~127整形(int)20~65535-32768~32767短整形(short)20~65535-32768~32767長整形(long)40~4294967295-2147483648~2147483647浮點(float)4

3.4×10-38~3.4×10+38雙精度(double)8

1.7×10-308~1.7×10+308高精度(longdouble)10

3.4×10-4937~1.1×10+49322)描述C語言中標(biāo)識符的組成:標(biāo)識符由字母(A~Z、a~z)、數(shù)字(0~9)和下劃線組成,標(biāo)識符必須以字母和下劃線開始。不可使用關(guān)鍵字。3)常量和變量的區(qū)別是什么?常量:在程序運行過程中,其值不能被改變的量。變量:在程序運行過程中其值可以改變的量。4)在程序中如何使用變量?在程序中,首先根據(jù)所需處理的數(shù)據(jù)類型選擇合適的變量類型定義變量,然后用合適的運算符、表達(dá)式、函數(shù)對變量進(jìn)行操作。5)從下面列出標(biāo)識符中選出哪些可以用作合法的C用戶定義標(biāo)識符,哪些不能使用。為什么?(1)a3_b3合法(2)void非法:關(guān)鍵字(3)_123合法(4)123_非法:數(shù)字開頭(5)IF合法:但不好,容易與if混淆(6)INT合法:但不好,容易與int混淆(7)For合法:但不好,容易與for混淆(8)printf合法:但不好,與庫函數(shù)printf同名(9)WORD合法:(10)define合法:但不好,容易與宏命令#define混淆(11)_abc合法:(12)sizeof非法:關(guān)鍵字(13)answer合法:(14)to合法:(15)signed非法:關(guān)鍵字(16)Case合法:但不好,容易與case混淆(17)_if合法:(18)extern非法:關(guān)鍵字(19)putchar合法:但不好,與庫函數(shù)putchar同名(20)_double合法:6)請選出正確的數(shù)值和字符常量,說明類型;對于不正確的數(shù),說明原因(1)0.0正確:浮點數(shù)(2)5L正確:長整形(3)o13錯誤:八進(jìn)制數(shù)開頭用數(shù)字0,而不是字母o(4)0Xff正確:整形數(shù)的十六進(jìn)制形式,相當(dāng)于十進(jìn)制數(shù)255;(5)oxaa錯誤:十六進(jìn)制數(shù)開頭用數(shù)字0加x,而不是字母o加x(6)018錯誤:八進(jìn)制數(shù)中的數(shù)字應(yīng)在0-7的范圍內(nèi)(7)9861正確,整形數(shù)的十進(jìn)制形式(8)011正確,整形數(shù)的八進(jìn)制形式(9)3.987E-2正確:浮點數(shù)的指數(shù)形式(10).987正確:浮點數(shù)小數(shù)點前如為0,可省略(11)‘\0xab’正確:表示十六進(jìn)制值為0xab的ASCII碼字符(12)50.正確:浮點數(shù)小數(shù)點后如為0,可省略(13)8.9e1.2錯誤:浮點數(shù)的指數(shù)應(yīng)為整數(shù)(14)1e1正確:浮點數(shù)的指數(shù)形式(15)0xFF00正確:整形數(shù)的十六進(jìn)制形式(16)0.825e2正確:浮點數(shù)的指數(shù)形式(17)473正確,整形數(shù)的十進(jìn)制形式(18)OX4錯誤:十六進(jìn)制數(shù)開頭用數(shù)字0加x,而不是字母o加x(19)“c”錯誤:字符常量應(yīng)用單引號,雙引號是字符串(20)‘t’正確:字符常量,表示字母t的ASCII碼(21)‘\’”錯誤:右側(cè)使用了雙引號(22)‘0’(23)‘\0’(24)‘A’正確:字符常量,表示字母A的ASCII碼4.選擇題(1)合法的字符常量是。A、C、DA)‘\t’B)“A”C)‘a(chǎn)’D)’\x32(2)合法的字符常量是。DA)‘\084’B)‘\84’C)‘a(chǎn)b’D)’(3)是C語言提供的合法的數(shù)據(jù)類型關(guān)鍵字。BA)FloatB)signedC)integerD)Char(4)在以下各組標(biāo)識符中,合法的標(biāo)識符是。DA)A)B01B)table_1C)0_tD)k%B)A)Fast_B)voidC)pblD)<book>C)A)xy_B)longdoubleC)*pD)CHARD)A)sjB)IntC)_xyD)w_y23(5)屬于合法的C語言長整型常量的是。A)5876273B)0LC)2E10D)(long)5876273(6)下面選項中,不是合法整型常量的是A)160B)-0xcdgC)-01D)-0x48a第三次課熟悉scanf()函數(shù)的使用:用下面的scanf()函數(shù)輸入數(shù)據(jù),使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’;main(){inta,b;floatx,y;charc1,c2;scanf(“a=%db=%d”,&a,&b);scanf(“x=%fy=%e”,&x,&y);scanf(“c1=%cc2=%c”,&c1,&c2);printf(“a=%db=%d”,a,b);printf(“x=%fy=%e”,x,y);printf(“c1=%cc2=%c”,c1,c2);}2.加載,編譯并運行下面的程序然后回答下面的問題。#include<stdio.h>#include<stdio.h>main(){intuser_age;charuser_name[51];/*Gettheusersname*/printf("Enteryourname:");scanf("%s",user_name);/*Gettheusersage*/printf("Enteryourageinyears:");scanf("%d",&user_age);/*Printouttheirnameandageindays*/printf("G’day%s,youare%ddaysold\n",user_name,user_age*365);return(0);}1.存儲用戶名的變量名是什么?2.改寫這個程序使他可以用一個單獨的變量以天的形式存儲用戶的年齡。3.使用scanf()讀取多行輸入#include<stdio.h>#include<stdio.h>main(){intuser_age;charuser_name[51];/*Gettheusersnameandage*/printf("Enteryournamefollowedbyyourageinyears(egfred23):");scanf("%s%d",user_name,&user_age);/*Printouttheirnameandageindays*/printf("G’day%s,youare%ddaysold\n",user_name,user_age*365);return(0);}1.當(dāng)你在回答問題時顛倒了年齡和姓名會出現(xiàn)什么情況?2.當(dāng)你在代碼中省去了&時會出現(xiàn)什么情況?4.編程題已知a,b均是整型變量,寫出將a,b兩個變量中的值互換的程序來。#include"Stdio.h"main(void){inta,b,c;printf("a=");scanf("%d",&a);printf("b=");scanf("%d",&b);printf("a=%d,b=%d\n",a,b);c=a;a=b;b=c;printf("a=%d,b=%d\n",a,b);getch();}(2)若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下的輸出格式和結(jié)果,請寫出程序(包括定義變量類型和設(shè)計輸出)。

a=3b=4c=5

x=1.200000,y=2.400000,z=-3.600000

x+y=3.60y+z=-1.20z+x=-2.40

u=51274n=128765

c1=’a’or97(ASCII)c2=’b’or98(ASCII)#include"Stdio.h"main(void){inta=3,b=4,c=5;floatx=1.2,y=2.4,z=-3.6;unsignedintu=51274;longn=128765;charc1='a',c2='b';printf("a=%2db=%2dc=%2d\n",a,b,c);printf("x=%f,b=%f,c=%f\n",x,y,z);printf("x+y=%.2f,y+z=%.2f,z+x=%.2f\n",x+y,y+z,z+x);printf("u=%un=%ld\n",u,n);printf("c1='%c'or%d(ASCII)\n",c1,c1);printf("c2='%c'or%d(ASCII)\n",c2,c2);getch();}(3)輸入一個華氏溫度,要求輸出攝氏溫度,公式為:,取兩位小數(shù)。#include"Stdio.h"main(void){floatc,f;printf("f=");scanf("%f",&f);c=5.0/9*(f-32);printf("c=%.2ff=%.2f\n",c,f);getch();}5.請判斷以下表達(dá)式是否正確,若正確,寫出表達(dá)式的值;若不正確,寫出出錯原因。各變量的類型說明如下:inti=8,j=3,k,a,b;unsignedlongw=5,u;doublex=1.42,y=5.2,t;k=i++8(2)(int)x+0.41.4(3)w+=-23(4)y+=x++6.62(5)i/=j+120(6)k=--i7(7)f=3/2*(t=30.0-10.0)20.0(8)k=(a=2,b=3,a+b)5(9)a+=a-=(b=4)*(a=3)-18(10)a=2*a=3錯,賦值語句的左邊應(yīng)為變量,不可為表達(dá)式,2*a為表達(dá)式。(11)u=65535,j=-1,u=u+j(12)++(i+j)?錯,可對變量進(jìn)行自增運算,不可對表達(dá)式進(jìn)行自增運算,i+j為表達(dá)式。(13)2%(-3)2(14)-2%(-3)-26.求以下表達(dá)式的值,假設(shè)所有變量都為整型。(1)(a=b=4,a+1,b+1,a+b)8(2)(a=2,b=5,a>b?a++:b++,a+b)8(3)(x=8,x%=x+5)8(4)30%6/207.寫出下面各邏輯表達(dá)式的值。設(shè):a=3,b=4,c=5.(1)a+b>c&&b==c0(2)a||b+c&&b-c1(3)!(a>b)&&!c||11(4)!(x=a)&&(y==b)&&00(5)!(a+b)+c–1&&b+c/21第四次課if語句應(yīng)用(1)加載,編譯并運行下面的程序,先使用一個正整數(shù),然后再使用一個負(fù)數(shù)。有什么不同?#include<stdio.h>#include<stdio.h>main(){intx;printf("Enteranumberbetween-10and+10:");scanf("%d",&x);if(x>0){printf("\nYournumberispositive\n");}return(0);}輸入正數(shù):顯示“Yournumberispositive”輸入負(fù)數(shù):沒有顯示。(2)使用if語句避免除0#include<stdio.h>#include<stdio.h>main(){floatx,y;printf("Enteranumbertobeinverted:");scanf("%f",&x);if(x!=0){y=1/x;printf("Theinverseof%fequals%f\n",x,y);}elsePrintf(“inputerror”)getch();}1.當(dāng)你輸入數(shù)字0時結(jié)果為多少? 程序運行異常,看不到運行結(jié)果。2.增加一個if語句使它只有當(dāng)ifx不等于0時進(jìn)行計算。(程序中藍(lán)色部分)3.現(xiàn)在你輸入0會出現(xiàn)什么情況?仍看不到顯示,但程序運行正常,getch()起作用。4.改進(jìn)程序使之可以當(dāng)輸入數(shù)字0時打印出警告信息。(程序中紅色部分)(3)編寫if語句寫一個程序用來計算電阻上的功率。功率大小等于電阻上的電壓值乘以流過電阻的電流值。完成計算后,使用一個if語句判斷功率是否低于0.5瓦特。如果低于0.5瓦特則輸出“Okeytousehalfwattresistor”,否則輸出“haffwattregistorwillnotbeokey”。下面是程序的開始部分,請?zhí)砑油瓿蒳f語句。#include<stdio.h>#include<stdio.h>main(){floatpower,voltage,current;printf("Enterthevoltage:");scanf("%f",&voltage);printf("Enterthecurrent:");scanf("%f,¤t);power=voltage*current;/*Calculationhere*/if(power<0.5)printf(“Okeytousehalfwattresistor\n”);/*ifcheckhere*/elseprintf(“haffwattregistorwillnotbeokey\n”);/*elsehere*/return(0);}如果功率小于0.5瓦特,屏幕輸出應(yīng)該如下所示:Enterthevoltage:5Enterthevoltage:5Enterthecurrent:0.002okaytousehalfwattresistor.如果功率大于0.5瓦特:Enterthevoltage:5Enterthevoltage:5Enterthecurrent:200halfwattresisitorwillnotbeokay.2.編程練習(xí):有三個整數(shù)a,b,c,由鍵盤輸入,輸出其中最大的數(shù)。#include<stdio.h>main(){inta,b,c,max;printf("a=");scanf("%d",&a);printf("b=");scanf("%d",&b);printf("c=");scanf("%d",&c);max=a;if(b>max)max=b;if(c>max)max=c;printf("max=%d\n",max);getch();}編程輸入整數(shù)a和b,若大于100,則輸出百位以上的數(shù)字,否則輸出兩數(shù)之和。#include<stdio.h>main(){inta,b,c;printf("a=");scanf("%d",&a);printf("b=");scanf("%d",&b);if(a>100||b>100){if(a>100)printf("a=%d\n",a);if(b>100)printf("b=%d\n",b);}elseprintf("a+b=%d\n",a+b);getch();}(3)有一函數(shù):寫一個程序,輸入x的值,輸出y值。#include<stdio.h>main(){floatx,y;printf("x=");scanf("%f",&x);if(x<1)y=x;elseif(x>=1&&x<10)y=2*x-1;elseif(x>=10)y=3*x-11;printf("y=%f\n",y);getch();}(4)寫一段程序計算兩個并聯(lián)電阻的阻值,使你的程序檢查是有短路的(0歐姆)將導(dǎo)致0作為被除數(shù),使用一個if語句或者三目運算避免這種情況(使用三目運算計算及檢查是否除0)。提示:Rt=1/(1/R1+1/R2);你的輸出應(yīng)該如下所示:Enterthevalueofresistor1:45Enterthevalueofresistor1:45Enterthevalueofresistor2:5645.0ohmsinparallelwith56.0ohmsgives24.95ohms假如有一個電阻阻值為0的話,結(jié)果將如下所示:Enterthevalueofresistor1:0Enterthevalueofresistor1:0Enterthevalueofresistor2:450.0ohmsinparallelwith45.0ohmsgives0.00ohms#include<stdio.h>main(){floatr1,r2;printf("Enterthevalueofresistor1:");scanf("%f",&r1);printf("Enterthevalueofresistor2:");scanf("%f",&r2);if(r1==0||r2==0)printf("%.1fohmsinparallelwith%.1fohmsgives0.00ohms\n",r1,r2);elseprintf("%.1fohmsinparallelwith%.1fohmsgives%.2fohms\n",r1,r2,1/(1/r1+1/r2));getch();}第5次課switch語句應(yīng)用(1)加載,編譯并運行下面的程序,并回答問題。#include<stdio.h>main(){intnum1,num2,ans;#include<stdio.h>main(){intnum1,num2,ans;chararithOp;ans=0;printf("Enternumber1-->");scanf("%d",&num1);printf("Enternumber2-->");scanf("%d",&num2);printf("Enteranoperator(+,-,*or/)-->");fflush(stdin);scanf("%c",&arithOp);switch(arithOp){case‘+’:ans=num1+num2;break;case‘-’:ans=num1-num2;break;case‘*’:ans=num1*num2;break;case‘/’:if(num2)ans=num1/num2;else{arithOp=0;printf(“devide0error\n”);}break;default:printf(“operatorerror\n”);break;}If(arithOp)printf("\n%d%c%d=%d",num1,arithOp,num2,ans);fflush(stdin);getchar();return(0);}1.嘗試輸入一個不匹配case語句的操作符,會發(fā)生什么?表達(dá)式右邊的運算結(jié)果為02.將程序保存為switch-02.c并為“ans”添加乘(*)和除(/)的算法。(藍(lán)色)3.添加一個default語句來處理輸入的運算符不符合case情況。(紅色)4.添加程序處理除數(shù)為零的情況。(綠色)(2)加載,編譯并運行下面的程序。#include<stdio.h>#include<stdio.h>main(){intchoice;printf("Howmanystars(1to10)doyouwant?");scanf("%d",&choice);switch(choice){case10:printf("*");case9:printf("*********");break;case8:printf("*");case7:printf("*");case6:printf("*");case5:printf("*****");break;case4:printf("*");case3:printf("*");case2:printf("*");case1:printf("*");break;default:printf("Thenumberyouaskedforisoutofrange\n");}return(0);}1.打印9顆星和8顆星是不同的。描述這兩種方法。9顆星由case9:printf("*********");break;顯示;8顆星由case8:printf("*");case7:printf("*");case6:printf("*");case5:printf("*****");break;顯示;2.編輯這段程序,使之工作在沒有break語句的情況下。(3)任務(wù)1:完成下面的程序,使用if/else語句,判斷輸入的數(shù)是正數(shù)還是負(fù)數(shù)任務(wù)2:完成下面的程序,使用switch語句,判斷輸入的數(shù)是正數(shù)還是負(fù)數(shù),并且要處理輸入的數(shù)越界的情況。#include<stdio.h>#include<stdio.h>main(){intnum;printf("Programindicateswhethernumberis+veor-ve\n");printf("Enteranumberbetween-5and+5:");scanf("%d",&num);/*添加語句*/if(num>=0&&num<=5)printf("thenumberis+ve\n");elseif(num>=-5&&num<0printf("thenumberis-ve\n");elseprintf("thenumberisoutofrager\n");getch();}#include<stdio.h>#include<stdio.h>main(){intnum;printf("Programindicateswhethernumberis+veor-ve\n");printf("Enteranumberbetween-5and+5:");scanf("%d",&num);/*添加語句*/Switch(num){ case5: case4: case3: case2: case1:printf("thenumberis+ve\n");break; case0:printf("thenumberiszero\n");break; case-1:case-2: case-3:case-4:case-5:printf("thenumberis-ve\n");break;default:printf("thenumberisoutofrager\n");break; }getch();}(4)本程序是從鍵盤輸入一個10進(jìn)制數(shù),根據(jù)用戶要求輸出這個數(shù)對應(yīng)的16進(jìn)制、8進(jìn)制或者10進(jìn)制數(shù)。例:若用戶輸入“H”,則輸出這個數(shù)的16進(jìn)制數(shù)。任務(wù)1:添加if語句完成程序功能任務(wù)2:添加switch語句完成程序功能,注意對輸入無效數(shù)制的處理。比如輸入:X時,作何處理。#include<stdio.h>#include<stdio.h>main(){intnum;charchoice;printf("Programprintsoctalorhexequivalentofnumbersentered\n");printf("Enteraninteger:");scanf("%d",&num);printf("DoyouwantDecimal,OctalorHex(H,D,O):");fflush(stdin);choice=getchar();/*添加程序*/if(choice==’H’)printf(“Hexformofchoiceis%x\n”,chioce);elseif(choice==’D’)printf(“decimalformofchoiceis%d\n”,chioce);elseif(choice==’O’)printf(“Octalformofchoiceis%o\n”,chioce);elseprintf(“outputformerror”);getch();}#include<stdio.h>#include<stdio.h>main(){intnum;charchoice;printf("Programprintsoctalorhexequivalentofnumbersentered\n");printf("Enteraninteger:");scanf("%d",&num);printf("DoyouwantDecimal,OctalorHex(H,D,O):");fflush(stdin);choice=getchar();/*添加程序*/switch(chioce){ case‘H’:printf(“Hexformofchoiceis%x\n”,chioce);break; case‘D’:printf(“decimalformofchoiceis%d\n”,chioce);break; case3:printf(“Octalformofchoiceis%o\n”,chioce);break; default:printf(“outputformerrorbreak;”);getch();(5)給出一百分制成績,要求輸出成績等級’A’,’B’,’C’,’D’,’E’。90分以上為’A’,80-89分為’B’,70-79分為’C’,60-69分為’D’,60分以下為’E’。#include"stdio.h"main(){intcj;printf("inputscoreplease:");scanf("%d",&cj);if(cj>100||cj<0)printf("scoreerror");elseif(cj>=90)printf("scoreis%dgradeA",cj);elseif(cj>=80)printf("scoreis%dgradeB",cj);elseif(cj>=70)printf("scoreis%dgradeC",cj);elseif(cj>=60)printf("scoreis%dgradeD",cj);elseprintf("scoreis%dgradeE",cj);getch();}#include"stdio.h"main(){intcj;charch;printf("inputcj=");scanf("%d",&cj);switch((int)(cj/10)){case10:case9:ch='A';break;case8:ch='B';break;case7:ch='C';break;case6:ch='D';break;default:ch='E';break;}printf("grade%c",ch);getch();}(6)從鍵盤輸入三個數(shù),判斷這三個數(shù)是否能構(gòu)成三角形,如果是,輸出“thethreenumberscouldbethesidesofatriangle”,如果不是輸出“thethreenumberscould’tthesidesofatriangle”;并判斷這個三角形是不是直角三角形,如果是,輸出“thenumberscouldbethesidesofarightangletriangle”,如果不是,輸出“thenumberscould’tthesidesofarightangletriangle”。#include"Stdio.h"main(void){floata,b,c;printf("inputlengthofthreesidesoftheatriangle:");scanf("%f,%f,%f",&a,&b,&c);if(a+b>c&&b+c>a&&c+a>b){printf("thethreenumberscouldbethesidesofatriangle\n");if(a*a+b*b==c*c||b*b+c*c==a*a||c*c+a*a==b*b)printf("thenumberscouldbethesidesofarightangletriangle\n");elseprintf("thenumberscould'tthesidesofarightangletriangle\n");}elseprintf("thethreenumberscould'tthesidesofatriangle\n");getch();}第6次課循環(huán)1.寫一個程序讓用戶輸入一個1~12之間的數(shù),程序?qū)敵鲞@個數(shù)的乘法表。使用一個循環(huán)進(jìn)行計算并輸出一行,屏幕輸出應(yīng)該如下所示:Enteranumberbetween1and12:5Enteranumberbetween1and12:55timesmultiplicationtable1x5=52x5=103x5=154x5=205x5=256x5=307x5=358x5=409x5=4510x5=5011x5=5512x5=60#include"Stdio.h"main(void){inti,num;printf("Enteranumberbetween1and12:");scanf("%d",&num);printf("%dtimesmultiplicationtable\n",&num);for(i=1;i<=12;i++)printf("%dx%d=%d\n",i,num,i*num);getch();}2.添加循環(huán)語句,計算并輸出1~20之間的偶數(shù)的和。#include<stdio.h>#include<stdio.h>main(){inti,result;/*添加語句*/result=0;for(i=1;i<=20;i++)if(i%2==0)result+=i;printf("result=%d",result);return(0);}3.Break語句的使用為程序添加語句,使得輸入的數(shù)據(jù)在1~10之間時,退出循環(huán),否則輸出“thenumberisoutofrange”#include<stdio.h>#include<stdio.h>main(){intnum;while(1){printf("Enteranumberbetween1and10:");scanf("%d",&num);if(num>=1&&num<=10)break;elseprintf("thenumberisoutofrange\n");}printf("Yournumberwas%d\n",num);return(0);}任務(wù)1:添加程序,使得其在從注釋A開始到注釋C之間循環(huán),并提示用戶輸入“0”退出循環(huán);藍(lán)任務(wù)2:添加程序,使得注釋B到注釋C之間的語句在一個循環(huán)之內(nèi),從而判斷從num開始到1之間所有的素數(shù)。紅#include<stdio.h>#include<stdio.h>main(){inti,num;charisPrime;printf("Programcheckstoseeifanumberisprime\n");do{printf("Entertheinteger(0forendthecirculation):");/*A*/scanf("%d",&num);for(;num>=2;num--){isPrime=1;/*B*/for(i=num-1;i>1;i--){if(num%i==0) {isPrime=0;printf("Number%disdivisibleby%dandisnotprime\n",num,i);break;}}if(isPrime)printf("Number%disPRIME\n",num);}}while(num);/*C*/return(0);}5.求愛因斯坦數(shù)學(xué)題。有一條長階,若每步跨2階,則最后剩余1階;若每步跨3階,則最后剩2階;若每步跨5階,則最后剩4階;若每步跨6階,則最后剩5階;若每步跨7步,最后正好一階不剩。#include<stdio.h>main(){inti;i=1;while(1){if(i%2==1&&i%3==2&&i%5==4&&i%6==5&&i%7==0)break;i++;}printf("i=%d",i);getch();}6.計算斐波那契分?jǐn)?shù)序列前n項之和(n是某個常數(shù)).(2/1,3/2,5/3,8/5,13/8,21/13,......前一項的分子作為后一項的分母。前一項的分子、分母之和作為后一項的分子。)。#include<stdio.h>main(){inti,n,fz=2,fm=1,temp;floatsum=0;printf("n=");scanf("%d",&n);for(i=1;i<=n;i++){sum+=(float)fz/fm;temp=fz;fz+=fm;fm=temp;}printf("sum=%f",sum);getch();}7.問答題(1)下面循環(huán)錯在哪里?循環(huán)不執(zhí)行for(i=1;i>5;i++){x/=2;}(2)下面循環(huán)錯在哪里?循環(huán)不終止for(i=10;i>2;i++){x*=2;}(3)這個for循環(huán)的輸出結(jié)果是多少?3210-1for(i=3;i>-2;i--){printf("%d",i);}(4)這個while循環(huán)的輸出結(jié)果是多少?1491625i=0;while(i<5){i++;printf("%d",i*i);}(5)while循環(huán)錯在哪里?循環(huán)不終止i=0;while(i=10){i++;x*=2;}(6)完成下面的代碼使之可以輸出你的名字28次.for(i=3;i>-25;i--){printf("MynameisMary");綜合練習(xí)一:打印ASC碼表在這個項目中,我們想去打印所有的ASCII碼字符及相關(guān)聯(lián)的十進(jìn)制和二進(jìn)制值。關(guān)于ASCIIASCII表示美國信息交換標(biāo)準(zhǔn)碼,正如它的名字所暗示的,它是由美國的一個代碼指定的數(shù)字每個信息存儲或傳輸計算機來完成。這里是關(guān)于ASCII碼的重點:每個鍵盤字符都可以映射到數(shù)字從32~127;數(shù)字從0到31用于特殊字符,如制表符、鈴、換行符等;擴展ASCII范圍從128至255,含有專門128個字符,如邊框線等;擴展的ASCII字符是非標(biāo)準(zhǔn)化,可能會從一個操作系統(tǒng)類型到另一個(如PC和MAC與Linux);標(biāo)準(zhǔn)的ASCII是標(biāo)準(zhǔn)化的,同樣都可以跨越不同的操作系統(tǒng)類型。第一步寫出程序的基本框架任何C程序都具有以下的基本框架/*/**Title:PrintStandardandExtendedASCIIchart*Source:print_ascii.c*Author:SomeStudent*Version:1.0*/#include<stdio.h>main(){}第二步添加一個具有一個變量的循環(huán)語句我們想去打印所有的標(biāo)準(zhǔn)和擴展ASCII碼的值,這就意味著循環(huán)從0至255/*/**Title:PrintStandardandExtendedASCIIchart*Source:print_ascii.c*Author:NJCIT*Version:1.0*/#include<stdio.h>main(){inti;for(i=1;i<=255;i++){}return(0);}第三步不同數(shù)據(jù)格式打印變量值我們現(xiàn)在想使用十進(jìn)制和十六進(jìn)制和ASCII字符打印每個字符。/*/**Title:PrintStandardandExtendedASCIIchart*Source:print_ascii.c*Author:NJCIT*Version:1.0-Initialrelease*/#include<stdio.h>main(){inti;for(i=1;i<=255;i++){printf("%d%x%c\n",i,i,i);}return(0);}第四步打印標(biāo)題并將每列對齊現(xiàn)在,我們將每一個字符打印出來,使它變得整潔些并給每一欄加一個標(biāo)題,注意如何選擇適當(dāng)?shù)膶挾却蛴∶恳粰凇N覀円矔薷囊恍┰谖覀冊噲D打印一些如“n/a”的控制符代替一些ASCLL碼字符(這些字符是一些不可打印的字符)出現(xiàn)的問題。/**Title:PrintStandardandExtendedASCIIchart/**Title:PrintStandardandExtendedASCIIchart*Source:print_ascii.c*Author:NJCIT*Version:1.1*/#include<stdio.h>main(){inti;printf("DECHEXASCII\n");for(i=1;i<=255;i++){if(i<32)printf("%3d%3x%5s\n",i,i,"n/a");elseprintf("%3d%3x%5c\n",i,i,i);}return(0);}第五步使它更適應(yīng)屏幕現(xiàn)在你可能注意到,沒有太多的屏幕是被用來橫跨寬.不僅如此,你必須退回通過輸出緩沖區(qū)以便看到更低的數(shù)字.這樣效率更高,如何255行被分割成5欄52行的話就更容易閱讀。/*/**Title:PrintStandardandExtendedASCIIchart*Source:print_ascii.c*Author:NJCIT*Version:2.0*/#include<stdio.h>main(){inti;printf("|DECHEXASC|DECHEXASC|DECHEXASC");printf("|DECHEXASC|DECHEXASC|\n");for(i=1;i<=51;i++){if(i<32)printf("|%3d%3x%3s",i,i,"n/a");elseprintf("|%3d%3x%3c",i,i,i);printf("|%3d%3x%3c|%3d%3x%3c",i+51,i+51,i+51,i+102,i+102,i+102);printf("|%3d%3x%3c|%3d%3x%3c\n",i+153,i+153,i+153,i+204,i+204,i+204);}return(0);}第六步打印一些邊框現(xiàn)在,假如需要的話,我們有一個可以在一張A4紙上合理的打印ASCII的圖表,我們現(xiàn)在需要做的是給一張表格用一個擴展ASCII特殊字符制作一個邊框。/*/**Title:PrintStandardandExtendedASCIIchart*Source:print_ascii.c*Author:NJCIT*Version:2.1*/#include<stdio.h>main(){inti,a;for(a=0;a<71;a++)printf("%c",205);printf("\n");printf("|DECHEXASC|DECHEXASC|DECHEXASC");printf("|DECHEXASC|DECHEXASC|\n");for(a=0;a<71;a++)printf("%c",205);printf("\n");for(i=1;i<=51;i++){if(i<32)printf("|%3d%3x%3s",i,i,"n/a");elseprintf("|%3d%3x%3c",i,i,i);printf("|%3d%3x%3c|%3d%3x%3c",i+51,i+51,i+51,i+102,i+102,i+102);printf("|%3d%3x%3c|%3d%3x%3c|\n",i+153,i+153,i+153,i+204,i+204,i+204);}for(a=0;a<71;a++)printf("%c",205);printf("\n");return(0);}第七步將一些通用的功能轉(zhuǎn)換成函數(shù)(進(jìn)階)最后的階段是介紹一個簡單函數(shù)的概念,一個方法一個C源程序的一個模塊,這個模塊可以在項目的任何地方被調(diào)用(包括函數(shù)的內(nèi)部)。我們從最后一步了解到,一段代碼被重復(fù)使用了三次,這將是一個方法的理想條件。/*Title:PrintStandardandExtendedASCIIchart/*Title:PrintStandardandExtendedASCIIchart*Source:print_ascii.c*Author:NJCIT*Version:2.2*/#include<stdio.h>voidpretty_line(){inta;for(a=0;a<71;a++){printf("%c",205);}printf("\n");return;}main(){inti;/*Printthetopborderline*/pretty_line();/*Printtheheading*/printf("|DECHEXASC|DECHEXASC|DECHEXASC");printf("|DECHEXASC|DECHEXASC|\n");/*Printthemiddleborderline*/pretty_line();for(i=1;i<=51;i++){if(i<32)printf("|%3d%3x%3s",i,i,"n/a");elseprintf("|%3d%3x%3c",i,i,i);printf("|%3d%3x%3c|%3d%3x%3c",i+51,i+51,i+51,i+102,i+102,i+102);printf("|%3d%3x%3c|%3d%3x%3c|\n",i+153,i+153,i+153,i+204,i+204,i+204);}/*Printthebottomborderline*/pretty_line();return(0);}第八步擴展打印函數(shù)的邊界(進(jìn)階)這一點它看起來不錯,為了使用合適的拐角和分隔欄獲得一個專業(yè)的邊框,我們必須去使用一些擴展字符中的特殊字符。以下是三種類型的線條是必要的:頂線標(biāo)題下的線條(中間線條)底線一個方法可以有一個通過調(diào)用時傳入的參數(shù),參數(shù)可以是任何類型的(在topic2中討論),我們就指派一個整數(shù)類型作為第一個參數(shù),調(diào)用的線條類型如下:0是頂線1是中線2是底線現(xiàn)在,我們觀察每一個線條,除了第一個、最后一個和和分欄符,它們基本相同。我們將使用一個例子去選擇線條的樣式,通過一個變量來改變調(diào)用的左右中的符號。最后,我們可以使用嵌套的三個操作打印線條,實際打印的符號是否是根據(jù)第一條(a=0)、是否是最后一條(a=70)或者是否是欄分割位置(a%14==0)。/*/**Title:PrintStandardandExtendedASCIIchart*Source:print_ascii.c*Author:NJCIT*Version:3.0*/#include<stdio.h>/**Thisfunctionprintsalineaccrosthescreen.*Thelinecanbeoneofthefollowingtypes:*line_type=0-Thetopline*line_type=1-Themiddleline*line_type=2-thebottomline*/voidpretty_line(intline_type){charleft_char,right_char,mid_char;charext_char;inta;/*Setleft,rightandmidcharactersdependingonlinetype*/switch(line_type){case0:/*Topline*/left_char=213;right_char=184;mid_char=209;break;case1:/*Middleline*/left_char=198;right_char=181;mid_char=216;break;case2:/*Bottomline*/left_char=212;right_char=190;mid_char=207;break;default:/*Invalidargumentpassedtous.*/left_char=‘-’;right_char=‘-’;mid_char=‘+’;}for(a=0;a<71;a++){ext_char=(a==0)?left_char:(a==70)?right_char:(a%14==0)?mid_char:205;printf("%c",ext_char);}printf("\n");left_char=198;left_char=198;right_char=181;mid_char=216;break;case2:/*Bottomline*/left_char=212;right_char=190;mid_char=207;break;default:/*Invalidargumentpassedtous.*/left_char=‘-’;right_char=‘-’;mid_char=‘+’;}for(a=0;a<71;a++){ext_char=(a==0)?left_char:(a==70)?right_char:(a%14==0)?mid_char:205;printf("%c",ext_char);}printf("\n");return;}main(){inti;/*Printthetopborderline*/pretty_line(0);/*Printtheheading*/printf("|DECHEXASC|DECHEXASC|DECHEXASC");printf("|DECHEXASC|DECHEXASC|\n");/*Printthemiddleborderline*/pretty_line(1);/*PrinttheASCIItable*/for(i=1;i<=51;i++){if(i<32)printf("|%3d%3x%3s",i,i,"n/a");elseprintf("|%3d%3x%3c",i,i,i);printf("|%3d%3x%3c|%3d%3x%3c",i+51,i+51,i+51,i+102,i+102,i+102);printf("|%3d%3x%3c|%3d%3x%3c|\n",i+153,i+153,i+153,i+204,i+204,i+204);}/*Printthebottomborderline*/pretty_line(2);return(0);}最終結(jié)果第8次課1.編程題(1)將輸入數(shù)組a[n]中的n個元素,再輸入另一個數(shù)x,查看a中是否有值為x的元素,若有,則輸出其下標(biāo),若沒有,則輸出-1。#include"Stdio.h"#defineN10intmain(void){inta[N],x,i,k;printf("input%dinteger:",N);for(i=0;i<N;i++)scanf("%d",&a[i]);printf("inputx:");scanf("%d",&x);k=-1;for(i=0;i<N;i++)if(a[i]==x){k=i;printf("%5d",i);}if(k==-1)printf("%5d",k);getch();}(2)輸入10個互不相同的數(shù),將10個整數(shù)按升序排列輸出,并且奇數(shù)在前,偶數(shù)在后。如果輸入的10個數(shù)是:10987654321,則輸出(編程提示:可利用2個數(shù)組變量,一個用來存放輸入的整數(shù),輸入后,對這個數(shù)組進(jìn)行排序,然后將數(shù)據(jù)復(fù)制到另一個數(shù)組中,先復(fù)制奇數(shù)再復(fù)制偶數(shù))。#include"stdio.h"#defineN10main(){intf[10],a[10];inti,j,k;printf("input%dinteger:",N);for(i=0;i<N;i++)scanf("%d",&f[i]);for(i=0;i<=8;i++){for(j=i+1;j<10;j++)if(f[i]>f[j]){k=f[i];f[i]=f[j];f[j]=k;}}for(i=0;i<=9;i++)printf("%d\t",f[i]);for(i=0,j=0;i<=9;i++)if(f[i]%2==1)a[j++]=f[i];for(i=0;i<=9;i++)if(f[i]%2==0)a[j++]=f[i];for(i=0;i<=9;i++)printf("%d\t",a[i]);getch();}(3)求數(shù)組inta[n]中奇數(shù)的個數(shù)和平均值,以及偶數(shù)個數(shù)和平均值。#include"Stdio.h"#defineN10intmain(void){inta[N],i,num_o=0,num_e=0,sum_o=0,sum_e=0;;printf("input%dinteger:",N);for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++)if(a[i]%2==0){num_e++;sum_e+=a[i];}else{num_o++;sum_o+=a[i];}printf("num_e=%d,av_e=%f,num_o=%d,av_o=%f",num_e,(float)sum_e/num_e,num_o,(float)sum_o/num_o);getch();}編寫一個程序,其功能是給一維數(shù)組a輸入任意6個整數(shù),假設(shè)為:574891,然后建立一個具有以下內(nèi)容的方陳,并打印出來(屏幕輸出)。

574891

157489

915748

891574

489157

748915#include"stdio.h"#defineN6intmain(void){inta[N],i,j;printf("input%dinteger:",N);for(i=0;i<N;i++)scanf("%d",&a[i]);for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%d\t",a[(j-i+N)%N]);printf("\n");}getch();}找出一個二位數(shù)組中的鞍點,即該位置上的元素在該行上最大,在該列上最小,也可能沒有鞍點。#include"Stdio.h"#defineM5#defineN5intmain(void){inta[M][N],i,j,k,line,colum;for(i=0;i<M;i++)for(j=0;j<N;j++){printf("a[%d][%d]=",i,j);scanf("%d",&a[i][j]);}for(i=0;i<M;i++){colum=0;for(j=1;j<N;j++)if(a[i][j]>a[i][colum])colum=j;line=i;for(k=0;k<M;k++)if(a[k][colum]<a[line][colum])line=k;if(line==i)printf("a[%d][%d]=%d",line,colum,a[line][colum]);}getch();2.選擇題(1)在C語言中,引用數(shù)組元素時,其數(shù)組下標(biāo)的數(shù)據(jù)類型允許是C。A)整型常量B)整型表達(dá)式C)整形常量或整形表達(dá)式C)任何類型的表達(dá)式(2)以下對一維整型數(shù)組a的正確說明是D。A)inta(10);B)intn=10,a[n];C)intn;D)#defineSIZE10

scanf(“%d”,&n);inta[SIZE];inta[n];(3)若有定義:inta[10],則對數(shù)組a元素的正確引用是D。A)a[10]B)a[3.5]C)a(5)D)a[10-10](4)以下能對一維數(shù)組a進(jìn)行正確初始化的語句是A。A)inta[10]={0,0,0,0,0};B)inta[10]={};C)inta[]={0};D)inta[10]={10*1};(5)若有定義:inta[3][4],則對數(shù)組a元素的正確引用是。無A)a[2][4]B)a[1,3]C)a(5)D)a[10-10](6)以下能對二維數(shù)組a進(jìn)行正確初始化的語句是B。A)inta[2][]={{1,0,1},{5,2,3}};B)inta[][3]={{1,2,3},{4,5,6}};C)inta[2][4]={{1,2,3},{4,5},{6}};D)inta[][3]={{1,0,1},{},{1,1}};(7)若有說明:inta[3][4]={0};則下面正確的敘述是。無A)只有元素a[0][0]可得到初值0B)此說明語句不正確C)數(shù)組a中各元

溫馨提示

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

評論

0/150

提交評論