- 相關(guān)推薦
計算機二級C語(yǔ)言上機編程題詳細分析
相信不少同學(xué)都認為計算機二級C語(yǔ)言上機編程題很難,所以今天小編為大家帶來(lái)計算機二級C語(yǔ)言上機編程題詳細分析,希望各位考生考出理想成績(jì)。
1、請編一個(gè)函數fun,它的功能是:根據以下公式求π的值(要求滿(mǎn)足精度0.0005,即,某項小于0.0005時(shí)停止迭代):
程序運行后,如果輸入精度0.0005,則程序輸出多少。
注意:部分源程序存在PROG1.C中,請勿改動(dòng)主函數和其他函數中的內容,僅在函數fun的指定的部位填入你編寫(xiě)的若干語(yǔ)句。
試題源程序如下:
#include
#include
double fun(double eps)
{
}
main()
{ double x;
printf("Input eps:");
scanf("%lf",&x); printf(" eps=%lf, PI=%lf ",x,fun(x));
}
分析:
(1)本題所用基本算法應為累加。假設累加值放在變量s中,累加項放在變量t中,累加操作由語(yǔ)句s=s+t;來(lái)實(shí)現。
(2)若稱(chēng) 為第1累加項,則其前的1為第0累加項,其后的一項為第2累加項,按給定的公式可知,從第1累加項開(kāi)始,后一項的累加項是前一項的值乘以 。所以當前的累加項應當是:t=t*n/(2.0*n+1.0)。表達式右邊的t中是前一項的值,表達式左邊的t為當前的每累加累加項。請注意,不要寫(xiě)成:t*n/(2*n+1)而進(jìn)行整除。
(3)若第0累加項的1作為s的初值,語(yǔ)句:s=s+t;執行n次,就把第1到第n項累加到了s中。每進(jìn)行一次累加,n值增1。
(4)把以上操作放在循環(huán)中。按本題規定,當某項小于eps(0.0005)時(shí)停止迭代,因此若用while循環(huán),可用t>=eps作為控制循環(huán)進(jìn)行的條件:
while( t>=eps ){ s+=t; n++; t=t*n/(2.0*n+1); }
(5)注意應給所用變量賦適當的初值。
(6)退出循環(huán)后,函數的返回值應是:2*s。2、請編一個(gè)函數fun,其中n所指存儲單元中存放了數組中元素的個(gè)數。函數的功能是:刪除所有值為y的元素。已在主函數中給數組元素賦值,y的值由主函數通過(guò)鍵盤(pán)讀入。
注意:部分源程序存在PROG1.C中,請勿改動(dòng)主函數和其他函數中的內容,僅在函數fun的指定的部位填入你編寫(xiě)的若干語(yǔ)句。
試題源程序如下:
#include
#define M 20
void fun(int bb[],int *n, int y)
{
}
main()
{ int aa[M]={1,2,3,3,2,1,1,2,3,4,5,4,3,2,1}, n=15, y, k;
printf("The original data is: ");
for(k=0; k
fun(aa, &n, y);
printf("The data after d %d: ",y);
for(k=0; k
}
分析:
(1)本題的基本算法是查找和刪除。
(2)若循環(huán)控制變量是i,通過(guò)for循環(huán)逐個(gè)檢查元素中的值,把數組元素中不等于y的值從頭開(kāi)始重新放入bb所指的數組中。用i作為下標,逐個(gè)引用數組元素;用i作為下標,把不等于y的元素中的值逐一重新放入bb所指的數組中。這一操作可用以下語(yǔ)句來(lái)實(shí)現:
if(bb[i]!=y)bb[j++]=bb[i];
(3)因為已刪除了與y值相等的元素,因此,數組中數據的個(gè)數已經(jīng)改變;所以循環(huán)結束后,需要重新給n所指變量賦值。退出循環(huán)后,變量j中存放的是刪除后數組中數據的個(gè)數,通過(guò)語(yǔ)句*n=j;把它賦給n所指變量即可。
(4)主函數中輸出aa數組中原有的數據,和刪除后的數據?忌梢詫φ账幒瘮凳欠裾_。3.請編寫(xiě)一個(gè)函數void fun(char m,int k,int xx[]),該函數的功能是:將大于整數m且緊靠m的k個(gè)素數存入xx所指的數組中。例如,若輸入17和5,則應輸出:19,23,29,31, 37。
注意:部分源程序存在PROG1.C中,請勿改動(dòng)主函數和其他函數中的內容,僅在函數fun的指定的部位填入你編寫(xiě)的若干語(yǔ)句。
試題源程序如下:
#include
void fun(int m, int k, int xx[])
{
}
main()
{ int m, n, zz[100];
printf(" Please enter two integers(m & n): ");
scanf("%d%d",&m,&n);
fun(m, n, zz);
for(m=0; m
printf(" ");
。
分析:
(1)本題的基本算法是求素數。假設有整數i,若i不能被2到i之間的任意一個(gè)數除盡,則i就是素數;若一旦能被某個(gè)數除盡就不是素數。
(2)以下是求i是否為素數的基本算法:變量ok用作i是素數的標志,ok為1,則i是素數。
ok=1;
for(p=2; p
if( i%p==0){ ok=0; break; }
if(ok)……
(3)本題要求把大于m的k個(gè)素數存入xx所指的數組中。所以,i的值應大于m;取大于m的值逐一進(jìn)行判斷,若是素數就放入xx所指數組中。把以上語(yǔ)句放入一個(gè)循環(huán)中:
for( i=m+1,j=0; ? ; i++ )
{ ok=1;
for(p=2; p<=i/2; p++)
if( i%p==0 ){ ok=0; break; }
if (ok) { xx[j]=i;j++; }
}
此處,變量i統計存入數組中元素的個(gè)數,同時(shí)作為下標。
(4)按本題的要求,外循環(huán)結束的條件應當是:j
拓展:計算機二級c語(yǔ)言有什么特性
C語(yǔ)言的主要特性有以下幾種:
1、C是高級語(yǔ)言:它把高級語(yǔ)言的基本結構和語(yǔ)句與低級語(yǔ)言的實(shí)用性結合起來(lái)。
2、C是結構式語(yǔ)言:結構式語(yǔ)言的顯著(zhù)特點(diǎn)是代碼及數據的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨立。
3、C語(yǔ)言功能齊全:具有各種各樣的數據類(lèi)型,并引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大,可以實(shí)現決策目的的游戲。
4、C語(yǔ)言適用范圍大:適合于多種操作系統,如Windows、DOS、UNIX等等;也適用于多種機型。
5、C語(yǔ)言應用指針:可以直接進(jìn)行靠近硬件的操作,但是C的指針操作不做保護,也給它帶來(lái)了很多不安全的因素。C++在這方面做了改進(jìn),在保留了指針操作的同時(shí)又增強了安全性。
6、C語(yǔ)言創(chuàng )始人D.M.Ritchie6、C語(yǔ)言文件由數據序列組成:可以構成二進(jìn)制文件或文本文件常用的C語(yǔ)言IDE有Microsoft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++,Borland C++ Builder,GNU DJGPP C++,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc,xcode等。
C語(yǔ)言的特性:
1.C#是一種從C++和Java繼承而來(lái)的,簡(jiǎn)單的,現代的,面向對象的語(yǔ)言.
2.它的目標是綜合Visual Basic高產(chǎn)和C++底層高效的特性.
3.它是Microsoft Visual Studio7.0 的一部分.
4.Visual studio支持Vb,VC++,C++,Vbscript,Jscript.所有這些語(yǔ)言提供對Microsft .NET平臺的訪(fǎng)問(wèn).
5..NET包括一個(gè)Common Execution引擎和一個(gè)豐富的類(lèi)庫.
6.Microsofts JVM eqiv就是Common language(通用語(yǔ)言)運行庫(CLR).
7.CLR支持不止一種語(yǔ)言,諸如 C#,VB.NET,Jscript,ASP.NET,C++.
【計算機二級C語(yǔ)言上機編程題詳細分析】相關(guān)文章:
計算機二級C語(yǔ)言上機編程題講解07-10
2017年C語(yǔ)言上機編程題練習06-21
計算機二級C語(yǔ)言編程題題型09-06
計算機二級C語(yǔ)言上機程序填空題09-26