2022年河南省駐馬店市全國計算機等級考試C語言程序設計真題(含答案)_第1頁
2022年河南省駐馬店市全國計算機等級考試C語言程序設計真題(含答案)_第2頁
2022年河南省駐馬店市全國計算機等級考試C語言程序設計真題(含答案)_第3頁
2022年河南省駐馬店市全國計算機等級考試C語言程序設計真題(含答案)_第4頁
2022年河南省駐馬店市全國計算機等級考試C語言程序設計真題(含答案)_第5頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年河南省駐馬店市全國計算機等級考試C語言程序設計真題(含答案)學校:________班級:________姓名:________考號:________

一、單選題(12題)1.按照“先進先出”組織數(shù)據(jù)的數(shù)據(jù)結構是()。

A.隊列B.棧C.雙向鏈表D.二叉樹

2.下列敘述中正確的是()。

A.循環(huán)隊列是隊列的一種鏈式存儲結構

B.循環(huán)隊列是隊列的一種順序存儲結構

C.循環(huán)隊列是非線性結構

D.循環(huán)隊列是一種邏輯結構

3.若有如下程序段,其中s、a、b、c均已定義為整型變量,且a、c均已賦值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;則與上述程序段功能等價的賦值語句是()。

A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;

4.同一個關系模型的任意兩個元組值()。

A.可以全相同B.不能全相同C.必須全相同D.以上都不對

5.有以下程序:#include<stdiO.h>main(){FILE*fp;intk,n,i,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);fclose(fp);fp(i=0;i<3;i++)fscanf(fp,"%d%d",&k,&n);fclose(fp);printf("%d\n,%d\n,k,n);}程序運行后的輸出結果是()。A.1,2B.3,4C.5,6D.123,456

6.以下選項中非法的表達式是()。

A.0<=x<100B.i=j==0C.(char)(65+3)D.x+1=x+1

7.如果樹的的結點A有4個兄弟,而且B為A的雙親,則B的度為()。

A.3B.4C.5D.1

8.有以下程序main(intargc,char*argv[]){intn=0,i;for(i=1;i<argc;i++)n=n*10+*argv[i]'0';printf("%d\n",n);}編譯連接后生成可執(zhí)行文件tt.exe。若運行時輸入以下命令行tt12345678程序運行后的輸出結果是A.12B.12345C.12345678D.136

9.下述關于數(shù)據(jù)庫系統(tǒng)的敘述中,正確的是()。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

10.有以下程序

#include<stdio.h>

main()

{inty=10

while(y--);

printf(“y=%d\n”,y);

}

程序執(zhí)行后的輸出結果是()。A.y=0B.y=-1C.y=1D.while構成無限循環(huán)

11.設有定義語句“int(*f)(int);”,則下列敘述中正確的是()。

A.f是基類型為int的指針變量

B.f是指向函數(shù)的指針變量,該函數(shù)具有一個int類型的形參

C.f是指向int類型一維數(shù)組的指針變量

D.f是函數(shù)名,該函數(shù)的返回值是基類型為int類型的地址

12.下列選項中不是字符常量的是()。

A.'\v'B.'\x2a'C.'a'D."\0"

二、2.填空題(12題)13.以下程序段的輸出結果是______。

inci=9;

printf("%o\n",i);

14.寫出下列程序的輸出結果______。

main()

{int=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

15.下列程序段的輸出結果是【】。

main()

{charb[]="Hello,you";

b[5]=0;

printf("%s\n",B);

}

16.以下程序的輸出結果是【】。

#include<string.h>

main()

{printf("%d\n",strlen("IBM\n012\1\\"));}

17.下列程序的輸出結果是【】。

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=4,b=3,c=5,d=6;

t(a,b,c,d);

printf("%d%d\n",c,d);

}

18.函數(shù)調(diào)用語句:“fgets(buf,n,fp);”從fp指向的文件中讀入,n個字符放到buf字符數(shù)組中,函數(shù)返回值為______。

19.在循環(huán)中,continue語句與break語句的區(qū)別是:______語句只是結束本次循環(huán),然后進行循環(huán)的條件判定。

