![2022-2023學年河南省安陽市全國計算機等級考試C語言程序設計模擬考試(含答案)_第1頁](http://file4.renrendoc.com/view/c5dc8bc9254d4f39eae2b07786faf02c/c5dc8bc9254d4f39eae2b07786faf02c1.gif)
![2022-2023學年河南省安陽市全國計算機等級考試C語言程序設計模擬考試(含答案)_第2頁](http://file4.renrendoc.com/view/c5dc8bc9254d4f39eae2b07786faf02c/c5dc8bc9254d4f39eae2b07786faf02c2.gif)
![2022-2023學年河南省安陽市全國計算機等級考試C語言程序設計模擬考試(含答案)_第3頁](http://file4.renrendoc.com/view/c5dc8bc9254d4f39eae2b07786faf02c/c5dc8bc9254d4f39eae2b07786faf02c3.gif)
![2022-2023學年河南省安陽市全國計算機等級考試C語言程序設計模擬考試(含答案)_第4頁](http://file4.renrendoc.com/view/c5dc8bc9254d4f39eae2b07786faf02c/c5dc8bc9254d4f39eae2b07786faf02c4.gif)
![2022-2023學年河南省安陽市全國計算機等級考試C語言程序設計模擬考試(含答案)_第5頁](http://file4.renrendoc.com/view/c5dc8bc9254d4f39eae2b07786faf02c/c5dc8bc9254d4f39eae2b07786faf02c5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2022-2023學年河南省安陽市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(12題)1.若有定義語句“chars[10]=“1234567\0\0”;”,則Strlen(s)的值是()。
A.7B.8C.9D.10
2.下列方法中,屬于白盒法設計測試用例的方法的是()。
A.錯誤推測B.因果圖C.基本路徑測試D.邊界值分析
3.
4.有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,“w”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);}程序的運行結果是()。
A.321B.12300C.1D.123
5.以下敘述中錯誤的是()
A.在C程序中,APH和aph是兩個不同的變量
B.C程序中的變量,代表內存中的一個存儲單元,它的值可以根據需要隨時修改
C.在C程序中,無論是整數還是實數,都能準確無誤地表示
D.在C程序中,一個正整數可以用十進制、八進制和十六進制的形式來表示
6.下列程序的輸出結果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112
7.若有以下的定義:‘intt[3][2];”,能正確表示t數組元素地址的表達式是()。
A.&t[3][2]B.t[3]C.t[l]D.t[2][2]
8.下列敘述中正確的是()。
A.break語句只能用于switch語句體中
B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)
C.break語句只能用在循環(huán)體內和switch語句體內
D.在循環(huán)體內使用break語句和continue語句的作用相同
9.有以下程序:#include<stdio.h>main(){charv[4][10];inti;for(i=0;i<4;i++)scanf(“%s”,v[i]);printf(“%c,%s,%s,%c”,**v,*(v+1),v[3]+3,*(v[2]+1));}程序運行時輸入welcomeyoutobeijing并按<Enter>鍵,則輸出結果是()。
A.w,youjing,o
B.welcome,you,jing,to
C.w,you,eeijing,u
D.w,xelcome,eeijing,u
10.若有說明語句:inta,b,c,*d=&c;,則能正確從鍵盤讀入3個整數分別賦給變量a、b、c的語句是______。
A.scanf("%d%d%d",&a,&b,d);
B.scanf("%d%d%d",&a,&b,&d);
C.scanf("%d%d%d",a,b,d);
D.scanf("%d%d%d",a,b,*d);
11.有以下程序main(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf(“%d\n”,x);}程序運行后的輸出結果是______。A.3B.5C.-1D.-2
12.數據流圖用于抽象描述一個軟件的邏輯模型,數據流圖由一特定的圖符構成。下列圖符名標識的圖符不屬于數據流圖合法圖符的是______。
A.控制流B.加工C.數據存儲D.源和潭
二、2.填空題(12題)13.以下程序的輸出結果是______。
main()
{inta=0;
a+-(a=8);
printf("%d\n",a);
}
14.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
printf("i=%d,j-%d\n",i,j);
}
要求給i賦10,給j賦20,則應該從鍵盤輸入______。
15.設有以下定義和語句,sizeof(a)的值是【】,sizeof(b)的值是【】。
struct{intday;Charmonth;intyear;}a,*b;
b=&a;
16.一個模塊直接調用的其他模塊的模塊個數稱為______。
17.下面程序運行后的輸出結果是()。
#include<stdio.h>
main()
{inta[]={1,2,3,4,5,6},*k[3],i=1;
while(i<4)
{k[i-1]=&a[2*i-1];
printf("%d",*k[i-1]);
i++;
}
}
18.若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數據的形式應該是【】。
intb,c;floata;
scanf("%f,%d,c=%d",&a,&b,&c)
19.以下程序的功能是:通過函數func輸入字符并統(tǒng)計輸入字符的個數。輸入時用字符作為輸入結束標志。請?zhí)羁铡?include<stdio.h>long();/*函數說明語句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}
20.隊列是限定在表的一端進行插入和在另一端進行刪除操作的線性表。允許插入的一端稱作______。
21.數據元素之間______的整體稱為邏輯結構。
22.有以下程序:
main()
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
程序運行后的輸出結果是【】。
23.閱讀下面語句,則執(zhí)行后的輸出結果為【】。
#include"stdio.h"
main()
{chara,b;
for(a='0',b='9';a<b;a++,b--)
printf("%c%c",a,b);
printf("\n");}
24.設有以下程序,為使之正確運行,請在橫線中填入應包含的命令行。(注:try_me()函數在a:\myfile.txt中有定義。)
______
main()
{printf("\n");
try_me();
printf("\n");}
三、3.程序設計題(10題)25.請編寫函數fun(),它的功能是計算下列級數和,和值由函數值返回。
S=1+x+x2/2!3/3!+…/xn/n!
例如,當n=10,x=0.3時,函數值為1349859。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
doublefun(doublex,intn)
{
}
main()
{
clrscr();
printf("%f",fun(0,3,10));
}
26.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun(),它的功能是按分數的高低排列學生的記錄,低分在前。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charmum[10);
ints;
}STREC;
intfun(STRECa[])
{
}
main()
{
STRECs[N]={{“GA005”,88},{“GA003”,64},
{“CA002”,77},{“GA004”,89},{“GA001”,54},
{“GA007”,72},{“GA008”,72},{“GA006”,65},
{“GA015”,83},{“GA013”,95},{“GA012”,55},
{“GA014”,68},{“GA01l”,78},{“GA017”,53},
{“GA018”,92},{“GA016”,82}};
inti;
FILE*out;
fun(s);
printf(“Thedataaftersorted:\n”);
for(i=0;i<N;i++)
{
if((i)%4==0)
/*每行輸出4個學生記錄*/
printf(“\n”);
printf(“%s%4d”,s[i].num,s[i].s);
}
printf(“\n”);
ut=fopen(“out21.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);
}
27.請編寫一個函數fun(),它的功能是:求出一個2×M整型二維數組中最大元素的值,并將此值返回調用函數。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fan的花括號中填入所編寫的若干語句。
試題程序:
#defineM4
#include<stdio.h>
fun(inta[][M])
{
}
main()
{
intarr[2][M]={5,8,3,45,76,-4,12,82};
printf("max=%d\n",fun(arr));
}
28.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能是:把分數最高的學生數據放在h所指的數組中,注意:分數最高的學生可能不止一個,函數返回分數最高的學生的人數。
注意:部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
29.編寫一個函數fun(),它的功能是:實現(xiàn)兩個字符串的連接(不使用庫函數strcat,即把p2所指的字符串連接到p1所指的字符串后。
例如,分別輸入下面兩個字符串:
FirstString
SecondString
則程序輸出:
FirstStringSecondString
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號小填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(charpi[],charp2[])
{
}
main()
{
chars1[80],s2[40];
clrscr();
printf("Enters1ands2:\n");
scanf("%s%s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("Invokefun(s1,s2):\n");
fun(s1,s2);
printf("Afterinvoking:\n");
printf("%s\n",s1);
}
30.請編寫一個函數fun,它的功能是:比較兩個字符串的長度,(不得調用C語言提供的求字符串長度的函數),函數返回較長的字符串。若兩個字符串長度相同,則返回第一個字符串。
例如,輸入beijingshah曲aj(為回車鍵),函數將返回shanghai。
注意:部分源程序存在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
31.請編寫一個函數fun(),它的功能是:求出一個4×M整型二維數組中最小元素的值,并將此值返回調用函數。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,儀在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#defineM4
#include<stdio.h>
fun(inta[])[M])
{
}
main()
{
intarr[4][M]={11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7);
printf(“min=%d\n”,fun(arr));
}
32.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能是:把分數最低的學生數據放在b所指的數組中,注意:分數最低的學生可能不止一個,函數返回分數最低的學生的人數。
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
33.假定輸入的字符串中只包含字母和*號。請編寫函數fun,它的功能是:只刪除字符串前導和尾部的*號,串中字母之間的*號都不刪除。形參n給出了字符串的長度,形參h給出了字符串中前導*號的個數,形參e給出了字符串中最后*號的個數。在編寫函數時,不得使用C語言提供的字符串函數。
例如,字符串中的內容為:****A*BC*DEF*G*******,刪除后,字符串中的內容應當是:A*BC*DEF*G。
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
34.請編寫函數fun,其功能是:計算并輸出當x<0.97時下列多項式的值,直到|Sn-Sn-2
|<0.000001為止。
例如,在主函數中從鍵盤給x輸入0.21后,輸出為:s=1.100000。
注意:部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
四、單選題(0題)35.有以下程序#include<stdio.h>voidfun(int*a,int*B){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*p,*q);}程序運行后的輸出結果是______。A.3,5,5,3B.3,5,3,5C.5,3,3,5D.5,3,5,3
五、單選題(0題)36.排序方法中,從未排序序列中依次取出元素與已排序序列中的元素進行比較,將其放入已排序序列的正確位置上的方法,稱為()。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
六、單選題(0題)37.下列選項中與“if(a==1)a=b;elsea++;”語句功能不同的switch語句是()。
A.switch(a==1){ case0:a=b;break; case1:a++;}
B.switch(a){ case1:a=b;break; default:a++;}
C.switch(a){ default:a++;break; case1:a=b;}
D.switch(a==1){ case1:a=b;break; case0:a++;}
參考答案
1.Astrlen函數計算字符串長度時,遇到結束標識為止,且長度不包括結束標識。本題中的字符串從第1個字符開始,遇到第1個結束標識‘\\0’為止,注意不占字符串長度,所以字符串長度為7。故本題答案為A選項。
2.CC)【解析】白盒測試方法也稱為結構測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。
3.D
4.D程序首先將數組a中的元素1、2、3分別寫入了d1.dat文件中,再將d1.dat文件中的數據“123”整體寫到變量n的空間中,所以輸出的數據為123。故本題答案為D選項。
5.C
6.C當執(zhí)行fun函數時,因為參數傳遞時是地址傳遞,因此形參值的改變會影響實參中的數,在執(zhí)行fun函數時先輸出12,接著把*X賦3,*y賦4,此時帶回主函數中,輸出的值為34。
7.C數組的下標是從0開始的,A中越界,行下標和列下標都不能越界;B中,雖然是個地址,但是也同樣越界了;選項C中表示的是第一個的首地址;選項D表示的為其元素的值,并不是地址。
8.C解析:只能在循環(huán)體內和switch語句體內使用break語句。當break出現(xiàn)在循環(huán)體的switch語句體內時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設置break語句,滿足某種條件,則跳出本層循環(huán)體。
9.A題干中,定義一個二維字符數組v。然后通過for循環(huán),輸入4個字符串welcome、you、to、beijing,將其分別存放在v的4個元素中。數組v是存放4個字符串的二維數組;“**v”表示第1個字符串的第一個字符“w”;“*(v+1)”指向第2個字符串“you”;“v[3]+3”指向第4個字符串的第3個字符開始后的整個字符串“jing”;“*(v[2]+1)”表示第3個宇符串的第2個字符“o”。故本題答案為A選項。
10.A解析:選項B中d已經為地址,不應在加上求地址符號“&”,故選項B不正確;選項C中,a和b都為變量不是地址,應該在a和b之前加上求地址符號“&”,故選項C不正確:選項D中指針d所指向的存儲空間的位置為變量c的值,不為地址,故選項D不正確,所以,4個選項中A為所選。
11.D本題考核的知識點是運算符的優(yōu)先級。主函數中首先定義了整型變量m、n和x,并給m和n賦初值為3和4,接著執(zhí)行兩條賦值語句,第一條x=-m++等價于x=-(m++),其值即為-3,第二條x=x+8/++n等價于X=X+8/(++n),即為x=-3+8/5=-2,因此最后輸出x的值為-2。所以,4個選項中選項D符合題意。
12.A解析:數據流圖從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變換過程。數據流圖中的主要圖形元素有:加工(轉換)、數據流、存儲文件(數據源)、源和潭。
13.1616解析:在程序中首先將8賦值給變量a,然后在進行復合賦值運算。即a=a+a=8+8=16,所以該空格處應該填16。
14.i=0j=20i=0j=20解析:本題考核的知識點是scanf()數的使用.該函數的第一個參數是格式字符串,主要由兩類字符組成,一類是非格式符要求原樣輸入,一類是格式符對應要輸入的變量,所以說本題中應該原樣輸入i=j=,后面分別給變量0和20,所以說空格處應該填入i=0,j=20。
15.52
16.扇出扇出解析:在結構圖中,調用一個給定模塊的模塊個數稱為扇入,一個模塊直接調用的其他模塊個數稱為扇出。
17.246
18.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數據時應輸入與這些字符相同的字符。所以此題中輸入數據的形式是5.04,c=3。
19.tunc()m++tunc()m++解析:第一空白處,在C語言中如果子函數在主函數之后定義,就要對其進行說明,說明的形式為:“函數類型名函數名”。所以此處填寫func()。第二空白處,整型變量m表示輸入字符的個數,所以每輸入一個字符,變量m的值就加1。所以此處填寫m++。
20.隊尾隊尾解析:在隊列中,允許插入的一端叫做“隊尾”,允許刪除的一端叫做“隊頭”。
21.邏輯關系邏輯關系
22.66解析:本題定義了二維數組a和指針變量p,p指向數組的首地址,for循環(huán)語句的功能是給數組元素賦值,結果為a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[2][0]=7、a[2][1]=8、a[2][2]=9,故printf函數的輸出結果為6。
23.918273645918273645解析:for是C語言的關鍵字,其后的一對圓括號中通常含有3個表達式,各個表達式之間用分號隔開,這3個表達式可以是任意形式的表達式,通常主要用于for循環(huán)控制。
24.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數的存儲分類的概念。如果沒有特別說明,函數的存儲范圍是從定義函數的位置到文件的結尾,如果其他文件想使用這個函數,需要用ginclude文件包含命令將定義函數的文件包含進來。
25.doublefun(doublexintn){inti;doubles=1.0.s1=1.0;for(i=1;i<=n;i++){s1=s1*i;/*各項中的階乘*/s=s+pow(xi)/s1;/*按公式求出*/}returns;}doublefun(doublex,intn)\r\n{\r\ninti;\r\ndoubles=1.0.s1=1.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1*i;/*各項中的階乘*/\r\ns=s+pow(x,i)/s1;/*按公式求出*/\r\n}\r\nreturns;\r\n}解析:本程序中用s1來表示每項的分母(即各項中的階乘),要注意本程序中s和s1的初值都為1。
26.intfun(STRECa[]){intij;STRECt;for(i=l;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;}}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=l;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{\r\nt=a[j];\r\na[j]=a[j+1];\r\na[j+1]=t;\r\n}\r\n}解析:冒泡法算法思路:如果有N個數,則要進行N-1次比較,在每—次比較中要進行N-1次兩兩比較(這種算法較好理解但不是最精的)。所謂兩兩比較就是從頭到尾依次將相鄰兩個數進行比較并將其中大的數放在前或在后(若要求從小到大排序,則大的數要放在后。反之則對調),即兩兩比較后這兩個數要形成題中所要求的順序。由于總是從頭到尾進行比較,所以第1次比較結束后,最大(或最小)數肯定在最后,第2次比較結束后,次最大(或次最小)數肯定在倒數的第2個數,依次類推,所以進行第一次比較時必須比較到最后一個數,而進行第2次比較時只要比較到倒數的第2個數即可,所以進行第i次比較I時只需比較N-i次即可(這種算法較難理解,但它是最好的)。
27.fun(inta[][M]){intijmax=a[0][0];for(i=0;i<2;i++)for(j=0;j<M;j++)if(max<a[i][j])max=a[i][j];/*求出二維數組的最大值*/returnmax;}fun(inta[][M])\r\n{\r\ninti,j,max=a[0][0];\r\nfor(i=0;i<2;i++)\r\nfor(j=0;j<M;j++)\r\nif(max<a[i][j])\r\nmax=a[i][j];/*求出二維數組的最大值*/\r\nreturnmax;\r\n}解析:此類求最大值或最小值的C語言問題,我們可以采用逐個比較的方式。要求數組中的所有元素走動一遍,并從中找出最大、最小值,要注意一開始應使max存放數組中的第一個元素的值??砂粗鹦胁檎乙部砂粗鹆胁檎业姆绞?,本題采用的是逐行查找的方式。即行下標在外層循環(huán)列下標在內層循環(huán),因為在循環(huán)的嵌套中越在內層循環(huán),循環(huán)變化就越快。
28.
解析:該程序功能是把分數最高的學生數據放在h所指的數組中。本題是關于求解結構體中某些成員的最大值,首先將第一個值設定為最大值,并在循環(huán)中將其他所有值與該值進行比較,求得最大值。然后將最大值與所有值進行比較,求得所有的最大值。
29.voidfun(charp1[]charp2[]){intij;for(i=0;p1[i]!='\0';i++);/*求出的i為p1字符的總長度包括結束標記位*/for(j=0;p2[j]!='\0';j++)p1[i++]=p2[j];/*將p2字符串連在p1字符串的后面*/p1[i]='\0';/*在字符串最后加上結束標記符*/}voidfun(charp1[],charp2[])\r\n{\r\ninti,j;\r\nfor(i=0;p1[i]!='\\0';i++);/*求出的i為p1字符的總長度,包括結束標記位*/\r\nfor(j=0;p2[j]!='\\0';j++)\r\np1[i++]=p2[j];/*將p2字符串連在p1字符串的后面*/\r\np1[i]='\\0';/*在字符串最后加上結束標記符*/\r\n}解析:本題用兩個循環(huán),第1個循環(huán)的作用是將i走到第1個字符串的末尾。第2個循環(huán)的作用是將第2個字符串的字符連到第1個字符串的末尾。
30.
解析:該程序功能是比較兩個字符串的長度。解題過程是首先分別求得兩個字符串的長度,然后對這兩個值進行判斷,實現(xiàn)兩個字符串長度的比較。
31.fun(inta[][M]){intijmin=a[0][0];for(i=0;i<4;i++)for(j=0;j<M;j++)if(min>a[i][j])min=a[i][j];/*求出二維數組的最小值*/returnmin;}fun(inta[][M])\r\n{\r\n\u3000inti,j,min=a[0][0];\r\n\u3000for(i=0;i<4;i++)\r\nfor(j=0;j<M;j++)\r\nif(min>a[i][j])\r\nmin=a[i][j];/*求出二維數組的最小值*/\r\nreturnmin;\r\n}解析:此類求最大值或最小值的C語言問題,我們可以采用逐個比較的方式。要求數組中的所有元素走動一遍,并從中找出最大、最小值,要注意一開始應使min存放數組中的第—個元素的值??砂粗鹦胁檎乙部砂粗鹆胁檎业姆绞?,本題采用的是逐行找的方式。即行下標在外層循環(huán),列下標在內層循環(huán),因為在循環(huán)的嵌套中越在內層循環(huán),循環(huán)變化就越快。
32.
解析:該程序功能是把分數最低的學生數據放在b所指的數組中。本題是關于求解結構體中某些成員的最小值,首先將第一個值設定為最小值,并在循環(huán)中將其他所有值與該值進行比較,求得最小值。然后將最小值與所有值進行比較,求得所有的最小值。
33.
解析:該程序功能是刪除字符串前導和尾部的“*”號。解題過程是根據主函數中求出的前導和尾部的“*”數目,作為for循環(huán)條件,并且在循環(huán)過程中第一個非“*'號開始前移,實現(xiàn)函數功能。
34.
解析:該程序功能是計算并輸出當x<0.97時題干中給出的多項式的值。根據題干中給出的數列,首先推出每一項的表達式,然后再對多項式進行累加求和。
35.B解析:本題主要考查的是函數的實參和形參之間的傳遞關系,C語言中實參變量和形參變量之間的數據傳遞是單向的“值傳遞”方式。指針變量作函數參數也要遵循這一規(guī)則。調用函數不可能改變實參指針變量的值。所以x和y的地址并沒有改變,即p和q也沒有改變,因此,選項B是正確的。
36.C
37.A題干中,if語句的含義是:如果a的值為1,將b的值賦給a,否則將a的值自增1。選項A中,“switch(a==1)”中表達式“a==1”的結果如果為真,即1,則從case1開始執(zhí)行“a++”;如果“a==1”的結果為假,即為0,則從case0開始執(zhí)行“a=b”,所以與題干含義執(zhí)行操作相反的是選項A中的語句。故本題答案為A選項。2022-2023學年河南省安陽市全國計算機等級考試C語言程序設計模擬考試(含答案)學校:________班級:________姓名:________考號:________
一、單選題(12題)1.若有定義語句“chars[10]=“1234567\0\0”;”,則Strlen(s)的值是()。
A.7B.8C.9D.10
2.下列方法中,屬于白盒法設計測試用例的方法的是()。
A.錯誤推測B.因果圖C.基本路徑測試D.邊界值分析
3.
4.有以下程序:#include<stdio.h>main(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen(“d1.dat”,“w”);for(i=0;i<3;i++)fprintf(fp,“%d”,a[i]);fprintf(fp,“\n”);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d”,&n);fclose(fp);printf(“%d\n”,n);}程序的運行結果是()。
A.321B.12300C.1D.123
5.以下敘述中錯誤的是()
A.在C程序中,APH和aph是兩個不同的變量
B.C程序中的變量,代表內存中的一個存儲單元,它的值可以根據需要隨時修改
C.在C程序中,無論是整數還是實數,都能準確無誤地表示
D.在C程序中,一個正整數可以用十進制、八進制和十六進制的形式來表示
6.下列程序的輸出結果是()。voidfun(int*X,inty){printf("%d%d",*x,*y);*x=3;*y=1;}main{intx=1,y=2;fun(&y,&x);printf("%d%d",x,y);}A.2143B.1212C.1234D.2112
7.若有以下的定義:‘intt[3][2];”,能正確表示t數組元素地址的表達式是()。
A.&t[3][2]B.t[3]C.t[l]D.t[2][2]
8.下列敘述中正確的是()。
A.break語句只能用于switch語句體中
B.continue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)
C.break語句只能用在循環(huán)體內和switch語句體內
D.在循環(huán)體內使用break語句和continue語句的作用相同
9.有以下程序:#include<stdio.h>main(){charv[4][10];inti;for(i=0;i<4;i++)scanf(“%s”,v[i]);printf(“%c,%s,%s,%c”,**v,*(v+1),v[3]+3,*(v[2]+1));}程序運行時輸入welcomeyoutobeijing并按<Enter>鍵,則輸出結果是()。
A.w,youjing,o
B.welcome,you,jing,to
C.w,you,eeijing,u
D.w,xelcome,eeijing,u
10.若有說明語句:inta,b,c,*d=&c;,則能正確從鍵盤讀入3個整數分別賦給變量a、b、c的語句是______。
A.scanf("%d%d%d",&a,&b,d);
B.scanf("%d%d%d",&a,&b,&d);
C.scanf("%d%d%d",a,b,d);
D.scanf("%d%d%d",a,b,*d);
11.有以下程序main(){intm=3,n=4,x;x=-m++;x=x+8/++n;printf(“%d\n”,x);}程序運行后的輸出結果是______。A.3B.5C.-1D.-2
12.數據流圖用于抽象描述一個軟件的邏輯模型,數據流圖由一特定的圖符構成。下列圖符名標識的圖符不屬于數據流圖合法圖符的是______。
A.控制流B.加工C.數據存儲D.源和潭
二、2.填空題(12題)13.以下程序的輸出結果是______。
main()
{inta=0;
a+-(a=8);
printf("%d\n",a);
}
14.若有程序
main()
{inti,j;
scanf("i=%d,j=%d",&i,&j);
printf("i=%d,j-%d\n",i,j);
}
要求給i賦10,給j賦20,則應該從鍵盤輸入______。
15.設有以下定義和語句,sizeof(a)的值是【】,sizeof(b)的值是【】。
struct{intday;Charmonth;intyear;}a,*b;
b=&a;
16.一個模塊直接調用的其他模塊的模塊個數稱為______。
17.下面程序運行后的輸出結果是()。
#include<stdio.h>
main()
{inta[]={1,2,3,4,5,6},*k[3],i=1;
while(i<4)
{k[i-1]=&a[2*i-1];
printf("%d",*k[i-1]);
i++;
}
}
18.若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數據的形式應該是【】。
intb,c;floata;
scanf("%f,%d,c=%d",&a,&b,&c)
19.以下程序的功能是:通過函數func輸入字符并統(tǒng)計輸入字符的個數。輸入時用字符作為輸入結束標志。請?zhí)羁铡?include<stdio.h>long();/*函數說明語句*/main(){longn;n=func();printf"n=%1d\n",n);}longfunc(){longm;for(m=0;getchar()!='';());returnm:}
20.隊列是限定在表的一端進行插入和在另一端進行刪除操作的線性表。允許插入的一端稱作______。
21.數據元素之間______的整體稱為邏輯結構。
22.有以下程序:
main()
{inta[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++)p[i]=i+1;
printf("%d\n",a[1][2]);
}
程序運行后的輸出結果是【】。
23.閱讀下面語句,則執(zhí)行后的輸出結果為【】。
#include"stdio.h"
main()
{chara,b;
for(a='0',b='9';a<b;a++,b--)
printf("%c%c",a,b);
printf("\n");}
24.設有以下程序,為使之正確運行,請在橫線中填入應包含的命令行。(注:try_me()函數在a:\myfile.txt中有定義。)
______
main()
{printf("\n");
try_me();
printf("\n");}
三、3.程序設計題(10題)25.請編寫函數fun(),它的功能是計算下列級數和,和值由函數值返回。
S=1+x+x2/2!3/3!+…/xn/n!
例如,當n=10,x=0.3時,函數值為1349859。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#include<conio.h>
#include<stdio.h>
#include<math.h>
doublefun(doublex,intn)
{
}
main()
{
clrscr();
printf("%f",fun(0,3,10));
}
26.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun(),它的功能是按分數的高低排列學生的記錄,低分在前。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#defineN16
typedefstruct
{charmum[10);
ints;
}STREC;
intfun(STRECa[])
{
}
main()
{
STRECs[N]={{“GA005”,88},{“GA003”,64},
{“CA002”,77},{“GA004”,89},{“GA001”,54},
{“GA007”,72},{“GA008”,72},{“GA006”,65},
{“GA015”,83},{“GA013”,95},{“GA012”,55},
{“GA014”,68},{“GA01l”,78},{“GA017”,53},
{“GA018”,92},{“GA016”,82}};
inti;
FILE*out;
fun(s);
printf(“Thedataaftersorted:\n”);
for(i=0;i<N;i++)
{
if((i)%4==0)
/*每行輸出4個學生記錄*/
printf(“\n”);
printf(“%s%4d”,s[i].num,s[i].s);
}
printf(“\n”);
ut=fopen(“out21.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);
}
27.請編寫一個函數fun(),它的功能是:求出一個2×M整型二維數組中最大元素的值,并將此值返回調用函數。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fan的花括號中填入所編寫的若干語句。
試題程序:
#defineM4
#include<stdio.h>
fun(inta[][M])
{
}
main()
{
intarr[2][M]={5,8,3,45,76,-4,12,82};
printf("max=%d\n",fun(arr));
}
28.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能是:把分數最高的學生數據放在h所指的數組中,注意:分數最高的學生可能不止一個,函數返回分數最高的學生的人數。
注意:部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
29.編寫一個函數fun(),它的功能是:實現(xiàn)兩個字符串的連接(不使用庫函數strcat,即把p2所指的字符串連接到p1所指的字符串后。
例如,分別輸入下面兩個字符串:
FirstString
SecondString
則程序輸出:
FirstStringSecondString
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號小填入所編寫的若干語句。
試題程序:
#include<stdio.h>
#include<conio.h>
voidfun(charpi[],charp2[])
{
}
main()
{
chars1[80],s2[40];
clrscr();
printf("Enters1ands2:\n");
scanf("%s%s",s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("Invokefun(s1,s2):\n");
fun(s1,s2);
printf("Afterinvoking:\n");
printf("%s\n",s1);
}
30.請編寫一個函數fun,它的功能是:比較兩個字符串的長度,(不得調用C語言提供的求字符串長度的函數),函數返回較長的字符串。若兩個字符串長度相同,則返回第一個字符串。
例如,輸入beijingshah曲aj(為回車鍵),函數將返回shanghai。
注意:部分源程序存在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
31.請編寫一個函數fun(),它的功能是:求出一個4×M整型二維數組中最小元素的值,并將此值返回調用函數。
注意:部分源程序給出如下。
請勿改動主函數main和其他函數中的任何內容,儀在函數fun的花括號中填入所編寫的若干語句。
試題程序:
#defineM4
#include<stdio.h>
fun(inta[])[M])
{
}
main()
{
intarr[4][M]={11,3,9,35,42,-4,24,32,6,48,-32,7,23,34,12,-7);
printf(“min=%d\n”,fun(arr));
}
32.學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組s中,請編寫函數fun,它的功能是:把分數最低的學生數據放在b所指的數組中,注意:分數最低的學生可能不止一個,函數返回分數最低的學生的人數。
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
33.假定輸入的字符串中只包含字母和*號。請編寫函數fun,它的功能是:只刪除字符串前導和尾部的*號,串中字母之間的*號都不刪除。形參n給出了字符串的長度,形參h給出了字符串中前導*號的個數,形參e給出了字符串中最后*號的個數。在編寫函數時,不得使用C語言提供的字符串函數。
例如,字符串中的內容為:****A*BC*DEF*G*******,刪除后,字符串中的內容應當是:A*BC*DEF*G。
注意:部分源程序在文件PROGl.C文件中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
34.請編寫函數fun,其功能是:計算并輸出當x<0.97時下列多項式的值,直到|Sn-Sn-2
|<0.000001為止。
例如,在主函數中從鍵盤給x輸入0.21后,輸出為:s=1.100000。
注意:部分源程序在文件PROGl.C中。
請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入你編寫的若干語句。
四、單選題(0題)35.有以下程序#include<stdio.h>voidfun(int*a,int*B){int*c;c=a;a=b;b=c;}main(){intx=3,y=5,*p=&x,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*p,*q);}程序運行后的輸出結果是______。A.3,5,5,3B.3,5,3,5C.5,3,3,5D.5,3,5,3
五、單選題(0題)36.排序方法中,從未排序序列中依次取出元素與已排序序列中的元素進行比較,將其放入已排序序列的正確位置上的方法,稱為()。
A.希爾排序B.冒泡排序C.插入排序D.選擇排序
六、單選題(0題)37.下列選項中與“if(a==1)a=b;elsea++;”語句功能不同的switch語句是()。
A.switch(a==1){ case0:a=b;break; case1:a++;}
B.switch(a){ case1:a=b;break; default:a++;}
C.switch(a){ default:a++;break; case1:a=b;}
D.switch(a==1){ case1:a=b;break; case0:a++;}
參考答案
1.Astrlen函數計算字符串長度時,遇到結束標識為止,且長度不包括結束標識。本題中的字符串從第1個字符開始,遇到第1個結束標識‘\\0’為止,注意不占字符串長度,所以字符串長度為7。故本題答案為A選項。
2.CC)【解析】白盒測試方法也稱為結構測試或邏輯測試,主要方法有邏輯覆蓋測試、基本路徑測試等。
3.D
4.D程序首先將數組a中的元素1、2、3分別寫入了d1.dat文件中,再將d1.dat文件中的數據“123”整體寫到變量n的空間中,所以輸出的數據為123。故本題答案為D選項。
5.C
6.C當執(zhí)行fun函數時,因為參數傳遞時是地址傳遞,因此形參值的改變會影響實參中的數,在執(zhí)行fun函數時先輸出12,接著把*X賦3,*y賦4,此時帶回主函數中,輸出的值為34。
7.C數組的下標是從0開始的,A中越界,行下標和列下標都不能越界;B中,雖然是個地址,但是也同樣越界了;選項C中表示的是第一個的首地址;選項D表示的為其元素的值,并不是地址。
8.C解析:只能在循環(huán)體內和switch語句體內使用break語句。當break出現(xiàn)在循環(huán)體的switch語句體內時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想強行中止循環(huán)體的執(zhí)行,可以在循環(huán)體中,但并不在switch語句中設置break語句,滿足某種條件,則跳出本層循環(huán)體。
9.A題干中,定義一個二維字符數組v。然后通過for循環(huán),輸入4個字符串welcome、you、to、beijing,將其分別存放在v的4個元素中。數組v是存放4個字符串的二維數組;“**v”表示第1個字符串的第一個字符“w”;“*(v+1)”指向第2個字符串“you”;“v[3]+3”指向第4個字符串的第3個字符開始后的整個字符串“jing”;“*(v[2]+1)”表示第3個宇符串的第2個字符“o”。故本題答案為A選項。
10.A解析:選項B中d已經為地址,不應在加上求地址符號“&”,故選項B不正確;選項C中,a和b都為變量不是地址,應該在a和b之前加上求地址符號“&”,故選項C不正確:選項D中指針d所指向的存儲空間的位置為變量c的值,不為地址,故選項D不正確,所以,4個選項中A為所選。
11.D本題考核的知識點是運算符的優(yōu)先級。主函數中首先定義了整型變量m、n和x,并給m和n賦初值為3和4,接著執(zhí)行兩條賦值語句,第一條x=-m++等價于x=-(m++),其值即為-3,第二條x=x+8/++n等價于X=X+8/(++n),即為x=-3+8/5=-2,因此最后輸出x的值為-2。所以,4個選項中選項D符合題意。
12.A解析:數據流圖從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變換過程。數據流圖中的主要圖形元素有:加工(轉換)、數據流、存儲文件(數據源)、源和潭。
13.1616解析:在程序中首先將8賦值給變量a,然后在進行復合賦值運算。即a=a+a=8+8=16,所以該空格處應該填16。
14.i=0j=20i=0j=20解析:本題考核的知識點是scanf()數的使用.該函數的第一個參數是格式字符串,主要由兩類字符組成,一類是非格式符要求原樣輸入,一類是格式符對應要輸入的變量,所以說本題中應該原樣輸入i=j=,后面分別給變量0和20,所以說空格處應該填入i=0,j=20。
15.52
16.扇出扇出解析:在結構圖中,調用一個給定模塊的模塊個數稱為扇入,一個模塊直接調用的其他模塊個數稱為扇出。
17.246
18.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數據時應輸入與這些字符相同的字符。所以此題中輸入數據的形式是5.04,c=3。
19.tunc()m++tunc()m++解析:第一空白處,在C語言中如果子函數在主函數之后定義,就要對其進行說明,說明的形式為:“函數類型名函數名”。所以此處填寫func()。第二空白處,整型變量m表示輸入字符的個數,所以每輸入一個字符,變量m的值就加1。所以此處填寫m++。
20.隊尾隊尾解析:在隊列中,允許插入的一端叫做“隊尾”,允許刪除的一端叫做“隊頭”。
21.邏輯關系邏輯關系
22.66解析:本題定義了二維數組a和指針變量p,p指向數組的首地址,for循環(huán)語句的功能是給數組元素賦值,結果為a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][1]=5、a[1][2]=6、a[2][0]=7、a[2][1]=8、a[2][2]=9,故printf函數的輸出結果為6。
23.918273645918273645解析:for是C語言的關鍵字,其后的一對圓括號中通常含有3個表達式,各個表達式之間用分號隔開,這3個表達式可以是任意形式的表達式,通常主要用于for循環(huán)控制。
24.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本題考查了函數的存儲分類的概念。如果沒有特別說明,函數的存儲范圍是從定義函數的位置到文件的結尾,如果其他文件想使用這個函數,需要用ginclude文件包含命令將定義函數的文件包含進來。
25.doublefun(doublexintn){inti;doubles=1.0.s1=1.0;for(i=1;i<=n;i++){s1=s1*i;/*各項中的階乘*/s=s+pow(xi)/s1;/*按公式求出*/}returns;}doublefun(doublex,intn)\r\n{\r\ninti;\r\ndoubles=1.0.s1=1.0;\r\nfor(i=1;i<=n;i++)\r\n{s1=s1*i;/*各項中的階乘*/\r\ns=s+pow(x,i)/s1;/*按公式求出*/\r\n}\r\nreturns;\r\n}解析:本程序中用s1來表示每項的分母(即各項中的階乘),要注意本程序中s和s1的初值都為1。
26.intfun(STRECa[]){intij;STRECt;for(i=l;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;}}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=l;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{\r\nt=a[j];\r\na[j]=a[j+1];\r\na[j+1]=t;\r\n}\r\n}解析:冒泡法算法思路:如果有N個數,則要進行N-1次比較,在每—次比較中要進行N-1次兩兩比較(這種算法較好理解但不
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 淮安2024年江蘇淮安漣水縣面向村(社區(qū))黨組織書記選聘鎮(zhèn)(街道)事業(yè)單位工作人員筆試歷年參考題庫附帶答案詳解
- 2025年中國唑螨酯市場調查研究報告
- 2025年中國五金工具塑料泡罩市場調查研究報告
- 2025年走馬機丈根帶項目可行性研究報告
- 2025至2031年中國調墨螺釘行業(yè)投資前景及策略咨詢研究報告
- 2025年移動平板滑輪車項目可行性研究報告
- 成都2025年四川成都師范學院招聘高層次人才67人(第一批)筆試歷年參考題庫附帶答案詳解
- 2025年水族產品項目可行性研究報告
- 2025年顯色皂洗機項目可行性研究報告
- 2025至2031年中國實心輪胎模具行業(yè)投資前景及策略咨詢研究報告
- 2025-2030年中國汽車用鉛酸蓄電池市場發(fā)展趨勢展望與投資策略分析報告
- 天津市和平區(qū)2024-2025學年高一(上)期末質量調查物理試卷(含解析)
- cpk自動計算電子表格表格
- 第五章 曲線運動(基礎夯實)-高一物理人教版(2019)必修二單元鞏固檢測
- 排球正面上手傳球 說課稿-2023-2024學年高一上學期體育與健康人教版必修第一冊
- 2025年浙江省交通投資集團財務共享服務中心招聘2名高頻重點提升(共500題)附帶答案詳解
- 客流統(tǒng)計系統(tǒng)施工方案
- 瓶裝液化氣送氣工培訓
- 道德經全文完整版本
- 濰坊市人民醫(yī)院招聘真題
- 銷售人員薪資提成及獎勵制度
評論
0/150
提交評論