1. <small id="kntrr"><delect id="kntrr"></delect></small>
    2. <sub id="kntrr"></sub>
        1. <form id="kntrr"><listing id="kntrr"></listing></form>
            江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
            全國計算機二級C題庫第81--90套

             

             

            本題目如果下載后發現有錯誤的地方,請聯系網站管理員:QQ121431055

             

            考試時,上機操作題目有三套,基本操作題、簡單應用題、綜合應用題

             

            81套:

            給定程序中,函數fun的功能是:在形參s所指字符串中的每個數字字符之后

            插入一個*號。例如,形參s所指的字符串為:def35adh3kjsdf7。執行結果為:

            def3*5*adh3*kjsdf7*。

            請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

            果。

            注意:源程序存放在考生文件夾下的BLANK1.C中。

            不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            void fun(char *s)

            { int i, j, n;

            for(i=0; s[i]!='\0'; i++)

             

             

             

             

            /**********found**********/

            if(s[i]>='0' ___1___ s[i]<='9')

            { n=0;

            /**********found**********/

            while(s[i+1+n]!= ___2___) n++;

            for(j=i+n+1; j>i; j--)

            /**********found**********/

            s[j+1]= ___3___;

            s[j+1]='*';

            i=i+1;

            }

            }

            main()

            { char s[80]="ba3a54cd23a";

            printf("\nThe original string is : %s\n",s);

            fun(s);

            printf("\nThe result is : %s\n",s);

            }

            解題思路:

            第一處:判斷是數字,應該使用“與”,所以應填:&&。

            第二處:判斷字符串是否是字符串結束符,所以應填:'\0'。

            第三處:如果當前字符是數字字符,則把當前字符以后的所有字符往后一個位置,所以應

            填:s[j]。

            ***************************************************

            給定程序MODI1.C中函數fun的功能是:根據整型形參m,計算如下公式的值。

                1    1     1          1

            y = 1 + ----- + ----- + ----- + …… + -----

                   2*2  3*3   4*4        m*m

            例如,若 m 中的值為: 5,則應輸出:1.463611。

            請改正程序中的錯誤,使它能得出正確的結果。

            注意: 不要改動 main 函數,不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            double fun ( int m )

            { double y = 1.0 ;

            int i;

            /**************found**************/

            for(i = 2 ; i < m ; i++)

            /**************found**************/

            y += 1 / (i * i) ;

            return( y ) ;

            }

            main( )

            { int n = 5 ;

            printf( "\nThe result is %lf\n", fun ( n ) ) ;

            }

            解題思路:

             

             

             

             

            第一處:使用for循環計算公式,必須計算到m,所以應改為for(i=2; i<=m; i++)。

            第二處:在除法運算中,如果除數和被除數都是整數,所以所除結果也是整數,因此應改

            y+=1./(i*i)。

            ***************************************************

            請編寫函數fun, 函數的功能是:實現B=A+A', 即把矩陣A加上A的轉置, 存放

            在矩陣B中。計算結果在 main 函數中輸出。

            例如,輸入下面的矩陣: 其轉置矩陣為:

            1 2 3 1 4 7

            4 5 6 2 5 8

            7 8 9 3 6 9

            程序輸出:

            2 6 10

            6 10 14

            10 14 18

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

            請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

            你編寫的若干語句。

            給定源程序:

            #include

            void fun ( int a[3][3], int b[3][3])

            {

            }

            main( ) /* 主程序 */

            { int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, t[3][3] ;

            int i, j ;

            fun(a, t) ;

            for (i = 0 ; i < 3 ; i++) {

            for (j = 0 ; j < 3 ; j++)

            printf("}", t[i][j]) ;

            printf("\n") ;

            }

            NONO () ;

            }

            解題思路:

            本題考察考生如何實現矩陣的轉置,然后執行兩個矩陣中的元素值相加生成一個新的矩陣。

            矩陣轉置實現上就是原行元素值變為列元素值,原列元素值變為行元素值。

            參考答案:

            void fun ( int a[3][3], int b[3][3])

            {

            int c[3][3] ;

            int i, j ;

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

            for(j = 0 ; j < 3 ; j++) {

            c[i][j] = a[j][i] ; /* 矩陣的轉置 */

            b[i][j] = a[i][j] + c[i][j] ;

            }

            }

             

            ※※※※※※※※※※※※※※※※※※※※※※※※※

            82套:

            給定程序中,函數fun的功能是:找出100999之間(含100999)所有整數

            中各位上數字之和為xx為一正整數)的整數,然后輸出;符合條件的整數個數作

            為函數值返回。

            例如,當x值為5時,100999之間各位上數字之和為5的整數有:104、113、

            122、131、140、203、212、221、230、302、311、320、401、410、500。共有15

            個。當x值為27時,各位數字之和為27的整數是:999。只有1個。

            請在程序的下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結

            果。

            注意:源程序存放在考生文件夾下的BLANK1.C中。

            不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            fun(int x)

            { int n, s1, s2, s3, t;

            n=0;

            t=100;

            /**********found**********/

            while(t<=__1__){

            /**********found**********/

            s1=t; s2=(__2__); s3=t/100;

            /**********found**********/

            if(s1+s2+s3==__3__)

            { printf("%d ",t);

            n++;

            }

            t++;

            }

            return n;

            }

            main()

            { int x=-1;

            while(x<0)

            { printf("Please input(x>0): "); scanf("%d",&x); }

            printf("\nThe result is: %d\n",fun(x));

            }

            解題思路:

            第一處:使用while循環找出100999之間所有整數,所以應填:999。

            第二處:s2是求十位數字,所以應填:t/10。

            第三處:各位數字之和為x,所以應填:x。

            ***************************************************

            給定程序MODI1.C中函數fun的功能是:從低位開始取出長整型變量s中偶數位

            上的數,依次構成一個新數放在t中。高位仍在高位,低位仍在低位。

            例如,當s中的數為:7654321時,t中的數為:642。

            請改正程序中的錯誤,使它能得出正確的結果。

             

             

             

             

            注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            /************found************/

            void fun (long s, long t)

            { long sl=10;

            s /= 10;

            *t = s % 10;

            /************found************/

            while ( s < 0)

            { s = s/100;

            *t = s*sl + *t;

            sl = sl * 10;

            }

            }

            main()

            { long s, t;

            printf("\nPlease enter s:"); scanf("%ld", &s);

            fun(s, &t);

            printf("The result is: %ld\n", t);

            }

            解題思路:

            第一處:在函數fun體中,t是一個指針型變量,因此定義形參時也應定義指針。

            第二處:條件應該s>0,所以應改為:while(s>0)。

            ***************************************************

            學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組

            s,請編寫函數fun,它的功能是:按分數的高低排列學生的記錄,高分在前。

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

            請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

            你編寫的若干語句。

            給定源程序:

            #include

            #define N 16

            typedef struct

            { char num[10];

            int s;

            } STREC;

            int fun( STREC a[] )

            {

            }

            main()

            { STREC s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

            \TAB \TAB {"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

            \TAB \TAB {"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

            \TAB \TAB {"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}};

            int i;FILE *out ;

            fun( s );

             

             

             

             

            printf("The data after sorted :\n");

            for(i=0;i

            { if( (i)%4==0 )printf("\n");

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

            }

            printf("\n");

            out = fopen("c:\\test\\out.dat","w") ;

            for(i=0;i

            { if( (i)%4==0 && i) fprintf(out, "\n");

            fprintf(out, "M ",s[i].s);

            }

            fprintf(out,"\n");

            fclose(out) ;

            }

            解題思路:

            本題是按結構體中成績s進行降序排列,其結果仍存入當前結構體中。

            參考答案:

            #include

            #define N 16

            typedef struct

            { char num[10];

            int s;

            } STREC;

            int fun( STREC a[] )

            {

            STREC tmp;

            int i,j;

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

            for(j = i+1; j < N; j++)

            if(a[i].s < a[j].s) {

            tmp = a[i];

            a[i] = a[j];

            a[j] = tmp;

            }

            }

             

            ※※※※※※※※※※※※※※※※※※※※※※※※※

            83套:

            給定程序中,函數fun的功能是:找出100xx999)之間各位上的數字之

            和為15的所有整數,然后輸出;符合條件的整數個數作為函數值返回。

            例如,當n值為500時,各位數字之和為15的整數有:159、168、177、186、

            195、249、258、267、276、285、294、339、348、357、366、375、384、393、

            429、438、447、456、465、474、483、492。共有26個。

            請在程序的下劃線處填入正確的內容并把下劃線刪除, 使程序得出正確的結

            果。

            注意:源程序存放在考生文件夾下的BLANK1.C中。

            不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            fun(int x)

            { int n, s1, s2, s3, t;

            /**********found**********/

            n=__1__;

            t=100;

            /**********found**********/

            while(t<=__2__)

            { s1=t; s2=(t/10); s3=t/100;

            if(s1+s2+s3==15)

            { printf("%d ",t);

            n++;

            }

            /**********found**********/

            __3__;

            }

            return n;

            }

            main()

            { int x=-1;

            while(x>999||x<0)

            { printf("Please input(0

            printf("\nThe result is: %d\n",fun(x));

            }

            解題思路:

            第一處:符合條件的整數個數n,必須進行初始化,所以應填:0。

             

             

             

             

            第二處:找出x999,所以應填:x。

            第三處:循環控制變量t每循環一次t要加1,所以應填:t++。

            ***************************************************

            給定程序MODI1.C中函數fun的功能是:先將s所指字符串中的字符按逆序存放

            t所指字符串中,然后把s所指串中的字符按正序連接到t所指串的后面。

            例如:當s所指的字符串為:"ABCDE"時,

            t所指的字符串應為:"EDCBAABCDE"。

            請改正程序中的錯誤,使它能得出正確的結果。

            注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            #include

            void fun (char *s, char *t)

            {

            /************found************/

            int i;

            sl = strlen(s);

            for (i=0; i

            /************found************/

            t[i] = s[sl-i];

            for (i=0; i

            \TAB t[sl+i] = s[i];

            t[2*sl] = '\0';

            }

            main()

            { char s[100], t[100];

            printf("\nPlease enter string s:"); scanf("%s", s);

            fun(s, t);

            printf("The result is: %s\n", t);

            }

            解題思路:

            第一處:變量sl沒有定義。

            第二處:在C語言中,字符串開始位置從0開始的,所以應改為:t[i] = s[sl-i-1];。

            ***************************************************

            函數fun的功能是: a、b中的兩個兩位正整數合并形成一個新的整數放在

            c中。合并的方式是:將a中的十位和個位數依次放在變量c的百位和個位上,b

            的十位和個位數依次放在變量c的千位和十位上。

            例如,當a45,b=12。調用該函數后,c=1425。

            注意: 部分源程序存在文件PROG1.C中。數據文件IN.DAT中的數據不得修改。

            請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

            你編寫的若干語句。

            給定源程序:

            #include

            void fun(int a, int b, long *c)

            {

            }

            main() /* 主函數 */

             

             

             

             

            { int a,b; long c;

            printf("Input a, b:");

            scanf("%d%d", &a, &b);

            fun(a, b, &c);

            printf("The result is: %ld\n", c);

            NONO();

            }

             

            解題思路:

            本題是給出兩個兩位數的正整數分別取出各位上的數字,再按條件組成一個新數。

            a十位數字的方法:a/10

            a個位數字的方法:a

            參考答案:

            void fun(int a, int b, long *c)

            {

            *c=(b/10)*1000+(a/10)*100+(b)*10+(a);

            }

             

            ※※※※※※※※※※※※※※※※※※※※※※※※※

            84套:

            函數fun的功能是:從三個形參a,b,c中找出中間的那個數,作為函數值返

            回。

            例如,當a=3, b=5, c=4時,中數為4。

            請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

            果。

            注意:源程序存放在考生文件夾下的BLANK1.C中。

            不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            int fun(int a, int b, int c)

            {

            int t;

            /**********found**********/

            t = (a>b) ? (b>c? b :(a>c?c:___1___)) : ((a>c)?___2___ : ((b>c)?c:___3___));

            return t;

            }

            main()

            { int a1=3, a2=5, a3=4, r;

            r = fun(a1, a2, a3);

            printf("\nThe middle number is : %d\n", r);

            }

            解題思路:

            第一處:給三個數進行比較大小,所以應填:a。

            第二處:給三個數進行比較大小,所以應填:a。

            第三處:給三個數進行比較大小,所以應填:b。

            ***************************************************

            給定程序MODI1.C中函數fun的功能是: 首先將大寫字母轉換為對應小寫字母;

            若小寫字母為au,則將其轉換為其后的第5個字母;若小寫字母為vz, 使其值減

            21。轉換后的小寫字母作為函數值返回。例如,若形參是字母A,則轉換為小寫字母

            f; 若形參是字母W,則轉換為小寫字母b。

            請改正函數fun中指定部位的錯誤, 使它能得出正確的結果。

            注意: 不要改動main函數, 不得增行或刪行, 也不得更改程序的結構!

            給定源程序:

            #include

            #include

            char fun(char c)

            { if( c>='A' && c<='Z')

            /**************found**************/

            C=C+32;

             

             

             

             

            if(c>='a' && c<='u')

            /**************found**************/

            c=c-5;

            else if(c>='v'&&c<='z')

            c=c-21;

            return c;

            }

            main()

            { char c1,c2;

            printf("\nEnter a letter(A-Z): "); c1=getchar();

            if( isupper( c1 ) )

            { c2=fun(c1);

            printf("\n\nThe letter \'%c\' change to \'%c\'\n", c1,c2);

            }

            else printf("\nEnter (A-Z)!\n");

            }

            解題思路:

            第一處:變量c錯寫成大寫C了。

            第二處:要求轉換為其后的第5個字母,所以應改為:c=c+5;。

            ***************************************************

            請編寫函數fun, 其功能是: 計算并輸出

            例如, 在主函數中從鍵盤給n輸入20,輸出為:s=534.188884。

            注意: 要求n的值大于1但不大于100。

            部分源程序在文件PROG1.C中。

            請勿改動主函數main和其他函數中的任何內容, 僅在函數fun的花括號中填入

            你編寫的若干語句。

            給定源程序:

            #include

            #include

            double fun(int n)

            {

            }

            main()

            { int n; double s;

            printf("\n\nInput n: "); scanf("%d",&n);

            s=fun(n);

            printf("\n\ns=%f\n\n",s);

            NONO();

            }

            解題思路:

            本題是根據公式計算多項式的值。注意變量的取值范圍。

            參考答案:

            double fun(int n)

            {

            int i;

            double fac=1.0;

            double sum=1.0;

            for(i=2;i<=n;i++) {

            fac+=sqrt(i);

            sum+=fac;

            }

            return sum;

            }

             

            ※※※※※※※※※※※※※※※※※※※※※※※※※

            85套:

            給定程序的功能是調用fun函數建立班級通訊錄。通訊錄中記錄每位學生的

            編號、姓名和電話號碼。班級的人數和學生的信息從鍵盤讀入,每個人的信息作

            為一個數據塊寫到名為myfile5.dat的二進制文件中。

            請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

             

             

             

             

            果。

            注意:源程序存放在考生文件夾下的BLANK1.C中。

            不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            #include

            #define N 5

            typedef struct

            { int num;

            char name[10];

            char tel[10];

            }STYPE;

            void check();

            /**********found**********/

            int fun(___1___ *std)

            {

            /**********found**********/

            ___2___ *fp; int i;

            if((fp=fopen("myfile5.dat","wb"))==NULL)

            return(0);

            printf("\nOutput data to file !\n");

            for(i=0; i

            /**********found**********/

            fwrite(&std[i], sizeof(STYPE), 1, ___3___);

            fclose(fp);

            return (1);

            }

            main()

            { STYPE s[10]={ {1,"aaaaa","111111"},{1,"bbbbb","222222"},{1,"ccccc","333333"},

            {1,"ddddd","444444"},{1,"eeeee","555555"}};

            int k;

            k=fun(s);

            if (k==1)

            { printf("Succeed!"); check(); }

            else

            printf("Fail!");

            }

            void check()

            { FILE *fp; int i;

            STYPE s[10];

            if((fp=fopen("myfile5.dat","rb"))==NULL)

            { printf("Fail !!\n"); exit(0); }

            printf("\nRead file and output to screen :\n");

            printf("\n num name tel\n");

            for(i=0; i

            { fread(&s[i],sizeof(STYPE),1, fp);

            printf("m %s %s\n",s[i].num,s[i].name,s[i].tel);

             

             

             

             

            }

            fclose(fp);

            }

            解題思路:

            本題是要求把指定的學生記錄輸出到指定的文件中。程序中共有三處要填上適當的內容,

            使程序能運行出正確的結果。

            第一處:結構定義自變量,因此應填寫STYPE。

            第二處:在所填行的下面一行,使用fopen來創建一個二進制文件,但文件流的變量名fp

            已經給出,這樣,此處只能填寫FILE。

            每三處:fwrite是把變量中的內容寫入指定文件中,再根據fwrite參數的使用要求,所以

            只能填寫文件流變量fp。

            ***************************************************

            給定程序MODI1.C中函數fun的功能是:先將在字符串s中的字符按正序存放

            t串中,然后把s中的字符按逆序連接到t串的后面。

            例如:當s中的字符串為:"ABCDE"時,

            t中的字符串應為:"ABCDEEDCBA"。

            請改正程序中的錯誤,使它能得出正確的結果。

            注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            #include

            void fun (char *s, char *t)

            { int i, sl;

            sl = strlen(s);

            /************found************/

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

            t[i] = s[i];

            for (i=0; i

            \TAB t[sl+i] = s[sl-i-1];

            /************found************/

            t[sl] = '\0';

            }

            main()

            { char s[100], t[100];

            printf("\nPlease enter string s:"); scanf("%s", s);

            fun(s, t);

            printf("The result is: %s\n", t);

            }

            解題思路:

            第一處:變量sl錯寫成了s1。

            第二處:新串t的字符串結束位置不正確,應該是兩倍的sl距離。

            ***************************************************

            函數fun的功能是:將兩個兩位數的正整數a、b合并形成一個整數放在c中。

            合并的方式是:將a數的十位和個位數依次放在c數的千位和十位上, b數的十位

            和個位數依次放在c數的百位和個位上。

            例如,當a45,b=12時,調用該函數后,c=4152。

            注意: 部分源程序存在文件PROG1.C中。數據文件IN.DAT中的數據不得修改。

             

             

             

             

            請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填

            入你編寫的若干語句。

            給定源程序:

            #include

            void fun(int a, int b, long *c)

            {

            }

            main()

            { int a,b; long c;

            printf("Input a, b:"); scanf("%d,%d", &a, &b);

            fun(a, b, &c);

            printf("The result is: %d\n", c);

            NONO();

            }

             

            解題思路:

            本題是給出兩個兩位數的正整數分別取出各位上的數字,再按條件組成一個新數。

            a十位數字的方法:a/10

            a個位數字的方法:a

            參考答案:

            void fun(int a, int b, long *c)

            {

            *c=(a/10)*1000+(b/10)*100+(a)*10+(b);

            }

             

            ※※※※※※※※※※※※※※※※※※※※※※※※※

            86套:

            甲乙丙丁四人同時開始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,

            每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函數fun的功能是根據形參

            提供的值,求出總共聽到多少次鞭炮聲作為函數值返回。注意,當幾個鞭炮同時

            炸響,只算一次響聲,第一次響聲是在第0秒。

            例如,若t1=7,t2=5,t3=6,t4=4,n=10,則總共可聽到28次鞭炮聲。

            請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

            果。

            注意:源程序存放在考生文件夾下的BLANK1.C中。

            不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            /**********found**********/

            #define OK(i, t, n) ((___1___%t==0) && (i/t

            int fun(int t1, int t2, int t3, int t4, int n)

            { int count, t , maxt=t1;

            if (maxt < t2) maxt = t2;

            if (maxt < t3) maxt = t3;

            if (maxt < t4) maxt = t4;

            count=1; /* count賦初值 */

            /**********found**********/

            for(t=1; t< maxt*(n-1); ___2___)

            {

            if(OK(t, t1, n) || OK(t, t2, n)|| OK(t, t3, n) || OK(t, t4, n) )

            count++;

            }

            /**********found**********/

            return ___3___;

            }

            main()

            { int t1=7, t2=5, t3=6, t4=4, n=10, r;

            r = fun(t1, t2, t3, t4, n);

            printf("The sound : %d\n", r);

            }

             

             

             

             

            解題思路:

            第一處:根據定義的要求,所以應填:i。

            第二處:for循環語句的增量,所以應填:t++。

            第三處:返回統計次數,所以應填:count。

            ***************************************************

            給定程序MODI1.C中函數fun的功能是: 根據輸入的三個邊長(整型值), 判斷

            能否構成三角形; 構成的是等邊三角形, 還是等腰三角形。若能構成等邊三角形

            函數返回3,若能構成等腰三角形函數返回2, 若能構成一般三角形函數返回1,

            不能構成三角形函數返回0。

            請改正函數fun中指定部位的錯誤, 使它能得出正確的結果。

            注意: 不要改動main函數, 不得增行或刪行, 也不得更改程序的結構!

            給定源程序:

            #include

            #include

            /**************found**************/

            void fun(int a,int b,int c)

            { if(a+b>c && b+c>a && a+c>b) {

            if(a==b && b==c)

            return 3;

            else if(a==b||b==c||a==c)

            return 2;

            /**************found**************/

            else retrun 1

            }

            else return 0;

            }

            main()

            { int a,b,c,shape;

            printf("\nInput a,b,c: "); scanf("%d%d%d",&a,&b,&c);

            printf("\na=%d, b=%d, c=%d\n",a,b,c);

            shape =fun(a,b,c);

            printf("\n\nThe shape : %d\n",shape);

            }

            解題思路:

            第一處:函數有返回值,不能定義為void,所以應改為:int fun(int a,int b,int c)。

            第二處:語句后缺少分號。

            ***************************************************

            請編寫函數fun, 其功能是: 計算并輸出3n之間(3n)所有素數的平方根

            之和。

            例如, 在主函數中從鍵盤給n輸入100,輸出為: sum=148.874270。

            注意: 要求n的值大于2但不大于100。

            部分源程序在文件PROG1.C中。

            請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入

            你編寫的若干語句。

            給定源程序:

            #include

            #include

             

             

             

             

            double fun(int n)

            {

            }

            main()

            { int n; double sum;

            printf("\n\nInput n: "); scanf("%d",&n);

            sum=fun(n);

            printf("\n\nsum=%f\n\n",sum);

            NONO();

            }

            解題思路:

            本題是計算并輸出3n之間(3n)所有素數的平方根之和。

            參考答案:

            double fun(int n)

            {

            int i,j=0;

            double s=0;

            for (i=3; i<=n; i++) {

            for (j=2; j

            if (i%j == 0) break;

            if (j == i) s=s+sqrt(i);

            }

            return s;

            }

             

            ※※※※※※※※※※※※※※※※※※※※※※※※※

            87套:

            函數fun的功能是:統計長整數n的各個位上出現數字1、2、3的次數,并通過

            外部(全局)變量c1,c2,c3返回主函數。例如:當n=123114350時,結果應該為:

            c1=3 c2=1 c3=2。

            請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

            果。

            注意:源程序存放在考生文件夾下的BLANK1.C中。

            不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            int c1,c2,c3;

            void fun(long n)

            { c1 = c2 = c3 = 0;

            while (n) {

            /**********found**********/

            switch(___1___)

            {

            /**********found**********/

            case 1: c1++;___2___;

            /**********found**********/

            case 2: c2++;___3___;

            case 3: c3++;

            }

            n /= 10;

            }

            }

            main()

            { long n=123114350L;

            fun(n);

            printf("\nThe result :\n");

            printf("n=%ld c1=%d c2=%d c3=%d\n",n,c1,c2,c3);

            }

            解題思路:

            第一處:取個位數上的數,所以n就可以得到個位數。

            第二處:switch條件判斷中,滿足條件做好后,必須使用break語句跳出選擇體,所以應填:

            break。

             

             

             

             

            第三處:同第二處。

            ***************************************************

            給定程序MODI1.C中函數fun的功能是: 統計一個無符號整數中各位數字值為

            零的個數, 通過形參傳回主函數;并把該整數中各位上最大的數字值作為函數值

            返回。例如, 若輸入無符號整數30800, 則數字值為零的個數為3, 各位上數字值

            最大的是8。

            請改正函數fun中指定部位的錯誤, 使它能得出正確的結果。

            注意: 不要改動main函數, 不得增行或刪行, 也不得更改程序的結構!

            給定源程序:

            #include

            int fun(unsigned n, int *zero)

            { int count=0,max=0,t;

            do

            { t=n;

            /**************found**************/

            if(t=0)

            count++;

            if(max

            n=n/10;

            }while(n);

            /**************found**************/

            zero=count;

            return max;

            }

            main()

            { unsigned n; int zero,max;

            printf("\nInput n(unsigned): "); scanf("%d",&n);

            max = fun( n,&zero );

            printf("\nThe result: max=%d zero=%d\n",max,zero);

            }

            解題思路:

            第一處:條件相等符號為==。

            第二處:由于zero是一個指針型變量,所以給它進行賦值時應帶指針,因此應改為:

            *zero=count;。

            ***************************************************

            請編寫函數fun, 其功能是: 計算并輸出下列多項式的值:

                1        1             1

            S = 1 + ── + ─── + + ─────

                   1*2      1*2*3        1*2*3*…50

            例如, 在主函數中從鍵盤給n輸入50,輸出為:s=1.718282。

            注意: 要求n的值大于1但不大于100。

            部分源程序在文件PROG1.C中。

            請勿改動主函數main和其他函數中的任何內容, 僅在函數fun的花括號中填入

            你編寫的若干語句。

            給定源程序:

            #include

            double fun(int n)

             

             

             

             

            {

            }

            main()

            { int n; double s;

            printf("\nInput n: "); scanf("%d",&n);

            s=fun(n);

            printf("\n\ns=%f\n\n",s);

            NONO();

            }

            解題思路:

            本題是根據公式計算多項式的值。注意變量的取值范圍。

            參考答案:

            double fun(int n)

            {

            double s=0, t=1;

            int i ;

            for(i=1; i<=n; i++) {

            t *= i;

            s += 1./t;

            }

            return s;

            }

             

            ※※※※※※※※※※※※※※※※※※※※※※※※※

            88套:

            函數fun的功能是:把形參a所指數組中的最大值放在a[0]中,接著求出a

            指數組中的最小值放在a[1]中;再把a所指數組元素中的次大值放在a[2]中,把

            a數組元素中的次小值放在a[3]中;其余以此類推。例如:a所指數組中的數據

            最初排列為:1、4、2、3、9、6、5、8、7,則按規則移動后,數據排列為:

            9、1、8、2、7、3、6、4、5。形參n中存放a所指數組中數據的個數。

            請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

            果。

            注意:源程序存放在考生文件夾下的BLANK1.C中。

            不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            #define N 9

            /**********found**********/

            void fun(int ___1___, int n)

            { int i, j, max, min, px, pn, t;

            /**********found**********/

            for (i=0; i

            { max = min = a[i];

            px = pn = i;

            /**********found**********/

            for (j=___3___; j

            { if (max < a[j])

            { max = a[j]; px = j; }

            if (min > a[j])

            { min = a[j]; pn = j; }

            }

            if (px != i)

            { t = a[i]; a[i] = max; a[px] = t;

            if (pn == i) pn= px;

            }

            if (pn != i+1)

            { t = a[i+1]; a[i+1] = min; a[pn] = t; }

            }

            }

            main()

            { int b[N]={1,4,2,3,9,6,5,8,7}, i;

            printf("\nThe original data :\n");

            for (i=0; i 

             

             

             

            printf("\n");

            fun(b, N);

            printf("\nThe data after moving :\n");

            for (i=0; iprintf("\n");

            }

            解題思路:

            第一處:形參a應定義指針整型變量,所以應填:*a。

            第二處:外for循環每次增量應該加2。

            第三處:內for循環的初始值應為:i+1。

            ***************************************************

            給定程序MODI1.C中函數fun的功能是:按順序給s所指數組中的元素賦予從2

            開始的偶數,然后再按順序對每五個元素求一個平均值,并將這些值依次存放在

            w所指的數組中。若s所指數組中元素的個數不是5的倍數,多余部分忽略不計。

            例如,s所指數組有14個元素,則只對前10個元素進行處理,不對最后的4

            元素求平均值。

            請改正程序中的錯誤,使它能得出正確結果。

            注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構。

            給定源程序:

            #include

            #define SIZE 20

            fun(double *s, double *w)

            { int k,i; double sum;

            for(k=2,i=0;i

            { s[i]=k; k+=2; }

            /**********found**********/

            sun=0.0;

            for(k=0,i=0;i

            { sum+=s[i];

            /**********found**********/

            if(i+1%5==0)

            { w[k]=sum/5; sum=0; k++; }

            }

            return k;

            }

            main( )

            { double a[SIZE],b[SIZE/5];

            int i, k;

            k = fun(a,b);

            printf("The original data:\n");

            for(i=0; i

            { if(i%5==0) printf("\n");

            printf("%4.0f", a[i]);

            }

            printf("\n\nThe result :\n");

            for(i=0; i6.2f ",b[i]);

            printf("\n\n");

             

             

             

             

            }

            解題思路:

            第一處:變量名書寫錯誤,應為sum。

            第二處:由于%的優先級比+優先,所以必須加上括號,因此改為:if((i+1)%5==0)。

            ***************************************************

            學生的記錄由學號和成績組成,N名學生的數據已在主函數中放入結構體數組

            s,請編寫函數fun,它的功能是:把低于平均分的學生數據放在b所指的數組中,

            低于平均分的學生人數通過形參n傳回,平均分通過函數值返回。

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

            請勿改動主函數main和其它函數中的任何內容,僅在函數fun的花括號中填入

            你編寫的若干語句。

            給定源程序:

            #include

            #define N 8

            typedef struct

            { char num[10];

            double s;

            } STREC;

            double fun( STREC *a, STREC *b, int *n )

            {

            }

            main()

            { STREC s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},

            {"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87}};

            STREC h[N],t;FILE *out ;

            int i,j,n; double ave;

            ave=fun( s,h,&n );

            printf("The %d student data which is lower than %7.3f:\n",n,ave);

            for(i=0;i

            printf("%s %4.1f\n",h[i].num,h[i].s);

            printf("\n");

            out = fopen("c:\\test\\out.dat","w") ;

            fprintf(out, "%d\n%7.3f\n", n, ave);

            for(i=0;i

            for(j=i+1;j

            if(h[i].s>h[j].s) {t=h[i] ;h[i]=h[j]; h[j]=t;}

            for(i=0;i

            fprintf(out,"%4.1f\n",h[i].s);

            fclose(out);

            }

            解題思路:

            本題是利用循環計算出記錄結構中學生成績的平均值,再把低于平均值的記錄存放到b所指

            的數組中。具體操作請看答案程序中的說明。

            參考答案:

            #include

            #define N 8

            typedef struct

             

             

             

             

            { char num[10];

            double s;

            } STREC;

            double fun( STREC *a, STREC *b, int *n )

            {

            int i ;

            double ave = 0.0 ;

            *n = 0 ;

            for(i = 0 ; i < N ; i++) ave = ave + a[i].s ;

            ave /= N ; /* 計算平均值 */

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

            if(a[i].s < ave) { /* 把低于平均值的記錄存放到b所指的數組中 */

            b[*n]=a[i] ;

            (*n)++; /* 人數加1 */

            }

            return ave ; /* 返回平均值 */

            }

             

            ※※※※※※※※※※※※※※※※※※※※※※※※※

            89套:

            給定程序中,函數fun的功能是:求出形參ss所指字符串數組中最長字符串的

            長度,其余字符串左邊用字符*補齊,使其與最長的字符串等長。字符串數組中共

            M個字符串,且串長。

            請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

            果。

            注意:源程序存放在考生文件夾下的BLANK1.C中。

            不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

             

             

             

             

            #include

            #define M 5

            #define N 20

            void fun(char (*ss)[N])

            { int i, j, k=0, n, m, len;

            for(i=0; i

            { len=strlen(ss[i]);

            if(i==0) n=len;

            if(len>n) {

            /**********found**********/

            n=len; ___1___=i;

            }

            }

            for(i=0; i

            if (i!=k)

            { m=n;

            len=strlen(ss[i]);

            /**********found**********/

            for(j=___2___; j>=0; j--)

            ss[i][m--]=ss[i][j];

            for(j=0; j

            /**********found**********/

            ___3___='*';

            }

            }

            main()

            { char ss[M][N]={"shanghai","guangzhou","beijing","tianjing","cchongqing"};

            int i;

            printf("\nThe original strings are :\n");

            for(i=0; i

            printf("\n");

            fun(ss);

            printf("\nThe result:\n");

            for(i=0; i

            }

            解題思路:

            第一處:使用變量k來保存第幾個字符串是最長的字符串,所以應填:k。

            第二處:利用for循環把原字符串右移至最右邊存放,字符串的長為len,所以應填:len。

            第三處:左邊用字符*補齊,所以應填:ss[i][j]。

            ***************************************************

            給定程序MODI1.C中函數fun的功能是: 計算整數n的階乘。請改正程序中的錯

            誤或在下劃線處填上適當的內容并把下劃線刪除,使它能計算出正確的結果。

            注意: 不要改動 main 函數, 不得增行或刪行, 也不得更改程序的結構!

            給定源程序:

            #include

            double fun(int n)

            {

             

             

             

             

            double result=1.0;

            while (n>1 && n<170)

            /*********found*********/

            result*=--n;

            /*********found*********/

            return _____;

            }

            main()

            {

            int n;

            printf("Enter an integer: ");

            scanf("%d",&n);

            printf("\n\n%d!=%lg\n\n",n,fun(n));

            }

            解題思路:

            第一處:--n是先減1,n--是后減1。本題應該先乘以n,再減1,才正確。

            第二處:返回計算結果,所以應填:result。

            ***************************************************

            編寫函數fun,函數的功能是: s所指的字符串中刪除給定的字符。同一字

            母的大、小寫按不同字符處理。

            若程序執行時輸入字符串為: turbo c and borland c++

            從鍵盤上輸入字符:n, 則輸出后變為: turbo c ad borlad c++

            如果輸入的字符在字符串中不存在, 則字符串照原樣輸出。

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

            請勿改動主函數main和其它函數中的任何內容, 僅在函數fun的花括號中填入

            你編寫的若干語句。

            給定源程序:

            #include

            #include

            int fun(char s[],char c)

            {

            }

            main()

            {

            static char str[]="turbo c and borland c++";

            char ch;

            printf("原始字符串:%s\n", str);

            printf("輸入一個字符:");

            scanf("%c",&ch);

            fun(str,ch);

            printf("str[]=%s\n",str);

            NONO();

            }

             

            解題思路:

            本題是考察考生怎樣在字符串中刪除指定的字符,結果仍存放在原字符串中。給出的程序

            是引用字符串指針pwhile循環語句以及if條件判斷語句進行處理的,新字符串的位置是由i

            來控制的,循環結束后,再給新字符串置字符串結束符,最后產生的新字符串形參s返回到主程

            序中。

            參考答案:

            int fun(char s[],char c)

            {

            char *p = s ;

            int i = 0 ;

            while(*p) {

            if(*p != c) s[i++] = *p ;

            p++ ;

            }

            s[i] = 0 ;

            }

             

            ※※※※※※※※※※※※※※※※※※※※※※※※※

            90套:

            函數fun的功能是:統計所有小于等于n(n>2)的素數的個數,素數的個數作

            為函數值返回。

            請在程序的下劃線處填入正確的內容并把下劃線刪除,使程序得出正確的結

            果。

            注意:源程序存放在考生文件夾下的BLANK1.C中。

            不得增行或刪行,也不得更改程序的結構!

            給定源程序:

            #include

            int fun(int n)

            { int i,j, count=0;

            printf("\nThe prime number between 3 to %d\n", n);

            for (i=3; i<=n; i++) {

            /**********found**********/

            for (___1___; j

            /**********found**********/

            if (___2___%j == 0)

            break;

            /**********found**********/

            if (___3___>=i)

            { count++; printf( count? "]":"\n]",i); }

            }

            return count;

            }

            main()

            { int n=20, r;

            r = fun(n);

            printf("\nThe number of prime is : %d\n", r);

            }

            解題思路:

            第一處:素數的條件是除1和其本身外不能整除該數,所以應填:2。

            第二處:判斷i是否素數,所以應填:i。

            第三處:如果內循環for中所有數都不能整除i,那么i是素數且j大于等于i,所以應填:j。

            ***************************************************

            數列中,第一項值為3, 后一項都比前一項的值增5;給定程序MODI1.C中函數

            fun的功能是: 計算前n(4項的累加和;每累加一次把被4除后余2的當前累

            加值放入數組中, 符合此條件的累加值的個數作為函數值返回主函數。

            例如, n的值為20,該數列為3,8,13,18,23,28,……,93,98。符合此條件

            的累加值應為42,126,366,570,1010。

            請改正函數fun中指定部位的錯誤, 使它能得出正確的結果。

            注意: 不要改動main函數, 不得增行或刪行, 也不得更改程序的結構!

            給定源程序:

            #include

            #define N 20

            int fun(int n,int *a)

            { int i,j,k,sum;

            /**************found**************/

            sum=j==0;

            for(k=3,i=0;i

            { sum=sum+k;

            /**************found**************/

            if(sum%4=2)

            a[j++]=sum;

            }

            return j;

            }

            main()

            { int a[N],d,n,i;

            printf("\nEnter n (4

            d=fun(n,a);

            printf("\n\nThe result :\n");

            for(i=0; i

            }

            解題思路:

            第一處:連續賦初值為0,中間使用條件相等符號了,所以應改為:sum=j=0;。

            第二處:條件相等符號為==。

            ***************************************************

            請編寫函數fun, 其功能是: 計算并輸出下列多項式的值:

            例如, 在主函數中從鍵盤給n輸入8, 輸出為: s=0.662872。

            注意: 要求n的值大于1但不大于100。

            部分源程序在文件PROG1.C中。

            請勿改動主函數main和其他函數中的任何內容, 僅在函數fun的花括號中填入

            你編寫的若干語句。

            給定源程序:

            #include

            double fun(int n)

            {

            }

            main()

            { int n; double s;

            printf("\nInput n: "); scanf("%d",&n);

            s=fun(n);

            printf("\ns=%f\n",s);

            NONO();

            }

             

            解題思路:

            本題是根據公式計算多項式的值。

            參考答案:

            double fun(int n)

            {

            int i;

            double sum=0.0;

            if (n>1 && n<=100) {

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

            sum+=1.0/(2*i-1)-1.0/(2*i);

            }

            return sum;

            }

            国产在线精品一区二区三区不卡_亚洲第一极品精品无码_永久免费无码网站在线观看_亚洲av综合日韩