20.函數(shù)delete(s,i,n)的作用是從字符串s中刪除從第i個字符開始的n個字符,請?zhí)羁铡?/p>

voiddelete(chars[],inti,intn)

{intj,k,length=0;

whiles(length])

【】;

-i;

j=i;

}

if(【】)

{k=i+n;

if(i+n<=length)

while(k<length)

s[j++]=s[k++];

s[j]='\0';

}

21.以下程序段的運行結果是()。#include<stdio.h>main(){intx=2,y=1:switch(x){case1:switch(y){case0:printf("x=2,y=1\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}}

22.數(shù)據(jù)結構分為線性結構和非線性結構,帶鏈的隊列屬于[]。

23.有以下結構體說明和變量的定義,且指針p指向變量a,指針q指向變量b,則不能把結點b連接到結點a之后的語句是【】。

structnode

{chardata;

structnode*next;}a,b

24.在面向?qū)ο蠓椒ㄖ?,類的實例稱為______。

三、3.程序設計題(10題)25.請編寫一個函數(shù)fun,它的功能是:找出一維整型數(shù)組元素中最大的值和它所在的下標,最大的值和它所在的下標通過形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個數(shù),max存放最大值,index存放最大值所在元素的下標。

注意:部分源程序存在文件PROGl.C文件中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

26.請編寫一個函數(shù)fun(),它的功能是將一個數(shù)字字符串轉(zhuǎn)換為一個整數(shù)(不得調(diào)用C語言提供的將字符串轉(zhuǎn)為整數(shù)的函數(shù))。

例如,若輸入字符串“-1234”,則函數(shù)把它轉(zhuǎn)換為整數(shù)值-1234。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<string.h>

longfun(char*p)

{

}

main()

{

chars[6];

longn;

printf("Enterastring:\n");

gets(s);

n=fun(s);

printf("%ld\n",n);

}

27.請編寫函數(shù)fun,其功能是:計算并輸出給定10個數(shù)的方差:

例如,給定的10個數(shù)為95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,輸出為s=11.730729。

注意:部分源程序在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

28.請編寫函數(shù)voidfun(intx,intpp[],int*n),它的功能是:求出能整除x且不是偶數(shù)的各整數(shù),并按從小到大的順序放在即所指的數(shù)組中,這些除數(shù)的個數(shù)通過形參n返回。

例如,若x中的值為30,則有4個數(shù)符合要求,它們是1,3,5,15。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(intx,intpp[],int*n)

{

}

main()

