国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言練習(xí)題(十)

2021-02-13 09:28 作者:朝顏晚扶桑  | 我要投稿

1.程序填空題

請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把數(shù)組aa中元素下標(biāo)為奇數(shù)的元素按從大到小的順序重新保存在原數(shù)組中,其他元素位置不變。

例如,輸入“33、67、42、58、25、76、85、16、41、56”,則輸出“33、76、42、67、25、58、85、56、41、16”。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdio.h>‘’

#include <windows.h>

#define N 10

void fun(int aa[])

{

int I,j,t;

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

for(___1___; i<N; i=i+2)

{

for(j=I;j<N;j=j+2)

if(aa[i]<aa[j])

{

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

___2___;

aa[j]=aa[i];

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

___3___;

}

}

}

main()

{

int I;

int aa[N]={33,67,42,58,25,76,85,

16,41,56};

system("cls");

printf("\n***original list***\n");

for(i=0;i<N;i++) printf("%4d",aa[i]);

fun(aa);

printf("\n***new list***\n");

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

printf("%4d",aa[i]);

}

【答案】

(1)i=1 (2)t=aa[j] (3)aa[i]=t?

2.程序修改題

在給定程序中建立一個(gè)帶頭結(jié)點(diǎn)的單向鏈表,并用隨機(jī)函數(shù)為各結(jié)點(diǎn)數(shù)據(jù)域賦值。函數(shù)fun()的作用是求出單向鏈表結(jié)點(diǎn)(不包括頭結(jié)點(diǎn))數(shù)據(jù)域中的最大值,并且作為函數(shù)值返回。

請(qǐng)改正程序中的錯(cuò)誤,使其能得出正確的結(jié)果。

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

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#include <stdlib.h>

typedef struct aa

{ int data;

struct aa*next;

}NODE;

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

fun(NODE *h)

{

int max=-1;

NODE *p;

p=h->next;

while(p)

{

if(p->data>max)

max=p->data;

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

p=h->next;

}

return max;

}

outresult(int s,FILE *pf)

{ fprintf(pf,"The max in link :%d\n ",s); }

NODE *creatlink(int n, int m)

{

NODE *h,*p,*s,*q;

int I,x;

h=p=(NODE *)malloc(sizeof(NODE));

h->data=9999;

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

{

s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%m;

s->next=p->next;

p->next=s; p=p->next;

}

p->next=NULL;

return h;

}

outlink(NODE *h,FILE *pf)

{

NODE *p;

p=h->next;

fprintf(pf,"\n The LIST :\n HEAD");

while(p)

{

fprintf(pf,"->%d",p->data);

p=p->next;

}

fprintf(pf,"\n");

}

main()

{

NODE *head; int m;

system("cls");

head=creatlink(12,100);

outlink(head,stdout);

m=fun(head);

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

outresult(m,stdout);

}

【答案】

(1)將 fun(NODE *h) 改為:int fun(NODE *h)

(2)將 p=h->next; 改為:p=p->next

3.程序設(shè)計(jì)題

請(qǐng)編寫(xiě)函數(shù)fun(),它的功能是計(jì)算s=(ln(1)+ln(2)+ ln(3)+…+ln(m))0.5的值。在C語(yǔ)言中可調(diào)用log(n)函數(shù)求ln(n)。

例如,若m的值為20,則fun()函數(shù)值為6.506583。

注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。

#include <conio.h>

#include <stdio.h>

#include <math.h>

#include <windows.h>

double fun(int m)

{

?

}

main()

{

system("cls");

printf("%f\n",fun(20));

}

【答案】

double fun(int m)

{

int i;

double s=0.0;

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

s=s+log((double)i);

return sqrt(s);

}

1.程序填空題

請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:求100(不包括100)以內(nèi)能被2或5整除,但不能同時(shí)被2和5整除的自然數(shù)。結(jié)果保存在數(shù)組bb中,函數(shù)fun()返回?cái)?shù)組bb元素的個(gè)數(shù)。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdio.h>

