精品午夜福利中文字av_国产成人综合网_av毛片免费观看网站_欧美影视国产综合_野花香视频中文免费观看_亚洲无码要在线视频_又粗又大又用力大交换好大好爽小静_欧美贵妇v办公室高跟鞋_亚洲国产高清a∨网站_免费中文少妇亚洲

知ing

二級C語言程序設(shè)計試題50套

NCRE研究組 編 / 高等教育出版社

Pluto. 上傳

查看本書

20套:?

給定程序中,函數(shù)fun的功能是:計算形參x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),將所指數(shù)組中小于平均值的數(shù)據(jù)移至數(shù)組的前部,大于等于平均值的數(shù)據(jù)移至x所指數(shù)組的后部,平均值作為函數(shù)值返回,在主函數(shù)中輸出平均值和移動后的數(shù)據(jù)。?

例如,有10個正數(shù):46?30?32?40?6?17?45?15?48?26,平均值為:?30.500000?

移動后的輸出為:30?6?17?15?26?46?32?40?45?48?

請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。?

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

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!?

給定源程序:?

#include?<stdlib.h>?

#include?<stdio.h>?

#define?N?10?

double?fun(double?*x)?

{?int?i,?j;?double?av,?y[N];?

av=0;?

/**********found**********/?

for(i=0;?i<N;?i++)?av?+=__1__;?

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

if(?x[i]<av?){?

/**********found**********/?

y[j]=x[i];?x[i]=-1;?__2__;}?

i=0;?

while(i<N)?

{?if(?x[i]!=?-1?)?y[j++]=x[i];?

/**********found**********/?

__3__;?

}?

for(i=0;?i<N;?i++)x[i]?=?y[i];?

return?av;?

}?

main()?

{?int?i;?double?x[N];?

for(i=0;?i<N;?i++){?x[i]=rand()%50;?printf("%4.0f?",x[i]);}?

printf("\n");?

printf("\nThe?average?is:?%f\n",fun(x));?

printf("\nThe?result?:\n",fun(x));?

for(i=0;?i<N;?i++)?printf("%5.0f?",x[i]);?

printf("\n");?

}?

解題思路:?

第一處:求出N個數(shù)的平均值,所以應(yīng)填:N。?

第二處:利用for循環(huán)語句,把數(shù)組x中小于平均值的數(shù),依次存放到數(shù)組y中,其中位置由變量j來控制,所以應(yīng)填:j++。?

第三處:iwhile循環(huán)體的控制變量,每做一次循環(huán)均要加1。?

***************************************************?

給定程序MODI1.C中函數(shù)?fun?的功能是:統(tǒng)計字符串中各元音字母(即:AE、I、O、U)的個數(shù)。注意:字母不分大、小寫。?

例如:若輸入:THIs?is?a?boot,則輸出應(yīng)該是:1、0、2、2、0。請改正程序中的錯誤,使它能得出正確的結(jié)果。?

注意:不要改動?main?函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!?

給定源程序:?

#include?<stdio.h>?

fun?(?char?*s,?int?num[5]?)?

{?int?k,?i=5;?

for?(?k?=?0;?k<i;?k++?)?

/**********found**********/?

num[i]=0;?

for?(;?*s;?s++)?

{?i?=?-1;?

/**********found**********/?

switch?(?s?)?

{?case?'a':?case?'A':?{i=0;?break;}?

case?'e':?case?'E':?{i=1;?break;}?

case?'i':?case?'I':?{i=2;?break;}?

case?'o':?case?'O':?{i=3;?break;}?

case?'u':?case?'U':?{i=4;?break;}?

}?

if?(i?>=?0)?

num[i]++;?

}?

}?

main(?)?

{?char?s1[81];?int?num1[5],?i;?

printf(?"\nPlease?enter?a?string:?"?);?gets(?s1?);?

fun?(?s1,?num1?);?

for?(?i=0;?i?<?5;?i++?)?printf?("%d?",num1[i]);?printf?("\n");?

}?