{

intx,aa[1000],n,i;

clrscr();

printf("\nPleaseenteraninteger

number:\n");

scanf("%d",&x);

fun(x,aa,&n);

for(i=0;i<n;i++)

printf("%d",aa[i]);

printf("\n");

}

29.請編寫函數(shù)fun(),其功能是:將所有大于1小于整數(shù)m的非素數(shù)存入xx所指數(shù)組中,非素數(shù)的個數(shù)通過k傳回。

例如,輸入17,則應輸出46891012141516。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<conio.h>

#include<stdio.h>

voidfun(intm,int*k,intxx[])

{

}

main()

{

intm,n,zz[100];

clrscr();

printf("\nPleaseenteranintegernumber

between10and100:");

scanf("%d",&n);

fun(n,&m,zz);

printf("\n\nThereare%dnon-prime

numberslessthan%d:",m,n);

for(n-0;n<m;n++)

printf("\n%4d",zz[n]);

}

30.下列程序定義了NXN的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun(),函數(shù)的功能是求出數(shù)組周邊元素的平方和并作為函數(shù)值返回給主函數(shù)中的S。例如:若a數(shù)組中的值為

a=01279

1112155

2216111

979102

54141

則返回主程序后s的值應為310。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#defineN5

intfun(intw[][N])

{

}

main()

{

inta[N)[N]={0,1,2,7,9,1,1l,2l,5,5,2,21,6,11,1,9,7,9,10,2,5,4,1,4,1};

inti,j;

intS;

clrscr();

printf("*****Thearray***+*\n");

for(i=0;i<N;i++)

{for(j=0;j<N;i++)

{printf(“%4d”,a[i][j]);}

printf("\n");

}

s=fun(a);

printf(“*****THERESULT*****\n”);

printf("Thesumis:%d\n",s);

}

31.已知學生的記錄由學號和學習成績構成,N名學生的數(shù)據(jù)已存入a結構體數(shù)組中。請編寫函數(shù)fun,函數(shù)的功能是:找出成績最低的學生記錄,通過形參返回主函數(shù)(規(guī)定只有一個最低分)。

注意:部分源程序存在文件PROGl.C文件中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的蒞括號中填入你編寫的若干語句。

32.函數(shù)fun的功能是:將s所指字符串中下標為偶數(shù)同時ASCII值為奇數(shù)的字符刪除,s所指串中剩余的字符形成的新串放在t所指的數(shù)組中。

例如,若s所指字符串中的內(nèi)容為“ABCDEFGl2345”,其中字符C的ASCII碼值為奇數(shù),在數(shù)組中的下標為偶數(shù),因此必須刪除:而字符1的ASCII碼值為奇數(shù),在數(shù)組中的下標也為奇數(shù),因此不應當刪除,其他依此類推。

最后t所指的數(shù)組中的內(nèi)容應是“BDFl2345”。

注意:部分源程序存在文件PROGl.C中。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。

33.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結構體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:按分數(shù)的高低排列學生的記錄,高分在前。

注意:部分源程序給出如下.

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fum的花括號中填入所編寫的若啡:語句。

試題程序:

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STRECa[])

{

}

main()

{

STRECsIN]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},

{"GA014",91},{"GA011",66},{"GA017",64},

{"GA018",64},{"GA016",72}};

inti;

FILE*out;

fun(s);

printf("Thedataaftersorted:In");

for(i=0;i<N;i++)

{if((i)%4=-0)

/*每行輸出4個學生記錄*/

printf("\n");

printf("%s%4d",s[i].num,s[i].s);

}

printf("\n");

out=fopen("out16.dat","w");

for(i=0;i<N;i++);

{if((i)%4==0&&i)

fprintf(out,"\n");

fprintf(out,"%4d",s[i].s);

}

fprintf(out,"\n");

fclose(out);

}

34.學生的記錄由學號和成績組成,N名學生的數(shù)據(jù)已在主函數(shù)中放入結構體數(shù)組s中,請編寫函數(shù)fun(),它的功能是:函數(shù)返回指定學號的學生數(shù)據(jù),指定的序號在主函數(shù)中輸入。若沒找到指定的學號,在結構體變量中給學號置空串,給成績置-1,作為函數(shù)值返回(用于字符串比較的函數(shù)是strcmp)。

注意:部分源程序給出如下。

請勿改動主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入所編寫的若干語句。

試題程序:

#include<stdio.h>

#inctude<stdlib.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

STRECfun(STREC*a,char*b)

{

}

main()

{

STRECs[N]={{"GA005",85},{"GA003",76},

{"GA002",69},{"GA004",85},{"GA001",91},

{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},

{"GA014",91},{"GA011",77},{"GA017",64},

{"GA018",64},{"GA016",72}};

STRECh;

charre[10];

inti,n;

FILE*out;

printf("Theoriginaldata:\n");

for(i=0;i<N;i++)

{if(i%4==0)

printf("In");

/*每行輸出4個學生記錄*/

printf("%s%3d",s[i]num,s[i]s);

}

printf("\n\nEnterthenumber:");

gets(m);

h=fun(s,m);

printf("Thedata:");

printf("\n%s%4d\n",h.num,h.s);

printf("\n");

out=fopen("out80.dat","w");

h=fun(s,"GA013");

fprintf(out,"%s%4d\n",h.num,h.s);

fclose(out);

}

四、單選題(0題)35.若需要利用形參直接訪問實參,則應把形參變量說明為____參數(shù)。

A.指針B.引用C.值D.變量

五、單選題(0題)36.有以下程序

#include<stdio.h>

main()