#include <windows.h>

#define N 100

int fun(int bb[])

{

int I,j;

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

for(___1___;i<100;i++)

if((i%2!=0&&i%5==0)||(i%2==0&&i%5!=0))

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

___2___;

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

___3___;

}

main()

{

int I,n;

int bb[N];

system("cls");

n=fun(bb);

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

{

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

printf("%4d",bb[i]);

}

}

【答案】

(1)i=1,j=0 (2)bb[j++]=i (3)return j?

2.程序修改題

下列給定程序中,函數(shù)fun()的作用是:將字符串tt中的小寫(xiě)字母都改為對(duì)應(yīng)的大寫(xiě)字母,其他字符不變。例如,若輸入“edS,dAd”,則輸出“EDS,DAD”。

請(qǐng)改正程序中的錯(cuò)誤,使其能得到正確結(jié)果。

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

#include <stdio.h>

#include <string.h>

#include <conio.h>

#include <windows.h>

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

char fun(char tt[])

{

int I;

for(i=0;tt[i];i++)

{

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

if((tt[i]>='A')&&(tt[i]<= 'Z'))

tt[i]-=32;

}

return(tt);

}

main()

{

int I;

char tt[81];

system("cls");

printf("Please enter a string: ");

gets(tt);

printf("The result string is: \n%s",

fun(tt));

}

【答案】

(1)將char fun(char tt[]) 改為:

char*fun(char tt[])

(2)將 if((tt[i]>='A')&&(tt[i]<= 'Z')) 改為:if((tt[i]>='a')&&(tt[i]<= 'z'))?

3.程序設(shè)計(jì)題

請(qǐng)編寫(xiě)函數(shù)fun(),其功能是,計(jì)算并輸出下列多項(xiàng)式值:

S=(1-1/2)+(1/3-1/4)+…+(1/(2n-1)-1/2n)

例如,若主函數(shù)從鍵盤(pán)給n輸入8后,則輸出為S=0.662872。

注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。

#include <stdio.h>

double fun(int n)

{

?

}

main()

{

int n;

double s;

printf("Input n: ");

scanf("%d",&n);

s=fun(n);

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

}

【答案】

double fun(int n)

{

int i;

double s=0.0;

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

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

return s;

}

1.程序填空題

請(qǐng)補(bǔ)充fun函數(shù),該函數(shù)的功能是求一維數(shù)組a[N]的平均值,并對(duì)所得結(jié)果進(jìn)行四舍五入保留兩位小數(shù)。例如,當(dāng)a[10]={ 22.1,13.3,5.3,56.4,11.0,12.7,24.5,42,1.2,9.9}時(shí),輸出結(jié)果為:average=19.840000。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdio.h>

#include <conio.h>

double fun(double a[10])

{

int I;

long temp;

double average=0.0;

double sum=0.0;

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

___1___;

average=sum/10;

average=___2___;

temp=___3___;

average=(double)temp/100;

return average;

}

main()

{

double average,a[10]={22.1,13.3,5.3, 56.4,11.0,12.7,24.5,42,1.2,9.9};

int I;

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

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

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

printf("\n\n");

average=fun(a);

printf("The average=%f\n\n",average);

}

【答案】

(1)sum+=a[i]

(2)average*1000

(3)(average+5)/10

2.程序修改題

下列給定程序中,函數(shù)fun()的功能是,根據(jù)以下公式求π的值,并作為函數(shù)值返回。

π/2=1+1/3+1/3*2/5+1/3*2/5*3/7+1/3*2/5*3/7*4/9?????

例如,給指定精度的變量eps輸入0.0005時(shí),應(yīng)當(dāng)輸出Pi=3.140578。

請(qǐng)改正程序中的錯(cuò)誤,使其能得出正確的結(jié)果。

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

#include <conio.h>

#include <stdio.h>

#include <math.h>

double fun(double eps)

