



版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.以下程序的運(yùn)行結(jié)果是:#include<stdio.h>intmain()(voidfunfinti,intj);inti,x,j;i=2;x=5;j=7;fun(j,6);printf("i=%d;j=%d;x=%d\n"J/j/x);return0;)voidfun(inti,intj)(intx=7;printf("i=%d;j=%d;x=%d\n"JJ,x);}答案為:i=/;j=6;x=7i=2;j=7;x=5這題是調(diào)用函數(shù)類型,錯(cuò)誤原因:當(dāng)main中調(diào)用函數(shù),即使沒有返回值,但調(diào)用完了,還是要執(zhí)行從調(diào)用函數(shù)之后的語句的。.分析下列程序,寫出運(yùn)行結(jié)果:#include<stdio.h>intabc(intx,inty);intmain()(inta=24,b=16,c;c=abc(a,b);printf("%d",c);printf("\n");return0;}intabc(intx,inty)(intt;while(){t=x%y;x=y;y=t;)returnt;}答案為:〇注釋:while()括弧里面其實(shí)是變量y>0.分析下列程序,寫出運(yùn)行結(jié)果:#include<stdio.h>intw=3;voidmain()(intfun(intk);intw=10;printf("%d\n",fun(5)*w);}intfun(intk)(if(k==O)returnw;elsereturn(fun(k-l)*k);//else是可有可無的}答案為:3600〇注釋:掉用函數(shù)的返回值是返回都函數(shù)調(diào)用的地方,像這道題最后遞歸調(diào)用的時(shí)候返回的值是到main中,最后是f(0)時(shí)返回w,此時(shí)的w是外部變量,因?yàn)樵谡{(diào)用函數(shù)內(nèi)部沒有定義w,與此對(duì)比的是主函數(shù)中定義了W,所以主函數(shù)要用W就用主函數(shù)里面的值,而調(diào)用函數(shù)中只能用外部變量了,最終是120?主函數(shù)中的w=l0?調(diào)用函數(shù)中的返回w=3.結(jié)果為3600..分析下列程序,寫出運(yùn)行結(jié)果:#include<stdio.h>intd=l;f(intp)(staticintd=5;d+=p;printf("%d\n",d);return(d);}voidmain()(inta=3;printf("%d\n",f(a+f(d)));}答案為:6 15 15注釋:精確理解靜態(tài)局部變量的含義!!是在調(diào)用函數(shù)的時(shí)候,當(dāng)?shù)诙位蛳乱淮握{(diào)用的時(shí)候,仍然沿用上ー次的變量結(jié)果。不管被調(diào)用函數(shù)是否在調(diào)用,靜態(tài)局部變量所占的存儲(chǔ)空間是不釋放的。舉例!!!靜態(tài)局部變量不是在調(diào)用函數(shù),與一般的變量的作用是ー樣#include<stdio.h>Viodmain()(Statica=5;Intb=3;A=a+7Printf("%d\n",a);A=a+b;Printf("%d\n",a);)7分析下列程序,寫出運(yùn)行結(jié)果:#include<stdio.h>voidmain()(voidsort(inta[5]);inta[5]={5,10,-7,3,7},i;sort(a);for(i=0;i<=4;i++)printf("%5d\n",a[i]);}voidsort(inta[5])(intfor(i=0;i<4;i++)for(j=0;j<4-i;j++)if(aU]>aU+l]){t=-a[j];a[j]=a[j+l];a[j+l]=t;}}答案為:-10 3 -7-5 7注釋:本題采用了冒泡法排序的方法,錯(cuò)誤的地方在于:計(jì)算的多了,即是:當(dāng)i=0時(shí),j=0 12 3,當(dāng)i=l,j=0 1 2,當(dāng)i=2,j=01,當(dāng)i=3,j=0要一步ー步來,詳細(xì)的記錄出每ー步的結(jié)果。每當(dāng)Ij為一個(gè)值的時(shí)候,只計(jì)算一次,不能計(jì)算過多8分析下列程序,寫出運(yùn)行結(jié)果:#include<stdio.h>voidmain()(voidsort(inta[5]);inta[5]={9,6,8,3,;},i;sort(a);for(i=0;i<=4;i++)printf("%5d\n",a[i]);)voidsort(inta[5])(inti,j,pzt;for(j=0;j<4;j++)(P=j;for(i=j;i<=4;i++)if(a[i]<a[p])(P=i;t=a[p];a[p]=a[j];a[j]=t;)}}答案為:-1 36 8 9注釋:本題采用了選擇法排序,這里要區(qū)別選擇法排序與冒泡法排序之間的異同點(diǎn)相同點(diǎn)在于,兩者都是用來排序的,實(shí)現(xiàn)了降序和升序的簡(jiǎn)單操作。冒泡法排序可以理解成真正冒泡那樣,兩個(gè)相鄰的數(shù)據(jù)之間進(jìn)行比較,如果滿足條件就進(jìn)行相應(yīng)的操作,而選擇法排序的總思想是:找到最小或最大的數(shù)據(jù)(升序就是最小,,,降序就找最大的數(shù)據(jù)),讓它占據(jù)第一個(gè)位置,然后在剩下的數(shù)據(jù)里再找出最小或最大的數(shù)據(jù),讓它占據(jù)第二個(gè)位置以此類推即可。9分析下列程序,寫出運(yùn)行結(jié)果:floatfun(floatx[],intnum)(inti;floatave,s=0;for(i=0;i<num;i++)s+=x[i];
ave=s/num;return(ave);}#include<stdio.h>voidmain()(floata[20],t;inti,n;for(i=0;i<20;i++)(scanf("%f",&t);a[i]=t;}printf("average=%f\n",fun(a,20));}注釋:本題的作用是:運(yùn)用fun函數(shù)來計(jì)算20個(gè)學(xué)生的平均成績(jī)的。這里要注意了,調(diào)用函數(shù)時(shí)直接是函數(shù)名(實(shí)參)就行了。不需要其他的任何東西。尤其是與調(diào)用函數(shù)的首部那樣,每ー樣都寫,那樣會(huì)很麻煩的?10已知有聲明"intx=5,y;floatz=2”,以下表達(dá)式中語法正確的是:CA:y=x%zB:x>0?y=x:y=-x;A:y=x%zB:x>0?y=x:y=-x;C: y=x/2=z D:y=x=z/2;10. 已知有聲明"charch;inta;",執(zhí)行語句scanf("%c%dn,&ch,&a);時(shí)如果從鍵盤輸入的數(shù)據(jù)是“123”,則變量a得到的值是:23?11.分析下列程序,寫出運(yùn)行結(jié)果:#include<stdio.h>voidmain()(inta=0,b=l,c=2;if(a>0&&++b>0)C++;elsec-;printf("%d\n%d\n%d\n"za,b,c);}答案:0 1 1稻!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!12〇分析下列程序,寫出運(yùn)行結(jié)果:#include<stdio.h>intfun(intx)staticintc,y;
if(c==O)y=i;elsey=y+x;C++;returny;}voidmain()(inti;for(i=0;i<2;i++)printf("%d\n",fun(2));}答案為:1 3検!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!13分析下列程序,寫出運(yùn)行結(jié)果:#include<stdio.h>voidfun(int*a,intb)while(b>0)〃整個(gè)執(zhí)行之后還要判斷!!!while(b>0)〃整個(gè)執(zhí)行之后還要判斷!!!*a+=b;b--;}}voidmain()(intx=0,y=3;fun(&x,y);printf("%d\n%d\n",x,y);}答案為:63注釋:在調(diào)用函數(shù)中,滿足條件時(shí)就執(zhí)行,但是執(zhí)行之后還要繼續(xù)判斷條件是否滿足,本題就是沒有第二次判斷條件是否符合,從而導(dǎo)致答案錯(cuò)誤.函數(shù)gongyu的作用是求整數(shù)numl和num2的最大公約數(shù),并返回該值。gongyu(intnuml,intnum2)(inttemp,a,b;if(numl《num2)temp=numl;numl=num2;num2=temp;)a=numl;b=num2;while( b!=0 )(temp=a%b;a=b;b=temp;)return(a);}.運(yùn)行結(jié)果為:#include<stdio.h>f(intxjnty,intz){z=x*x+y*y}viodmian()inta=31;f(5,2,a)printf("%d",a);}答案為:31注釋:因?yàn)闆]有返回值,建議要認(rèn)真看題!??!.已有以下數(shù)組定義和f函數(shù)調(diào)用語句,則在f函數(shù)的說明中,對(duì)形參數(shù)組的說明arry的錯(cuò)誤定義方式為:f(intarry[3][])Inta[3][4];F(a);注釋:不會(huì)!?。?!. 假定int類型變量占用兩個(gè)字節(jié),其定義:intx[10]={0,2,4};,則數(shù)組x在內(nèi)存中占用字節(jié)數(shù)為:20注釋:數(shù)組的長(zhǎng)度和類型確定后,其再內(nèi)存中的大小就確定了。. 以下對(duì)ー維數(shù)組a進(jìn)行正確初始化的語句是:DA:inta[10]=(0,0,0,0z0); B:inta[10]={};C:inta[10]={10*l}; D:inta[]={0};注釋. 若有以下說明:#include<stdio.h>voidmian()inta[12]={l,2,3,4,5,6,7,8,9,10,ll,12};
charc='a',d,g;printf("%d\n",a[]);).則數(shù)值為4的表達(dá)式為:B:a['d'-c]D:a[4]A:a['d'-'B:a['d'-c]D:a[4]C:a[g-c]ン擬不 會(huì)!?。。。。。。。。。。?輸出的結(jié)果是:26#include<stdio.h>intmain()(inta=0,i;for(i=l;i<5;i++)(switch(i){case0:case1:case2:a+=3;default:a+=5;printf("%d\n",a);return0;}注釋:這里使用的是switch語句,那么這里的重點(diǎn)就是break語句的運(yùn)用啦,我們可以看到case語句后面都沒有break,這就要當(dāng)i為1的時(shí)候,要執(zhí)行easel后面的,case2后面的,直至到default后面的語句,當(dāng)i為2的時(shí)候同樣的執(zhí)行方法,所以最后的結(jié)果是26..輸出結(jié)果為:1010 9 1#include<stdio.h>intmain()printf("%d%d\n"/x-,y);return0;}注釋:這里要理解for語句的執(zhí)行過程,那就是先執(zhí)行a的部分,實(shí)際上是賦值操作,然后判斷a部分是否成立即是b部分,如果成立了,就執(zhí)行下面的函數(shù)體部分,最后再執(zhí)行c部分的語句,c部分最常見的就是使自身加1.但也不能排除其他的操作。注意這里的函數(shù)體其實(shí)是在輸出語句過程中體現(xiàn)的,而且此時(shí)要注意,因?yàn)椴怀R?所以要特別注意啦!!如果把題目再改一下為#include<stdio.h>intmain()(intx=10,y=10,i;for(i=0;x>8;y=++i)printf("%d%d\n",x-,y);printf("%d%d\n",x-/y);return0;}其結(jié)果就是為1010 9 1 8 2.輸出的結(jié)果是:41#include<stdio.h>intmain()(intk,i;for(i=0,k=l;i<5;i++){i+=k;k+=20;}printf("%d\n",k);return0;}注釋:此處要說明的一下是:如果輸出i的值就是24這道題的主要障礙是i不只是在自身加1的時(shí)候變化的,還有在函數(shù)體的時(shí)候也要變,當(dāng)i等于〇時(shí),執(zhí)行函數(shù)體得i=l,k=21,接下來就是自身加1了,加了1,i就等于2,然后執(zhí)行和之前的ー樣的操作。得到i=23,k=41.再自身加!判斷就不符合要求了,此時(shí)i=24.k=41.即是輸出的結(jié)果!??!.分析下列程序,寫出運(yùn)行結(jié)果:#include<stdio.h>intd=l;voidfun(intp)(intd;d+=p++;printf("%d"zd);;}voidmian()(inta=3;fun(a);d+=a++;printf("%d",d);}不會(huì)???????????.分析下列程序,寫出運(yùn)行結(jié)果:Longfib(intn)(lf(n>2)Return(fib(n-l)+fib(n-2));Elsereturn(2);}Main()(Printf(“%d\n”,fib(3););}答案為:4錯(cuò)誤原因:在調(diào)用函數(shù)內(nèi)if條件的后面有兩個(gè)fib,其返回值都是2.輸出結(jié)果是:yzz#include<stdio.h>intmain(){inti,a=l,c=l;for(i=0;i<2;i++)switch(a++,a*c)case2:printf("y");case3:printf("z\n");break;default:printf("abc\n");)return0;}注釋:至今還不會(huì)!??!w問題在于:switch()括號(hào)里有兩個(gè)變量的東西怎么辦??.運(yùn)行結(jié)果是:4#include<stdio.h>intmain(){inti,j,a=0;for(i=0;i<2;i++)(for(j=0;j<4;j++)(if(j%2)break;a++;a++;printf("%d\n",a);return0;}注釋:這里要說明的一點(diǎn)就是,if()語句,括號(hào)里面的j%2就相當(dāng)于j%2==l0這一點(diǎn)要時(shí)刻記住!!.從鍵盤輸入left?,則輸出結(jié)果是:mfgu#include<stdio.h>intmain()(charc;while((c=getchar())!='?')putchar(++c);return0;}、流1不會(huì)!!!!!!!!!!!!!!.下面程序的輸出結(jié)果是:1 20#include<stdio.h>intmain()inti,y,x;x=y=i=0;do++i;if(i%2!=0)(x=x+i;i++;}y=y+i++;}while(i<=7);printf("%d%d\n",x,y);return0;}注釋:這ー題主要的注意點(diǎn)在:要細(xì)心,一步步來!!還有就是++i和i++兩種不同的表達(dá).從鍵盤輸入1234,輸出的結(jié)果為:4321.#include<stdio.h>intmain()intn;scanf("%d",&n);while(n!=O)(printf("%d",n%10);n=n/10;}return0;}注釋:本題的錯(cuò)誤在于:printf語句當(dāng)中,n%10并沒有再賦值給n.也就是說,當(dāng)n=1234%10.等于4.然后n=n/10,就等于123,然后,再和上一次一樣,進(jìn)行同樣的運(yùn)算!!.程序運(yùn)行后輸出的結(jié)果是:程序進(jìn)入死循環(huán)#include<stdio.h>intmain(){inti=0,x=0;for(;;)(if(i%7==0)continue;if(i>8)break;i++;x+=i;printf("%d\n",x);return0;}注釋:這里會(huì)形成死循環(huán)的最主要原因是:在for語句的第三個(gè)表達(dá)式是空,而在下面也沒有進(jìn)行進(jìn)ー步追加說明或操作!!本題的操作就在if語句和continue之間來回的交換。如果題目稍微的改一下,變成:#include<stdio.h>intmain(){inti=0zx=0;for(;;i++)(if(i%7==0)continue;if(i>8)break;i++;x+=i;}printf("%d\n",x);return0;}則結(jié)果就是21..程序運(yùn)行后的輸出結(jié)果是:2#include<stdio.h>intmain(){inta=3,b=4,c=5zd=2;if(a>b)if(b>c)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",d);return0;}注釋:就相當(dāng)于:#include<stdio.h>intmain(){inta=3,b=4,c=5,d=2;if(b>c)printf("%d",d+++1);elseprintf("%d",++d+1);}elseprintf("%d\n",d);return0;}.以下程序運(yùn)行的結(jié)果是:51#include<stdio.h>intmain(){inta,b;for(a=l,b=l;a<=50;a++)(if(b>=20)break;if(b%2==l)continue;b+=5;printf("%d\n",a);return0;}這里相當(dāng)于進(jìn)行相同的操作,即是b+=5;這條語句永遠(yuǎn)不執(zhí)行。所以b=l,是永遠(yuǎn)正確的。直至a=51的時(shí)候,結(jié)束整個(gè)循環(huán)。然后輸出a的值當(dāng)然是51啦!!.輸入abcdef,輸出結(jié)果為:非字母數(shù)字字符#include<stdio.h>intmain()(charx;for(;x=(getchar()!=,\n');)putchar(x-32);return0;}流I不會(huì)!!!!!!!.從鍵盤輸入goodafternooon!,輸出的結(jié)果為:10,4#include<stdio.h>intmain(){inta=0,b=0;charch;while((ch=getchar())!='!')switch(ch){case'g':default:a++;break;case'o':b++;}printf("%d,%d\n",a,b);return0;}注釋:強(qiáng)調(diào)一點(diǎn)就是:easel:case2: 等在地位上是平等的,ー上來就要找是否有符合要求的存在,要是存在就按其后面的語句執(zhí)行。要是沒有,就按從上向下的順序,尤其要注意default在什么地方。還有一點(diǎn)要特別注意的是:要是找不到符合要求的就執(zhí)行default之后的語句。這就是本題的關(guān)鍵所在!!!.輸出的結(jié)果為:無限循環(huán)#include<stdio.h>intmain()inti,k;for(i=0,k=-l;k=l;i++,k++)printf("****\n");return0;}注舉不 會(huì)!!!!!!!!!.設(shè)有定義:inta=l,*p=&a;floatb=2.0;charc='A';以下不合法的運(yùn)算是:A:p++;B:a--;C:b++;D:c--;注釋:編譯的時(shí)候沒有出現(xiàn)錯(cuò)誤!!!.輸出的結(jié)果為:1#include<stdio.h>intmain(){inti,k;i=ll;k=l/3*k++;printf("%d\n",k);return0;}注釋:這里要強(qiáng)調(diào)的是:l/3*k++的的運(yùn)算順序是從左到右的,但1/3的結(jié)果為〇,再乘以任何數(shù)都是〇,最后再加上1..以下賦值不正確的是:B#include<stdio.h>intmain(){charc;c= ;printf("%d\n",c);return0;}A:'12'B:'\0X255'C:'\255'D:'a'注釋:這里只有B賦值是錯(cuò)誤的A:輸出的是50;C:輸出的是ー83D:輸出的是97禍!!!!!!!.設(shè)有以下定義:inta=0;doubleb=1.25;charc='e';#defineD2;則下面語句中錯(cuò)誤的是:A:a++;B:b++;C:c++;D:D++;本題的正確答案是:D注釋:主要要說明:intchardouble都是可以自身加1的。而宏定義就是不可以。在這里還要強(qiáng)調(diào)一點(diǎn)就是定義常數(shù)和宏定義是不一樣的,要特別注意!?。?輸出的結(jié)果是:32#include<stdio.h>intmain()(intx,i,j,k;x=(i=4,j=16,k=32);printf("%d\n",x);return0;注釋:經(jīng)過各種不同的試驗(yàn),得出x的值取決于第三個(gè)變量的值,即是最后ー個(gè)變量的值!!強(qiáng)調(diào)一點(diǎn)就是不管括號(hào)里面有多少個(gè)變量,都是娶最后ー個(gè)變量的值!!再如:#include<stdio.h>intmain()inta,b,c,num;num=(a=4,b=a+4,c=a+b);printf("%d\n",num);return0;}的結(jié)果為:12。.輸出結(jié)果為:2#include<stdio.h>intmain()intnum;num=2,3/4,1;printf("%d\n",num);return0;}這里與上面的是截然相反的,是取決于第一個(gè)數(shù)。不管后面有多少數(shù),都是取決于第一個(gè)數(shù)!!!.輸出結(jié)果為:sayhi!#include<stdio.h>intmain()(printfC'tXbsayVhiWXbiX'Xn");return0;}注釋:這里面肯定有有一些是不必要的,可以去掉的!!!但現(xiàn)在還不知道!!!夜!!!!!!!!.輸出結(jié)果為:32768#include<stdio.h>intmain(){intx=32767;x=x+l;printf("%d\n";x);return0;注釋:不會(huì),是因?yàn)橛洸坏胕nt的范圍!!!.輸出的結(jié)果為:60#include<stdio.h>intmain(){intx=5;x+=x-=-x*x;printf("%d\n",x);return0;}注釋:紅色字體的部分要以等于號(hào)為單位,從右向左的順序來計(jì)算!!.輸出的結(jié)果為:a=6,b=6,c=ll.#include<stdio.h>intmain()(inta=5,b=6,c;printf("a=%d,b=%d,c=%d\n",++a,b++,c=a+++b);return0;}相當(dāng)于下面的這段程序代碼:#include<stdio.h>intmain()inta=5,b=6,c;printf("a=%d,b=%d,c=%d\n",++a,b++/c=(a++)+b);return0;}注釋:尤其注意紅色字體的部分。.輸出的結(jié)果為:-3.29e+001#include<stdio.h>intmain()(doublex;x=-32.876554;printf("%-6.2e\n",x);return0;}注釋:要搞清楚輸出的格式,首先是負(fù)號(hào)是表示從左往右,接著6是表示輸出的數(shù)據(jù)占6個(gè)域,點(diǎn)2應(yīng)該表示的是保留兩位小數(shù)。最后的e就不知道上面意思啦!! 要注意啦!!.輸出的結(jié)果為:*3.140000,3.142*#include<stdio.h>intmain()printf("*%f,%4.3f*\n",3.14,3.1415);return0;}注釋:與上題類似!!.設(shè)有“inta”, 以下不能正確表達(dá)數(shù)學(xué)關(guān)系10<a<15的表達(dá)式的是:CA:10<a<15 B:a==ll11a==1211a==1311a==14C:a>10&&a<15 D:!(a<=10&&!(a>=15))注釋:這里A肯定是可以的,而B呢,因?yàn)閍是整形,所以也是可以的現(xiàn)在來看C關(guān)于邏輯運(yùn)算兩邊的運(yùn)行結(jié)果只能是1或0,具體來看,當(dāng)a為8的時(shí)候,a>10嗎?不對(duì),所以左邊的表達(dá)式的值為〇,看右邊的表達(dá)式a<15嗎?對(duì)的。所以表達(dá)式的值為1,然后再看邏輯運(yùn)算符左右兩邊的,綜合得到最終的結(jié)果為0.那么關(guān)于D呢,慢慢看是可以看出來的!!在此不多累述!!.若有條件表達(dá)式(x)?r:b+a,則以下表達(dá)式中能完全等價(jià)于表達(dá)式(x)的是:A:(x==l) B:(x!=l)C:(x==O) D:(x!=0)參考答案為:D禍!!!!!!.輸出的結(jié)果為:intmain()inta=l,b=2,c=3;if(a=O)printf("%d\n",b);elseprintf("%d\n",c);return0;}注釋:尤其注意紅色字體!!表達(dá)式a=0的最終結(jié)果的值為0,所以就沒有執(zhí)行if后面的語句!!再來ー個(gè)例題:#include<stdio.h>intmain(){intx=l,y=l,z=l;if(x=y+z)printf("$$$$");elseprintfド####");return0;}稻!!!!!!!!!.輸出的結(jié)果為:3#include<stdio.h>intmain(){inta,b,c,x;a=b=c=O;x=l;if(!a)x-;elseif(b)x+=4;if(c)x-=2;elsex+=3;printf("%d\n",x);return0;}注釋:這里強(qiáng)調(diào)的一點(diǎn)就是if(a)就相當(dāng)于if(a==l)o特此提醒!!.輸出的結(jié)果為:有語法錯(cuò)誤,不能通過編譯#include<stdio.h>intmain()(intx=l,y=2;if(x>y)x=y;y=3;elsex++;Y+=l;printf("%d,%d",x,y);return0;}注釋:這里的主要原因是:if后面沒有大括號(hào),是兩條語句,如果加±,就形成了復(fù)合語句這樣在編譯的時(shí)候就不會(huì)出現(xiàn)語法錯(cuò)誤啦!!換句話說:就是else不能和if配對(duì)了!!.以下不能用作用戶標(biāo)識(shí)符的是:BA:-26 B:caseC:scanf D:Doublei.注釋:c語言中的標(biāo)識(shí)符有三類:關(guān)鍵字、預(yù)定義標(biāo)識(shí)符、用戶標(biāo)識(shí)符而且我們平時(shí)所說的是用戶標(biāo)識(shí)符2、C中的scanf是c語言提供的數(shù)據(jù)輸入庫(kù)函數(shù)名,屬于預(yù)定義標(biāo)識(shí)符,允許作為用戶標(biāo)識(shí)符,但是所在程序中就不能再將scanf函數(shù)作為輸入函數(shù),因此最好避免。3、case是作為c語言中的關(guān)鍵字,所以不能作為用戶標(biāo)識(shí)符D選項(xiàng)中的D〇ub1e與doub1e是不一樣的!!!兩者是沒有關(guān)系!??!.若t已經(jīng)定義為d。ub1e類型,表達(dá)式:t=l,t++,t+5的值是:7.0注釋:逗號(hào)表達(dá)式的運(yùn)算規(guī)則是:從左往右的順序進(jìn)行;最后一個(gè)表達(dá)式的值就是逗號(hào)表達(dá)式的值。.以下四組常量中,都是合法常量的是:AA:-1 12. 0177777 0xffffB:986,012 一16〇8 0 〇?〇C:e3 .E5 -5e3.5 _0.35*10?字母D:01x0778 0xgf oXabci.注釋:在C語言中,可以用來表示數(shù)值的常量有整形常量和實(shí)型常量。整形常量可以用十進(jìn)制數(shù)表示,由0?9組成,各數(shù)字之間不允許有空格及其他符號(hào);還可以用八進(jìn)制或十六進(jìn)制形式表示,合法的ハ進(jìn)制數(shù)只含有數(shù)字1?7,并且第一個(gè)數(shù)字必須是數(shù)字0;合法的十六進(jìn)制數(shù)只含有數(shù)字1?9,字母a?f(A-F),并且要用0x或(0X)開頭。在c語言中,整形常量和實(shí)型常量從字面上即可區(qū)分,整形常量只用有效數(shù)字表示,且不帶小數(shù)點(diǎn):實(shí)型常量可以用帶小數(shù)點(diǎn)的方式表示,也可以用指數(shù)形式表示!??!在B中,第三、四個(gè)值是合法常量,第一、二中因數(shù)字之間有逗號(hào)或空格,所以是非法常量。在C選項(xiàng)中,4個(gè)都是非法常量,用指數(shù)形式表示實(shí)型常量時(shí),e或E之前一定要有數(shù)字,指數(shù)部分必須為整數(shù)C語言允許實(shí)型小數(shù)點(diǎn)后不加寫0.在C選項(xiàng)中,第一、二個(gè)值雖然是以〇開頭,但是數(shù)字中都含有非法ハ進(jìn)制數(shù)字x和8,第三個(gè)值雖然是以0X開頭。但數(shù)字中含有非法十六進(jìn)制數(shù)字g,第四個(gè)值以字母。開頭,所以是非法的!!!57.若題中個(gè)變量都已經(jīng)正確定義并賦值,下面符合c語法的表達(dá)式的是:BA:a%=7.6; B:a++,a=7+b+cC:int(12.3)%4 D:a=c+b=a+7注釋:A選項(xiàng)中錯(cuò)誤有二,ー是:后面的逗號(hào),這就成了語句了,而不是是表達(dá)式;二是:取余運(yùn)算符的兩邊運(yùn)算對(duì)象都應(yīng)是整形數(shù)據(jù),而不是實(shí)型數(shù)據(jù)。C:int應(yīng)該加上括號(hào)D:在賦值號(hào)的左邊存在著表達(dá)式,這是錯(cuò)誤的!!.已有定義語句;inta=l,b=2,c=3;floatd=4;以下能正確表示數(shù)學(xué)式分子是a,分母是(b+c)*d;的C語言表達(dá)式是:DA:a/(b+c)*d B:a/(b+c)*l/dC:a/(b+c)/d D:a/d/(b+c)注釋:C語言算術(shù)表達(dá)式是不可以用分?jǐn)?shù)形式來表示的,可以通過使用合法的運(yùn)算符、添加必要的圓括號(hào)。雙目運(yùn)算符兩側(cè)運(yùn)算數(shù)的類型必須相同,且結(jié)果也是與其類型相同。當(dāng)不一致的時(shí)候先進(jìn)行轉(zhuǎn)換,然后再進(jìn)行計(jì)算。A選項(xiàng)中,明顯是錯(cuò)誤的!B選項(xiàng)中,先計(jì)算b+c的值,其類型是int,接著用a對(duì)其進(jìn)行取整,都到的結(jié)果仍然是int類型,為〇.然后再乘以1仍為int類型的〇.最后再對(duì)d進(jìn)行取整,因?yàn)閐是float類型,所以在此之前先進(jìn)行類型轉(zhuǎn)換,兩者都為double;果就是為double類型為0.0;C選項(xiàng)中,錯(cuò)誤是和B中一樣的,現(xiàn)在來說明一下D選項(xiàng)中的問題:首先計(jì)算b+c的值,然后運(yùn)算符的優(yōu)越性都相同,就只得從左往右啦!!然后要因?yàn)轭愋筒煌枰M(jìn)行類型轉(zhuǎn)換啦!最后再進(jìn)行計(jì)算!!.已有定義:floatx=4.6;表達(dá)式x++=x+l的運(yùn)算結(jié)果是:編譯時(shí)出現(xiàn)錯(cuò)誤。注釋:賦值號(hào)左邊的必須是代表某ー個(gè)存儲(chǔ)單元的替代名稱。但決不能是表達(dá)式或常量。而在本例中賦值號(hào)左邊的是x++是屬于表達(dá)式的,所以這個(gè)是錯(cuò)誤的60,已有定義,intx=3;則表達(dá)式:x=x+1.78的值是:4注釋:雙目運(yùn)算符的兩側(cè)運(yùn)算對(duì)象的類型要是不一致的話就要進(jìn)行轉(zhuǎn)換,而本題只有一個(gè)變量。不能將x從int向double轉(zhuǎn)換,因?yàn)檫@就和前面的intx相互矛盾啦!!所以只有將1.78進(jìn)行轉(zhuǎn)換!!61.表達(dá)式:(a=b=4,a+l,b+l,a+b)的值為8注釋:這里不要看a+l,b+l啦!!因?yàn)榧词沁M(jìn)行了這項(xiàng)操作,其操縱過所得結(jié)果也沒有被保存在任何ー個(gè)變量中,就相當(dāng)于沒有進(jìn)行這項(xiàng)操作一樣!!.定義:intx;,執(zhí)行以下語句后輸出的結(jié)果是:%d,%3intx,y;x=3;V=5;printf("%%d,%%%d\n",x/y);注釋:C語言規(guī)定,在格式控制串中若出現(xiàn)兩個(gè)連續(xù)的%字符,系統(tǒng)將視為一個(gè)%字符進(jìn)行輸出,對(duì)照以上printf語句中的%%d,程序先輸出ー個(gè)%,其后的d和逗號(hào)只作為格式串中的兩個(gè)字符,因此輸出:%d,。接著對(duì)應(yīng)于“%%%d”,程序取前兩個(gè)%字符輸出一個(gè)字符:%,其后的“%d”作為第一個(gè)輸出項(xiàng)x的格式符,因此輸出的結(jié)果為:%3,第二個(gè)輸出項(xiàng)y因?yàn)闆]有對(duì)應(yīng)的格式符而無法輸出!!.有以下程序段:Inta=0,b=0,c=0;Scanf(“%d”,&a);Scanf(“%d”,&b);Scanf(“%d”,&c);
執(zhí)行以上語句時(shí),從鍵盤輸入:22執(zhí)行以上語句時(shí),從鍵盤輸入:226.5則變量a的值:22 b的值:6c的值:0注釋:注意:在進(jìn)行輸入操作的時(shí)候,從鍵盤輸入的數(shù)據(jù)的存放在輸入緩沖區(qū)中:第一個(gè)就不必說啦!!第二個(gè)輸入的是ー個(gè)double類型的數(shù)據(jù),在讀到數(shù)字6,接著遇到了點(diǎn)號(hào)(.)對(duì)于整形變量來說,系統(tǒng)視點(diǎn)為非法數(shù)據(jù),致使本次輸入操作自動(dòng)結(jié)束,并把6賦值給變量b,未讀入的點(diǎn)號(hào)仍然存放在緩沖區(qū)中;在執(zhí)行第三句輸入語句的時(shí)候,系統(tǒng)在為變量c讀入數(shù)據(jù)的時(shí)候,首先遇到的是已經(jīng)存放在緩沖區(qū)中的點(diǎn)號(hào),因?yàn)樽兞縞也是整型,系統(tǒng)視點(diǎn)為非法數(shù)據(jù),本次讀入操作也自動(dòng)結(jié)束,實(shí)際上沒有給變量c讀到任何的數(shù)據(jù),c仍然保持原來的初值O.如果變量c的float類型的話,就會(huì)認(rèn)為存放在緩沖區(qū)中的點(diǎn)號(hào)是合法的,那么就會(huì)讀入給變量c賦值,那么c就會(huì)是0.5000000而就原本要賦值的9給舍掉啦!!.以下程序段:#include<stdio.h>intmain(){inta=l,b=l;scanf("a=%d,b=%d",&a,&b);printf("a=%d/b=%d\n",a/b);return0;
若:輸入22,6回車鍵運(yùn)行結(jié)果:a=l,b=l若:輸入a=22,b=6回車鍵,運(yùn)行結(jié)果:a=22,b=6注釋:C語言規(guī)定,在scanf函數(shù)的格式控制串中除格式說明符之外,若還插有其他字符,則在進(jìn)行數(shù)據(jù)輸入的時(shí)候,必須按位置對(duì)應(yīng)的原則ーー輸入這些字符。對(duì)于第一種只是輸入了22和6系統(tǒng)無法對(duì)變量進(jìn)行賦值,所以變量還是保持原來的數(shù)值不變。.已有如下定義和輸入語句,若希望給變量i讀入ー10,j讀入15,x讀入10.55,則正確的輸入形式是:-12,f,1.055e+lIntIJ;floatx;Scanf("%〇,%x,%e”,&l,団,&x);注釋:本題主要考察,按ハ進(jìn)制、十六進(jìn)制輸入整型數(shù)據(jù)和按指數(shù)形式輸入實(shí)型數(shù)據(jù)的方法:還有就是將各個(gè)數(shù)據(jù)進(jìn)行轉(zhuǎn)換然后輸入就可以啦!!.設(shè)x和y均為int變量,語句組:x+=y;y=x-y;x-=y;的功能是:交換x和y中的值。注釋:不會(huì)!!!!!!!!.有定義語句:longa;intk;則能給a賦值40000的正確語句是:DA:3=20000+20000; B:a=4000*10;C:k=400;a=k*100;D:a=4000;a=a*10;C:k=400;a=k*100;D:a=4000;a=a*10;注釋:在A、B、C選項(xiàng)中,在賦值號(hào)的右邊都是表達(dá)式的計(jì)算結(jié)果,其值都是int類型,顯然已經(jīng)超出int類型兩個(gè)字節(jié)的范圍,系統(tǒng)就會(huì)僅將兩個(gè)字節(jié)里面的數(shù)據(jù)即是范圍在:-32768?32767之間的數(shù)賦值給變量a;在選項(xiàng)口中,把4000賦值給a,是正確的int類型常量,系統(tǒng)將為其轉(zhuǎn)換為4000L,賦值給長(zhǎng)整型a,a=a*10時(shí),系統(tǒng)先將10轉(zhuǎn)換成10L,然后計(jì)算得長(zhǎng)整型數(shù)賦值給a;.有以下程序:#include<stdio.h>intmain()(inti;floatf;longintI;doubled;i=f=l=d=20/3;printf("%d%ld%3.1f %3.1f\n",i,l,f,d);return0;}輸出的結(jié)果為:6 6 6.0 6.0注釋:我想在這里強(qiáng)調(diào)的是:20/3的取整的結(jié)果是整數(shù)!如:#include<stdio.h>intmain()inti;floatf;longintI;doubled;i=f=l=d=2O./3.;printf("%d%ld%3.1f %3.1f\n”,i,l,f,d);return0;}其輸出的結(jié)果就不一樣啦!!是:6 6 6.0 6.7.#include<stdio.h>intmain(){longx=-123456L;printf("\n",x);return0;}這里考察用什么樣的輸出格式,%d%ld%Ld輸出來的都是:-123456 而%8dL輸出來的就是:-123456L具體哪個(gè)是正確的海不知道,彳會(huì)!?。。。。。?〇.輸出結(jié)果為:32768intmain()unsigneda=32768;intb;b=a;printf("%d\n",b);return0;}注釋:答案與運(yùn)行的不一樣!??!解釋:32768存放在無符號(hào)變量a中時(shí),最高位為1(二進(jìn)制1),其余位都是〇,賦值給int變量b時(shí),轉(zhuǎn)換為int整數(shù),當(dāng)最高位為1、其余位都是〇時(shí),值為ー32768.71.輸出結(jié)果為:1234#include<stdio.h>intmain()(inta=1234;printf("%2d\n",a);return0;}注釋:這里格式說明符規(guī)定的列寬是2,但是變量a本身就要占到4個(gè)列寬,所以系統(tǒng)就給其安排4個(gè)列寬:再者就是C語言中規(guī)定當(dāng)指定的輸出寬度不足時(shí),不影響整數(shù)部分的輸出;如題目改變成:#include<stdio.h>intmain(){inta=1234;printf("%7d\n"za);return0;}則輸出的就是: 1234;數(shù)字前面有三個(gè)空格!??!!再如:#include<stdio.h>intmain()(inta=1234;printf("%7d\n",a);return0;}輸出的結(jié)果是:1234.56774972.輸出結(jié)果為:*3.42e+004*#include<stdio.h>intmain()(doublex=34213.6894;printf("*%8.2e*\n",x);return0;}用科學(xué)計(jì)數(shù)法法表示,占8個(gè)列寬,保留兩位小數(shù)。73printf("%u\n",;6);輸出的結(jié)果為:4294967280.注釋:答案:6542〇企!!!!!!!!!74.輸出的結(jié)果為:65535#include<stdio.h>intmain()(intx=OxFFFF;printf("%d\n";x--);return0;}注釋:答案是1不會(huì)!!!!!!75.輸出的結(jié)果為:1#include<stdio.h>intmain()(inttl;doublet2;tl=(t2=1.9,t2+5,t2++);printf("%d\n",tl);return0;注釋:這里還是沒有注意到雖然在括號(hào)里面有運(yùn)算,但是運(yùn)算并沒有重新賦值給變量t2,所以t2根本就沒有改變!!.輸出的結(jié)果為:a=374**a=fca=0374**a=0xfc#include<stdio.h>intmain()(inta=252;printf("a=%-5o**a=%x\n",a,a);printf("a=%#o**a=%#x\n",aza);return0;}注釋:進(jìn)制之間的轉(zhuǎn)換已經(jīng)沒有了問題,在此就不說啦!!要講的就是格式說明符的問題,在%。之間加上#說明的就是要在前面加上進(jìn)制說明符。說明輸出的是什么進(jìn)制的數(shù)字!!.x為奇數(shù)時(shí)值為真,x為偶數(shù)時(shí)值為假的表達(dá)式是:CA:!(x%2==l) B:x%2==0C:x%2 D:!(x%2)注釋:C與D根本上就不是省略形式。就是原本的樣子!!C選項(xiàng),當(dāng)x為奇數(shù)時(shí),x%2的值是1,結(jié)果就是!.當(dāng)x為偶數(shù)時(shí),x%2的值是。,所以滿足題意!!.已定義語句:intm=O,n=l;執(zhí)行表達(dá)式(m=5<3)&&(n=7>9)后,n的值是:1注釋:先計(jì)算表達(dá)式m=5<3的值,結(jié)果為〇,根據(jù)“與”運(yùn)算規(guī)律,只要表達(dá)式1的值為假,整個(gè)表達(dá)式的值即是假,此時(shí)不再計(jì)算表達(dá)式2的值,所以n的值不變!!.已有定義語句:int a=O,b=l,c=l;,執(zhí)行語句:d=--a||++b&&--c;后a的值是:-1,b的值是:l,c的值是1,d的值是:lo注釋:賦值運(yùn)算符優(yōu)先級(jí)最低,留著最后運(yùn)算:按優(yōu)先級(jí)先做式中的算式運(yùn)算,然后進(jìn)行“與”。最后進(jìn)行“或”;算術(shù)運(yùn)算從左往右應(yīng)計(jì)算ーa++b-c〇首先計(jì)算ーa,結(jié)果使a變成一1.接下來做++b-c運(yùn)算,但根據(jù)或運(yùn)算規(guī)則。因表達(dá)式ーa,即是非零,也就是“真”,它能使整個(gè)表達(dá)式的值一定就是“真”,程序執(zhí)行“短路”操作,不再對(duì)11運(yùn)算符右邊的表達(dá)式進(jìn)行運(yùn)算。#include<stdio.h>intmain()(inta=O,b=l,c=l,d;d=--aI|++b&&--c;printf("%d%d\n",a,b);printf("%d%d\n",c,d);return0;}運(yùn)算輸出的結(jié)果與上面的結(jié)果一致!!!.輸出的結(jié)果為1#include<stdio.h>intmain(){inta=4,b=5,c=0,d;d=!a&&!b||!c;printf("%d\n",d);return0;}注釋:這里由于有取反運(yùn)算符,所以先計(jì)算取反運(yùn)算符,從左到右依次是!a !b !c,當(dāng)計(jì)算第一個(gè)取反運(yùn)算符的時(shí)候,其值為假,這里有一個(gè)問題,為什么不是'‘與"的短路現(xiàn)象???而是都取反了以后,再根據(jù)與和或的運(yùn)算規(guī)則計(jì)算!!.#include<stdio.h>intmain()(inta=4,b=5,c=100;if(a=5)c=a+b;if(a=0)c=b-a;printf("%d\n",c);return0;}注釋:第一個(gè)if后面的括號(hào)里面的值是真的,所以輸出的c的值是10;而第二個(gè)if后面的括號(hào)里面的值是假的,所以不執(zhí)行。如果將第ー個(gè)if去掉的話,C的值將會(huì)輸出原本的賦值的值即是!00;.a為〇時(shí),值為“真”的表達(dá)式的是a==0;而a=0的表達(dá)式的值不是真的。是假的!!83,輸入數(shù)字9,輸出的結(jié)果為:A#include<stdio.h>intmain()(intn;scanf("%d",&n);if(n++<5)printf("%X\n",n);elseprintf("%X\n",n");return0;}.注釋:在判斷的時(shí)候,if后面的括號(hào)里面的計(jì)算都要計(jì)算,例如上面輸入9之后,在if的后面要判斷條件是否成立,然后n自身加1,如果判斷的值是真的就執(zhí)行其后的語句,否則不執(zhí)行!??!.輸出結(jié)果為:-1#include<stdio.h>intmain(){inta=O,b=O,c;if(a>b)c=l;elseif(a=b)c=0;elsec=-l;printf("%d\n",c);return0;}注釋:第二個(gè)if那里出現(xiàn)了狀況,那里得到的值是假的!!請(qǐng)千萬注意啦!!.輸出的結(jié)果為:2、3、。#include<stdio.h>intmain()(intt,a=2,b=3,c=-2;while(a>b>c)t=a;a=b;b=t;C++;}printf("%d%d%d\n"/a,b,c);return0;}注釋:在這里想強(qiáng)調(diào)的是:紅色字體部分,不要將其看著是我們平時(shí)數(shù)學(xué)里面的關(guān)系式!!切忌奧!!.輸出的結(jié)果為:0、5#include<stdio.h>intmain(){intx=O,y=O;while僅<5&&++v)v--,x++;printf("%d%d\n",y,x);return0;}注釋:這里強(qiáng)調(diào)的就是逗號(hào)在這個(gè)地方的使用。應(yīng)該可以這樣看,其實(shí)帶下劃線的オ是ー個(gè)語句,前面的實(shí)際上是半句話,不是一個(gè)句子!!.輸出的結(jié)果為:1、ー2#include<stdio.h>intmain()(intx=3;do{printf("%d\n",x-=2);}while(!(--x));return0;}注釋:注意輸出的是什么,要看格式說明符后面的東東!!!不要心急的就看前面的,跟著感覺走,往往會(huì)出錯(cuò)!!.輸出結(jié)果為:-1、?3#include<stdio.h>intmain(){intx=3,y=0;do(while(!y)y=-x;while(x--);printf("%d,%d\n",x,y);return0;}.下面的程序的功能是計(jì)算正整數(shù)234的各位數(shù)字之和。#include<stdio.h>intmain(){intn,sum=0;n=234;while(n){sum=sun+n%10;n=n/10;}printf("sum=%d\n",m);return0;}在橫線上填什么?如果不能一下想到的話就根據(jù),題目所給出的的選項(xiàng)ーー的代入到其中的橫線上.輸入27 76后,輸出的結(jié)果為:27-858993460intmain()intn,sum;scanf("%d,%d",&n,&sum);printf("%d%d\n",n,sum);return0;}注釋:注意如果輸入的數(shù)據(jù)是27,76輸出的結(jié)果則是27 76!!!請(qǐng)注意這個(gè)微小的差別!!!就是要注意在輸入的時(shí)候特別在變量與變量之間是上面!!!不管是什么,在輸入的時(shí)候都要加在上面!!!.以下選項(xiàng)中是合法的字符常量的是:AA:’、〇' B:'\x7A'C:'\' D:'\0103,注釋:選項(xiàng)A中,是ー個(gè)字符常量。稱為“空”字符,它的ASCII值為〇,在特殊的場(chǎng)合用它來代替之歌值為“0”的字符。選項(xiàng)B中X7A似乎是表示十六進(jìn)制數(shù)7A,但C規(guī)定在轉(zhuǎn)義字符中,反斜線后的十六進(jìn)制數(shù)都只能以小寫的X開頭。選項(xiàng)C中,在單引號(hào)中是一個(gè)反斜線,因?yàn)橐?guī)定轉(zhuǎn)義字符由反斜線字符開頭,表示一個(gè)反斜線字符常量應(yīng)該寫成‘\\‘。而不是‘ヽ’。選項(xiàng)D中是ー個(gè)轉(zhuǎn)義字符常量,反斜線后面的是ハ進(jìn)制數(shù),但C規(guī)定在轉(zhuǎn)義字符中,反斜線后面的ハ進(jìn)制數(shù)都能是三位數(shù)!!92.輸出的結(jié)果為:63#include<stdio.h>intmain(){inti=O,a=O;while(i<30){for(;;)(if((i%10)==0)break;elsei—;}i+=ll;a+=i;}printf("%d\n",a);return0;)注釋:在if語句當(dāng)中,當(dāng)i對(duì)10取余的時(shí)候,如果if語句不成立就執(zhí)行else語句,這樣就使得i的值變小。其實(shí)在本題中,break語句一次都沒有執(zhí)行。反而是whlie使得循環(huán)得以結(jié)束!?。?輸出的結(jié)果為:7#include<stdio.h>intmain()(inti;for(i=l;i++<=5;);printf("%d\n",i);return0;}注釋:這里要強(qiáng)調(diào)的是:當(dāng)i等于5的時(shí)候過來判斷,符合條件,隨手它就加1等于6,然后執(zhí)行空語句,接著是i等于6來判斷,結(jié)果不行,但是還是使其加1,不執(zhí)行后面的空語句!?。∪绻?#include<stdio.h>intmain(){inti;for(i=l;i++<=5;)printf("%d\n",i);return0;}則此時(shí)輸出的是12 3 4 5 6,要是問執(zhí)行for語句后輸出的結(jié)果就是6了!!!.執(zhí)行程序段后,k的值是:0.#include<stdio.h>intmain(){intr=l,n=203,k=l;do(k*=n%10*r;n/=10;r++;}while(n);printf("%d\n",k);return0;)注釋:這里的錯(cuò)誤原因在:do語句里面的n/=10;是取整的意思,誤將其看成的取余了!!!.輸出的結(jié)果為**I*I!intmain()inti,j;for(i=2;i>=0;i--)for(j=l;j<=i;j++)printf("*"); ①for(j=0;j<=2-i;j++)printf("I"); ②printf("\n");}return0;}注釋:在此可以看出的是:的那個(gè)有兩個(gè)并列的for語句的時(shí)候,要按照一個(gè)ー個(gè)的來,先完成①for語句及其以后的語句(即是執(zhí)行到不能再執(zhí)行的地步的時(shí)候),再來完成②。不能就是剛執(zhí)行了一半就要執(zhí)行下面的第二個(gè)for語句,這樣做是錯(cuò)誤的!!.輸出的結(jié)果為:***##include<stdio.h>intmain()inti,j=2;for(i=l;i<=2*j;i++)switch(i/j)caseO:casel:printf("*");break;case2:printf("#");}return0;}注釋:不會(huì)???!在switch語句中,如果case標(biāo)號(hào)的分號(hào)后沒有語句,可以將把若干個(gè)case標(biāo)號(hào)和分號(hào)寫在同一行上,這樣的意思就是幾個(gè)case共用ー個(gè)語句啦!!!例如上面的①,其實(shí)是case。和case1共用printf("巧;break;這兩條語句!!!.為了給a=65,b=74,cl=A,c2=D.該怎么樣輸入:65A(回車)74D(回車)#include<stdio.h>intmain()(inta,b;charcl,c2;scanf("%d%c%d%c",&a,&cl,&b,&c2);printf("%d%c%d%c",a,cl,b,c2);return0;注釋:在輸入的時(shí)候,因?yàn)樵趕canf后面的括號(hào)里面沒有逗號(hào),所以在輸入的時(shí)候千萬不能在變量之間帶有逗號(hào)。在給變量a賦值之后,要給字符變量cl賦值,就是說:要讀入一個(gè)字符賦值給變量cl,所以如果在讀入65之后,接著有空格或回車的話,計(jì)算機(jī)就是把空格或回車賦值給變量cl啦!強(qiáng)調(diào):在給字符變量賦值的時(shí)候,特別注意,不要留有空格,一切要按照scanf語句里面的來,里面有什么就輸入什么,不要多輸,也不要少輸。而在輸入數(shù)字的時(shí)候就不需要那么麻煩啦!!可以有一個(gè)或多個(gè)空格或回車!?。?輸出的結(jié)果為:***10*********#include<stdio.h>intmain()(charc='\12';printf("***%d***\n***%c***\n",c40);return0;注釋:不會(huì)!!.若變量都已正確定義,執(zhí)行以下程序段時(shí),通過以下形式從第一列起依次給cl輸入字母,H',給c2輸入,〇’,給C3輸入’!’;H《回車》0《回車》!《回車》請(qǐng)?zhí)羁?以便正確讀入。Scant(“%c”,&cl);Scanf("%c”,&c2);Scant(“%c”,&c2): 混nt(“%c”,&c3) ;Scanf("%c”,&c3^;答案為:/.若變量已正確定義并賦值,對(duì)庫(kù)函數(shù)錯(cuò)誤的調(diào)用的是:CA:k=scanf("%d%d”,&l,&j);B:printt("\\%d\\\n",k);C:getchar(ch); D:putchar(ch);注釋:scant函數(shù)的調(diào)用通常以一條獨(dú)立的語句的形式出現(xiàn),但scant函數(shù)有函數(shù)值返回,此數(shù)表示已經(jīng)輸入的數(shù)據(jù)的個(gè)數(shù)。例如A選項(xiàng)中,如果輸入了兩個(gè)數(shù)字,不管數(shù)字的什么,最后輸出的結(jié)果都是2.在選項(xiàng)B中,在printt函數(shù)的格式說明符中有兩個(gè)轉(zhuǎn)義字符:\\,最后將輸出的結(jié)果為'k\.庫(kù)函數(shù)getchar沒有形參,因此在調(diào)用時(shí)ー,getchar后的ー對(duì)括號(hào)中應(yīng)當(dāng)是空格,函數(shù)返回一個(gè)字符!!101.#include<stdio.h>voidfun();intmain()fun();return0;}voidfun(){)注釋:因?yàn)椴皇莍nt或者char類型,所以必須遵守先定義后使用的原則。由于是void類型,所以在調(diào)用的時(shí)候不能有返回值賦值給變量,例如:a二fun();這樣的是錯(cuò)誤的!!.輸出的結(jié)果為:5#include<stdio.h>intmain(){double*q,a=5.5;int*p,i=l;P=&i;q=&a;*p=*q;printf("i=%d\n",i);return0;}注釋:*p二?q;等同于i=a;.double*w,a=3.5;int*p,i=l;P=&i;w=&a;在執(zhí)行p=(int*)w;語句后,*p的值為ー個(gè)整數(shù)。要把指針變量w中的地址賦值給指針變量p,必須進(jìn)行類型轉(zhuǎn)換,因此語句p=(int*)w;是合法的,它使指針p也指向了變量a的起始地址。因?yàn)橹羔榩的基類型是int,*p只取a的兩個(gè)低字節(jié)中的數(shù)據(jù),并按int類型數(shù)據(jù)存儲(chǔ)的機(jī)制對(duì)其中的數(shù)據(jù)進(jìn)行處理,因此?p是ー個(gè)整數(shù)。由于double類型數(shù)據(jù)與int類型數(shù)據(jù)存儲(chǔ)的機(jī)制不同,因此無法估計(jì)此整數(shù)的確切值。,若有定義語句:int*q,*p;指針變量的指向如下圖所示:a[0]a[l]a[2] a[3]a[4] a[5] a[6]1234567qt則值不是5的表達(dá)式是:A:*q- B:*--qC:-*q D:q-p注釋:A選項(xiàng),q先與?結(jié)合,就是指a[5],然后將6作為表達(dá)式的值,接著q移動(dòng)指向a[4]。在選項(xiàng)B中,表達(dá)式?-q中,q先移動(dòng)至a[4],然后取出a⑷中的值作為表達(dá)式的值。105.輸出的結(jié)果為:4
#include<stdio.h>intmain()(double*w;printf("%d\n",sizeof(w));return0;)注釋:#include<stdio.h>intmain()(double*w;printf("%f\n",sizeof(w));return0;}輸出的結(jié)果為0.000000不會(huì)!!!!106輸出的結(jié)果為:106輸出的結(jié)果為:反正是數(shù)組元數(shù)的地址。#include<stdio.h>intmain()intarr[5]={23,34,54,67,l};printf("%d\n",arr+l);return0;}107.有以下定義語句:Doublet[3][3],(*pt)[3]=t;則對(duì)t數(shù)組元素錯(cuò)誤的引用是:AA:*(pt+l)[2] B:*(pt[O]+l)C:t⑼⑵ D:(*(t))[2]注釋:已知行指針pt指向t數(shù)組的首地址,選項(xiàng)B中表達(dá)式?(pt[O]+l)等價(jià)于?(t⑼+1),即表示數(shù)組元素t[0][l].選項(xiàng)C中,t⑼⑵是合法的數(shù)組元素。選項(xiàng)D中(*(t))⑵等價(jià)于t[0][2]. 選項(xiàng)A中表達(dá)式?(pt+1)⑵中,由于運(yùn)算符。的優(yōu)先級(jí)高于?號(hào),表達(dá)式可轉(zhuǎn)換成*(*((pt+l)+2)),變成*(*(pt+l+2))つ*(*(pt+3))つ*(pt[3])つpt⑶⑼つt⑶⑼,顯然,第一個(gè)下標(biāo)已越界,是錯(cuò)誤的。.若有以下定義語句:Intl,w[3J[4]={{1.2},{3,4,5},{6,7,8,9}},*p;則以下錯(cuò)誤的賦值語句是:BA:p=w[l]; B:w[l]=p;C:p=w[0]+2; D:p=&w[0][0];注釋:指針變量p的基類型是int,二維數(shù)組w中w[i](0<=i<3)是每行的首地址,是一個(gè)常量指針,它的基類型也是int。因此A、C、D都是合法的。選項(xiàng)B中,因w[l]是ー個(gè)常量指針,不能給它賦值,所以賦值語句w[l]=p;是錯(cuò)誤的。.若主函數(shù)中有以下定義和語句:Main()(Doublea[3][4];Fun(a);}則正確的fun函數(shù)的首部是:DA:voidfun(double*s) B:fun(double*s[4])C:fun(double(*s)[3]) D:voidfun(double(*s)[4])注釋:調(diào)用語句Fun(a);沒有返回值,因此函數(shù)的類型可以是void類型,也可以是int類型、調(diào)用語句中的實(shí)參a是一個(gè)3行4列的二維數(shù)組名,這是ー個(gè)地址常量,所以對(duì)應(yīng)的形參應(yīng)當(dāng)是ー個(gè)行指針。A選項(xiàng)中,其形參是一個(gè)基類型為double的指針變量,不是行指針。因此是錯(cuò)誤的。 B選項(xiàng)中,其形參是ー個(gè)指向基類型為double指針的指針,它等同于fun(double*sロ)或fun(double**s),s不是行指針。C選項(xiàng)中,形參(*s)[3]表示s是一個(gè)行指針,但此行指針的基類型是ー個(gè)指向具有3個(gè)double元素的數(shù)組,而實(shí)參a每行有4個(gè)元素,因此類型不正確。.若二維數(shù)組a有m歹リ,則計(jì)算任一元素在數(shù)組中的位置的公式為:i*m+j(假設(shè)a⑼⑼位于數(shù)組的第一個(gè)位置上)注釋:不0!!.chararr[]="resultO";則數(shù)組arr所占的空間為8個(gè)字節(jié)。注釋:因?yàn)樵?result。"的〇后面還有一個(gè)空字符。所以總共8個(gè)字節(jié)。.chararr[5]={"abcdrf"); 是錯(cuò)誤的,因?yàn)榻oarr賦值的內(nèi)容已經(jīng)超過了范圍了。數(shù)據(jù)就會(huì)溢出!.輸入123 456 <779>,輸出的結(jié)果為:1,23,456#include<stdio.h>intmain()(chars[100];intc,i;scanf("%c%d%s",&c,&i,s);printf("%c,%dz&s\n";c,i,s);return0;}注釋:第一輸入的是字符,當(dāng)c遇到1的時(shí)候,就將其賦值給變量c了,不會(huì)再看后面有沒有其他什么的了,然后剩下來的23,因?yàn)?3后面有空格,所以系統(tǒng)就認(rèn)為到23的后面就截止了,所以就只把23賦值給變量1了,接著就要給字符串s賦值了,系統(tǒng)看到在23的后面是345,可以作為字符串賦值給字符串變量s,所以就這樣做了。結(jié)果就是不再顧后面的<779>啦!.輸入ABC,輸出的結(jié)果為:ABC#include<stdio.h>intmain(){chars[10]="12345";gets(s);printf("%s\n",s);return0;}注釋:不會(huì)!!!為什么不是ABC45????.輸出的結(jié)果為:6#include<stdio.h>#include<string.h>intmain(){chars[]="qq\n\012\\\n";printf("%d\n",strlen(s));return0;)#include<stdio.h>#include<string.h>intmain(){charstr[7]="tudent",c;intk;for(k=l;(c=str[k])!='\0';k++)(switch(c)(case't':putchar('#');case'n':putchar('$');break;default:continue;}putchar('*');)return0;)注釋:不難的!!可以做出來的!!117.輸出的結(jié)果為:012 3#include<stdio.h>fun(intb)(if(b>0)fun(b-l);printf("%d",b);}intmain()(inta=5;fun(a);printf("\n");return0;)注意:調(diào)用的順序!和輸出的順序!!.輸出的結(jié)果為:4#include<stdio.h>f(inta){intb=0;staticc=3;a=c++;b++;returna;}intmain(){inta=2,i,k;for(i=0;i<2;i++)k=f(a++);printf("%d\n",k);return0;}注釋:這里有一個(gè)靜態(tài)變量c,在程序結(jié)束之前它都會(huì)保持變量的值不變的,當(dāng)然不是一成不變的,意思就是不釋放存儲(chǔ)空間。保持上ー次運(yùn)算的結(jié)果。.輸出的結(jié)果為992003 4 5 0 6 7#include<stdio.h>voidfun(ints[])(inti;for(i=0;i<10;i++)printf("%d",s[i]);printf("\n\n");intmain(){inta[3][4]={{99,2},{3,4,5},{6,7,8}};fun(a[O]);return0;}注釋:在這里傳遞的是數(shù)組的地址,而接收是ー個(gè)指針變量。呵呵就是這樣啦!!例如:將下面的程序執(zhí)行了之后的輸出的結(jié)果為#include<stdio.h>voidfun(ints[])(inti;for(i=0;i<10;i++)printf("%d",s[i]);printf("\n\n");)intmain()inta[3][4]={{99,2},{3,4,5},{6,7,8}};fun(a[l]);return0;}3 4 5 0 6 7 8 還有兩個(gè)是未知的,只能輸出的就是那么多是確定的.若有以下定義語句:doublea[5],*p=a;則對(duì)不正確表示a數(shù)組元素地址的表達(dá)式是:CA:++p B:&p[4] C:++a D:a注釋:C選項(xiàng)中企圖移動(dòng)++a,這是不允許的,數(shù)組名是地址常量,不可以進(jìn)行++a運(yùn)算。.輸出的結(jié)果為:字符‘2’的地址。#include<stdio.h>intmain(){char*k="12345";k+=l;printf("%d\n",k);return0;}注釋:k是ー個(gè)指向字符的指針,當(dāng)用%d輸出時(shí)輸出的就是所指字符的地址啦!!如:#include<stdio.h>intmain()char*k="12345";k+=l;printf("%s\n",k);return0;}此時(shí)輸出的結(jié)果為:2345不是地址啦!!!.輸出的結(jié)果為:#include<string.h>#include<stdio.h>intmain(){charsl[]="123",s2[]="abc",ss[20]="010";strcat(ss+4,strcpy(s2,sl));printf("%s\n",ss);return0;)注釋:連接函數(shù)都是把后一個(gè)從前ー個(gè)的結(jié)束標(biāo)識(shí)符開始的。了解字符串連接函數(shù)和字符串拷貝函數(shù)的作用,連接是將后一個(gè)連接帶前一個(gè)的后面,但是呢前ー個(gè)的存儲(chǔ)空間必須足夠大,以便于放下原來和后加進(jìn)來的兩個(gè)字符串的大小。而字符串拷貝函數(shù)呢,是將后一個(gè)字符串覆蓋到前ー個(gè)字符串的上面,前ー個(gè)的空間必須能夠容納后一個(gè)的字符串的。當(dāng)后一個(gè)小于前ー個(gè)字符串的實(shí)際長(zhǎng)度的話,則前ー個(gè)的剩余部分也被覆蓋而不能輸出。問題:這里的+4是干什么用的??猜想:不管加上幾,只要所指的地址在結(jié)束標(biāo)識(shí)符的前面就可以啦!!.輸出的結(jié)果為:1315#include<string.h>#include<stdio.h>intm=l;voidfun(int*n)(staticintm=2;*n*=m-l;m+=2;}intmain()(inti;for(i=l;i<4;i++)fun(&m);return0;}注釋:其實(shí)是輸出了3個(gè)值,只是沒有分隔符,所以就連在了一起。其實(shí)就是1 3 15三個(gè)數(shù)啦!!.輸出的結(jié)果為:6 , 4#include<string.h>#include<stdio.h>intmain()(inti=2,k=2,m;m=(k+=i*=k);printf("%d,%d\n"/m/i);return0;}注釋:其實(shí)在這里呢,就是有幾個(gè)等于號(hào)就有幾個(gè)語句,這些個(gè)語句和在ー起構(gòu)成了一個(gè)看似復(fù)雜的語句,我們只要把他們還原就可以啦!將其轉(zhuǎn)變成原來的樣子就好做啦!!.設(shè)有以下結(jié)構(gòu)體的定義:Structww{intno;charname[10];};Structwwcc[4]={l,"apple”,2,"bananagrape”,4,”orange"};則以下能夠輸出字符串“grape”的語句是:BA:printf(u%s\n",cc[2].&name[0]);printf(u%s\n",&cc[2].name);printf(u%s\n",cc[2].&name);printf(u%s\n",cc[2].name[0]);注釋:選項(xiàng)A和C的輸出項(xiàng)中,在點(diǎn)號(hào)(。)運(yùn)算符后加上了&運(yùn)算符是不符合語法規(guī)則的。B選項(xiàng)中即使是不加&也是正確的。選項(xiàng)D中,cc[2].name[0]輸出的是成員數(shù)組name的第0個(gè)元素。即是字母'g',而不是存放字符串地址.輸出的結(jié)果為:256#include<stdio.h>union(charm[2];intk;}mk;intmain(){mk.m[0]=0;printf("%d\n",mk.k);return0;}注釋:在給2個(gè)元素賦值之后的存儲(chǔ)狀態(tài)如下圖:Mk.m[l] mk.m[0]0000000100000000Mk.k由于共用存儲(chǔ)單元,當(dāng)輸出成員mk.k時(shí)ー,系統(tǒng)將按照整型來解釋上述存儲(chǔ)空間中的數(shù)據(jù),第九位為1,則28=256.輸出的結(jié)果為:0#include<string.h>#include<stdio.h>union(intnum;struct(charcl,c2;}sc;}lun;intmain()Iun.sc.cl=65;Iun.sc.c2=97;lun.num=O;printf("%d\n"Jun.sc.c2);return0;}注釋:共用體變量中起作用的是最近一次存入的成員的值,原有成員的值被覆蓋!??!這里的是結(jié)構(gòu)體和共用體在ー起的題,特別注意到!!!其中共用體所占的內(nèi)存是其成員中最大的ー個(gè)!這里最大的是int類型,占兩個(gè)字節(jié)。要是沒有對(duì)num的賦值,那么對(duì)ClC2的輸出就沒有問題啦!128.輸出的結(jié)果為:2030 88#include<stdio.h>intmain(){FILE*fp;inti=20,j=30,k=99,n=88;fp=fopen("d:\\d16_3.dat","w");fprintf(fp,"%d"/i);fprintf(fp,"%d"j);fclose(fp);fp=fopen("d:\\dl6_3.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d'',k,n);fclose(fp);return0;}注釋:在d根目錄下新建了一個(gè)名為dl6_3.dat文本文件,并通過fprint函數(shù)輸出20和30,在這兩個(gè)數(shù)中間并沒有加入任何間隔符,在文件中兩數(shù)以2030這樣的形式存放,輸出后文件被關(guān)閉。文件隨后以讀的方式被打開,用fscanftp/佻c^cr.&k&n);語句從文件中讀取數(shù)據(jù),變量從文件中讀入2030,變量n沒有讀到數(shù)據(jù),所以只能保持原來數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)四路數(shù)字硬盤錄像機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 【假期提升】五升六語文暑假作業(yè)(九)-人教部編版(含答案含解析)
- 2025年消防設(shè)施操作員之消防設(shè)備中級(jí)技能考前沖刺模擬試卷A卷含答案
- 2025年消防設(shè)施操作員之消防設(shè)備高級(jí)技能每日一練試卷A卷含答案
- 廣東省廣州市海珠區(qū)南武集團(tuán)2022-2023學(xué)年八年級(jí)下學(xué)期期中物理試題(含答案)
- 煙草公司2023招聘考試全真筆試試題(綜合能力測(cè)試卷)和答案解析
- 酒店用品銷售代理合同(2篇)
- 采購(gòu)分包配送合同(2篇)
- 廣告行業(yè)廣告創(chuàng)意版權(quán)保護(hù)協(xié)議
- 社區(qū)農(nóng)業(yè)服務(wù)提供合同書
- 和田玉知識(shí)培訓(xùn)課件下載
- 2025年高縣縣屬國(guó)企業(yè)公開招聘工作人員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 第7課 課題二《清潔工具與生活·創(chuàng)意清潔工具設(shè)計(jì)》(說課稿)-2023-2024學(xué)年四年級(jí)下冊(cè)綜合實(shí)踐活動(dòng)浙教版
- DB11-T 1191.3-2024 實(shí)驗(yàn)室危險(xiǎn)化學(xué)品安全管理要求 第3部分:科研單位
- 醫(yī)療行業(yè)學(xué)生職業(yè)發(fā)展的路徑規(guī)劃
- 規(guī)范填寫臨時(shí)用電作業(yè)票
- 日間化療中心管理制度
- 第六講五胡入華與中華民族大交融-中華民族共同體概論
- 建設(shè)工程施工專業(yè)分包合同 GF-2003-0213
- 2024解析:第二章聲現(xiàn)象-講核心(解析版)
- 2024解析:第十章 浮力綜合應(yīng)用-講核心(解析版)
評(píng)論
0/150
提交評(píng)論