{ini,j,m=1;

for(i=1;i<3;i++)

{for(j=3;j>0;j--)

{if(i*j)>3)break;

m=i*j;

}

}

printf("m=%d\n",m);

程序運行后的輸出結果是A.m=6B.m=2C.m=4D.m=5

六、單選題(0題)37.有以下函數(shù):

此函數(shù)的功能是()。A.比較p和q所指字符串的大小

B.計算p和q所指字符串的長度差

C.將q所指字符串連接到P所指字符串后面

D.將q所指字符串復制到p所指字符串中

參考答案

1.A隊列是一種特殊的線性表,只允許在表的一端插八元素,在表的另一端刪除元素,插入元素的一端叫“隊尾”,刪除元素的一端叫“隊頭”。先插入的元素先被刪除,是按“先進先出”的原則組織數(shù)據(jù)的。

【知識拓展】“隊列”和“?!倍际且环N特殊的線性表。之所以稱之為“隊列”,其形式如“排隊”。要講究“先來后到”,先進先出,后進后出。

2.B本題主要考查循環(huán)隊列的概念,循環(huán)隊列作為隊列的一種也應該是線性結構。隊列是一種邏輯結構,而循環(huán)隊列是一種順序存儲結構的隊列。

3.B解析:本題考核的知識點是for循環(huán)次數(shù)的計算.本程序中for循環(huán)的次數(shù)為c-1+1共循環(huán)了c次,而每循環(huán)一次s的值加1,所以s的值為s+c.而最開始s的值為a,故4個選項中選項B符合題意.

4.B關系具有以下7個性質(zhì)。①元組個數(shù)有限性:二維表中元組的個數(shù)是有限的。②元組的唯一性:二維表中任意兩個元組不能完全相同。③元組的次序無關性:二維表中元組的次序,即行的次序可以任意交換。④元組分量的原子性:二維表中元組的分量是不可分割的基本數(shù)據(jù)項。⑤屬性名唯一性:二維表中不同的屬性要有不同的屬性名。⑥屬性的次序無關性.二維表中屬性的次序可以任意交換。⑦分量值域的同一性:二維表屬性的分量具有與該屬性相同的值域,或者說列是同質(zhì)的。滿足以上7個性質(zhì)的二維表稱為關系,以二維表為基本結構所建立的模型稱為關系模型。本題答案為B選項。

5.C此題是考查fprintf和fscanf,其中fprintf是向文件輸出,文件為da2.dat文件,fscanf是向文件輸入,所以根據(jù)程序循環(huán)寫入和寫出.可知答案為C。

6.D解析:選項A)在C語言中是一個合法的關系表達式,但它并不代表數(shù)學式o<=x<100。計算0<=x<100時,從左到右結合,先計算0<=x,其結果只能是0或1,然后再比較0<100或1<100。根據(jù)運算符的優(yōu)先級,選項B)先判斷j==0是否成立,其結果只能是0或1,然后再將0或1賦給i。選項C)中,(char)(65+3)為類型強制轉(zhuǎn)換,將整數(shù)型數(shù)據(jù)轉(zhuǎn)換為字符型。選項D)是將一個數(shù)據(jù)賦給一個表達式,等號左邊不合要求,所以錯誤。

7.C

8.D解析:運行時輸入該命令后,參數(shù)argc的值為4,字符串數(shù)組argv[1]、argv[2]、argv[3]分別為“12”、“345”、“678”,然后取這3個參數(shù)的第一個字符,將其轉(zhuǎn)化成原來的數(shù)字并組合成一個新的三位數(shù)。

9.A解析:數(shù)據(jù)庫是一個通用化的、綜合性的數(shù)據(jù)集合,它可以為各種用戶所共享,具有最小的冗余度和較高的數(shù)據(jù)與程序的獨立性,而且能并發(fā)地為多個應用服務,同時具有安全性和完整性。即數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余,但不能避免一切冗余。所以選項A正確,選項B錯誤。在數(shù)據(jù)庫管理階段中,數(shù)據(jù)是結構化的,面向系統(tǒng),數(shù)據(jù)冗余度小,從而節(jié)省了數(shù)據(jù)的存儲空間,也減少了對數(shù)據(jù)的存取時間,提高了訪問效率,避免了數(shù)據(jù)的不一致性。數(shù)據(jù)的不一致性,是指對數(shù)據(jù)的存取方式,選項C錯誤。數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù),并非是數(shù)據(jù)庫系統(tǒng)的特點,選項D錯誤。本題正確答案是A。