{

double s,t; int n=1;

s=0.0;

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

t=1;

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

while(t>eps)

{

s+=t;

t=t*n/(2*n+1);

n++;

}

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

return(s);

}

main()

{

double x;

printf("Please enter a precision: ");

scanf("%lf",&x);

printf("Pi=%1f\n",fun(x));

}

【答案】

(1)將 t=1; 改為:t=1.0;

(2)將 while(t>eps) 改為:while(t>=eps)

(3)將 return(s); 改為:return(2*s);或return(s*2);

3.程序設(shè)計(jì)題

請(qǐng)編寫(xiě)函數(shù)fun(),其功能是:計(jì)算并輸出給定10個(gè)數(shù)的方差。

例如,給定的10個(gè)數(shù)為95.0、89.0、76.0、65.0、88.0、72.0、85.0、81.0、90.0、56.0,則輸出為S=11.730729。

注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。

#include <math.h>

#include <stdio.h>

double fun(double x[10])

{

?

}

main()

{

double s,x[10]={95.0,89.0,76.0,65.0,

88.0,72.0,85.0,81.0,90.0,56.0};

int I;

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

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

printf("%6.1f ",x[i]);

printf("\n\n ");

s=fun(x);

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

}

【答案】

double fun(double x[10])

{

double x1=0.0,s=0.0;

int i;

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

x1=x1+x[i];

x1=x1/10;

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

s=s+(x[i]-x1)*(x[i]-x1);

return sqrt(s/10);

}

1.程序填空題

請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:交換數(shù)組aa中最大和最小兩個(gè)元素的位置,結(jié)果依然保存在原數(shù)組中,其他元素位置不變。注意數(shù)組aa中沒(méi)有相同元素。

例如,輸入“33、67、42、58、25、76、85、16、41、56”,則輸出“33、67、42、58、25、76、16、85、41、56”。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdio.h>

#include <windows.h>

#define N 10

void fun(int aa[])

{

int I,j,t;

int max=0,min=0;

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

{

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

if(___1___)

max=I;

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

if(___2___)

min=I;

}

t=aa[max];

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

___3___;

aa[min]=t;

}

main()

{

int I;

int aa[N]={33,67,42,58,25,76,85,16,41,56};

system("cls");

printf("\n***original list***\n");

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

printf("%4d",aa[i]);

fun(aa);

printf("\n***new list***\n");

for(i=0;i<N;i++) printf("%4d",aa[i]);

}

【答案】

(1)aa[max]<aa[i]

(2)aa[min]>aa[i]

(3)aa[max]=aa[min]?

2.程序修改題

在給定程序中,函數(shù)fun()的功能是:求出兩個(gè)數(shù)的最大公約數(shù),并作為函數(shù)值返回。

例如,若給num1和num2輸入49和21,則輸出的最大公約數(shù)為7;若給num1和num2分別輸入27和81,則輸出最大公約數(shù)為27。

請(qǐng)改正函數(shù)fun()中的錯(cuò)誤,使其能得出正確的結(jié)果。

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

#include <stdio.h>

int fun(int a, int b)

{

int r,t;

if(a<b)

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

{ t=a; b=a; a=t; }

r=a%b;

while(r!=0)

{ a=b; b=r; r=a%b; }

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

return(a);

}

main()

