c語言上機答案葛日波
『壹』 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); }
『貳』 求C語言程序設計習題集與上機指導-第三版 (及答案)......
C語言程序設計第三版譚浩強課後習題答案完整版
第一章
1.5請參照本章例題,編寫一個C程序,輸出以下信息:
**************************
Very Good!
**************************
解:
mian()
{printf(「**************************」);
printf(「\n」);
printf(「Very Good!\n」);
printf(「\n」);
printf(「**************************」);
}
1.6 編寫一個程序,輸入a、b、c三個值,輸出其中最大值。
解:
mian()
{int a,b,c,max;
printf(「請輸入三個數a,b,c:\n」);
scanf(「%d,%d,%d」,&a,&b,&c);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf(「最大數為:「%d」,max);
}
第三章
3.6寫出以下程序運行的結果。
main()
{char c1=』a』,c2=』b』,c3=』c』,c4=』\101』,c5=』\116』;
printf(「a%cb%c\tc%c\tabc\n」,c1,c2,c3);
printf(「\t\b%c %c」,c4,c5);
}
解:
aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc
AㄩN
3.7 要將"China"譯成密碼,解碼規律是:用原來字母後面的第4個字母代替原來的字母.例如,字母"A"後面第4個字母是"E"."E"代替"A"。因此,"China"應譯為"Glmre"。請編一程序,用賦初值的方法使cl、c2、c3、c4、c5五個變數的值分別為,』C』、』h』、』i』、』n』、』a』,經過運算,使c1、c2、c3、c4、c5分別變為』G』、』l』、』m』、』r』、』e』,並輸出。
解:
#include <stdio.h>
main()
{ char c1=』C』,c2=』h』,c3=』i』,c4=』n』,c5=』a』;
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密碼是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
運行結果:
密碼是Glmre
3.9求下面算術表達式的值。
(1)x+a%3*(int)(x+y)%2/4
設x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
設a=2,b=3,x=3.5,y=2.5
(1)2.5
(2)3.5
3.10寫出程序運行的結果。
main()
{int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(「%d,%d,%d,%d」,i,j,m,n);
}
解:
9,11,9,10
3.12 寫出下面表達式運算後a的值,設原來a=12。設a和n都已定義為整型變數。
(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a
(5) a%=(n%=2),n的值等於5
(6)a+=a-=a*=a
解:
(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0
第四章
4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=』a』,c2=』b』。想得到以下輸出格式和結果,請寫出程序(包括定義變數類型和設計輸出)。
a=_3_ _b=_4_ _c=_5
x=1.200000,y=2.400000,z=-3.600000
x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40
c1=ˊaˊ_or_97(ASCII)
c2=ˊbˊ_or_98(ASCII)
main()
{int a=3,b=4,c=5;
long int u=51274,n=128765;
float x=1.2,y=2.4,z=3.6;
char c1=』a』,c2=』b』;
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%f,y=%f,z=%f\n",x,y,z);
printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6ld n=%9ld\n",u,n);
printf("%s %s %d%s\n","c1=』a』","or",c1,"(ASCII)");
printf("%s %s %d%s\n","c2=』a』","or",c2,"(ASCII)");
}
4.7用scanf下面的函數輸入數據,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,問在鍵盤上如何輸入?
main()
{
int a,b;float x,y;char c1c2;
scanf("a=%d_b=%d",&a,&b);
scanf("_x=%f_y=%e",&x,&y);
scanf("_c1=%c_c2=%c",&c1,&c2);
}
a=3_b=7
_x=8.5_y=71.82
_c1=A_c2=a
4.8設圓半徑r=1.5,圓柱高h=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數據,輸出計算結果,輸出時要求文字說明,取小數點後兩位數字。請編程序。
main()
{float r,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/3;
Vb=Sa*h;
printf("C1=%.2f\n",C1);
printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb);
}
4.9輸入一個華氏溫度,要求輸出攝氏溫度。公式為
c=5(F-32)/9
輸出要求有文字說明,取位2小數。
main()
{float F,c;
scanf("%f",&F);
c=5*(F-32)/9;
printf("c=%.2f",c);
}
4.10編程序,用getchar函數讀入兩個字元給c1、c2,然後分別用函數和函數輸出這兩個字元。並思考以下問題:(1)變數c1、c2應定義為字元型或整形?抑二者皆可?(2)要求輸出c1和c2值的ASCII碼,應如何處理?用putchar函數還是printf函數?(3)整形變數與字元變數是否在任何情況下都可以互相代替?如:
char c1,c2;
與
int c1,c2;
是否無條件的等價?
#include"stdio.h"
main()
{char c1,c2;
c1=getchar();c2=getchar();
putchar(c1);putchar(』\n』);putchar(c2);putchar(』\n』);
file:///C|/Documents and Settings/Administrator/桌面/C語言程序設計第三版譚浩強課後習題答案完整版.txt(第 1/19 頁)[2010-5-10 9:14:34]
file:///C|/Documents and Settings/Administrator/桌面/C語言程序設計第三版譚浩強課後習題答案完整版.txt
1.5請參照本章例題,編寫一個C程序,輸出以下信息:
**************************
Very Good!
**************************
解:
mian()
{printf(「**************************」);
printf(「\n」);
printf(「Very Good!\n」);
printf(「\n」);
printf(「**************************」);
}
1.6 編寫一個程序,輸入a、b、c三個值,輸出其中最大值。
解:
mian()
{int a,b,c,max;
printf(「請輸入三個數a,b,c:\n」);
scanf(「%d,%d,%d」,&a,&b,&c);
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
printf(「最大數為:「%d」,max);
}
第三章
3.6寫出以下程序運行的結果。
main()
{char c1=』a』,c2=』b』,c3=』c』,c4=』\101』,c5=』\116』;
printf(「a%cb%c\tc%c\tabc\n」,c1,c2,c3);
printf(「\t\b%c %c」,c4,c5);
}
解:
aaㄩbbㄩㄩㄩccㄩㄩㄩㄩㄩㄩabc
AㄩN
3.7 要將"China"譯成密碼,解碼規律是:用原來字母後面的第4個字母代替原來的字母.例如,字母"A"後面第4個字母是"E"."E"代替"A"。因此,"China"應譯為"Glmre"。請編一程序,用賦初值的方法使cl、c2、c3、c4、c5五個變數的值分別為,』C』、』h』、』i』、』n』、』a』,經過運算,使c1、c2、c3、c4、c5分別變為』G』、』l』、』m』、』r』、』e』,並輸出。
解:
#include <stdio.h>
main()
{ char c1=』C』,c2=』h』,c3=』i』,c4=』n』,c5=』a』;
c1+=4;
c2+=4;
c3+=4;
c4+=4;
c5+=4;
printf("密碼是%c%c%c%c%c\n",c1,c2,c3,c4,c5);
}
運行結果:
密碼是Glmre
3.9求下面算術表達式的值。
(1)x+a%3*(int)(x+y)%2/4
設x=2.5,a=7,y=4.7
(2)(float)(a+b)/2+(int)x%(int)y
設a=2,b=3,x=3.5,y=2.5
(1)2.5
(2)3.5
3.10寫出程序運行的結果。
main()
{int i,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(「%d,%d,%d,%d」,i,j,m,n);
}
解:
9,11,9,10
3.12 寫出下面表達式運算後a的值,設原來a=12。設a和n都已定義為整型變數。
(1)a+=a (2) a-=2 (3) a*=2+3 (4)a/=a+a
(5) a%=(n%=2),n的值等於5
(6)a+=a-=a*=a
解:
(1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0
第四章
4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=』a』,c2=』b』。想得到以下輸出格式和結果,請寫出程序(包括定義變數類型和設計輸出)。
a=_3_ _b=_4_ _c=_5
x=1.200000,y=2.400000,z=-3.600000
x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40
c1=ˊaˊ_or_97(ASCII)
c2=ˊbˊ_or_98(ASCII)
main()
{int a=3,b=4,c=5;
long int u=51274,n=128765;
float x=1.2,y=2.4,z=3.6;
char c1=』a』,c2=』b』;
printf("a=%2d b=%2d c=%2d\n",a,b,c);
printf("x=%f,y=%f,z=%f\n",x,y,z);
printf("x+y=%5.2f y+z=%5.2f z+x=%5.2f\n",x+y,y+z,z+x);
printf("u=%6ld n=%9ld\n",u,n);
printf("%s %s %d%s\n","c1=』a』","or",c1,"(ASCII)");
printf("%s %s %d%s\n","c2=』a』","or",c2,"(ASCII)");
}
4.7用scanf下面的函數輸入數據,使a=3,b=7,x=8.5,y=71.82,c1=ˊAˊ,c2=ˊaˊ,問在鍵盤上如何輸入?
main()
{
int a,b;float x,y;char c1c2;
scanf("a=%d_b=%d",&a,&b);
scanf("_x=%f_y=%e",&x,&y);
scanf("_c1=%c_c2=%c",&c1,&c2);
}
a=3_b=7
_x=8.5_y=71.82
_c1=A_c2=a
4.8設圓半徑r=1.5,圓柱高h=3,求圓周長、圓面積、圓球表面積、圓球體積、圓柱體積。用scanf輸入數據,輸出計算結果,輸出時要求文字說明,取小數點後兩位數字。請編程序。
main()
{float r,h,C1,Sa,Sb,Va,Vb;
scanf("%f,%f",&r,&h);
C1=2*3.14*r;
Sa=3.14*r*r;
Sb=4*Sa;
Va=4*3.14*r*r*r/3;
Vb=Sa*h;
printf("C1=%.2f\n",C1);
printf("Sa=%.2f\nSb=%.2f\nVa=%.2f\nVb=%.2f\n",Sa,Sb,Va,Vb);
}
4.9輸入一個華氏溫度,要求輸出攝氏溫度。公式為
c=5(F-32)/9
輸出要求有文字說明,取位2小數。
main()
{float F,c;
scanf("%f",&F);
c=5*(F-32)/9;
printf("c=%.2f",c);
}
4.10編程序,用getchar函數讀入兩個字元給c1、c2,然後分別用函數和函數輸出這兩個字元。並思考以下問題:(1)變數c1、c2應定義為字元型或整形?抑二者皆可?(2)要求輸出c1和c2值的ASCII碼,應如何處理?用putchar函數還是printf函數?(3)整形變數與字元變數是否在任何情況下都可以互相代替?如:
char c1,c2;
與
int c1,c2;
是否無條件的等價?
#include"stdio.h"
main()
{char c1,c2;
c1=getchar();c2=getchar();
putchar(c1);putchar(』\n』);putchar(c2);putchar(』\n』);
switch(place)
{ case 5: printf("%d,%d,%d,%d,%d",ten_thousand,thousand,hundred,ten,indiv);
printf("\n反序數字為;");
printf("%d%d%d%d%d\n",indiv,ten,hundred,thousand,ten_thousand);
break;
case 4: printf("%d,%d,%d,%d",thousand,hundred,ten,indiv);
printf("\n反序數字為:");
printf("%d%d%d%d\n",indiv,ten,hundred,thousand);
break;
case 3: printf("%d,%d,%d",hundred,ten,indiv);
printf("\n反序數字為:");
printf("%d%d%d\n",indiv,ten,hundred);
break;
case 2: printf("%d,%d",ten,indiv);
printf("\n反序數字為:");
printf("%d%d\n",indiv,ten);
break;
case 1: printf("%d",indiv);
printf("\n反序數字為:");
printf("%d\n",indiv);
break;
}
}
第五章
5.8 企業發放的獎金根據利潤提成。利潤I低於或等於10萬元時,獎金可提成10% ;利潤高於10萬元,低於20萬元(100000<I≤200000)時,其中10萬元按10%提成,高於10萬元的部分,可提成7.5% ;200000<I≤400000時,其中20萬元仍按上述辦法提成(下同),高於20萬元的部分按5%提成;400000<I≤600000時,高於40萬元的部分按3%提成;600000〈I≤1000000時,高於60萬的部分按1.5%提成;I>1000000時,超過100萬元的部分按1%提成。從鍵盤輸入當月利潤I,求應發放獎金總數。要求:(1)用if語句編程序;(2)用switch語句編程序。
解:計算利潤時,要特別注意不同利潤的不同提成比例。例如,利潤為15萬元,其中有10萬元按10%的比例提成,另外5萬元則按7.5%提成。
(1) 用if語句編程序。
#include <stdio.h>
main()
{ long i;
float bonus,bon1,bon2,bon4,bon6,bon10;
bon1=100000*0.1; /*利潤為10萬元時的獎金*/
bon2=bon1+100000*0.075; /*利潤為20萬元時的獎金*/
bon4=bon2+200000*0.05; /*利潤為40萬元時的獎金*/
bon6=bon4+200000*0.03; /*利潤為60萬元時的獎金*/
bon10=bon6+400000*0.015; /*利潤為100萬元時的獎金*/
printf("請輸入利潤i:");
scanf("%ld",&i);
if(i<=100000)
bonus=i*0.1; /*利潤在10萬元以內按0.1提成獎金*/
else if(i<=200000)
bonus=bon1+(i-100000)*0.075; /*利潤在10萬至20萬元時的獎金*/
else if(i<=400000)
bonus=bon2+(i-200000)*0.05; /*利潤在20萬至40萬元時的獎金*/
else if(i<=600000)
bonus=bon4+(i-400000)*0.03; /*利潤在40萬至60萬元時的獎金*/
else if(i<=1000000)
bonus=bon6+(i-600000)*0.015; /*利潤在60萬至100萬元時的獎金*/
else
bonus=bon10+(i-1000000)*0.01; /*利潤在100萬元以上時的獎金*/
printf(」獎金是%10.2f\n",bonus);
}
此題的關鍵在於正確寫出每一區間的獎金計算公式。例如利潤在10萬元至20萬時,獎金應由兩部分組成:①利潤為10萬元時應得的獎金。即100000ⅹ0.1;②10萬元以上部分應得的獎金。即(num-100000)ⅹ0.075。同理,20萬~40萬這個區間的獎金也應由兩部分組成:①利潤為20萬元時應得的獎金,即100000ⅹ0.1ⅹ10萬ⅹ0.075;②20萬元以上部分應得的獎金,即(num-200000)ⅹ0.05。程序中先把10萬、20萬、40萬、60萬、100萬各關鍵點的獎金計算出來,即bon1、bon2、bon4、bon6、hon10;然後再加上各區間附加部分的獎金。
(2) 用switch語句編程序。
輸入利潤i,確定相應的提成等級branch
根據branch確定獎金值
0 獎金=i*0.1
1 獎金=bon1+(i-105)*0.075
2 獎金=bon2+(i-2*105)*0.05
3
4 獎金=bon4+(i-4*105)*0.03
5
6 獎金=bon6+(i-6*105)*0.015
7
8
9
10 獎金=bon10+(i-106)*0.01
輸出獎金
#include <stdio.h>
main()
{ long i;
float bonus, bon1, bon2, bon4, bon6, bon10;
int c;
bon1=100000*0.1;
bon2=bon1+100000*0.075;
bon4=bon2+200000*0.05;
bon6=bon4+200000*0.03;
bon10=bon6+400000*0.015;
printf("請輸入利潤i:");
scanf("%ld",&i);
c=i/100000;
if(c>10) c=10;
switch(c)
{ case 0: bonus=1*0.1;break;
case 1: bonus=bon1+(i-100000)*0.075;break;
case 2 :
case 3: bonus=bon2+(i-200000)*0.05; break;
case 4:
case 5: bonus=bon4+(i-400000)*0.03;break;
case 6:
case 7:
case 8:
case 9: bonus=bon6+(i-600000)*0.015;break;
case 10: bonus=bon10+(i-1000000)*0.01;
}
printf("獎金是%10.2f",bonus);
}
5.9 輸入4個整數,要求按由大到小的順序輸出。
解:此題採用依次比較的方法排出其大小順序。在學習了循環和數組以後,可以有更多的排序方法。
#include <stdio.h>
main()
{ int t,a,b,c,d;
printf("請輸入4個整數:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\n a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a>b) {t=a; a=b; b=t;}
if(a>c) {t=a; a=c; c=t;}
if(a>d) {t=a; a=d; d=t;}
if(b>c) {t=a; b=c; c=t;}
if(b>d) {t=b; b=d; d=t;}
if(c>d) {t=c; c=d; d=t;}
printf("排序結果如下:\n");
『叄』 9月計算機二級《C語言》上機考題及答案
1、以下選項中屬於C語言的數據類型是()。
A. 復合型
B. 雙精度型
C. 邏輯型
D. 集合型
2、以下說法中正確的是()。
A. C語言程序總是從第一個的函數開始執行
B. 在C語言程序中,要調用的函數必須在main()函數中定義
C. C語言程序總是從main()函數開始執行
D. C語言程序中的main()函數必須放在程序的開始部分
3、選出下列標識符中不是合法的標識符的是()。
A. hot_do
B. cat1
C. _pri
D. 2ab
4、下列描述中不正確的是()。
A、字元型數組中可能存放字元串。
B、可以對字元型數組進行整體輸入、輸出。
C、可以對整型數組進行整體輸入、輸出。
D、 不能在賦值語句中通過賦值運算符“=”對字元型數組進行整體賦值。
5、若已定義:int a[9], *p=a;並在以後的語句中未改變p的值,不能表示a[1]地址的表達式為()。
A. p+1
B. a+1
C. a++
D. ++p
6、設有如下定義: int x=10,y=3,z; 則語句printf("%d ",z=(x%y,x/y)); 的輸出結果是()。
A. 1
B. 0
C. 4
D. 3
7、定義如下變數和數組: int i, x[3][3]={1,2,3,4,5,6,7,8,9};則下面語句for(i=0;i<3;i++) printf("%d",x[i][2-i]); 的輸出結果是()
A. 1 5 9
B. 1 4 7
C. 3 5 7
D. 3 6 9
8、讀出以下語句的輸出結果是()。
int x=10,y=10;
printf(“%d %d ”,x--,--y);
A. 10 10
B. 9 9
C. 9 10
D. 10 9
9、兩次運行下面的程序,如果從鍵盤上分別輸入6和3,則輸出結果是()。
if(x++>5) printf("%d",x);
else printf("%d ",x - -);
A. 7和5
B. 6和3
C. 7和4
D. 6和4
10、設有如下定義:char *aa[2]={"abcd","ABCD"};則以下說法中正確的是()。
A)aa數組成元素的值分別是"abcd"和ABCD"
B)aa是指針變數,它指向含有兩個數組元素的字元型一維數組
C)aa數組的兩個元素分別存放的是含有4個字元的一維字元數組的`首地址
D)aa數組的兩個元素中各自存放了字元’a’和’A’的地址
11、以下語句的輸出結果是()。
int a=-1,b=4,k;
k=(+ +a<0)&&!(b - -<=0);
printf("%d,%d,%d ",k,a,b);
A. 1,0,4
B. 1,0,3
C. 0,0,3
D. 0,0,4
12、下列程序的輸出結果是()。
char *p1="abcd", *p2="ABCD", str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A. xyabcAB
B. abcABz
C. ABabcz
D. xycdBCD
13、執行下面的程序後,a的值是()。
#define SQR(X) X*X
main()
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d ",a); }
A. 10
B. 1
C. 9
D. 0
14、設A為存放(短)整型的一維數組,如果A的首地址為P,那麼A中第i 個元素的地址為()。
A.P+i*2
B. P+(i-1)*2
C. P+(i-1)
D. P+i
15、下列程序執行後輸出的結果是()。
int d=1;
fun (int p)
{ int d=5;
d + =p + +;
printf("%d,",d); }
main()
{ int a=3;
fun(a);
d + = a + +;
printf("%d ",d); }
A. 8, 4
B. 9, 6
C. 9, 4
D. 8, 5
16、表達式:10!=9的值是()。
A. true
B. 非零值
C. 0
D. 1
17、若有說明: int i,j=7, *p=&i;, 則與i=j; 等價的語句是()。
A. i= *p;
B. *p=*&j;
C. i=&j;
D. i=* *p;
18、不能把字元串: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!";
19、在C程序中有如下語句:char *func(int x,int y); 它是()。
A. 對函數func的定義。
B. 對函數func的調用。
C.對函數func的原型說明。
D. 不合法的。
20、以下程序的輸出結果是()。
char str[15]=”hello!”;
printf(“%d ”,strlen(str));
A. 15
B. 14
C. 7
D. 6
參考答案:
1、B 2、C 3、D 4、C 5、C 6、D 7、C 8、D 9、C 10、D
11、D 12、D 13、B 14、B 15、A 16、D 17、B 18、B 19、C 20、D
『肆』 2007年計算機等級考試二級C語言上機試題(1-8套) 有 答案 嗎急用,謝謝!
http://www.isud.com.cn/down.asp?cat_id=13&class_id=53
本分類共有96個文件
『計算機』2007年計算機二級C語言上機考試試題(1-8套..
·2007年計算機二級C語言上機考試試題(1-8套)
軟體大小:未知 授權方式:免費下載 下載:5118 推薦程度:
『計算機』全國計算機等級考試一級試題及答案
·1. 微型計算機硬體系統中最核心的部件是( ).B A,主板 B,CPU C,內存儲器 D,I/O設備 2. 下列術語中,屬於顯示器性能指標的是( ).C A,速度 B,可靠性 C......
軟體大小:未知 授權方式:免費下載 下載:5208 推薦程度:
『計算機等級題』全國計算機等級考試一級試題庫
·全國計算機等級考試一級試題庫(答案在題號前面) D(1)引導型病毒程序被存放在 A)最後1個扇區中 B)第2物理扇區中 C)數據扇區中 D)引導扇區中 C(2)文件被感染上病......
軟體大小:未知 授權方式:免費下載 下載:2638 推薦程度:
『計算機等級題』全國計算機等級考試一級試題及答案
·全國計算機等級考試一級試題及答案 1. 微型計算機硬體系統中最核心的部件是( ).B A,主板 B,CPU C,內存儲器 D,I/O設備 2. 下列術語中,屬於顯示器性能指標......
軟體大小:未知 授權方式:免費下載 下載:2091 推薦程度:
『計算機等級題』2004年9月全國計算機等級考試二級C筆試試題..
·2004年9月全國計算機等級考試二級C筆試試題 11.用C語言編寫的代碼程序 A)可立即執行 B)是一個源程序 C)經過編譯即可執行 D)經過編譯解釋才能執行 12.......
軟體大小:未知 授權方式:免費下載 下載:588 推薦程度:
『計算機等級題』全國計算機等級考試一級B模擬試題五
·全國計算機等級考試一級B模擬試題五 (1)我國第一台電子計算機誕生於哪一年 A)1948年 B)1958年 C)1966年 D)1968年【答案】:B 【解析】:我國自......
軟體大小:未知 授權方式:免費下載 下載:550 推薦程度:
『計算機等級題』2004年4月全國計算機等級考試二級C語言筆試..
·2004年4月全國計算機等級考試二級C語言筆試試題基礎知識和C語言程序設計一, 選擇題((1)~(40)每題1分,(41)~(50)每題2分,共60分) 1, 1MB等於......
軟體大小:未知 授權方式:免費下載 下載:481 推薦程度:
『計算機等級題』06年計算機等級考試一級B考試試題及試題分析..
·06年計算機等級考試一級B考試試題及試題分析 1.計算機根據運算速度,存儲能力,功能強弱,配套設備等因素可劃分為(). A)台式計算機,攜帶型計算機,膝上型計算機 B)電......
軟體大小:未知 授權方式:免費下載 下載:888 推薦程度:
『計算機等級題』廣東省計算機等級考試(一級)模擬試題(F)
·廣東省計算機等級考試(一級)模擬試題(F) (考試時間:100分鍾) 系 班 級 學 號 姓 名 說明:(1)請考生在D盤根目錄下建立以自己學號命名文件夾(考生......
軟體大小:未知 授權方式:免費下載 下載:664 推薦程度:
『計算機等級題』計算機等級考試三級網路試題
·計算機等級考試三級網路試題 04年9月 教育部考試中心 版權所有一,選擇題(每小題1分,共60分) 下列各題A,B,C,D四個選項中,只有一個選項是正確的.請將正確選項塗寫......
軟體大小:未知 授權方式:免費下載 下載:634 推薦程度:
『計算機等級題』全國計算機等級考試四級筆試試題
·一,選擇題:((1)-(90))題,分為1分題和2分題,滿分120分.除標注2分題外,其它均為1分題.) 下列各題A),B),C),D)四個選項中,只有一個是正確的,請將正確選項......
軟體大小:未知 授權方式:免費下載 下載:298 推薦程度:
『計算機等級題』計算機等級考試上機模擬試題匯總
·計算機等級考試上機模擬試題匯總模擬試題(一) 1.填空題請補充函數fun(),該函數的功能是:把從主函數中輸入的字元串str2接在字元串str1的後面. 例如:str1......
軟體大小:未知 授權方式:免費下載 下載:778 推薦程度:
『計算機等級題』計算機等級考試二級模擬試題4基礎知識與FOX..
·計算機等級考試二級模擬試題4 基礎知識與FOXBASE程序設計 (考試時間120分鍾,滿分100分) 一,選擇題((1)-(40)每個選項1分,(41)-(50)每個選項......
軟體大小:未知 授權方式:免費下載 下載:330 推薦程度:
『計算機等級題』2005年4月全國計算機等級考試二級筆試試題A..
·2005年4月全國計算機等級考試二級筆試試題 Access 資料庫程序設計 一,選擇題(每小題 2 分,共 70 分) 下列各題 A),B),C),D)四個選項中,只有一......
軟體大小:未知 授權方式:免費下載 下載:420 推薦程度:
『計算機等級題』2006年4月全國計算機等級考試二級VFP試題及..
·2006年4月全國計算機等級考試二級VFP試題及答案 (考試時間90分鍾,滿分100分) 一,選擇題(每小題2分,共70分) 下列各題A),B),C),D)四個選項中,只有一......
軟體大小:未知 授權方式:免費下載 下載:583 推薦程度:
『計算機等級題』計算機等級考試二級VFp筆試試題
·計算機等級考試二級VFp筆試試題 一,選擇題((1)~(35)每小題2分,共70分)下列各題A),B),C),D)四個選項中,只有一個選項是正確的,請將正確選項塗寫在大題卡 相......
軟體大小:未知 授權方式:免費下載 下載:297 推薦程度:
『計算機等級題』全國計算機等級考試二級VFp筆試試題(含答案..
·全國計算機等級考試二級VFp筆試試題(含答案) 一,選擇題((1)~(35)每小題2分,共70分) 下列各題A),B),C),D)四個選項中,只有一個選項是正確的,請將......
軟體大小:未知 授權方式:免費下載 下載:356 推薦程度:
『計算機等級題』全國計算機等級考試二級VB上機試題
·全國計算機等級考試二級VB上機試題 (考試時間90分鍾,滿分100分) 1. 基本操作(2小題,每小題15分,共計30分) 注意:下面出現的"考生文件夾"均為%USER% ......
軟體大小:未知 授權方式:免費下載 下載:461 推薦程度:
『計算機等級題』全國計算機等級考試二級C筆試試題
·9月全國計算機等級考試二級C筆試試題 1.與十進制數200等值的十六進制數為 A) A8 B)A4 C)C8 D)C4 2.DOS文件系統的組織結構屬於 A)星......
軟體大小:未知 授權方式:免費下載 下載:213 推薦程度:
『計算機等級題』計算機等級考試試卷二級VFP試題及答案
·計算機等級考試試卷二級VFP試題及答案一,選擇題((1)~(35)每小題2分,共70分) 下列各題A),B),C),D)四個選項中,只有一個選項是正確的,請將正確選項塗寫在答......
軟體大小:未知 授權方式:免費下載 下載:286 推薦程度:
『計算機等級題』全國計算機等級三級C語言上機試題解析
·全國計算機等級三級C語言上機試題解析三級網路技術和三級資料庫技術的C語言上機試題難度較大,題型多樣,因此頗難掌握,今將這些試題分類解析,希望能幫大家順利通過上機考試. 三級......
軟體大小:未知 授權方式:免費下載 下載:231 推薦程度:
『計算機等級題』計算機等級二級C語言模擬試題
·計算機等級二級C語言模擬試題一,選擇題(1)~(10)每小題2分,(11)-(50)每小題1分,共60分) 下列各題A),B),C),D)四個選項中,只有一個選項是正確的,......
軟體大小:未知 授權方式:免費下載 下載:215 推薦程度:
『計算機等級題』計算機等級考試二級VB全真模擬試題含答案(2..
·計算機等級考試二級VB全真模擬試題含答案(2) 一,選擇題 (1)—(35)題每題2分,共70分. 下列各題A),B),C),D)四個先項中,只有一個選擇是正確的,請將正......
軟體大小:未知 授權方式:免費下載 下載:308 推薦程度:
『計算機等級題』2007年9月計算機等級考試二級VB標准模擬試題..
·2007年9月計算機等級考試二級VB標准模擬試題 ,選擇題1~20每小題2分,21~30每小題3分,共70分 1.在窗體中添加一個命令按鈕,並編寫如下程序: Private ......
軟體大小:未知 授權方式:免費下載 下載:461 推薦程度:
『計算機等級題』2006年4月全國計算機等級考試二級VB程序設計..
·2006年4月全國計算機等級考試二級VB程序設計試題及答案一,選擇題(每小題2分,共70分) 下列各題A),B),C),D)四個選項中,只有一個選項是正確的.請將正確選項填塗......
軟體大小:未知 授權方式:免費下載 下載:237 推薦程度:
『計算機等級題』湖南省非計算機專業等級考試試題(FOXPRO一級..
·湖南省非計算機專業等級考試試題(FOXPRO一級選擇題) 1, 要求一個資料庫文件的數值型欄位具有5位小數,那麼該欄位的寬度最少應當定為( ) A,5位 B,6位 C,7位 D......
軟體大小:未知 授權方式:免費下載 下載:1649 推薦程度:
『計算機等級題』全國計算機等級考試一級考試最新模擬試題
·1,設Windows處於系統默認狀態,在Word 97編輯狀態下,移動滑鼠至文檔行首空白處(文本選定區)連擊左鍵三下,結果會選擇文檔的______. A:一句話 B:一行 ......
軟體大小:未知 授權方式:免費下載 下載:195 推薦程度:
『計算機等級題』雲南省計算機等級考試(二級C)模擬試卷試題五..
·雲南省計算機等級考試(二級C)模擬試卷試題五第一卷第一部分:綜合基礎知識(共30分,每項1分) 1. 在下列設備中,不能作為微型計算機的輸出設備的是____. A.列印......
軟體大小:未知 授權方式:免費下載 下載:232 推薦程度:
『計算機等級題』計算機等級考試模擬題(第一套)
·計算機等級考試模擬題(第一套) 判斷正誤題目前常用的國產品牌機是聯想,金長城等.(√ ) 第一部內存儲程序計算機是用匯編語言來設計程序.(×) 二進制數01100101轉......
軟體大小:未知 授權方式:免費下載 下載:379 推薦程度:
『計算機等級題』江蘇省計算機軟體項目開發水平等級考試模擬..
·江蘇省計算機軟體項目開發水平等級考試模擬試題《程序設計》(Java開發員) 考試說明:卷面分100分;時間2小時考生務必將自己的數據文件存放在D盤上,並以自己的考號命名文......
軟體大小:未知 授權方式:免費下載 下載:171 推薦程度:
http://www.zhaoshiti.com.cn/Soft/List.asp?cat_id=53
2007-09-21 2007年9月計算機等級考試二級VB標准模擬試題
2007年9月計算機等級考試二級VB標准模擬試題 ,選擇題1~20每小題2分,21~30每小題3分,共70分 1.在窗體中添加一個命令按鈕,並編寫如下程序: Private Sub Command1Click() X=1:Y=2:Z=3 X=Y:Y=Z:Z=X Print Z End Sub 程序執行後,輸出的結果是()(本題分值:1分) A.3 B.0 C.2 D.1 【正確答案】C 2.下列敘述不正..
推薦程度:授權方式:免費軟體軟體大小:未知下載:82
2007-12-20 微型計算機介面技術復習資料
匯流排 • 匯流排是一組公共的信號傳輸線,用於連接計算機各個部件。 • 位於晶元內部的匯流排稱為內部匯流排。 • 連接微處理器與存儲器、輸入輸出介面,用以構成完整的微型計算機的匯流排稱為系統匯流排(有時也稱為外部匯流排)。 • 微型計算機的系統匯流排分為數據匯流排、地址匯流排和控制匯流排三組。 ……
推薦程度:授權方式:免費軟體軟體大小:未知下載:8
2007-09-21 江蘇省計算機軟體項目開發水平等級考試模擬試題
江蘇省計算機軟體項目開發水平等級考試模擬試題《實際項目開發》(Delphi開發師) 考試時間: 8小時,卷面分:100分項目名稱:招評標管理及決策信息系統要求:根據《招評標管理及決策信息系統需求分析說明書》設計和開發系統,所有文檔必須齊全,格式見文檔模板. (說明:由於時間要求,考試通常分成如下A,B兩類,本試題屬於B類...
推薦程度:授權方式:免費軟體軟體大小:未知下載:17
2007-09-21 江蘇省計算機軟體項目開發水平等級考試模擬試題
江蘇省計算機軟體項目開發水平等級考試模擬試題《程序設計》(Java開發員) 考試說明:卷面分100分;時間2小時考生務必將自己的數據文件存放在D盤上,並以自己的考號命名文件夾. 開發員程序設計題: (1) 試用遞歸演算法求出Fibonacci數列:1,1,2,3,5,8,……的第40個數,即 F1 = 1 (n=1) F2 = 1 (n=2) Fn = Fn-1 +Fn-2 (n>=3..
推薦程度:授權方式:免費軟體軟體大小:未知下載:13
2007-09-21 計算機等級考試模擬題(第一套)
計算機等級考試模擬題(第一套) 判斷正誤題目前常用的國產品牌機是聯想,金長城等.(√ ) 第一部內存儲程序計算機是用匯編語言來設計程序.(×) 二進制數01100101轉換成十六進制數是65.(√) 第二代計算機是電子管為主要邏輯元件,體積大電路復雜且易出故障.(×) 十進制數120轉換成二進制數是1111000.(√) 微處理器就是微..
推薦程度:授權方式:免費軟體軟體大小:未知下載:21
2007-09-21 雲南省計算機等級考試(二級C)模擬試卷試題五
雲南省計算機等級考試(二級C)模擬試卷試題五第一卷第一部分:綜合基礎知識(共30分,每項1分) 1. 在下列設備中,不能作為微型計算機的輸出設備的是____. A.列印機 B.顯示器 C.繪圖儀 D.鍵盤 2. 二進制數101110轉換為等值的八進制數是____. A.45 B.56 C.67 D.78 3. 微型計算機中,普遍使用的字元編碼是____. A.補..
推薦程度:授權方式:免費軟體軟體大小:未知下載:15
2007-09-21 全國計算機等級考試一級考試最新模擬試題
1,設Windows處於系統默認狀態,在Word 97編輯狀態下,移動滑鼠至文檔行首空白處(文本選定區)連擊左鍵三下,結果會選擇文檔的______. A:一句話 B:一行 C:一段 D:全文 2,如果你的計算機已接入Internet,用戶名為Zhs,而連接的服務商主機域名為Public.tpt.cn,則你的E-mail地址應該是_______. 3,在Word編輯狀態下,若想將..
推薦程度:授權方式:免費軟體軟體大小:未知下載:22
2007-09-21 湖南省非計算機專業等級考試試題(FOXPRO一級選擇題)
湖南省非計算機專業等級考試試題(FOXPRO一級選擇題) 1, 要求一個資料庫文件的數值型欄位具有5位小數,那麼該欄位的寬度最少應當定為( ) A,5位 B,6位 C,7位 D,8位 2,某數值型欄位的寬度定為6,小數位為2,該欄位所能存放的最小數值是( ) A,0 B,-999.99 C,-99.99 D,-9999.99 3,可以使用5種不同的數據類型描述資料庫文件中的..
推薦程度:授權方式:免費軟體軟體大小:未知下載:21
2007-09-21 2006年4月全國計算機等級考試二級VB程序設計試題及答案
2006年4月全國計算機等級考試二級VB程序設計試題及答案一,選擇題(每小題2分,共70分) 下列各題A),B),C),D)四個選項中,只有一個選項是正確的.請將正確選項填塗在答題卡相應位置上,答在試卷上不得分. (1)下列選項中不屬於結構化程序設計方法的是. A) 自頂向下B) 逐步求精 C) 模塊化D) 可復用 (2)兩個或兩個以上模塊之間..
推薦程度:授權方式:免費軟體軟體大小:未知下載:18
2007-09-21 計算機等級考試二級VB全真模擬試題含答案(2)
計算機等級考試二級VB全真模擬試題含答案(2) 一,選擇題 (1)—(35)題每題2分,共70分. 下列各題A),B),C),D)四個先項中,只有一個選擇是正確的,請將正確選項塗寫在答題卡相應位置上,答在試卷上不得分. (1) 下列不能打開屬性窗口的操作是 . A) 執行"視圖"菜單中的"屬性窗口"命令 B) 按F4鍵 C) 按Ctrl+T D) 單擊工..
推薦程度:授權方式:免費軟體軟體大小:未知下載:25
首頁 上一頁 1 2 3 4 5 6 7 8 9 10 下一頁 尾頁
『伍』 關於選擇計算機二級 參考書 今年9月考的
譚浩強出版的 C語言程序設計挺不錯的 我讀過他寫的C++程序設計 通俗易懂 但內容絕非淺顯
推薦你讀他的書
每一本C語言程序設計有關的書都有自己的體系 結構不太一樣
對C來說,我感覺指針比較難吧
要是9月份就考 時間有點緊
計算機二級考試題不難 你一定能過的
『陸』 C語言上機問題:在線等答案!為什麼中間變數要定義成整型
應該是不同的數據類型之間的運算數據截取的問題,你如果定義成無符號整型,賦值符號右邊的運算結果如果是一個帶符號整型的話,賦值的時候就會自動截取,從帶符號的截取到不帶符號的會出現數據錯誤,把符號位也算成值了,所以出錯。
『柒』 求 安徽大學C語言程序上機操作答案 網盤資源
安徽大學C語言程序上機操作答案
鏈接:https://pan..com/s/1CWkUXdldFsOEW3hySfoBBQ
如果資源不正確,或者版本不正確,歡迎追問
『捌』 求2011年九月以及以前的計算機二級考試C語言試題及答案、以及考試內容分析和解題技巧。記住只要C的。
(1)下面敘述正確的是________。
A)演算法的執行效率與數據的存儲結構無關
B)演算法的空間復雜度是指演算法程序中指令(或語句)的條數
C)演算法的有窮性是指演算法必須能在執行有限個步驟之後終止
D)演算法的時間復雜度是指執行演算法程序所需要的時間
(1)C
知識點:演算法的基本概念;演算法復雜度的概念和意義(時間復雜度與空間復雜度)
評 析:演算法的設計可以避開具體的計算機程序設計語言,但演算法的實現必須藉助程序設計語言中提供的數據類型及其演算法。數據結構和演算法是計算機科學的兩個重要支柱。它們是一個不可分割的整體。演算法在運行過程中需輔助存儲空間的大小稱為演算法的空間復雜度。演算法的有窮性是指一個演算法必須在執行有限的步驟以後結束。演算法的時間復雜度是指執行演算法所需要的計算工作量,即演算法執行過程中所需要的基本運算次數。
(2)以下數據結構屬於非線性數據結構的是________。
A)隊列 B)線性表 C)二叉樹 D)棧
(2)C
知識點:棧和隊列的定義;棧和隊列的順序存儲結構及其基本運算
評 析:線性表、棧和隊列等數據結構所表達和處理的數據以線性結構為組織形式。棧是一種特殊的線性表,這種線性表只能在固定的一端進行插入和刪除操作,允許插入和刪除的一端稱為棧頂,另一端稱為棧底。一個新元素只能從棧頂一端進入,刪除時,只能刪除棧頂的元素,即剛剛被插入的元素。所以棧又稱後進先出表(Last In First Out)。隊列可看作是插入在一端進行,刪除在另一端進行的線性表,允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。在隊列中,只能刪除隊頭元素,隊列的最後一個元素一定是最新入隊的元素。因此隊列又稱先進先出表(First In First Out)。二叉樹的數據結構是樹型結構,結構中數據元素之間存在著一對多的關系,因此它是一種非線性數據結構。
(3)在一棵二叉樹上第8層的結點數最多是________。
A)8 B)16 C)128 D)256
(3)C
知識點:二叉樹的定義及其存儲結構
評 析:根據二叉樹的性質:二叉樹第i(I>1)層上至多有2i-1個結點。得到第8層的結點數最多是128。
(4)下面描述中,不符合結構化程序設計風格的是________。
A)使用順序、選擇和重復(循環)三種基本控制結構表示程序的控制邏輯
B)自頂向下
C)注重提高程序的執行效率
D)限制使用goto語句
(4)C
知識點:結構化程序設計
評 析:結構化程序設計方法的四條原則是:1.自頂向下:2.逐步求精;3.模塊化;4.限制使用goto語句。「自頂向下」是說,程序設計時,應先考慮總體,後考慮細節,先考慮全局目標,後考慮局部目標;「逐步求精』』是說,對復雜問題,應設計一些子目標作過渡,逐步細節化;「模塊化」是說,一個復雜問題肯定是由若干稍簡單的問題構成,解決這個復雜問題的程序,也應對應若干稍簡單的問題,分解成若干稍小的部分。
(5)下面概念中,不屬於面向對象方法的是________。
A)對象、消息 B)繼承、多態 C)類、封裝 D)過程調用
(5)D
知識點:面向對象的程序設計方法、對象、方法、屬性及繼承與多態性
評 析:面向對象方法是一種運用對象、類、封裝、繼承、多態和消息等概念來構造、測試、重構軟體的方法。面向對象方法從對象出發,發展出對象、類、消息、繼承等概念。
(6)在結構化方法中,用數據流程圖(DFD)作為描述工具的軟體開發階段是________。
A)可行性分析 B)需求分析 C)詳細設計 D)程序編碼
(6)B
知識點:結構化設計方法
評 析:軟體開發階段包括需求分析、總體設計、詳細設計、編碼和測試五個階段。其中需求分析階段常用的工具是數據流程圖和數據字典。
(7)軟體生命周期中所花費用最多的階段是________。
A)詳細設計 B)軟體編碼 C)軟體測試 D)軟體維護
(7)D
知識點:軟體工程基本概念,軟體生命周期概念,軟體工具與軟體開發環境
評 析:軟體生命周期分為軟體定義、軟體開發及軟體運行維護3個階段。本題中詳細設計、軟體編碼和軟體測試都屬於軟體開發階段;維護是軟體生命周期的最後一個階段,也是持續時間最長,花費代價最大的一個階段,軟體工程學的一個目的就是提高軟體的可維護性,降低維護的代價。
(8)資料庫系統的核心是________。
A)數據模型 B)DBMS C)軟體工具 D)資料庫
(8)B
知識點:資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統
評 析:資料庫管理系統DBMS是資料庫系統的核心。DBMS是負責資料庫的建立、使用和維護的軟體。DBMS建立在操作系統之上,實施對資料庫的統一管理和控制。用戶使用的各種資料庫命令以及應用程序的執行,最終都必須通過DBMS。另外,DBMS還承擔著資料庫的安全保護工作,按照DBA所規定的要求,保證資料庫的完整性和安全性。
(9)下列敘述中正確的是________。
A)數據處理是將信息轉化為數據的過程
B)資料庫設計是指設計資料庫管理系統
C)如果一個關系中的屬性或屬性組並非該關系的關鍵字,但它是另一個關系的關鍵
字,則稱其為本關系的外關鍵字
D)關系中的每列稱為元組,一個元組就是一個欄位
(9)C
知識點:數據模型,實體聯系模型及E-R圖,從E-R圖導出關系數據模型
評 析:數據處理是指將數據轉換成信息的過程,故選項A敘述錯誤;設計資料庫的目的實質上是設計出滿足實際應用需求的實際關系模型,故選項B敘述錯誤;關系中的行稱為元組,對應存儲文件中的記錄,關系中的列稱為屬性。對應存儲文件中的欄位,故D選項敘述錯誤。
(10)下列模式中,_______是用戶模式。
A)內模式 B)外模式 C)概念模式 D)邏輯模式
(10)B
知識點:資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統
評 析:資料庫管理系統的三級模式結構由外模式、模式和內模式組成。外模式,或稱子模式,或稱用戶模式,是指資料庫用戶所看到的數據結構,是用戶看到的數據視圖。模式,或稱邏輯模式,是資料庫中對全體數據的邏輯結構和特性的描述,是所有用戶所見到的數據視圖的總和。外模式是模式的一部分。內模式,或稱存儲模式,或稱物理模式,是指數據在資料庫系統內的存儲介質上的表示。即對數據的物理結構和存取方式的描述。
36)演算法的時間復雜度是指_______。
A)執行演算法程序所需要的時間
B)演算法程序的長度
C)演算法執行過程中所需要的基本運算次數
D)演算法程序中的指令條數
(36)C
知識點:演算法復雜度的概念和意義(時問復雜度與空間復雜度)
評析:所謂演算法的時間復雜度,是指執行演算法所需要的計算工作量。為了能夠比較客觀地反映出一個演算法的效率,在度量一個演算法的工作量時,不僅應該與所使用的計算機、程序設計語言以及程序編制者無關,而且還應該與演算法實現過程中的許多細節無關。為此,可以用演算法在執行過程中所需基本運算的執行次數來度量演算法的工作量。
(37)下列敘述中正確的是_______。
A)線性表是線性結構 B)棧與隊列是非線性結構
C)線性鏈表是非線性結構 D)二叉樹是線性結構
(37)A
知識點:線性結構與非線性結構的概念
評析:根據數據結構中各數據元素之間相關聯關系的復雜程度,一般將數據結構分為兩大類型:線性結構與非線性結構。如果一個非空的數據結構滿足下列兩個條件: (1)有且只有一個根結點; (2)每一個結點最多有一個前件,也最多有一個後件。則稱該數據結構為線性結構,又稱線性表。所以線性表、棧與隊列、線性鏈表都是線性結構,而二叉樹是非線性結構。
(38)下面關於完全二叉樹的敘述中,錯誤的是_______。
A)除了最後一層外,每一層上的結點數均達到最大值
B)可能缺少若干個左右葉子結點
C)完全二叉樹一般不是滿二叉樹
D)具有結點的完全二叉樹的深度為[log2n]+l
(38)B
知識點:二叉樹的定義及其存儲結構
評析:這里考察完全二又樹與滿二叉樹的定義及二叉樹的性質。滿二叉樹指除最後一層外每一層上所有結點都有兩個子結點的二叉樹。完全二叉樹指除最後一層外,每一層上的結點數均達到最大值,在最後一層上只缺少右邊的若乾子結點(葉子結點)的二叉樹。因此選項A是正確的,而選項B是錯誤的。由定義可知,滿二叉樹肯定是完全二又樹,而完全二又樹一般不是滿二叉樹,因此選項c是正確的敘述。選項D即二又樹性質(5),也是正確的。
(39)結構化程序設計主要強調的是_______。
A)程序的規模 B)程序的易讀性
C)程序的執行效率 D)程序的可移植性
(39)B
知識點:結構化程序設計
評析:結構化程序設計主要強調的足結構化程序清晰易讀,可理解性好,程序員能夠進行逐步求精、程序證明和測試.以保證程序的正確性。
(40)在軟體生命周期中,能准確地確定軟體系統必須做什麼和必須具備哪些功能的階段是_______。
A)概要設計 B)詳細設計 C)可行性分析 D)需求分析
(40)D
知識點:軟體工程基本概念,軟體生命周期概念,軟體工具與軟體開發環境
評析:通常,將軟體產品從提出、實現、使用維護到停止使用退役的過程稱為軟體生命周期。也就是說,軟體產品從考慮其概念開始,到該軟體產品不能使用為止的整個時期都屬於軟體生命周期。軟體生命周期的主要活動階段為:
① 可行性研究和計劃制定。確定待開發軟體系統的開發目標和總的要求,給出它的功能、性能、可靠性以及介面等方面的可行方案,制定完成開發任務的實施計劃。
②需求分析。對待開發軟體提出的需求進行分析並給出詳細定義,即准確地確定軟體系統的功能。編寫軟體規格說明書及初步的用戶手冊,提交評審。
③軟體設計。系統設計人員和程序設計人員應該在反復理解軟體需求的基礎上,給出軟體的結構、模塊的劃分、功能的分配以及處理流程。
④軟體實現。把軟體設計轉換成計算機可以接受的程序代碼。即完成源程序的編碼,編寫用戶手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。
⑤軟體測試。在設計測試用例的基礎上,檢驗軟體的各個組成部分。編寫測試分析報告。
⑥運行和維護。將已交付的軟體投入運行,並存運行使用中不斷地維護,根據新提出的需求進行必要而且可能的擴充和刪改。
(41)數據流圖用於抽象描述一個軟體的邏輯模型,數據流圖由一些特定的圖符構成。下列圖符名標識的圖符不屬於數據流圖合法圖符的是_______。
A)控制流 B)加工 C)數據存儲 D)源和潭
(41)A
知識點:結構化分析方法,數據流圖,數據字典,軟體需求規格說明書
評析:數據流圖從數據傳遞和加工的角度,來刻畫數據流從輸入到輸出的移動變換過程。數據流圖中的主要圖形元素有:加工(轉換)、數據流、存儲文件(數據源)、源和潭。
(42)軟體需求分析一般應確定的是用戶對軟體的_______。
A)功能需求 B)非功能需求 C)性能需求 D)功能需求和非功能需求
(42)D
知識點:結構化設計方法
評析:軟體需求分析中需要構造一個完全的系統邏輯模型,理解用戶提出的每一功能與性能要求,是用戶明確自己的任務。因此,需求分析應確定用戶對軟體的功能需求和非功能需求。
(43)下述關於資料庫系統的敘述中正確的是_______。
A)資料庫系統減少了數據冗餘
B)資料庫系統避免了一切冗餘
C)資料庫系統中數據的一致性是指數據類型的一致
D)資料庫系統比文件系統能管理更多的數據
(43)A
知識點:資料庫的基本概念:資料庫,資料庫管理系統,資料庫系統
評析:由於數據的集成性使得數據可為多個應JH=j所共享,特別是在網路發達的今天,資料庫與網路的結合擴大了數據關系的應用范圍。數據的共享自身義可極大地減少數據冗餘性,不僅減少了不必要的存儲空間,更為重要的是可以避免數據的不一致性。所謂數據的一致性是指在系統中同一數據的不同出現應保持相同的值,而數據的不一致性指的是同一個數據在系統的不同拷貝處有不同的值。
(44)關系表中的每一橫行稱為一個_______。
A)元組 B)欄位 C)屬性 D)碼
(44)A
知識點:資料庫的基本概念:資料庫.資料庫管理系統,資料庫系統
評析:在關系資料庫中,關系模型採用二維表來表示,簡稱「表」。二維表是由表框架及表元組組成。在表框架中,按行可以存放數據,每行數據稱為元組。
(45)資料庫設計包括兩個方面的設計內容,它們是_______。
A)概念設計和邏輯設計 B)模式設計和內模式設計
C)內模式設計和物理設計 D)結構特性設計和行為特性設計
(45)A
知識點:資料庫設計方法和步驟:需求分析、概念設計、邏輯設計和物理設計的相關策略
評析:資料庫設計可分為概念設計與邏輯設計。資料庫概念設計的目的是分析數據問內存語義關聯,在此基礎上建立一個數據的抽象模型。資料庫邏輯設計的主要工作是將E-R圖轉換為指定的RDBMS中的關系模型。
(61)字元(char)型數據在微機內存中的存儲形式是________。
A)反碼 B)補碼
C)EBCDIC碼 D)ASCII碼
(61)D
知識點:字元數據在內存中的存儲形式
評析:將一個字元常量放到一個字元變數中,實際上並不是把該字元本身放到內存單元中去,而是將該字元的ASCII碼值放到存儲單元中。
71)演算法的空間復雜度是指_______。
A)演算法程序的長度 B)演算法程序中的指令條數
C)演算法程序所佔的存儲空間 D)演算法執行過程中所需要的存儲空間
(71)D
知識點:演算法的復雜度
評析:一個演算法的空間復雜度,一般是指執行這個演算法所需的內存空間。
一個演算法所佔用的存儲空間包括演算法程序所佔的空間、輸入的初始數據所佔的存儲空間以及演算法執行過程中所需要的額外空間。
(72)下列關於棧的敘述中正確的是_______。
A)在棧中只能插入數據 B)在棧中只能刪除數據
C)棧是先進先出的線性表 D)棧是先進後出的線性表
(72)D
知識點:棧的輸入輸出操作
評析:棧是限定在一端進行插入與刪除的線性表。
棧是按照「先進後出」的或「後進先出」的原則組織數據的,因此,棧也被稱為「先進後出」表或「後進先出」表。
(73)在深度為5的滿二叉樹中,葉子結點的個數為_______。
A)32 B)31 C)16 D)15
(73)C
知識點:二叉樹的概念
評析:所謂滿二叉樹是指除最後一層外,每層上的所有結點都有兩個子結點。也就是說,在滿二又樹中,每一層上的結點數都達到最大值,即在滿二叉樹的第K層上有2k-1個結點,且深度為m的滿二叉樹有2m個結點。
在滿二叉樹中,最後一層的結點個數就是葉子結點的個數,本題中深度為5,故葉子結點數為25-1=24==16。
(74)對建立良好的程序設計風格,下面描述正確的是_______。
A)程序應簡單、清晰、可讀性好 B)符號名的命名要符合語法
C)充分考慮程序的執行效率 D)程序的注釋可有可無
(74)A
知識點:程序設計風格
評析:要形成良好的程序設計風格,主要應注重和考慮下述一些因素:符號名的命名應具有一定的實際含義,以便於對程序功能的理解;正確的注釋能夠幫助讀者理解程序;程序編寫應優先考慮清晰性,除非對效率有特殊要求,程序編寫要做到清晰第一,效率第二。
(75)下面對對象概念描述錯誤的是_______。
A)任何對象都必須有繼承性 B)對象是屬性和方法的封裝體
C)對象問的通訊靠消息傳遞 D)操作是對象的動態性屬性
(75)A
知識點:對象的概念
評析:對象是由數據和容許的操作組成的封裝體,與客觀實體有直接的對應關系。對象之間通過傳遞消息互相聯系,以模擬現實世界中不同事物彼此之間的聯系。
(76)下面不屬於軟體工程的3個要素的是_______。
A)工具 B)過程 C)方法 D)環境
(76)D
知識點:軟體:[程的要素
評析:軟體工程包括3個要素,即方法、工具和過程。
(77)程序流程圖(PFD)中的箭頭代表的是_______。
A)數據流 B)控制流 C)調用關系 D)組成關系
(77)B
知識點:軟體設計工具
評析:程序流程圖(PFD)是一種傳統的、應用廣泛的軟體過程設計表示工具,通常也稱為程序框圖,其箭頭代表的是控制流。
(78)在數據管理技術的發展過程中,經歷了人工管理階段、文件系統階段和資料庫系統階段。其中數據獨立性最高的階段是_______。
A)資料庫系統 B)文件系統 C)人工管理 D)數據項管理
(78)A
知識點:數據管理技術的發展
評析:在數據管理技術的發展過程中,經歷了人工管理階段、文件系統階段和資料庫系統階段。其中數據獨立性最高的階段是資料庫系統。
『玖』 2010計算機二級c語言上機題庫 要原題的 急急急 在線等
一、改錯題
【分析】:改錯題的錯誤一般可分為兩類,一類是語法錯誤,這類錯誤可通過調試程序改正,較容易;另一類是邏輯錯誤,這類錯誤程序能運行,但結果不正確,這類錯誤相對較難,修改前必須要看懂和理解程序。
#include"stdio.h"
#define n 4 #define m 3 /*語法錯,#define m 3需另起一行*/
int a[n][m],s[m];
p(int j)/*此函數的功能為:找出a數組中第j列的最小元素的值及行號,函數成功運行後,i中即為j列的最小元素的行號,s[j]中即為j列的最小元素的值*/
{int k,i,x;
x=a[0][j];i=0; /*邏輯錯,從函數的功能可知,a[0][j]也應賦值給s[j],所以x=a[0][j]應改為s[j]=x=a[0][j]*/
for(k=1;k<N;K++)< p>
if(a[k][j]<X)< p>
{i=k;s[j]=x=a[k][j];}
return i;
}
main()
{int index[m],i,j,k;
for(i=0;i<N;I++)< p>
for(j=0;j<M;J++)< p>
scanf("%d",a[i][j]);/*語法錯,但編譯時不會報錯,scanf語句的一般形式為scanf(格式控制,地址表列),所以a[i][j]應改為&a[i][j])*/
for(j=0,j<M;J++)< p>
{index[j]=p[j];
printf("a[%d,%d]=%d\n",index[j],j,s[j]);
}
i=s[1];k=0; /*邏輯錯,數組s中存放的是a數組中每一列的最小值,比較時應從數組的第0個元素開始,而下面的for循環是從第1個元素開始的,所以i=s[1]應改為i=s[0]*/
for(j=1;j<>
if(s[j]<I)< p>
{i=s[j];k=j;}
printf("min=a[%d,%d]=%d",index[k],k,i); }
二、編程題
【分析】:本題的主要功能是建立一個3行8列的二維數組,並給其元素賦值,其中第1、2行的值可通過遞推公式xi+1=(25*xi+357)%1024得到,第三行的值取前兩行同列元素的最大公約數,所以編程時可用一個函數來實現求公約數的演算法。
#include
#include
#define n 8
/*函數gcd實現求最大公約數的演算法*/
gcd(int a,int b)
{int c;
while(b!=0)
{c=a%b;a=b;b=c;}
return a;
}
main()
{int i,j,x,a[3][n];
FILE *f;
if((f=fopen("d:\\temp\\1\\myf2.out","w"))= =NULL)
{printf("Create File myf2.out Failed!\n");exit(0);}
x=26;
/*下面二重for循環實現給第1、2行數組元素賦值的功能*/
for(i=0;i<2;i++)
for(j=0;j<N;J++)< p>
{a[i][j]=x;x=(25*x+357)%1024;}
/*下面for循環通過調用gcd函數實現給第3行數組元素賦值的功能*/
for(j=0;j<N;J++)< p>
a[2][j]=gcd(a[0][j],a[1][j]);
/*下面for循環實現按題目所給格式輸出二維數組的功能*/
for(i=0;i<3;i++)
{for(j=0;j<>
fprintf(f,"\n");
}
fclose(f); }
2010年計算機等級考試二級C語言上機習題(2)
一、改錯題
【知識點】整數數位處理、數字字元與相應數字的轉換、程序調式
【解析】程序中的錯誤一般可以分為兩類,一類是語法錯誤,即程序中有拼寫錯誤,書寫不符合C語言的規定等,此類錯誤可通過調試(按F9鍵),根據提示進行改正。另一類是邏輯錯誤,程序調試已通過(報success),但運行結果不正確,此類錯誤的修改必須要理解程序後方能改正。
使用putchar函數必須在程序開頭加上文件包含#include "stdio.h";scanf語句中必須是地址序列,故scanf("num=%d",num);應改為scanf("num=%d",&num);,且調式時注意將「num=」原樣輸入;某數字若轉換為相應數字字元,應加上字元'0'或48(字元'0'的ASCII碼值),故digit[n++]=m%10;應改為digit[n++]=m%10+'0';;最後輸出時,n已在前面多加了一次,故而輸出時應先減1,故for(;n>=0;n--)中第一個表達式應加上n--或--n或n=n-1。
【答案】①在程序開頭加上#include "stdio.h"
②將原第五行的scanf("num=%d",num);改為scanf("num=%d",&num);
③將原第十一行的digit[n++]=m%10;改為digit[n++]=m%10+'0';
④將原第十六行的for(;n>=0;n--)改為for(n--;n>=0;n--)
二、編程題
【知識點】字元串應用、數據文件的使用
【解析】注意,按要求必須調用函數,且使用數據文件完成輸出。使用數據文件有5大步驟:①#include ,②用FILE *定義指針,③用fopen("A:\\myf2.out","w")打開文件並賦值給指針,④用fprintf輸出結果,⑤用fclose關閉文件。
【注意】fopen("A:\\myf2.out","w")中盤符A:後要加雙斜杠表示根目錄,因為C語言用轉義字元'\\'才能表達字元\;另外,文件的命名一定要嚴格按照規定處理,千萬不要隨便命名。
【參考答案】
#include "stdio.h"
int compress(char s[])
{int n,k=0,count=0;
if(s[0]!=NULL) n=k+1;
while(s[n]!=NULL)
{if(s[k]= =s[n]){n++;count++;}
else {s[++k]=s[n];n++;}
}
s[++k]='\0';
return count;
}
main()
{char num[100];
int count=0;
FILE *fp;
fp=fopen("A:\\myf2.out","w");
gets(num);
count=compress(num);
fprintf(fp,"%s",num);
printf("%d",count);
fclose(fp); }
運行結果如下:
@ I wil sucesful & and you to ! #
2010年計算機等級考試二級C語言上機習題(3)
一、改錯題
【知識點】選擇法排序、指針與字元串、程序的調試
【解析】程序中的錯誤一般可以分為兩類,一類是語法錯誤,即程序中有拼寫錯誤,書寫不符合C語言的規定等,此類錯誤可通過調試(按F9鍵),根據提示進行改正。另一類是邏輯錯誤,程序調試已通過(報success),但運行結果不正確,此類錯誤的修改必須要理解程序後方能改正。
本題要求「從鍵盤上接受一個含有空格的字元串」,scanf是做不到的,它遇到第一個空格即認為讀入完畢,故應替換成gets函數;程序中使用了strcpy函數,就必須在程序開頭加上文件包含#include "string.h";根據選擇法升序排序要領,每次找到一個「更小的字元」由r指著,直到指向最小的為止,而不是修改r所指字元的值,故if(*r>*q)*r=*q;應改為if(*r>*q) r=q;;當r與p所指不同時,交換二者所指字元的值,即使得p所指字元為每次的最小,故應將if(r/=p)改為if(r!=p)。
【答案】①在程序開頭加上文件包含#include "string.h"
②將原第五行的scanf("%s",str);改為gets(str);
③將原第八行的*r=*q; 改為r=q;
④將原第九行的if(r/=p)改為if(r!=p)
二、編程題
【知識點】二維數組的應用、數據文件的使用
【解析】 關於「二維數組應用」的題目,一般都要仔細觀察,找出規律後再編程。本題中原數組的任意一個元素a[i][j]旋轉後,位置處於b中第3-j行i列。注意,按要求必須調用函數,且使用數據文件完成輸出。使用數據文件有5大步驟:①#include ,②用FILE *定義指針,③用fopen("A:\\myf2.out","w")打開文件並賦值給指針,④用fprintf輸出結果,⑤用fclose關閉文件。
【注意】fopen("A:\\myf2.out","w")中盤符A:後要加雙斜杠表示根目錄,因為C語言用轉義字元'\\'才能表達字元\;另外,文件的命名一定要嚴格按照規定處理,千萬不要隨便命名。
【參考答案】
#include "stdio.h"
int rotate(int a[4][4],int b[4][4]);
main()
{FILE *fp;
int i,j,x[4][4],y[4][4],s;
fp=fopen("A:\\myf2.out","w");
if(fp= =NULL){printf("Can't create file myf2.out!");
exit(1);}
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&x[i][j]);
s=rotate(x,y);
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
fprintf(fp,"%d ",y[i][j]);
fprintf(fp,"\n");
}
fprintf(fp,"sum=%d\n",s);
fclose(fp);
}
int rotate(int a[4][4],int b[4][4])
{int i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
b[3-j][i]=a[i][j];
for(i=0;i<4;i++) s+=b[i][i];
return s; }
2010年計算機等級考試二級C語言上機習題(4)
一、改錯題
含有錯誤的源程序如下:
void match(char *pat,char str) ①
{char *p=pat,*q=str;
int i=0; ②
while((*p!=NULL)&&(*q!=NULL))
if(*p= =*q||*p= ='?')p++,q++;
else if(*p= ='*')
{p++;
while(*q!=*p&&*q!=NULL)q++;
}
else i=0;break; ③
if(*p!=NULL||*q!=NULL)i=0;
return i;
}
}
【知識點】字元串處理、程序的調試
【解析】程序中的錯誤一般可以分為兩類,一類是語法錯誤,即程序中有拼寫錯誤,書寫不符合C語言的規定等,此類錯誤可通過調試(按F9鍵),根據提示進行改正。另一類是邏輯錯誤,程序調試已通過(報Success),但運行結果不正確,此類錯誤的修改必須要理解程序後方能改正。
程序中用到系統預設的符號常量NULL,又未加「文件包含」處理,按F9後即編譯時系統會報錯,故應在最前面加上include 或將以下全部NULL改為0。函數match分明有返回值,故系統也會報錯,應將void改為int;變數i的作用是:當匹配時取值1,否則取值0,根據③處,易於發現i初值應取1,故②處應改為i=1,當發現不匹配時,立即置為0,並跳出循環,此兩句應是一個整體,應構成復合語句。②③均為邏輯錯誤。
【答案】(1)在最前面加上include 或將以下全部NULL改為0
(2)加下劃線的部分改為:
①int match(char *pat, char *str)
②i=1
③{ i=0;break;}
二、編程題
【知識點】窮舉法、數據文件的使用
【解析】將30~50之間的每一個數都進行判斷,就不會有遺漏。注意,按要求必須調用函數,且使用數據文件完成輸出。使用數據文件有5大步驟:①#include ,②用FILE *定義指針,③用fopen("A:\\myf2.out","w")打開文件並賦值給指針,④用fprintf輸出結果,⑤用fclose關閉文件。
【注意】fopen("A:\\myf2.out","w")中盤符A:後要加雙斜杠表示根目錄,因為C語言用轉義字元'\\'才能表達字元\;另外,文件的命名一定要嚴格按照規定處理,千萬不要隨便命名。
【參考答案】
#include
int inv(int x)
{int y;
y=x/10+x%10*10; /*此句可將某兩位正整數的十位與個位數字換位*/
return y;
}
main()
{FILE *out;
int i,j;
if((out=fopen("A:\\myf2.out","w"))= =NULL)
{printf("Open file myf2.out failed!\n");exit(1);}
for(i=30;i<50;i++)
for(j=30;j<50;j++)
if((i/10!=i%10)&&(i*j= =inv(i)*inv(j))) /* i/10!=i%10確保十位與個位數字不同*/
fprintf(out,"%d*%d=%d*%d\n",i,j,inv(i),inv(j));
fclose(out); }
2010年計算機等級考試二級C語言上機習題(5)
一、改錯題
【分析】:對於改錯題的程序中的錯誤一般可分為兩類,一類是語法錯誤,程序中的語句不符合C語言的語法,拼寫錯誤,這類的錯誤可通過調試程序改正。另一類是邏輯錯誤,程序調試已通過,但運行結果不正確,這類錯誤的修改必須要看懂和理解程序。
#include
#define N 50
void sum(int n,int *pa)
/*屬第一類錯誤。若聲明為void類型,則該函數沒有返回值,但程序要求返回前n的和,所以類型聲明不正確,應改為: int 或去掉*/
{ int count, total,temp;
*pa=3;*++pa=2;
total=5; count=2;
while(count++<N)< p>
{ temp=*(pa-1)**pa;
if(temp<10)
{ total+=temp; *(++pa)=temp;
}
else
{*++pa=temp/10;
total+=*pa;
if(count
/*屬第二類錯誤。若乘積為兩位數,已把其十位數字作為數列的後續項,但若數列的個數沒有超過n時,將該乘積個位數字作為數列的後續項。*++pa 與*pa++不同,此處應為: *++pa */
}
}
return total;
}
main()
{ int tol,n,i,num[n];
/*屬第一類錯誤。數組的聲明不正確,數組的下標必須為常量或常量標識符。應改為:num[N] 或 num[50] */
do
{ printf("Input n=?(2<N<50)");< p>
scanf("%d",&n);
}while(n<=2||n>=50);
tol=sum(N,num);
/*屬第二類錯誤。本題要求生成數列的前n(n<50)項,而N是常量。應改為:sum(n,num) */
for(i=0;i<N;I++)< p>
printf((i+1)%5?"%5d":"%5d\n",num[i]);
printf("\n");
printf("%d",tol);
}
2010年計算機等級考試二級C語言上機習題(6)
一、改錯題
含有錯誤的源程序:
#include
#include
#define N 5
struct student
{ char name[10];
int score;
} ―――――――――――①
void sort(struct student stud[],int n)
{ int i,j;
struct student p;
for(i=1;i<>
{ p=stud[i];
for(j=i-1;j>0 && p>stud[j];j--) ―――――――――――③
stud[j+1]=stud[j];
stud[j+1]=p;
}
}
void main()
{ struct student stud[N]={"aaa",60,"bbb",90,"ccc",85,"ddd",65,"yyy",77};
int i;
sort(stud,N);
printf("sorted data:\n");
for(i=0;i< printf(?%s\t%d\n?,stud[i]);>
}
【知識點】結構體、排序
【難點】 插入法排序
【解析】本題是將未排序的數組元素採用插入排序方法進行排序,其思想是:從第2個元素開始,最初與第一個元素進行比較,由大到小排列在適當位置,成為排好序的數組元素一員。再依次將待排序的元素與前面已排好序的元素從後向前進行比較,如果大於該元素,則該元素向後移一位,直到待排序的元素小於已排好序的某一元素,則直接插入到該元素之後。直到待排序的元素全部完成為止。本程序的sort函數中i表示待排序的元素下標,j表示已排好序的元素下標。
【答案】(1)標號①:} 改為 }; (2)標號②:for(i=1;i
(3)標號③:for(j=i-1;j>0 && p>stud[j];j--) 改為 j>=0 && p.score>stud[j].score;j--)
(4) 標號④:printf("%s\t%d\n",stud[i]); 改為printf("%s\t%d\n",stud[i].name,stud[i].score );
二、編程題
【知識點】字元串操作、函數、文件
【解析】仔細閱讀並分析【編程要求】。【編程要求1】已對函數Replace_string指定了函數名、函數類型、形參類型和個數,並詳細說明了其功能。在line指向的字元串中查找str1指向的字元子串的關鍵語句是當「str1[j]= =line[loc]&&str1[j]!='\0'」時繼續循環查找,當 因「str1[j]!='\0'」退出循環時,則找到str1指向的字元子串,此時用str2指向的字元串替換在line中的str1字元子串,返回。【編程要求2】編寫主函數主要功能要求是保存結果到數據文件、調用Replace_string函數、輸入測試數據。這部分是最常規和基本的要求,必須掌握。
【參考答案】
#include
#include
int Replace_string (char line[],char str1[],char str2[])
{ int i=0,j,loc;
char temp[80];
while(i<=strlen(line)-strlen(str2))
{ j=0;loc=i;
while(str1[j]= =line[loc]&&str1[j]!='\0')
{ loc++;j++;}
if(str1[j]= ='\0')
{strcpy(temp,&line[loc]);strcpy(&line[i],str2);
i+=strlen(str2);strcpy(&line[loc],temp);
return 1;
}
else i++;
}
return 0;
}
main()
{ FILE *fp;
char string[100]="My EXAM_number is 0112404321.";
char number[11]="0112404321",num[11];
fp=fopen("myf2.out","w");
fprintf(fp,"%s\n",string);
gets(num);
Replace_string (string,number,num);
fprintf(fp,"%s\n",string);
fprintf(fp,"\n my exam number is: %s\n","0112404321");
fclose(fp); }
2010年計算機等級考試二級C語言上機習題(7)
一、改錯題
含有錯誤的源程序如下:
#include
#include
struct T
{char name [20],num[20];
};
void sort(struct T items[],int low,int high)
{struct T temp;
int k,j;
for(k=low;k<HIGH;K++)< p>
for(j=low;j<>
if(items[j].name>items[j+1].name) ②
{temp=items[j];items[j]=items[j+1];items[j+1]=temp;}
}
void main(void)
{struct T stu[4]={"Wang","6723","Cai","2106","Zhang", ③
"5129","Chang","4512","An","6868"};
int k;
sort(stu,0,4);
printf("The Sorted Array:\n");
for(k=0;k<5;k++)
printf("name:%s,num:%s\n",stu[k]->name,stu[k]->num); ④
}
【知識點】冒泡排序、結構體數組、程序的調試
【解析】程序中的錯誤一般可以分為兩類,一類是語法錯誤,即程序中有拼寫錯誤,書寫不符合C語言的規定等,此類錯誤可通過調試(按F9鍵),根據提示進行改正。另一類是邏輯錯誤,程序調試已通過(報success),但運行結果不正確,此類錯誤的修改必須要理解程序後方能改正。
本題使用起泡法完成排序,①處j<HIGH-K-1等價與J<=HIGH-K-2,J最大取HIGH-K-2時,J+1才取到HIGH-K-1,例如,剛開始當K為0時,最後一個比較的元素下標為HIGH-1,而實際上根據實參(值已為4)傳遞而來的最後一個元素的下標應為HIGH,故①處應改為J<HIGH-K或J<=HIGH-K-1,此為邏輯錯誤。②③④處均屬於語法錯誤:字元串的比較不能使用關系運算符,要藉助STRCMP函數;所賦值有5個,數組維數就必須大於等於5;STU[K]不是指針,不能用指向成員符描述成員。< p>
【答案】加下劃線的部分改為:
①j<HIGH-K或J<=HIGH-K-1< p>
②if(strcmp(items[j].name, items[j+1].name)>0)
③stu[5]
④stu[k].name, stu[k].num
2010年計算機等級考試二級C語言上機習題(7)
二、編程題
【知識點】字元串處理、函數調用、數據文件的使用
【解析】編程題的結果一般都是客觀的,這樣便於老師主觀閱卷評分,雖然考生個人的准考證號是各異的,對評閱老師卻是可以通過所交磁碟標簽直接觀察到,故必須如實輸入,不能直接套用題中例子。注意,按要求必須調用函數,且使用數據文件完成輸出。使用數據文件有5大步驟:①#include ,②用FILE *定義指針,③用fopen("A:\\myf2.out","w")打開文件並賦值給指針,④用fprintf輸出結果,⑤用fclose關閉文件。
【注意】fopen("A:\\myf2.out","w")中盤符A:後要加雙斜杠表示根目錄,因為C語言用轉義字元'\\'才能表達字元\;另外,文件的命名一定要嚴格按照規定處理,千萬不要隨便命名。
【參考答案】
#include
#include
#include
void count(char a[],char w[][10],int n,int b[])
{int i=0,j,k=0;char s[10];
for(i=0;a[i]!=0;i++)
{if(isalpha(a[i]))s[k++]=a[i]; /* isalpha函數用於判斷字元是否為字母*/
/*此句將連續字母組成的一個單詞存放於s中,便於與二維數組中的某一行進行比較*/
else
{s[k]= '\0'; /*加上'\0'才能使s中存放的是字元串,才能使用strcmp函數進行比較*/
for(j=0;j<N;J++)< p>
if(strcmp(s,w[j])= =0){b[j]++;break;}
k=0; /*讓s重新存放另一個單詞*/
}
}
}
main()
{FILE *fp;
char line[80]="this is a book,that is an apple",word[6][10]={"this","that","is","a","an","book"};
/*按要求初始化,用二維字元數組的一行存放一個單詞便於後面比較處理*/
int c[6]={0},m;
count(line,word,6,c);fp=fopen("A:\\myf2.out","w");
if(fp= =NULL){printf("Can't open file");exit(1);}
for(m=0;m<6;m++)fprintf(fp,"%s:%d",word[m],c[m]);
fprintf(fp,"\nmy exam number is:%s","0112400123"); /*注意輸入實際准考證號*/
fclose(fp);
}
『拾』 c語言上機答案
1.main()
{char a;
scanf("%c",&a);
printf("%c%d",a-32,a-32);}
2.main()
{float c,f;
scanf("%f",&f);
c=5/9.0*(f-32);
printf("%f",c);
}
3.main()
{float x;
Y=3X3+0.4X2-2 X / 3;
printf("%f",Y);
}
4.main()
{int a,b,c,t;
scanf("%d,%d,%d",&a,&b,&c);
t=a;a=b;b=c;c=t;
printf("%d,%d,%d",a,b,c);
}
其它的你自己想想吧