10.B解析:y-的作用是先取其值作為表達式的值,然后y的值減1存入y。當y>0時循環(huán)繼續(xù),直到y(tǒng)=0時循環(huán)結束,然后y值減1存入y中,所以選B。

11.B此定義語句“int(*f)(int);”為指向函數(shù)的指針變量的定義方法,其中f為指向函數(shù)的指針變量,第1個int為函數(shù)返回值類型,第2個int為函數(shù)的形參類型。故本題答案為B選項。

12.Dc語言規(guī)定,一個字符常量代表ASCII碼字符集里的一個字符,在群序中用單引號括起來,以便區(qū)分。'\v'表示的是豎向跳格:'kx2a'表示的是兩位十六迸制數(shù);'a'表示的是字符a對應的ASCII碼值。"\0"用雙引號故不正確。

13.1111解析:本題考核的知識點是printf()函數(shù)的輸出格式.本題中定義了一個整型變量i并賦初值為9,然后要求以八進制輸出i的值,因為9的八進制的表示為11,所以最后輸出的值為11。

14.333,3解析:本題在while(n++<=1)語句后,直接加了分號,說明如果while()的條件為真時,該循環(huán)什么都不做;n++是先取n的當前值和I做比較,然后再將n加1。第一次循環(huán),n=0時,循環(huán)條件n++=0<=1成立,執(zhí)行循環(huán),然后得到n=1。第二次循環(huán),n=1時,循環(huán)條件n++=1<=1成立,執(zhí)行循環(huán),然后得到n=2。第三次循環(huán),n=2時,循環(huán)條件n++=2<=1不成立,不執(zhí)行循環(huán),但在判斷循環(huán)條件時仍將n加1,得到n=3。退出循環(huán)后執(zhí)行printf語句,第二個printf語句輸出n++,是先輸出n的當前值3,然后再將n加1,即程序結束后得到n=4,但輸出的是3。

15.HelloHello解析:字符串中,數(shù)值0或符號'/0'表示字符串的結束。本題中,b[5]被賦了0值,表明字符串b的第六個字符就是結束標志。因此,只輸出前五個字符,即Hello。

16.99解析:本題要輸出的結果是字符串'IBM\\n012\\1\\\\'的長度,'IBM'是3個字符,\'\\n\'是1個字符,'012'又是3個字符,最后的\'\\1\'和\'\\\\\'都是1個字符。所以最終字符串的長度應該是3+1+3+1+1=9。故本題應該填9。

17.5656解析:本題中a,b,c,d足實參,x,y,cp,dp是形參。C語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內(nèi)存中,實參單元與形參單元是不同的單元。在調(diào)用函數(shù)時,給形參分配存儲單元,并將實參對應的值傳遞給形參,調(diào)用結束后,形參單元被釋放,實參單元仍保留并維持原值。因此,程序的輸出結果是56。

18.buf的首地址buf的首地址解析:考查fgets()函數(shù)的功能,fgets()函數(shù)用來從文件中讀入字符串。調(diào)用格式為:fgets(buf,n,fp)。此處,fp是文件指針,buf是存放字符串的起始地址,n是一個int型變量。調(diào)用函數(shù)fgets()時,最多能讀入n-1個字符,系統(tǒng)自動在最后加字符串結束標志,并以buf作為函數(shù)值返回。

19.continuecontinue解析:continue語句只是結束本次循環(huán),然后進行循環(huán)的條件判定。break語句是終止整個循環(huán)的執(zhí)行,不再進行條件判定。