{

int num1,num2,a;

printf("Input num1 num2: ");

scanf("%d%d",&num1,&num2);

printf("num1=%d num2=%d\n\n",

num1,num2);

a=fun(num1,num2);

printf("The maximun common divisor is

%d\n",a);

}

【答案】

(1)將 { t=a;b=a;a=t;} 改為:

{ t=a;a=b;b=t;}

(2)將 return(a); 改為:return (b);

3.程序設(shè)計(jì)題

請(qǐng)編寫(xiě)函數(shù)fun。它的功能是求出費(fèi)波那其數(shù)列的第n項(xiàng)的值。

費(fèi)波那其數(shù)列,1,1,2,3,5,8,13……

題目:

#include<stdio.h>

int fun(int n)

{

?

}

void main()

{

int I;

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

printf("%d ",fun(i));

printf("\n");

}

【答案】

int fun(int n)

{

if(n==1||n==2)

return 1;

else return fun(n-1)+fun(n-2);

}

1.程序填空題

請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把字符下標(biāo)為非素?cái)?shù)的字符從字符串str中刪除,把字符下標(biāo)為素?cái)?shù)的字符重新保存在字符串str中。字符串str從鍵盤(pán)輸入,其長(zhǎng)度作為參數(shù)傳入函數(shù)fun()。

例如,輸入“abcdefghijkl”,輸出“cdfhl”。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdio.h>

#include <windows.h>

#define N 80

void fun(char s[],int n)

{

int I, j, k, flag;

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

___1___;

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

{

if(i>1)

s[k++]=s[i];

flag=1;

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

for(___2___;j<i&&flag;j++)

if(i%j==0)

{

flag=0;

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

___3___;

}

}

s[k]='\0';

}

main()

{

int i=0,strlen=0;

char str[N];

system("cls");

printf("Input a string:\n");

gets(str);

while(str[i]!='\0')

{ strlen++; i++; }

fun(str, strlen);

printf("\n*** display string ***\n");

puts(str);

}

【答案】

(1)k=0 (2)j=2 (3)k—

2.程序修改題

下列給定程序中,函數(shù)fun的功能是:計(jì)算n的5次方的值(規(guī)定2<n<8),通過(guò)形參指針傳回主函數(shù),并計(jì)算該值的個(gè)位、十位、百位上數(shù)字之和作為函數(shù)值返回。

請(qǐng)改正程序中的錯(cuò)誤,使其能得到正確的結(jié)果。

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

#include <stdio.h>

#include <math.h>

int fun(int n,int *q)

{

int b,c,I;

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

b=0;

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

c=1;

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

b=b*n;

*q=b;

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

{

c=c+b%10;

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

c=c/10;

}

return c;

}

main()

{

int n,sum,a;

do

{

printf("\nEnter n(2<n<8):");

scanf("%d",&n);

}while(n<=2 || n>=8);

sum=fun(n,&a);

printf("\n\nThe result:\n value=%d sum=%d\n\n",a,sum);

}

【答案】

(1)將b=0;改為:b=1; (2)將c=1;改為:c=0; (3)將c=c/10;改為:b=b/10;?

3.程序設(shè)計(jì)題

請(qǐng)編寫(xiě)一個(gè)函數(shù)fun(),它的功能是:找出一維數(shù)組元素中最大的值和它所在的下標(biāo),最大值和它所在的下標(biāo)通過(guò)形參傳回。數(shù)組元素中的值已在主函數(shù)中賦予。

主函數(shù)中x是數(shù)組名,n是x中的數(shù)據(jù)個(gè)數(shù),max存放最大值,index存放最大值所在元素的下標(biāo)。

注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。

#include <stdlib.h>

#include <stdio.h>

void fun(int a[],int n,int *max,int *d)

{

?

}

main()

{

int I,x[20],max,index,n=10;

randomize();

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

{

x[i]=rand()%50;

printf("%4d",x[i]); /*輸出一個(gè)隨機(jī)數(shù)組*/

}

printf("\n");

fun(x,n,&max,&index);

printf("Max=%5d,Index=%4d\n",

max,index);

}

【答案】

void fun(int a[],int n,int *max,int *d)

{

int i;

*max=a[0];

*d=0;

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

if(*max<a[i])

{ *max=a[i];*d=i; }

}

1.程序填空題

請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:從鍵盤(pán)輸入一個(gè)下標(biāo)n,把數(shù)組aa中比元素aa[n]小的元素放在它的左邊,比它大的元素放在它的右邊,排列成的新數(shù)組仍然保存在原數(shù)組中。