解題思路:?

第一處:num初始化錯誤,應(yīng)為:num[k]=0;。?

第二處:由于s是指針型變量,所以應(yīng)改為:switch(*s)。?

***************************************************?

請編寫函數(shù)?fun,函數(shù)的功能是求出二維數(shù)組周邊元素之和,作為函數(shù)值返回。二維數(shù)組中的值在主函數(shù)中賦予。?

例如:二維數(shù)組中的值為1?3?5?7?9?

2?9?9?9?4?

6?9?9?9?8?

1?3?5?7?0?

則函數(shù)值為?61。?

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

請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。?

給定源程序:?

#include?<stdio.h>?

#define?M?4?

#define?N?5?

int?fun?(?int?a[M][N]?)?

{?

}?

main(?)?

{?int?aa[M][N]={{1,3,5,7,9},?

{2,9,9,9,4},?

{6,9,9,9,8},?

{1,3,5,7,0}};?

int?i,?j,?y;?

clrscr();?

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

for?(?i=0;?i<M;?i++?)?

{?for?(?j?=0;?j<N;?j++?)?printf(?"%6d",?aa[i][j]?);?

printf?("\n");?

}?

y?=?fun?(?aa?);?

printf(?"\nThe?sum:?%d\n"?,?y?);?

printf("\n");?

NONO(?);?

}?

解題思路:?

本題是統(tǒng)計二維數(shù)組周邊元素值之和,但要注意的是不要重復(fù)計算四個角上的元素值,結(jié)果作為函數(shù)值返回。?

參考答案:?

int?fun?(?int?a[M][N]?)?

{?

int?tot?=?0,?i,?j?;?

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

tot?+=?a[0][i]?;?

tot?+=?a[M-1][i]?;?

}?

for(i?=?1?;?i?<?M?-?1?;?i++)?{?

tot?+=?a[i][0]?;?

tot?+=?a[i][N-1]?;?

}?

return?tot?;?

}?

?

※※※※※※※※※※※※※※※※※※※※※※※※※?




21套:?

給定程序中,函數(shù)fun的功能是:計算形參x所指數(shù)組中N個數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),將所指數(shù)組中大于平均值的數(shù)據(jù)移至數(shù)組的前部,小于等于平均值的數(shù)據(jù)移至x所指數(shù)組的后部,平均值作為函數(shù)值返回,在主函數(shù)中輸出平均值和移動后的數(shù)據(jù)。?

例如,有10個正數(shù):46?30?32?40?6?17?45?15?48?26,平均值為:?30.500000?

移動后的輸出為:46?32?40?45?48?30?6?17?15?26?

請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,?使程序得出正確的結(jié)果。?

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

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!?

給定源程序:?

#include?<stdlib.h>?

#include?<stdio.h>?

#define?N?10?

double?fun(double?*x)?

{?int?i,?j;?double?s,?av,?y[N];?

s=0;?

for(i=0;?i<N;?i++)?s=s+x[i];?

/**********found**********/?

av=__1__;?

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

if(?x[i]>av?){?

/**********found**********/?

y[__2__]=x[i];?x[i]=-1;}?

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

/**********found**********/?

if(?x[i]!=?__3__)?y[j++]=x[i];?

for(i=0;?i<N;?i++)x[i]?=?y[i];?

return?av;?

}?

main()?

{?int?i;?double?x[N];?

for(i=0;?i<N;?i++){?x[i]=rand()%50;?printf("%4.0f?",x[i]);}?

printf("\n");?

printf("\nThe?average?is:?%f\n",fun(x));?

printf("\nThe?result?:\n",fun(x));?

for(i=0;?i<N;?i++)?printf("%5.0f?",x[i]);?

printf("\n");?

}?

解題思路:?

第一處:計算N個數(shù)的平均值,所以應(yīng)填:s/N。?