20.length++i<lengthlength++\r\ni<length解析:第—個循環(huán)極有可能是計算串的長度,在i<=length時字符才被刪除,被刪除的是從第i個到笫i+n或最后—個間的所有字符。刪除前,應判斷i<=length。由于已經(jīng)進行了-i運算,故實際應填入i<length。

21.x=2

22.線性結構線性結構解析:與棧類似,隊列也是線性表,也町以采用鏈式存儲結構。

23.a.next=aba.next=ab解析:選項A)中,指針變量q保存的就是變量b的地址,選項B)中的p是指針變量,應該是p->next=&b;在選項D)中,用*運算符取出結構體變量,并且保存的就是b的地址。

24.對象對象解析:類描述的是具有相似性質(zhì)的一組對象。例如,每本具體的書是一個對象,而這些具體的書都有共同的性質(zhì),它們都屬于更一般的概念“書”這一類對象。一個具體對象稱為類的實例。

25.

解析:該程序功能是求一維整型數(shù)組元素中最大的值和它所在的下標。其中,求最大元素的方法:用最大值變量nax標記第一個待找數(shù)據(jù),逐個把所有待找數(shù)據(jù)和max進行比較,并用max標記其當前最大值及其所在位置,從而找出最大值。

26.longfun(char*p){longn=0;intflag=1;if(*p=='-')/*負數(shù)時置flag為-1*/{p++;flag=-1;}elseif(*p=='+')/*正數(shù)時置flag為1*/p++;while(*p!='\0'){n=n*10+*p-'0';/*將字符串轉(zhuǎn)成相應的整數(shù)*/p++;}returnn*flag;}longfun(char*p)\r\n{\r\nlongn=0;\r\nintflag=1;\r\nif(*p=='-')/*負數(shù)時置flag為-1*/\r\n{p++;flag=-1;}\r\nelseif(*p=='+')/*正數(shù)時置flag為1*/\r\np++;\r\nwhile(*p!='\\0')\r\n{n=n*10+*p-'0';/*將字符串轉(zhuǎn)成相應的整數(shù)*/\r\np++;\r\n}\r\nreturnn*flag;\r\n}解析:if()的作用是判斷它是正數(shù)還是負數(shù)。while()循環(huán)的作用是將字符串轉(zhuǎn)成相應的整數(shù)。注意*p是一個字符如'9','4',并不是一個數(shù),要將其轉(zhuǎn)成相應的數(shù)字必須令其減去'0'(不是'\\0'),即*p-'0'就得到*p這個字符的相應數(shù)字。如'0'-'0'=0,'8'-'0'=8等。必須在程序的前面加#include<stdlib.h>,函數(shù)atol()的作用是將字符串p轉(zhuǎn)成長整型數(shù),它是一個庫函數(shù)。

27.

解析:該程序功能是計算并輸出給定10個數(shù)的方差。解題思路是,根據(jù)題干中給出的方差公式首先計算出x’的值,然后計算根號里面的值,最后求其平方根。

28.voidfun(intxintpp[]int*n){intij=0;for(i=1;i<x;i=i+2)/*i的初始值為1步長為2確保i為奇數(shù)*/if(x%i==0)/*將能整除x的數(shù)存入數(shù)組pp中*/pp[j++]=i;*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/}voidfun(intx,intpp[],int*n)\r\n{\r\ninti,j=0;\r\nfor(i=1;i<x;i=i+2)/*i的初始值為1,步長為2,確保i為奇數(shù)*/\r\nif(x%i==0)/*將能整除x的數(shù)存入數(shù)組pp中*/\r\npp[j++]=i;\r\n*n=j;/*傳回滿足條件的數(shù)的個數(shù)*/\r\n}解析:本題題干信息是:能整除x且不是偶數(shù)的所有整數(shù)。循環(huán)語句中i從1開始且每次增2,所以i始終是奇數(shù)。