例如,數(shù)組aa={33,67,42,58,25,76,85,16,41,56},輸入3。

結(jié)果輸出“33,42,25,16,41,56,58,67,76,85”。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdio.h>

#include <windows.h>

#define N 10

void fun(int aa[],int n)

{

int I,j=0,k=0,t;

int bb[N];

t=aa[n];

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

{

if(aa[i]>t) bb[j++]=aa[i];

if(aa[i]<t) aa[k++]=aa[i];

}

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

___1___;

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

for(i=0;___2___;i++,k++)

aa[k]=bb[i];

}

main()

{

int I,n;

int aa[N]={33,67,42,58,25,76,85,16,41,56};

system("cls");

printf("\n*** original list ***\n");

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

printf("%4d",aa[i]);

printf("\n suffix n\n");

scanf("%d",&n);

fun(aa,n);

printf("\n*** new list ***\n");

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

printf("%4d",aa[i]);

}

【答案】

(1)aa[k++]=t (2)i<j

2.程序修改題

下列給定程序中函數(shù)fun()的功能是:從n個(gè)學(xué)生的成績(jī)中統(tǒng)計(jì)出高于平均分的學(xué)生人數(shù),人數(shù)由函數(shù)值返回,平均分存放在形參aver所指的存儲(chǔ)單元中。

例如輸入8名學(xué)生的成績(jī):85、65.5、69、95.5、87、55、62.5、75。則高于平均分的學(xué)生人數(shù)為4(平均分為74.312500)。

請(qǐng)改正程序中的錯(cuò)誤,使其能得到正確結(jié)果。

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

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#define N 20

int fun(float *s,int n,float *aver)

{

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

int ave,t=0;

int count=0,k,I;

for(k=0;k<n;k++) t+=s[k];

ave=t/n;

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

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

if(s[i]<ave)

count++;

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

aver=ave;

return count;

}

main()

{

float s[30],aver;

int m,I;

system("cls");

printf("Please enter m: ");

scanf("%d",&m);

printf("Please enter %d mark :\n",m);

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

scanf("%f",s+i);

printf("\nThe number of students :%d\n",

fun(s,m,&aver));

printf("Ave=%f\n",aver);

}

【答案】

(1)將 int ave,t=0; 改為:

float ave, t=0.0;

(2)將 if(s[i]<ave) 改為:if(s[i]>ave)

(3)將 aver=ave; 改為:*aver=ave;

3.程序設(shè)計(jì)題

請(qǐng)編寫(xiě)函數(shù)fun,它的功能是:計(jì)算并輸出m(包括m)以內(nèi)能被3或7整除的所有自然數(shù)的倒數(shù)之和。

注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。

#include <stdio.h>

double fun(int m)

{

?

}

main()

{

int m;

double f;

FILE *out;

printf("\nInput m: ");

scanf("%d",&m);

f=fun(m);

printf("\n\nf=%f\n",f);

out=fopen("outfile.dat","w");

for(m=0;m<10;m++)

fprintf(out,"%f\n",fun(m+20));

fclose(out);

}

【答案】

int i;

double sum=0.0;

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

if(i%3==0||i%7==0)

sum+=1.0/i;

return sum;

1.程序填空題

給定程序中,函數(shù)fun的功能是:找出100至x(x≤999)之間各位上的數(shù)字之和為15的所有整數(shù),然后輸出;符合條件的整數(shù)個(gè)數(shù)作為函數(shù)值返回。

例如,當(dāng)n值為500時(shí),符合條件的整數(shù)共有26個(gè)。

請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。

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

#include <stdio.h>

fun(int x)

{

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

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

n=___1___;

t=100;

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

while(t<=___2___)

{

s1=t%10; s2=(t/10)%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<x<=999): ");

scanf("%d",&x);

}

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

}

【答案】

(1)0 (2)x (3)t++

2.程序修改題