第二處:利用for循環(huán)語句,把數(shù)組x中大于平均值的數(shù),依次存放到數(shù)組y中,同時把數(shù)組x上的該數(shù)置為-1,其中位置由變量j來控制,所以應(yīng)填:j++。

第三處:再利用循環(huán)把不是-1的數(shù),依次仍存放到數(shù)組y中,所以應(yīng)填:-1。?

***************************************************?

給定程序MODI1.C的功能是:讀入一個英文文本行,將其中每個單詞的第一個字母改成大寫,然后輸出此文本行(這里的“單詞”是指由空格隔開的字符串)。?

例如,若輸入:I?am?a?student?to?take?the?examination.,?

則應(yīng)輸出:I?Am?A?Student?To?Take?The?Examination.。?

請改正程序中的錯誤,使程序能得出正確的結(jié)果。?

注意:不要改動?main?函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!?

給定源程序:?

#include?<ctype.h>?

#include?<string.h>?

/************found************/?

include?<stdio.h>?

/************found************/?

upfst?(?char?p?)?

{?int?k=0;?

for?(?;?*p;?p++?)?

if?(?k?)?

{?if?(?*p?==?'?'?)?k?=?0;?}?

else?if?(?*p?!=?'?'?)?

{?k?=?1;?*p?=?toupper(?*p?);?}?

}?

main(?)?

{?char?chrstr[81];?

printf(?"\nPlease?enter?an?English?text?line:?"?);?gets(?chrstr?);?

printf(?"\n\nBefore?changing:\n?%s",?chrstr?);?

upfst(?chrstr?);?

printf(?"\nAfter?changing:\n?%s\n",?chrstr?);?

}?

解題思路:?

第一處:包含頭文件的標識錯誤,在include前漏寫了#。?

第二處:由于傳入的參數(shù)是字符串,所以應(yīng)為upfst(char?*p)。?

***************************************************?

程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請編寫函數(shù)fun,函數(shù)的功能是:求出數(shù)組周邊元素的平均值并作為函數(shù)值返給主函數(shù)中的s。?

例如:a?數(shù)組中的值為|0?1?2?7?9|?

|1?9?7?4?5|?

a?=?|2?3?8?3?1|?

|4?5?6?8?2|?

|5?9?1?4?1|?

則返回主程序后s的值應(yīng)為:?3.375。?

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

請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。?

給定源程序:?

#include?<stdio.h>?

?

#include?<stdlib.h>?

#define?N?5?

double?fun?(?int?w[][N]?)?

{?

}?

main?(?)?

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

int?i,?j;?

double?s?;?

printf("*****?The?array?*****\n");?

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

{?for?(?j?=0;?j<N;?j++?)?

{?printf(?"%4d",?a[i][j]?);?}?

printf("\n");?

}?

s?=?fun?(?a?);?

printf?("*****?THE?RESULT?*****\n");?

printf(?"The?sum?is?:?%lf\n",s?);?

NONO(?);?

}?

解題思路:?

本題是統(tǒng)計二維數(shù)組周邊元素值的平均值,但要注意的是不要重復(fù)計算四個角上的元素值。?

參考答案:?

double?fun?(?int?w[][N]?)?

{?

int?i,?j,?n=0;?

double?sum=0;?

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

sum+=w[0][i]+w[N-1][i];?n+=2;?

}?

for?(?i?=1;?i<N?-?1;?i++?)?{?

?

sum?+=w[i][0]+w[i][N-1];?

n+=2;?

}?

return?sum/n;?

}?

※※※※※※※※※※※※※※※※※※※※※※※※※?



22套:?

給定程序中,函數(shù)fun的功能是:將自然數(shù)110以及它們的平方根寫到名為?myfile3.txt的文本文件中,然后再順序讀出顯示在屏幕上。?

請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。?

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

不得增行或刪行,也不得更改程序的結(jié)構(gòu)!?

給定源程序:?

#include?<math.h>?

