⑴ c語言二級考試都考什麼啊那裡能找到題庫!
C語言二級復習綱要
一、基本知識
1.c是高級語言,結構化程序設計語言
2.程序設計的五個部分
二、變數、常量、表達式
1.常量的值是不能改變的
2.標識符的定義方法
3.c語言中二進制和八進制、十六進制的表示方法
4.算術運算符的優先順序別(++和--放在變數前後的區別)
5.c程序的基本構成結構(由函數構成,函數由基本結構構成)
三、順序結構
1.printf的格式控制串中的格式控制字元和後面的數據在數量上要一一對應,類型要匹配
2.scanf的格式控制串中不要有多餘字元,後面的數據是地址,如果是變數,前面要有&(取地址符)
3.兩個%代表一個%
4.復合語句以及空語句
四、選擇結構
if (表達式) 語句1;
else 語句2;
switch (表達式)
{ case….:……..;
.
.
.
case…:…….;}
1.關系表達式及優先順序別
2.邏輯表達式及優先順序別
3.關系,邏輯,算術優先順序別的問題
4.if後面跟的表達式是判斷真假的,switch是計算值的
5.if表達式後只能跟一個語句,如果要跟多個語句,必須用{ }括起來構成復合語句
6.switch裡面的語句後面一定要跟break才能跳出switch,否則會一致執行下去
7.if語句中,語句1和語句2兩個語句裡面只能有一個語句被執行
五、循環結構
1.三種循環結構及其區別(while和do….while多用於循環次數未知的情況,for用於循環次數已知的情況)
2.循環中的三要素:初始值,結束條件,自增語句
3.break和continue的區別
六、字元
1.字元量是用單引號』引起來的一個字元,用雙引號」引起來的字元是字元串
2.字元量等同於整形量
3.要使用putchar和getchar這兩個函數,就必須在程序的開頭使用#include 「stdio.h」
4.連續輸入
七、函數
1. 函數可以沒有返回值,也可以有返回值,但是只能返回一個值,在函數中,一碰到return語句,函數立即結束,返回調用的地方
2. 函數的返回值也是有類型的,函數的首部要加以說明
3. 函數也必須遵循先定義後使用的原則
4. 函數的實際參數和形式參數必須一一對應,類型也要匹配,同時,參數是變數的,只能進行單向傳遞,即,參數值只能從主函數傳遞給函數,而不能從函數返回主函數,這種稱之為:傳值傳遞
八、指針
1. 存放地址的變數稱為指針
2. 「*」號在數據定義的時候作為指針定義符,在語句中作為間接引用
3. 指針一定要有指向,不能沒有指向,指向空是有意義的]
4. 通過把指針作為函數參數,可以在主函數和函數之間傳遞數據,稱之為:傳地址傳遞
5. 指針每次移動,都移動一個單元,每個單元的長度是由指針的基類型確定的
6. 指向指針的指針是指:這個變數中存放的是指針的地址
7. 函數也可以返回指針,同樣,要在函數首部定義
九、數組
1. 數組是一連串連續的存儲單元的集合,他們是連續的
2. 把數組傳遞給函數,並且希望能改變其值,那麼在函數的首部,用指針定義參數
3. 二維數組是一維數組的特殊形式,可以把二維數組看成每一個一維數組,每個元素都是一個一維數組。
4. 要把二維數組傳遞給函數,並且希望能改變其值,那麼,在函數的首部,用一個行指針{(*sp)[ ]}來定義參數
5. 行指針和指針數組是不同的
行指針 指針數組
十、字元串
1. 字元串其實就是字元數組,一維字元數組可以存放一行字,而二維字元數組可以存放若干行字
2. 字元串的結束標志是\0,並且包含在字元串長度之內
3. 可以用字元指針指向一個字元串,其實就是指向字元數組的首地址
4. 字元串的輸入輸出使用puts和gets函數
十一、結構
1. 結構是一種特殊的用戶自定義數據類型,他由若干個成員構成
2. 要引用成員,就要看使用什麼來引用。用數據的話:結構體變數名.成員名。是指針的話:結構體指針-〉成員名
3. 成員符優先順序別問題:高於++ ――
4. 傳遞結構體變數給函數,並且希望能改變其值,那麼把該結構體變數的地址傳遞給函數,函數用該類型指針來接受結構體
5. 鏈表:在定義結構體變數的時候,在其中增加指向自己的指針,使得這種結構體變數能夠指向同類型結構體變數,由這種變數首尾相連,就能構成鏈表。
6. 鏈表的建立、刪除節點、增加節點,查找節點都要使用動態內存分配malloc和calloc,區別在於前者動態分配一個單元,而後者動態分配一系列單元
十一、文件
1. 文件的打開方法和打開方式及如何關閉
2. 如何對文件進行輸入和輸出
3. 文件指針及其操作函數
⑵ 大一C語言期末考試求題庫
一、單項選擇題(共10題,每題2分,共20分。在備選答案中選擇一個最佳答案。多選、錯選、不選不得分)
1、不是C語言基本數據類型的是( )。
A、指針類型 B、整型
C、字元型 D、實型
2、設有:int a=3, b= 4, c= 5,x , y; 表達式0 && (x=a)&&(y=b)的值為( )。
A、1 B、0 C、3 D、4
3、設有語句 int a=3 ; 則執行了語句 a+=6;後,變數a 的值為( )。
A、18 B、-3 C、9 D、12
4、執行以下程序段後,輸出的y值為( )
void main()
{ int a[]={2,4,6,8,10};
int y, *p;
p=&a[0];
y=*p; printf(「%d」,y);
}
A、2 B、4 C、6 D、8
5、有定義語句:float a[4];則分配給數組a的內存空間為( )位元組。
A、 20 B、 12 C、 16 C、10
6、以下描述錯誤的是( )。
A、break語句可用於while語句。
B、break語句和continue語句的作用是一樣的。
C、在循環語句中使用break語句是為了跳出循環,提前結束循環。
D、在循環語句中使用continue語句是為了結束本次循環,而不終止整個循環。
7、C語言中規定,if語句的嵌套結構中,else總是( )。
A、與最近的if 配對 B、與第一個if 配對
C、按縮進位置相同的if配對 D、與最近的且尚未配對的if 配對
8、說明語句「int (*p)( ); 」的含義是( ) 。
A、p是一個指向一維數組的指針變數。
B、p是指針變數,指向一個整型數據。
C、p是一個指向函數的指針,該函數返回一個int型數據。
D、以上都不對。
9、以下對二維數組c的正確聲明是 ( ) 。
A、int c[3][ ]; B、int c(3,4);
C、int c(2)(2); D、int c[3][2];
10、下述程序段執行後輸出結果為( )。
int x=100, y=200;
printf ("% d", (x, y));
A、100 B、200 C、100,200 D、編譯出錯
二、填空題(共7題,共10空,每空1分,共10分。將答案填在題中橫線上)
1、C語言提供的三種邏輯運算符是 && 、 || 和!;
2、函數的返回值是通過函數中的 return 語句獲得的。
3、在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"定義後,a[2][2]的值為_6__ _;
4、對於"int *pa[5];" pa是一個具有5個元素的_數組指針_,每個元素是一個指向int型變數的__指針__;
5、單向鏈表的尾節點next指針應賦值__ NULL___;
6、在語句for(x=1,y=3;x>y;y++)中循環體執行的次數為 0 。
7、int a[5];數組a的首地址為2000,則元素a[1]的地址為 2002 ,元素a[2]的地址為 2004 。
三、程序填空題(共2題,共5空,每空4分,共20分)
1、以下程序完成計算1-1/2+1/3-1/4+1/5+……前n 項和,請填空。
#include <stdio.h>
int main( )
{ int i, n, flag;
float sum;
scanf("%d", &n);
flag= 1 ;
sum=0;
for(i=1;i<=n; i++ )
{ sum+=(float)flag/i;
flag=-flag ;
}
printf("%.3f\n", sum);
}
2、以下程序的功能是從鍵盤輸入n個整數,統計其中正數、0、負數的個數,請填空。
#include <stdio.h>
void main( )
{int a, i, count1,count2,count3;
count1=count2=count3=0 ;
for(i=1;i<=n;i++)
{ scanf(「%d」, &a);
if(a>0) count1++;
else if(a==0) count2++ ;
else count3++;
}
printf(「正數:&d個,零:%d個,負數:%d個\n」, count1,count2,count3 );
}
四、運行程序結果題(共4題,每題6分,共24分)
1、寫出程序運行結果。
void main( )
{ int x=1,y=2,t;
int *p1,*p2;
p1=&x; p2=&y;
t=*p1;*p1=*p2;*p2=t;
printf("x=%d,y=%d\n",x,y);
}
運行結果為:
程序有錯,不能運行!或寫:
x=2,y=1
2、寫出程序運行結果。
#include<stdio.h>
int max(int a,int b)
{ int c;
c=a>b?a:b;
return(c);
}
int min(int a,int b)
{int c;
c=a<b?a:b;
return(c);
}
void main()
{ int a=2,b=6;
printf("max=%d\n",max(a,b));
printf(「min=%d\n」,min(a,b));
}
運行結果為:
程序有錯,不能運行!或寫:
max=6
min=2
3、寫出程序運行結果。
#include <stdio.h>
void main()
{ int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j,sum=0;
for (i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j) sum=sum+a[i][j];
printf(「sum=%d\n」,sum);
}
運行結果為:
程序有錯,不能運行!或寫:
sum=15
4、寫出程序運行結果。
void main( )
{ int n,f;
n=1;
while(n<=10)
{ f=f*n;
n+=2;
}
printf(「f=%d\n」,&f);
}
運行結果為:
程序有錯,不能運行!或寫:
f=不確定
五、程序設計題(共2題,每題13分,共26分)
1、將一個數組按逆序存放,如元素1、2、3、4、5,按逆序存放後為5、4、3、2、1。
⑶ c語言計算機二級考試選擇題如圖
全國計算機二級考試試題題庫(附答案)
下列各題 A) 、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項在答題
卡相應位置上塗黑,答在試卷上不得分。
(1) 應用軟體是指
A) 所有能夠使用的軟體 B) 能被各應用單位共同使用的某種軟體
C) 所有微機上都應使用的基本軟體 D) 專門為某一應用目的而編制的軟體
(2) 下列述敘中錯誤的是
A) 計算機要經常使用不要長期閑置不用
B) 為了延長計算機的壽命,應避免頻繁開關計算機
C) 在計算機附近應避免磁場干擾
D) 計算機用幾小時後,應關機一會兒再用
(3) 下列字元中,ASCII碼值最小的是
A) A B) a C) Z D) x
(4) 用晶體管作為電子器件製成的計算機屬於
A) 第一代 B) 第二代 C) 第三代 D) 第四代
(5) 下列各不同進制的四個無符號數中,最小的數是
A) ()2 B) (37)8 C) (75)10 D) (2A)16
(6) 二進制數轉換成十六進制數是
A) B) C) D)
(7) 下列各無符號十進制數中,能用八位二進製表示的是
A) 296 B) 333 C) 256 D) 199
(8) 計算機的軟體系統可分類為
A) 程序與數據 B) 系統軟體與應用軟體
D) 操作系統與語言處理程序 D) 程序、數據與文檔
(9) 486機中的CPU同時能處理的二進制位數為
A) 8 B) 16 C) 32 D) 64
(10) 在使用計算機的過程中,需要重新啟動DOS,則要
A) 按Ctrl+Break鍵 B) 按^C鍵 C) 按Ctrl+Alt+Del鍵 D) 按^H鍵
(11) 現要從軟盤啟動DOS(軟盤中已存有DOS系統),設有如下一些操作:①打開計算機
電源;②將該軟盤插入A驅動器;③關好A驅動器門。則冷啟動的操作順序應為
A) ①→②→③ B) ③→②→① C) ②→①→③ D) ②→③→①
(12) 設當前盤中某一文件路徑為\A\C\B\,當前目錄為\A。下列命令中錯誤的是
A) CD.. B) RD \A\C\B
C) TYPE \A\C\B\ D) TYPE C\B\
(13) 設當前盤中的根目錄下有一子目錄AB,在子目錄AB下有一文件。現要查看文件
的內容,應使用命令
A) TYPE \AB B) TYPE \AB\
C) TYPE \ D) DIR \AB\
(14) 自動批處理文件必須放在
A) C盤根目錄中 B) A盤根目錄中
C) 啟動盤的任一個目錄中 D) 啟動盤的根目錄中
(15) 設當前盤當前目錄為C:\USER\XY\P,且當前盤當前目錄為空,則下列命令中能正
確執行的是
A) RD C:\USER\XY\P B) RD USER\XY\P
C) MD \USER\XY\P\USER D) MD \USER\XY\P\X\Y
(16) 下列DOS命令中,合法的是
A) DISKCOMP B) TYPE >>
C) COMP A: B: D) COMP A: A:
(17) 設當前盤為C盤,所用的所有軟盤已格式化,且容量相同,則下列DOS命令中錯
誤的是
A) DISKCOPY A: A: B) COPY A:*.* C) COPY *.* D) COPY A:*.* C:
(18) 下列DOS命令中錯誤的是
A) TYPE >PRN B) TYPE PRN
C) COPY *.TXT PRN D) COPY CON PRN
(19) 下列四組DOS命令中,互相等價的一組是
A) COPY A:*.* B:與DISKCOPY A: B:
B) COPY +與TYPE >>
C) COPY + 與COPY +
D) TYPE *.FOR>CON與COPY *.FOR CON
(20) 設C盤目錄結構如下:
且C盤根目錄下文件的內容為
CD FORTRAN
CD \TC
如果在A驅動器中插入一張根目錄中只有擴展名為.C的若干文件(即A盤中無DOS系統
文件)的軟碟片,則由C盤啟動DOS系統後,第一次鍵入下列命令中,正確的是
A) COPY A:\*.C B) COPY A:\*.C TC
C) COPY A:\*.C FORTRAN D) CD USER
(21) C語言提供的合法的數據類型關鍵字是
A) Double B) short C) integer D) Char
(22) 在C語言中,合法的長整型常數是
A) 0L B) 4962710 C) D)
(23) 表達式:10!=9的值是
A) true B) 非零值 C) 0 D) 1
(24) 合法的C語言中,合法的長整型常數是
A) '\t' B) "A" C) 65 D) A
(25) 若有說明和語句:
int a=5;
a++;
此處表達式a++的值是
A) 7 B) 6 C) 5 D) 4
(26) 在下列選項中,不正確的賦值語句是
A) ++t; B) n1=(n2=(n3=0)); C) k=i==j; D) a=b+c=1;
(27) 若有說明:int i,j=7, *p=&i;,則與i=j;等價的語句是
A) I= *P; B) *P=*&J; C) i=&j; D) i=* *p;
(28) 不能把字元串:Hello!賦給數組b的語句是
A) char b[10]={'H','e','l','l','o','!'};
B) char b[10];b="Hello!";
C) char b[10];strcpy(b,"Hello!");
D) char b[10]="Hello!";
(29) 若有以下說明:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a',d,g;
則數值為4的表達式是
A)a[g-c] B)a[4] C)a['d'-'c'] D)a['d'-c]
(30) 若有以下說明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
則數值為6的表達式是
A) *p+6 B) *(p+6) C) *p+=5 D) p+5
(31) 若有以下說明:
int w[3][4]o={{0,1},{2,4},{5,8}};
int(*p)[4]=w;
則數值為4的表達式是
A) *w[1]+1 B) p++,*(p+1) C) w[2][2] D) p[1][1]
(32) 若程序中有下面的說明和定義
struct abc
{int x;char y;}
struct abc s1,s2;
則會發生的情況是
A) 編譯進錯 B) 程序將順利編譯`連接`執行
C) 能順利通過編譯`連接`但不能執行 D) 能順利通過編譯`但連接出錯
(33) 能正確表示a≥10或a≤0的關系表達式是
A)a>=10 or a<=0 B)a>=10│a<=0
C)a>=10││a<=0 D)a>=10 ││a<=0
(34) 下面程序的輸出是
main()
{ int x=3,y=6,a=0;
while(x++!=(y+=o1))
{ a+o=1;
if(y
#include
main()
{ char ss[10]="12345";
strcat(ss,"6789");
gets(ss);printf("%s\n",ss);
}
A) ABC B) ABC9 C) 123456ABC D) ABC456789
(35) 下面程序的輸出是
main()
{ char *a="";
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{ default:v4++;
case '1': v1++;
case '3': v3++;
case '2': v2++; }
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4); }
A) v1=4,v2=2,v3=1,v4=1 B) v1=4,v2=9,v3=3,v4=1
C) v1=5,v2=8,v3=6,v4=1 D) v1=8,v2=8,v3=8,v4=8
(36) 下面程序的輸出是
main()
{int k=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}
A)k=11,k=12,k=11 B)k=11,k=13,k=13 C)k=11,k=013,k=0xb D)k=11,k=13,k=b
(37) 若有以下程序段,w和k都是整型變數:
┆
w=k;
LB: if(w==0) go to LE;
w--;
printf("*");
goto LB;
LE: ┆
則不能與上面程序段等價的循環語句是
A)for(w=k;w!=0;w--) printf("*"); B)for(w=k;w;--w)printf("*");
C)w=k; D)w=k;
while(w--!=0)printf("*");w++; do{ w--;printf("*");}while(w!=0);
(38) 若有說明,double *p,a;則能通過scanf語句正確給輸入項讀入數據的程序段是
A)*p=&a; scanf("%lf",p); B)p=(double *)malloc(8);scanf("%f",p);
C) p=&a;scanf("%lf",a); D)p=&a; scanf("%le",p);
(39) 當執行下面程序且輸入:ABC時,輸出的結果是
#include
#include
main()
{ char ss[10]="12345";
gets(ss);printf("%s\n",ss); }
A) ABC B) ABC9 C) 123456ABC D) ABC456789
(40) 若有以下的說明和語句:
main()
{int t[3][2], *pt[3],k;
fpr(k=o; k<3;k++)pt[k]=t[k];
}
則以一選項中能正確表示t數組元素地址的表達式是
A) &t[3][2] B) *pt[0] C) *(pt+1) D) &pt[2]
(41) 下面程序輸出數組中的最大值,由s指針指向該元素.
main()
{ int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;
flr(p=a, s=a; p-a<10; p++)
if(---?---)s=p;
printf("The max:%d",*s):
}
則在if語句中的判斷表達式應該是
A) p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s
(42) 下面程序的輸出是
#include
main()
{ char*a="abcdefgh";
fun(a);puts(a); }
fun (char * s)
{ int x=0,y;char c;
for(y=strlen(s)-1;x
A)abcdefgh B)hgfdecba C)dcbahgfe D)hgfedcba
(43) 若有以下函數調用語句: fun(a+b,(x,y),fun(n+k,d,(a,b)));在此函數調用語句
中實參的個數是
A)3 B)4 C)5 D)6
(44) 下面程序的輸出是
main()
{ int t=1; fun(fun(t));}
fun(int h)
{ static int a[3]={1,2,3};
int k;
for(k=0;k<3;k++) a[k]+=a[k]-h;
for(k=1;k<3;k++) printf("%d",a[k]);
printf("\n"); return(a[h]);}
A)1,2,3, B)1,3,5, C) 1,3,5, D) 1,3,5,
1,5,9, 1,3,5, 0,4,8, -1,3,7,
(45) C語言中,函數的隱含存儲類別是
A)auto B)static C)extern D)無存儲類別
(46) 下面程序的輸出是
int w=3;
main()
{ int w=10; printf("%d\n",fun(5)*w); }
⑷ 急需2級c語言上級題庫
1.找出所有100以內(含100)滿足I,I+4,I+10都是素數的整數I(I+10也在100以內)的個數cnt以及這些I之和sum。參考答案:#include <stdio.h>void main( ){ int i,j,k,cnt=0,sum=0; for(i=2;i<=90;i++) { k=1; for(j=2;j<i;j++) if(i%j= =0) {k=0;break;} for(j=2;j<i+4;j++) if((i+4)%j= =0) {k=0;break;} for(j=2;j<i+10;j++) if((i+10)%j= =0) {k=0;break;} if(k= =1) {cnt++;sum+=i;} } printf("%d\t%d\n",cnt,sum);}運行結果:7 201 2.求出ss字元串中指定字元c的個數,並返回此值。(註:大小寫字母有區別) 例如,若輸入字元串ss= 123412132 ,c='1',則輸出3。參考答案:#include <stdio.h>#include <string.h>void main(){ char ss[100],c; int i,cnt=0; gets(ss); c=getchar(); for(i=0;i<strlen(ss);i++) if(ss[i]= =c) cnt++; printf("%d\n",cnt);} 3.把s字元串中的所有字母改寫成該字母的下一個字元,字母z改寫成字母a。要求大寫字母仍為大寫字母,小寫字母仍為小寫字母,其他字元不做派瞎改變。例如:s字元串中原有的內櫻凳容為:Mn.123Zxy,則調用該函數後,結果為No.123Ayz。參考答案:#include <stdio.h>#include <string.h>void main(){ char s[100]; int i; gets(s); for(i=0;i<strlen(s);i++) { if((s[i]>='a'&&s[i]<'z')||(s[i]>='A'&&s[i]<'Z')) s[i]++; else if(s[i]= ='z'||s[i]= ='Z') s[i]-=25; } puts(s);} 4.把S字元串中的所有字元左移一個位置,串中的第一個字元移到最後.例如:S字元串中原有內容為:MN.123XYZ,則調用函數後,結果為:N.123XYZM.參考答案:#include <stdio.h>#include <string.h>void main(){ char s[100],temp; int i; gets(s); temp=s[0]; for(i=0;i<strlen(s)-1;i++) s[i]=s[i+1]; s[strlen(s)-1]=temp; puts(s);} 5.統計在TT字元串中'A'到'Z'26個字母各自現的次數,並存入PP數組.(僅統計小寫字母。) 例如:當輸入字元串:abcdefgabcdeabc後,輸出的結果應該是:3 3 3 2 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 參考答案:#include <塵頌空stdio.h>#include <string.h>void main( ){ char TT[100]; int i,PP[26]={0}; gets(TT); for(i=0;i<strlen(TT);i++) PP[TT[i]-'a']++; for(i=0;i<26;i++) printf("%d\t",PP[i]);} 6.設A,B,C為三個不為零的正整數,計算並輸出下列不定方程組解的個數CNT以及滿足此條件的所有A,B,C之和SUM。 不定方程組為: A+B+C=13 A-C=5 參考答案:#include <stdio.h>void main(){ int a,b,c,cnt=0,sum=0; for(a=1;a<=13;a++) for(b=1;b<=13;b++) for(c=1;c<=13;c++) if(a+b+c= =13&&a-c= =5) { cnt++; sum+=a+b+c; printf("%d,%d,%d\n",a,b,c); } printf("%d\t%d\n",cnt,sum);}運行結果:6,6,17,4,28,2,33 39 7.選取出100以上1000以內所有個位數字與十位數字之和被10除所得余數恰是百位數字的素數(如293)。參考答案:#include <stdio.h>void main(){ int i,j; for(i=100;i<1000;i++) { for(j=2;j<i;j++) if(i%j= =0) break; if(j= =i&&(i%10+i/10%10)%10= =i/100) printf("%d\t",i); }}運行結果:101 211 239 257 293 349 367 431 523 541 569 587 743 761 853 8。將大於整數m且緊靠m的k個素數存入數組xx。例如:若輸入17,5,則應輸出:19,23,29,31,37。 參考答案:#include <stdio.h>void main(){ int xx[5],m,k,num=0,i,j; scanf("%d,%d",&m,&k); i=m+1; while(num<5) { for(j=2;j<i;j++) if(i%j= =0) break; if(j= =i) xx[num++]=i; i++; } for(i=0;i<5;i++) printf("%d\t",xx[i]);} 9。在三位整數(100至999)中尋找符合條件的整數並依次從小到大存入數組中;它既是完全平方數,又是兩位數字相同,例如144、676等。參考答案:#include <stdio.h>void main(){ int xx[100]={0},i,k,t,a,b,c,cnt=0; for(i=100;i<1000;i++) { a=i%10; b=i/10%10; c=i/100; t=0; if(a= =b) t++; if(a= =c) t++; if(b= =c) t++; for(k=10;k<40;k++) if(k*k= =i&&t= =1) xx[cnt++]=i; } for(i=0;i<100&&xx[i];i++) printf("%d\t",xx[i]);}運行結果:100 121 144 225 400 441 484 676 900 10。某級數的前兩項 =1, =1,以後各項具有如下關系: 下列程序的功能是:要求依次對於整數M=100,1000和10000求出對應的最小的n值,使其滿足:Sn>=M,這里 Sn=A1+A2+...+An, 並依次把n值存入數組單元b[0],b[1]和b[2]中,最後把數組b[]中的值輸出到out.dat文件中。 參考答案:#include <stdio.h>void main(){ int n,M[3]={100,1000,10000},b[3],i,s,A1,A2,t; FILE *fp; fp=fopen("out.dat","w"); for(i=0;i<3;i++) { A1=A2=1;s=0; s+=A1+A2; n=2; while(s<M[i]) { t=A1+2*A2; s+=t; A1=A2; A2=t; n++; } b[i]=n; } for(i=0;i<3;i++) fprintf(fp,"%d\n",b[i]); fclose(fp);}運行結果:71012
⑸ 2017年計算機二級C語言模擬題及答案(2)
大家做好准備迎接考試了嗎?誠意整理「2017年計算機二級C語言模擬題及答案(2)」,歡迎廣大考生前來學習。
2017年計算機二級C語言模擬題及答案(2)
1). 若變數已正確定義並賦值,以下符合C語言語法的表達式是
A.a:=b+1
B.a=b=c+2
C.int 18.5%3
D.a=a+7=c+b
正確答案:B
答案解析:選項A中包含一個不合法的運算符":=";選項C應改為(int)18.5%3;選項D可理解為兩個表達式:a+7=c+b和a=a+7,其中第一個是錯的,因為C語言規定賦值號的左邊只能是單個變數,不能是表達式或常量等。因此,正確答案是選項B,它實際上相當於a=(b=c+2),進而可分解為兩個表達式:b=c+2和a=b。
2). 結構化程序設計的基本原則不包括( )
A.多元性
B.自頂向下
C.模塊化
D.逐步求精
正確答案:A
答案解析:結構化程序設計方法的主要原則可以概括為:自頂向下,逐步求精,模塊化和限制使用GOTO語句,其中不包括多態性。
3). 下面選項中關於位運算的敘述正確的是( )
A.位運算符都需要兩個操作數
B.左移運算的結果總是原操作數據2倍
C.右移運算時,高位總是補0
D.位運算的對象只能是整型或字元型數據
正確答案:D
答案解析:位運算則是以位(bit)一級進行的運算,位運算符中除″~″以外,均為二元運算符,即要求兩側各有一個運算量,運算量只能是整型或字元型的數據,不能為實型數據。其中右移時,右端(低位)移出的二進制數舍棄,左端(高位)移入的二進制數分兩種情況:對於無符號整數和正整數,高位補0;對於負整數,高位補1。而左移運算在沒有溢出的前提下每移動一位,相當於原數據的2倍。
4). 定義無符號整數類為UInt,下面可以作為類UInt實例化值的是( )
A.-369
B.369
C.0.369
D.整數集合{1,2,3,4,5}
正確答案:B
答案解析:UInt表示的是無符號整數類,所以它的每個實例都是一個無符號整數,所以排除選項A和選項C,選項D是整數集合,所以也排除。
5). 下列關於類、對象、屬性和方法的敘述中,錯誤的是( )。
A.類是對一類具有相同的屬性和方法對象的描述
B.屬性用於描述對象的狀態
C.方法用於表示對象的行為
D.基於同一個類產生的兩個對象不可以分別設置自己的屬性值
正確答案:D
答案解析:類是對一類具有相同的屬性和方法對象的描述,屬性用於描述對象的狀態,方法用於表示對象的行為,基於同一個類產生的兩個對象是可以分別設置自己的屬性值。
6). 下列描述中正確的是( )
A.軟體交付使用後還需要再進行維護
B.軟體工具交付使用就不需要再進行維護
C.軟體交付使用後其生命周期就結束
D.軟體維護是指修復程序中被破壞的指令
正確答案:A
答案解析:通常將軟體產品從提出、實現、使用維護到停止使用退役的過程稱為軟體生命周期。軟體生命周期分為軟體定義、軟體開發及軟體運行維護三個階段。已交付的軟體投入運行後,應在運行使用中不斷地維護,根據新提出的需要進行必要而且可能的擴充和刪改。
7). 資料庫設計包括兩個方面的設計內容,它們是
A.概念設計和邏輯設計
B.模式設計和內模式設計
C.內模式設計和物理設計
D.結構特性設計和行為特性設計
正確答案:A
答案解析:資料庫設計包括資料庫概念設計和資料庫邏輯設計兩個方面的內容。
8). 以下不能輸出字元A的語句是(註:字元A的ASCII碼值為65,字元a的ASCII碼值為97)( )
A.printf (″%c ″, ′a′-32);
B.printf (″%d ″, ′A′);
C.printf (″%c ″, 65);
D.printf (″%c ″, ′B′-1);
正確答案:B
答案解析:在選項B的輸出函數中,大寫字元′A′以整型數據的形式輸出。
9). 下列描述中正確的是( )
A.程序就是軟體
B.軟體開發不受計算機系統的限制
C.軟體既是邏輯實體,又是物理實體
D.軟體是程序、數據與相關文檔的集合
正確答案:D
答案解析:計算機軟體與硬體是計算機系統中相互依存的兩部分。計算機軟體是包括程序、數據及相關文檔的完整集合。軟體由兩部分組成:一部分是機器可執行的程序和數據;二是機器不可執行的,與軟體開發、運行、維護、使用等有關的文檔。軟體具有以下六個特點:①軟體是一種邏輯實體,而不是物理實體,具有抽象性。②軟體的生產與硬體不同,它沒有明顯的製作過程。③軟體在運行、使用期間不存在磨損、老化問題。④軟體的開發、運行對計算機系統具有依賴性,受計算機系統的限制,這導致了軟體移值的問題。⑤軟體復雜性高,成本昂貴。⑥軟體的開發涉及諸多社會因素。
10). 以下不合法的用戶標識符是( )。
A.804zhang
B._ hh
C.yy614
D.If
正確答案:A
答案解析:C語言規定,標識符是由字母、數字或下劃線組成,並且它的第一個字元必須是字母或下劃線。
⑹ 求c語言題庫
編程題:
用編寫C語言程序實現下面目的:
鍵盤輸入圓柱的底半徑r和高h,計算表面積S和體積V並輸出。輸入輸出時要有文字說明,輸出數取小數點後2位數字。
鍵盤輸入三個數,編寫程序將他們從大到小輸出。
鍵盤輸入一個字元,如果它是大寫字母,則把它變成小寫字母輸出;若它是小寫字母,則變成大寫字母輸出;其它字元不改變輸出。編寫程序實現這一過程。
編寫程序實現以下函數功能:(求平方函數sqrt()在頭文件math.h中包含,a的值用scanf函數從鍵盤輸入)
編程實現:鍵盤輸入一個整數,判斷它是否能被3,5,7整除,並輸出以下信息之一:
(1) 能同時被3,5,7整除;
(2) 能被其中兩個數(要指出那兩個)整除;
(3) 能被其中一個數(要指出那個數)整除;
(4) 不能被3,5,7整除。
編程實現:鍵盤讀入兩個數(data1和data2)及一個運算符(op),計算表達式
data1 op data2
的值,其中op可以是 +、-、*、/中的一種。例如:
輸入: 1+2
輸出:1.000000+2.000000=3.000000
輸入: 1.0/2
輸出:1.000000/2.000000=0.500000
輸入: 3*2.5
輸出:3.000000*2.500000=7.500000
等等
有1020個西瓜,第一天賣出一半多兩個,以後每天賣剩下的一半多兩個,編程求到第幾天賣完。
鍵盤輸入一串字元,計算其中的母音字元的個數和輔音字母的個數。例如輸入:
I am a boy. You are a girl. 則母音有10個,輔音有8個,等等。輸入時以回車(『\n』)作為結束。
編程計算1-3+5-7+…-99+101的值。
從鍵盤輸入6名學生的各5科成績,分別統計並輸出每個學生的平均成績。
(每輸入一個學生的5科成績,就要輸出他的平均成績,輸入輸出要有提示。
例如:
請輸入第1個人的成績:
34
45
67
78
79
他的平均成績為:?
請輸入第2個人的成績:………………)
從鍵盤輸入若干整數(數據至多100個),其值在0至4范圍,用-1作為輸入結束標志,統計每個整數的個數。
輸出完整的乘法九九表:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
……
13. 鍵盤輸入一個字元串,反序輸出。
例如輸入: "How are you!"
則輸出: "!uoy era woH"
若輸入: "Holle the world!"
則輸出: "!dlrow eht elloH"
等等
14. 編寫程序,將鍵盤輸入的兩個字元串(str1和str2)連接起來,不要用strcat函數。
例如輸入:str1:"I am a boy."
str2:"You are a girl."
連接後輸出:
"I am a boy. You are a girl ."
15. 鍵盤輸入十個數,用起泡法對它們由小到大排序。
16. 輸出ASCII碼為33~127字元的列表。輸出方式:每行輸出5個字元信息;對於每個字元,先輸出十六進制轉義字元方式,再輸出普通字元方式。例如:
』\x21』 ! 『\x22』 「 『\x23』 # 『\x24』 $ 『\x25』 %
等等。其中』\x21』中,單引號(』)、斜線(\)和字元x也要輸出。
17. 輸入某一科學生成績,學生數少於100人,當輸入成績為0時結束輸入。然後:
(1) 求成績平均值xx;
(2) 求平均相對誤差wucha_x。方法:wucha_x=(|x[0]-xx|+|x[1]-xx|+…+|x[n-1]-xx|)/n
其中n是學生個數,求絕對值函數fabs()在頭文件math.h中包含。
第八章函數:
已有變數定義和函數調用語句:
int a, b, h, l;
h=hcf(a, b); l=lcd(a,b);
hcf函數的作用是求兩個數的最大公約數,lcf函數的作用是求兩個數的最小公倍數。要求在主函數中從鍵盤輸入兩個整數分別賦值給變數a,b,然後調用兩個函數求出最大公約數和最小公倍數,最後由主函數輸出結果。
已有變數定義和函數調用語句:
char str1[80],str2[80];
cpy(str1,str2);
cpy函數的作用是找出str1中的母音字母然後復制到str2中。要求在主函數中實現字元串的輸入,並存放到字元數組str1中,函數調用後輸出字元數組str1和str2中的內容。
給出年、月、日,計算該日是該年中的第多少天。其中計算過程由函數實現。
輸入長方形的長a和寬b的值,通過一個函數調用計算出長方形的周長c和面積s,在主函數中輸出長方形的周長和面積值。
已有變數定義語句
double a;int n;
和函數調用語句
mypow(a,b);
要求編寫程序,用遞歸法求出a的n次方的值
寫一個函數,實現用「選擇法」對輸入的10個字元按由小到大的順序排列。在主函數中調用該函數並輸出排序後的結果。
寫一個函數,實現用「起泡法「對輸入的10個字元按由大到小的順序排列。在主函數中調用該函數並輸出排序後的結果。
編寫程序,要求從鍵盤輸入月份號,輸出該月的英文名字。例如,輸入『3』,則輸出「Match」,輸出要求用函數實現。
第十章指針
編一程序,將字元串中的第m個字元的全部字元復製成另一個字元串。要求在主函數中輸入字元串及m的值並輸出復制結果,在被調用函數中完成復制。(形參與實參均用指針變數)
用「起泡法」對輸入的十個整數按由小到大的順序排序。(對數組中各元素的操作要求用指針的方法)
編一程序,統計從鍵盤輸入的命令行中第二個參數所包含的英文字元個數。
輸入一行字元,要求找出其中大寫字母、小寫字母、空格、數字以及其他字元各有多少個?(要求用指針方法實現)
輸入10個數,將其中最小的數與第一個數對換,把最大的數與最後一個數對換,要求寫3個函數,分別實現
①輸入10個數,
②進行處理,
③輸出10個數。
編一程序,將字元串computer賦給一個字元指針,然後從第一個字母開始間隔地輸出該串。要求用指針完成。
編一程序,要求從鍵盤輸入兩個數,通過函數調用比較兩個數的大小,並把大數返回給主調函數,輸出這個數。(要求兩個變數的地址作為實參)
補充題目:
編寫一個函數,統計出一個整數中包含的某一個數字的個數,例如:11254中包含有1個2。
求100以內的全部素數,每行輸出10個數。要求判斷一個數是否是素數由函數實現。
有36塊磚,共36人搬,成年男子一次搬4塊磚,成年女子一次搬3塊磚,兒童兩人抬1塊磚,恰好一次全部搬完,編程求出成年男子、成年女子和兒童各多少人。
程序的功能是求三個數的最小公倍數。
max(int x,int y,int z)
{
If(x>y&&x>z) return(x);
else if(y>=x&&y>z) ;
else return(z);
}
main()
{
int a,b,c,i=1,j,s;
scanf(「%d%d%d」,&a,&b,&c);
s= ;
while(1)
{
j=s*i;
if( )
break;
i++;
}
printf(「%d」,j);
}
下面程序用於計算n!的值
main()
{
int i,s,n;
s=1;
printf(「enter n:」);
scanf(「%d」,&n);
for(i=1;i<=n;i++)
;
printf(「s=%d」,s);
}
閱讀下面的程序,其結果為( )。
#include <stdio.h>
main()
{
char c=』A』;
if(『0』<=c<=』9』)
printf(「YES」);
else
printf(「NO」);
}
A.YES B.NO
C.YESNO D.語句錯誤
⑺ 計算機二級c語言題庫及答案
⑻ 全國計算機等級考試二級C語言歷年試題及答案
這里有一份最全的考研歷年真題資料分享給你
鏈接:
通過不斷研究和學習歷年真題,為考生沖刺階段復習提分指點迷津,做真題,做歷年真題集,對照考綱查缺補漏,提高實戰素養,制定做題策略,規劃方向;
若資源有問題歡迎追問!
⑼ C語言習題請高手幫忙解答,急。
if(i%2)就是i除以2的余數是否為0
為0則列印*否則返回for();語句
程序輸出為#*#*#$加上回車符