在給定程序中,函數(shù)fun()的功能是:對(duì)N名學(xué)生的學(xué)習(xí)成績(jī),按從低到高的順序找出前m(m≤10)名學(xué)生來(lái),并將這些學(xué)生數(shù)據(jù)存放在一個(gè)動(dòng)態(tài)分配的連續(xù)存儲(chǔ)區(qū)中,此存儲(chǔ)區(qū)的首地址作為函數(shù)值返回。

請(qǐng)改正程序中的錯(cuò)誤,使它能得到正確結(jié)果。

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

#include <conio.h>

#include <string.h>

#include <stdio.h>

#include <alloc.h>

#include <windows.h>

#define N 10

typedef struct ss

{char num[10];

int s;

}STU;

STU *fun(STU a[], int m)

{

STU b[N],*t;

int I,j,k;

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

*t=calloc(m,sizeof(STU));

for(i=0;i<N;i++) b[i]=a[i];

for(k=0;k<m;k++)

{

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

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

if(b[i].s<b[j].s) j=I;

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

t[k].s=b[j].s;

b[j].s=100;

}

return t;

}

outresult(STU a[],FILE *pf)

{

int I;

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

fprintf(pf,"No=%sMark=%d\n",a[i].num,

a[i].s);

fprintf(pf,"\n\n");

}

main()

{

STU a[N]={{"A01",77},{"A02",85},

{"A03",96},{"A04",65},{"A05",75},

{"A06",96},{"A07",76},{"A08",63},

{"A09",69},{"A10",78}};

STU*pOrder;

int I,m;

system("cls");

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

outresult(a,stdout);

printf("Give the number of the students

who have lower score: ");

scanf("%d",&m);

while(m>10)

{

printf("Give the number of the students

who have lower score: ");

scanf("%d",&m);

}

pOrder=fun(a,m);

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

printf("The low :\n");

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

printf("%s %d\n",pOrder[i].num,

pOrder[i].s);

free(pOrder);

}

【答案】

(1)將*t=calloc(m,sizeof(STU));改為:

t=calloc(m,sizeof(STU));

(2)將for (i=j=0;i<N;j++)改為:

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

(3)將t[k].s=b[j]. s;改為:t[k]=b[j];?

3.程序設(shè)計(jì)題

下列程序定義了N×N的二維數(shù)組,并在主函數(shù)中自動(dòng)賦值。請(qǐng)編寫(xiě)函數(shù)fun(int a[ ][N]),該函數(shù)的功能是:使數(shù)組左下半三角元素中的值全部置成0。例如a數(shù)組中的值為:

1 9 8

2 6 7

3 4 5

則返回主程序后a數(shù)組中的值應(yīng)為:

0 9 8

0 0 7

0 0 0

注意:部分源程序已給出。請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入所編寫(xiě)的若干語(yǔ)句。

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <windows.h>

#define N 5

int fun(int a[][N])

{

?

}

main()

{

int a[N][N],I,j;

system("cls");

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

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

{

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

{

a[i][j]=rand()%10;

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

}

printf("\n");

}

fun(a);

printf("THE RESULT\n");

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

{

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

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

printf("\n");

}

}

【答案】

int fun(int a[][N])

{

int i,j;

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

for(j=0;j<=i;j++) a[i][j]=0;

}


全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)C語(yǔ)言練習(xí)題(十)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
饶河县| 高雄县| 黑河市| 罗田县| 长武县| 海晏县| 眉山市| 灵山县| 大余县| 涿州市| 兴文县| 拉孜县| 琼结县| 古浪县| 镇康县| 林西县| 宁陕县| 内丘县| 杨浦区| 马龙县| 宁晋县| 宜阳县| 加查县| 基隆市| 横峰县| 邢台县| 广河县| 呼和浩特市| 昔阳县| 绵竹市| 太白县| 福贡县| 哈尔滨市| 禄劝| 永定县| 吴忠市| 青州市| 长岛县| 南投市| 得荣县| 眉山市|