29.voidfun(intmint*kintxx[]){intijn=0;for(i=4;i<m;i++)/*找出大于1小于整數(shù)m的非素數(shù)*/{for(j=2;j<i;j++)if{i%j==0)break;if(j<i)xx[n++]=i;}*k=n;/*反回非素數(shù)的個數(shù)*/}voidfun(intm,int*k,intxx[])\r\n{\r\ninti,j,n=0;\r\nfor(i=4;i<m;i++)/*找出大于1小于整數(shù)m的非素數(shù)*/\r\n{for(j=2;j<i;j++)\r\nif{i%j==0)break;\r\nif(j<i)xx[n++]=i;\r\n}\r\n*k=n;/*反回非素數(shù)的個數(shù)*/\r\n}解析:這道題是考查一個數(shù)是不是素數(shù)的簡單延伸,只要掌握了判斷素數(shù)的方法,問題便能順利解決,請學習者以此題為例,搞清判斷素數(shù)的方法。

30.intfun(intw[])[N]){intijk=0;ints=0;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==0||i==N-1||j==0||j==N-1)/*只要下標中有一個為0或N-1則它一定是周邊元素*/{s=s+w[i][j]*w[i][j];/*將周邊元素求平方和*/}returns;/+返回周邊元素的平方和*/}intfun(intw[])[N])\r\n{\r\ninti,j,k=0;\r\nints=0;\r\nfor(i=0;i<N;i++)\r\nfor(j=0;j<N;j++)\r\nif(i==0||i==N-1||j==0||j==N-1)/*只要下標中有一個為0或N-1,則它一定是周邊元素*/\r\n{s=s+w[i][j]*w[i][j];/*將周邊元素求平方和*/\r\n}\r\nreturns;/+返回周邊元素的平方和*/\r\n}解析:該題采用逐一判斷的方式,周邊元素的下標一定有一個是0或N-1,且只要下標中有一個為0或N-1,則它一定是周邊元素。

31.

解析:該程序功能是求最低分數(shù)的學生。本題是關于求解結構體中某些成員的最小值,首先將第一個值設定為最小值,并在循環(huán)中將其他所有值與該值進行比較,求得最小值。

32.

解析:該程序功能是刪除下標為偶數(shù)同時ASCII值為奇數(shù)的字符。解題過程利用if判斷表達式選擇下標為偶數(shù)同時ASCII值為奇數(shù)的字符,然后將符合條件的字符放入指定的字符串,這樣就實現(xiàn)了函數(shù)功能。

33.intfun(STRECa[]){intij;STRECt;for(i=1;i<N;i++)/*用冒泡法進行排序進行N-1次比較*/for(j=0;j<N-1;j++)/*在每一次比較中要進行N-1次兩兩比較*/if(a[j].s<a[j+1].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分數(shù)的高低排列學生的記錄高分在前*/}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=1;i<N;i++)/*用冒泡法進行排序,進行N-1次比較*/\r\nfor(j=0;j<N-1;j++)/*在每一次比較中要進行N-1次兩兩比較*/\r\nif(a[j].s<a[j+1].s)\r\n{t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分數(shù)的高低排列學生的記錄,高分在前*/\r\n}解析:冒泡法算法思路:如果有N個數(shù),則要進行N-1次比較,在每一次比較中要進行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個數(shù)進行比較并將其中大的數(shù)放在前或在后(若要求從小到大排序,則大的數(shù)要放在后。反之則對調(diào)),即兩兩比較后這兩個數(shù)要形成題中所要求的順序。由于總是從頭到尾進行比較,所以第1次比較結束后,最大(或最小)數(shù)肯定在最后,第2次比較結束后,次最大(或次最小)數(shù)肯定在倒數(shù)的第2個數(shù),依次類推,所以進行第一次比較時必須比較到最后一個數(shù),而進行第2次比較時只要比較到倒數(shù)的第2個數(shù)即可,所以進行第i次比較時只需比較N-i次即可(這種算法較難理解,但它是最好的)。

選擇法算法思路:如果有N個數(shù)則從頭到倒數(shù)的第2個數(shù)一個一個往后走動,每走動1個數(shù)總是將這個數(shù)與其后的所有數(shù)進行比較并找出它們的最大(或最小)數(shù),找出最大(或最小)數(shù)后再將所得的最大(或最小)數(shù)與該數(shù)進行交換,交換后再

溫馨提示

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

評論

0/150

提交評論