#include?<stdio.h>?

int?fun(char?*fname?)?

{?FILE?*fp;?int?i,n;?float?x;?

if((fp=fopen(fname,?"w"))==NULL)?return?0;?

?

for(i=1;i<=10;i++)?

/**********found**********/?

fprintf(___1___,"%d?%f\n",i,sqrt((double)i));?

printf("\nSucceed!\n");?

/**********found**********/?

___2___;?

printf("\nThe?data?in?file?:\n");?

/**********found**********/?

if((fp=fopen(___3___,"r"))==NULL)?

return?0;?

fscanf(fp,"%d%f",&n,&x);?

while(!feof(fp))?

{?printf("%d?%f\n",n,x);?fscanf(fp,"%d%f",&n,&x);?}?

fclose(fp);?

return?1;?

}?

main()?

{?char?fname[]="myfile3.txt";?

fun(fname);?

}?

解題思路:?

本題要求所求出的數(shù)寫入到指定的文件中保存。程序中共有三處要填上適當?shù)膬?nèi)容,使程序能運行出正確的結(jié)果。?

第一處:int?fprintf(FILE?*stream,?const?char?*format?[,argument,?]);?因此本處只能填寫文件流的變量fp。?

第二處:由于文件打開寫操作,所以必須要關(guān)閉,因此,只能填寫關(guān)閉文件的函數(shù)fclose(fp)。?

第三處:由于本題要把剛寫入文件中的數(shù)據(jù)重新顯示出來,讀方式已經(jīng)給出,但沒有給出文件名,所以本處只能寫文件名變量fname或者直接給出文件名"myfile3.dat"。?

***************************************************?

給定程序MODI1.Cfun函數(shù)的功能是:將n個無序整數(shù)從小到大排序。?

請改正程序中的錯誤,使它能得出正確的結(jié)果。?

注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!?

給定源程序:?

#include?<stdio.h>?

#include?<stdlib.h>?

fun?(?int?n,?int?*a?)?

{?int?i,?j,?p,?t;?

for?(?j?=?0;?j<n-1?;?j++?)?

{?p?=?j;?

/************found************/?

for?(?i=j+1;?i<n-1?;?i++?)?

if?(?a[p]>a[i]?)?

/************found************/?

t=i;?

if?(?p!=j?)?

{?t?=?a[j];?a[j]?=?a[p];?a[p]?=?t;?}?

?

}?

}?

putarr(?int?n,?int?*z?)?

{?int?i;?

for?(?i?=?1;?i?<=?n;?i++,?z++?)?

{?printf(?"%4d",?*z?);?

if?(?!(?i%10?)?)?printf(?"\n"?);?

}?printf("\n");?

}?

main()?

{?int?aa[20]={9,3,0,4,1,2,5,6,8,10,7},?n=11;?

printf(?"\n\nBefore?sorting?%d?numbers:\n",?n?);?putarr(?n,?aa?);?

fun(?n,?aa?);?

printf(?"\nAfter?sorting?%d?numbers:\n",?n?);?putarr(?n,?aa?);?

}?

解題思路:?

第一處:for循環(huán)的終止值應(yīng)該<n或者是<=n-1。?

第二處:使用臨時變量p來保存最小值位置i,所以應(yīng)改為:p=i;。?

***************************************************?

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

合并的方式是:?a數(shù)的十位和個位數(shù)依次放在c數(shù)的個位和百位上,?b數(shù)的十位和個位數(shù)依次放在c數(shù)的十位和千位上。?

例如,?a=45,?b=12,?調(diào)用該函數(shù)后,?c=2514。?

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

請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。?

給定源程序:?

#include?<stdio.h>?

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();?

}?

解題思路:?

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

a十位數(shù)字的方法:a/10?

a個位數(shù)字的方法:a%10?

參考答案:?

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

{?

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

}?

※※※※※※※※※※※※※※※※※※※※※※※※※?



查看更多