欢迎光临散文网 会员登陆 & 注册

计算机二级C语言上机题库(八)

2021-03-01 08:10 作者:朝颜晚扶桑  | 我要投稿

字符题:

80、将字符串ss中所有下标为偶数位置上的字母转化为大写(若该位置上不是字母,则不转换)。若输入abc4Efg,则应输出AbC4EfG.

void fun( char *ss)

{int i;

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

{if(i%2= =0&&ss[i]>=a&&ss[i]<=z)

ss[i]=ss[i]-32;}}

81、将ss所指字符串中所有下标为偶数位置的字母转换为小写(若该位置上不是字母,则不转换)。若输入ABC4efG,则应输出aBc4efg.

void fun(char *ss)

{int i;

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

{if(i%2==0&&ss[i]>=A&&ss[i]<=Z)

ss[i]=ss[i]!+32;}

82、将s所指字符串中下标为偶数同时ASCII值也为偶数的字符删除,s中剩余的字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFG12345”,最后t所指的数组中的内容应是“ABCDEFG135”。

void fun(char *s,char t[])

{int i,slenth,n=0;

slenth=strlen(s);

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

{if(s[i]%2==0&&i%2==0)

else t[n++]=s[i];}t[n]= '\0';}

83、将s所指字符串中下标为奇数、同时ASCII值也为奇数的字符删除,串中剩余的字符形成一个新串放在t所指的数组中。例如:若s所指串中的内容为“ABCDEFG12345”,最后,t所指的数组中的内容是“ABCDEFG24”。

void fun(char *s,char t[])

{int i,slenth,n=0;

slenth=strlen(s);

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

{if(i%2!=0&&s[i]%2!=0);

else t[n++]=s[i];}t[n]=\0;}

84、将s所指字符串中下标为奇数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。例如,若s所指字符串中的内容为ABCDEFG12345最后,t所指的数组中的内容应是“ACEG12345”。

Void fun(char*s,char t[])

{int i,slenth,n=0;

slenth=strlen(s);

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

{if(i%2!=0&&s[i]%2==0);

else t[n++]=s[i];}t[n]=\0;}

85、将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。例如,若s所指字符串中的内 容为ABCDEFG12345,则在t所指数组中的内容应是BDF12345。

void fun(char*s,char t[])

{int i,j=0,n=

strlen(s);

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

if(!(i%2==0&&s[i]%2!=0))

t[j++]=s[i];t[j]=\0;}

86、将s所指字符中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。例如,当s所指字符串中的内容为ABCDEFGHIJK,则在t所指数组中的内容应是BDFHJ.

void fun(char *s,char t[])

{int i,j=0,k=strlen(s);

For(i=1;i<k;i=i+2)t[j++]=s[i];t[j]=\0;}

87、将s所指字符中下标为奇数的字符删除,串中剩余字符形成的新串放在t所指数组中。例如,当s所指字符串中的内容为siegAHdied,则在t所指数组中的内容应是seAde.

Void fun(char*s,char t[])

{int i,j=0,k=strlen(s);

For(i=1;i<k;i=i+2)t[j++]=s[i];t[j]=\0;}

88、将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一新串放在t所指的数组中。例如,若  所指字符串中的内容为ABCDEFG12345,最后t所指的数组  内容应是ACEG135。

89、将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一新串放在t所指的数组中。若s  所指字符串中的内容为ABCDEFG1234   ,最后t所指的数组  的内容应是BDF24。

Void fun(char*s,char t[])

{int i,j=0,

n=strlen(s);

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

If(s[i]%2==0)

t[j++]=s[i];t[j]=\0;}

90、将s所指字符串中除了下标为奇娄,同时ASCII值也为奇数的字符外,其余的全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。若s所指字符串中的内容为ABCDEFG12345,最后t所指的数组中的内容应是135。

Void fun(char*s,char t[])

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

strlen(s);

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

If(i%2!=0&&s[i]%2!=0)

T[j++]=s[i];t[j]=\0;}

91、将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。若s所指字符串中的内容为ABCDEFG123456,最后t所指的数组中的内容应是246。

Void fun(char *s,char t[])

{int i,j=0;

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

if(i%2= =0&&s[i]%2= =0)

t[j++]=s[i];t[j]=\0;}

92、将s所指字符串中除了下标为偶数、同时ASCII码值为奇数的字符之外,其余的所有字符删除,串中剩余字符形成的一个新串放在t所指的数组中。例如,若s所指字符串中的内容为ABCDEFG12345,最后t所指的数组中的内容应是ACEG。

Void fun(char *s,char t[])

{int i,j=0;

for (i=0;s[i]!=\0

;i++)

{if(i%2==0&&s[i]2!=0)

t[j++]=s[i];}t[j]=\0;} 

93s所指字符串中除了下标为奇数、同时ASII值为偶数的字符外,其余的全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若S所指字符串中的内容为edB2A4Dsdg,最后t所指数组中的内容应是d24

void fun(char*s,char t[])

{int i,j=0;

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

if(i%2!=0&&s[i]%2==0)

t[j++]=s[i];t[j]='\0';}

94除了尾部的*号之外将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。不得使用字符串函数例如若字符串中的内容为****A*BC*DEF*G******,删除后字符串中的内容应当是ABCDEFG******.

void fun(char *a,char *p)

{char*t=a;

for(;t<=p;t++)

if(*t!='*')*(a++)=*t;

for(;*t!='\0';t++)

*(a++)=*t;*a='\0';}

95删除字符串中所有的*不得使用字符串函数。例如若字符串中的内容为****A*BC*DEF*G*******删除后字符串中的内容则应当是ABCDEFG

void fun(char *a)

{int i,j=0;

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

if(a[i]!='*')a[j++]=a[i],a[j]='\0';}

96除了字符前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串中第一个字母,形参P已指向字符串中最后一个字母。(不得使用字符串函数)。若字符串中的内容为***A*BC*DEF*G********,删除后,字符串中的内容则应当是****ABCDEFG********

void fun(char *a,char *h,char *p)

{int i=0;char *q=a;

while(q<h){a[i++]=*q;q++;}

while(q<p)

{if(*q!='*')a[i++]=*q;q++;}

while(*q){a[i++]=*q;q++;}

a[i]='\0';}

97、除了字符串前导的*号之外将串中其他*号全部删除。不得使用字符串函数。例如若字符串中的内容为****A*BC*DEF*G********删除后字符串中的内容则应当是****ABCDEFG

void fun(char *a)

{int i=0;char *p=a;

while(*p&&*p=='*')

{a[i++]=*p;p++;}

while(*p)

{if(*p!='*')a[i++]=*p;p++;}

a[i]='\0';}

98将字符串尾部的*号全部删除前面和中间的*号不删除。例如若字符串中的内容为***A*BC*DEF*G*******删除后的内容则应当是****A*BC*DEF*G

void fun (char *a)

while(*a!='\0')a++;a--;

while(*a=='*')a--;*(a+1)='\0';}

99只删除字符串前导和尾部的*号,串中字母之间的*都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。(不得  使用字符串函数)例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G

void fun(char *a,int n,int h,int e)

{int i,j=0;

for(i=h;i<n-e;i++)

a[i++]=a[i];a[j]='\0';}

100将字符串中的前导*号全部删除中间和后面的*号不删除。例如若字符串中的内容为****A*BC*DEF*G*******删除后的内容则应当是A*BC*DEF*G*******

void fun(char *a)

{char *p=a;while(*p=='*'p++;

for(;*p!='0';p++,a++)

*a=*p;*a='\0';}

101使字符串中前部的*号不得多余n个;若多余n个,则删除多余的*号,若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。例如,若字符串中的内容为****A*BC*DEF*G*******;若n的值为2,删除后,字符串中的内容则应当是****A*BC*DEF*G*******n的值为4,则字符串中的内容为****A*BC*DEF*G*******。n的值在主函数中输入。(不得使用字符串函数)。

void fun(char *a,int n )

{int i=0,k=0;char *p,*t;

p=t=a;while(*t=='*'){k++;t++;}

if(k>n){while(*p){a[i]=*(p+k-n);

i++;p++;}a[i]='\0';}}

102使字符串中尾部的*号不得多于n个;若多于n个,则删除多余*号;若少于或等于n个,则什么也不做字符串中间和前面的*号不删除。例如,字符串中的内容为***A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容则应当是***A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为****A*BC*DEF*G****; n的值在主函数中输入。

void fun(char *a,int n)

{int i=0,k=0;char *p,*t;p=t=a;

while(*t)t++;t--;

while(*t=='*'){k++;t--;}t++;

if(k>n){while(*p&&p<t+n){a[i++]=*p;

p++;}a[i]='\0';}

103将字符串中的前导*号全部移到字符串的尾部。若字符串中的内容为********A*BC*DEF*G****移动后字符串中的内容应当是A*BC*DEF*G***********.

void fun(char *a)

{int i=0,n=0;char *p=a;

while(*p=='*'){n++,p++;}

while(*p){a[i++]=*p;p++;}

while(n!=0){a[i++]='*';n--;}

a[j]='\0';}

104从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。例如:若程序执行时输入字符串为turbo c and borland c++从键盘上输入字符n,则输出后变为turbo c ad borlad c++。如果输入的字符在字符串中不存在,字符串照原样输出。

int fun(char s[],int c)

{int i=0;char *p;p=s;

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

s[i]='\0';}

105删除一个字符串中指定下标的字符。其中a指向原字符串删除后的字符串存放在b 所指的数组中n中存放指定的下标。例如,输入一个字符串world,然后输入3,则调用该函数后的结果为word

void fun(char a[],char b[],int n)

{int i,k=0;

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

if(i!=n)b[k++]=a[i];b[k]='\0';}

106删除字符串规定下标开始的n个字符。例如,字符串内容为HellolloWorld!,k中的值为:5n中的值为3,则调用该函数的结果为:Hello World!

void fun(char *a,int k,int n)

{int i;i=k;

while(a[i-1]!='\0')

{a[i]=a[i+n];i=i+1;}}

107、删除字符串中的数字字符。例如输入字符串48CTYP9E6则输出CTYPE.

void fun(char *s)

{int i,j=0;char str[100],*p;p=s;

while(*p!='\0')}

{if(*p<'0')||*p>'9')

str[j++]=*p;p++;}str[j]='\0';p=s;

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

p[i]=str[i];p[i]='\0';}

108删除字符串中的所有空格。如:输入asd af aa z67,则输出为asdafaaz67.

int fun (char *str)

{int i,j=0;

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

if(str[i]!='')str[j++]=str[i];

str[j]='\0'}

109把字符串中的内容逆置。例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba

fun(char *s)

{char  ch;int i=0,n;

n=strlen(s)-1;

while(i<(n+1)/2)

{ch=s[i];s[i]=s[n];s[n]=ch;i++;n--;}}

110判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。例如,字符串LEVEL是回文,而字符串123312就不是回文。

int fun(char *str)

{int i,n=0,fg=1;char *p=str;

while(*p){n++;p++;}

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

if(str[i]==str[n-1-i]);

else{fg=0;break;}return fg;}

111在字符串中的所有数字字符前加一个$字符。例如,输入A1B23CD45,则输出为:A$1B$2$3CD$4$5.

void fun(char *s)

{charp[80];int i=0,j=0;

while(s[i]!='/0')

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

{p[j]='$';p[j+1]=s[i];j=j+2;}

else {p[j]=s[i];j=j+1;}i++;}

p[j]='\0';strcpy(s,p);}

112统计在tt字符串中’a’’z’26个字母各自出现的次数,并依次放在pp所指数组中。例如:当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:33322110000000000000000000

void fun(char*tt,int pp[])

{int i;

for(i=0;i<26;i++)pp[i]=0;

for(;*tt!='\0';tt++)

if(*tt>='a'&&*tt<='z')

pp[*tt-'a']++;}

113统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。

int fun(char *s)

{int i,j=0;

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

if(s[i]!=''&&(s[i+1]==''||s[i+1]=='\0'))

i++;return j;}

114、统计字符串S在字符串str中出现的次数。例如若输入字符串“12  123  12345”“23”则应输出2表示字符串“23”在字符串“12  123  12345”中出现了两次。若输入字符串“33333”“33”,则应输出4(表示字符串“33”在字符串“33333”出现了四次)。

int MySearch(char* str;char* s)

{char *p;int n=0;

for(;*str;)

if((p=strstr(str,s))!=NULL)

{n++;str=p+1;}

else str++;return(n);}

115统计一个长度为2的字符串在另一个字符串中出现的次数。如假定输入的字符串为asd  asasdfg  asd  as  zx67  asd  mklo,子字符串为as,则应当输出6

int fun(char *str, char *substr)

{int i,j=0;

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

if(str[i]==substr[0]&&str[i+1]==substr[1])

j++;return j;}

116将一个数字字符串转换为一个整数不得调用字符串函数。例如,若输入字符串“-1234”,则函数把它转换为整数值-1234

long fun(char *p)

{long n=0;int flag=1;

if(*p=='-'){p++;flag=-1;}

else if(*p=='+')p++;

while(*p!='\0'){n=n*10+*p-'0';p++;}

return n*flag;}

117将字符串tt中的小写字母都改为对应的大写字母其它字符不变并返回修改后的字符串。例如若输入字符串“AbcD”则输出字符串“ABCD”

char* EXUL(char tt[])

{for(;*tt;tt++)

if((*tt>='a'&&(*tt <='z'))*tt=32;}

118把字符串中所有的字符前移一个位置,串中的第一个字符移到最后。例如:原有的字符串为:Mn.123xyZ,则调用该函数后,串中的内容为:n.123xyZM

fun(char *s)

{int i,length;

char tmp;length=strlen(s);

if(length==0)return;tmp=s[0];

for(i=0;i<length-1;i++)

s[i]=s[i+1];s[length-1]=tmp;}

119把字符串中所有的字母改写在该字母的下一个字母,最后一个字母z改写成字母a。大写字母仍为大写字母,小写字母仍为小写字母,其他的字符不变。例如,原有的字符串为;Mn.123xyZ,则调用该函数后,串中的内容为:No.123yzA。

fun(char *s)

{int i,length;

length=strlen(s);

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

{if(!((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&}s[i]<='Z')))continue;

switch(s[i])

{case'z':s[i]='a';break;

case'Z':s[i]='A';break;

defaule:s[i]+1;break;}}}

120、将字符串ss中所有下标奇数位置上的字母转换为大写若该位置上不是字母则不转换。例如若输入“abc4EFG”,则应输出“aBc4EFG”.

void fun(char *ss)

{int i,n=0;char *p=ss;

while(*p){n++;p++;}

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

if((ss[i]>='a'&&ss[i<='z’)&&(i%2!=0)

ss[i]=ss[i]-32;ss[i]='\0';}

121将字符串tt中的每个单词的首字符改为对应的大写字母,首字符后的字母都改为对应的小写字母,其它字符不变并返回修改后的字符串。例如,若输入“ab,cD Boy!”,则应输出字符串为:“Ab, Cd Boy!”.

charEXUL(char tt[])

{int isfirst=1;int i ,

Lenhth;length=strlen(tt);

For(i=0;i<length;i++)

{if(tt[i]>=a&&tt[i]<=z){tt[i]=isfirst?(tt[i]+A-a);tt

122移动字符串中的内容,移动   则是把第1到第m个字符,平移到   串的最后,把第m+1到最后的字到字符串的前部。例如,字符串   有的内容为ABCDEFGHIJKm   移动后,字符串中的内容应该  DEFGHIJKABC.

void fun (char *w,int m)

{int i,j;char t;

for(i=1;i<=m;i++){t=w[0];

for(j=1;w[j]!='\0';j++)

w[j-1]=w[j];w[j-1]=t;}}

123MN列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如若二维数组中的数据为:

W W W W

S S S S

H H H H

则字符串中的内容应是WSHWSHWSHWSH.

void fun(char (*s)[N],char *b)

{int i,j,k=0;

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

for(j=0;j<M;j++)b{k++}=s[j][i];

b[k]='\0';}

124将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。例如,若字符串数组中的M个字符串为

AAAA

BBBBBBB

CC

则合并后的字符串内容应该是

AAAABBBBBBBCC

Void fun(char a[M][N],char *b)

{int i,j,k=0;

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

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

b[k++]=a[i][j];b[k]='\0';}

125求出SS所指字符串中指定字符的个数并返回此值。例如若输入字符串123412132输入字符1则输出3

int fun(char *ss, char c)

{int i=0;

for(;*ss!='\0';ss++)

if(*ss==c)i++;return i;}

126实现两个字符串的连接不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后;若分别输入下面两个字符串FirstStringSecondString则程序输出

irstStringSecondString

void fun(char p1[],char p2[])

{int i,j;

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

for(j=0;p2[j]!='\0';j++)

p1[i++]=p2[j];p1[i]='\0';}

127对长度为7个字符的字符串除首、尾字符外将其余5个字符按ASCII码降序排列。例如:若原来的字符串为CEAedca,则排序后输出为CedcEAa.

int fun(char *s, int num)

{char t;int i,j;

for(i=1;i<num-2;i++)

for(j=i+1;j<num-1;j++)

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

{t=s[i];s[i]=s[j];s[j]=t;}}

128从传入的num个字符中找出最长的一个字符串并通过形参指针max传回该串地址(用****作为结束输入的标志)。

fun(char (*a)[81],int num,char *max)

{int i=0;max=a[0];

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

if(strlen(max)<strlen(a[i]))

max=a[i];return max;}

129比较两个字符串的长度,(不得调用字符串长度的函数),函数返回较短的字符串。若两个字符串长度相等,则返回第1个字符串。例如,输入nanjing<CR>nanchang<CR><CR>为回车键),函数将返回nanjing

char *fun(char *s,char *t)

{int i,j;

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

for(j=0;t[j]!='\0';j++);

if(i<=j)return s;else return t;}

130比较两个字符串的长度,(不得调用C语言提供的求字符串的函数),函数返回较长的字符串。若两个字符串长度相等,则返回第1个字符串。例如,输入beijing<CR>shanghai<CR><CR>为回车键),函数将返回shanghai

char *fun(char *s,char *t)

{int i,j;

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

for(j=0;t[j]!='\0';j++);

if(i>=j)return s;else return t;}

四、

131N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。找出学生的最低分,由函数值返回。

double fun(STREC *h)

{double min=h->s;

while(h!=NULL)

{if(min>h->s) min>h->s;h->h->next;}

return min;}

132N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h  链表的头节点。的出学生的最高分,由函数值返回。

double fun(STREC *h)

{ double max=h->s;

while(h!=NULL)

{if(max>h->s) max=h->s; h->h->next;}return max;}

133已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。

fun(STU a[],STU *s)

{int i;*s=a[0];

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

if(s->s<a[i].s)*s=a[i];}

134已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。

fun(STU a[],  STU *S)

{int i;*s=a[0];

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

if(s->s<a[i].s)*s=a[i];}

135学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,把分数最低的学生数据放在b所指的数组中。注意:分数低的学生可能不只一个函数返回分数最高学生的人数。

int fun (STREC *a, STREC *b)

{int i,j=0,min=

a[0].s;

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

if(min>a[i].s)min=a[i].s;

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

if(min==a[i].s)b[j++]=a[i];

return j;}

136学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写函数:把分数最高的学生数据放在h所指的数组中。注意:分数高的学生可能不只一个函数返回分数最高学生的人数。

int fun (STREC *a, STREC *b)

{int i,j=0,min=

a[0].s;

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

if(max<a[i].s)max=a[i].s;

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

if(max==a[i].s)b[j++]=a[i];return j;}

137学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写函数;返回指定学号的学生数据,指定的序号在主函数中输入。若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。

STREC fun(STREC *a, char *b)

{int i;STREC str={"\0",-1};

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

if(strcmp(a[i].num,b)==0)

str=a[i];return str;}

138学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写函数;返回指定成绩的学生数据,指定的成绩在主函数中输入。若没找到指定的成绩,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。

STREC fun(STREC *a, int b)

{int i;STREC str={"\0",-1};

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

if(a[i].s==b)str=a[i];

return str;}

139学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写函数;把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。

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

{int i,j=0;double av=0.0;

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

av=av/N;

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

if(a[i].s<av) b[j++]=a[i];

*n=j;return av;}

140学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写函数:把高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。

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

{int i;double av=0.0;*n=0;

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

av=av/N;

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

if(av<=a[i].s){b[*n]=a[i];*n=*n+1;}

return av;}

141学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写函数:把高于等于平均分的学生数据放在b所指的数组中,低于平均分的学生数据放在c所指的数组中,高于等于平均分的学生人数通过形参n传回,低于平均分的学生人数通过形参n传回,低于平均分的学生人数通过形参m传回,平均分通过函数值返回。

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

{int i;double av=0.0;*n=0;*m=0;

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

av=av/N;

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

if(av<=a[i].s){b[*n]=a[i];*n=*n+1;}

else{c[*m]=a[i];*m=*m+1;}

return av;}

142学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写函数;按分数的高低排列学生的记录,低分在前。

int fun (STREC a[])

{int i,j;STREC t;

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

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

if(a[j].s>a[j+1].s)

{t=a[j];a[j]=a[j+1];a[j+1]=t;}}

143学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写函数;按分数的高低排列学生的记录,高分在前。

int fun(STREC a[])

{int i,j;STREC t;

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

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

if(a[j];s<a[j+1].s)

{t=a[j];a[j]=a[j+1];a[j+1]=t;}}

144学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写函数:把指定分数范围之外的学生数据放在b所指的数组中,分数范围之外的学生人数由函数值返回。例如,输入的分数是8089,则应当把分数低于80和高于89的学生数据进行输出,不包含80分和89分的学生数据。主函数中把80放在low中,把89放在heigh中。

int fun (STREC *a,STREC *b,int 1,int h)

{int i,j=0;

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

of((a[i].s>=0&&a[i].s<1)||(a[i].s<=100))

b[j++]=a[i];return j;}

145学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,编写函数;把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。若输入的分数是6069,则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中把60放在low中,把69放在heigh中。

int fun(STREC *a,STREC *b,int 1, int h)

{int i,j=0;

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

if(a[i].s>=1&&a[i].s<=h)

b[j++]=a[i];return j;}

146某学生的记录由学号、8门课成绩和平均分组成,学号和8门课的成绩已在主函数中给出。编写函数,求出该学生的平均分放在记录的ave成员中。若学生的成绩是

85.5,76,69.5,85,91,72,64.5,87.5,则他的平均分应当是78.875

void fun(STREC *p)

{int i;p->ave=0.0;

for(i=0;i<N;i++)p->ave+=p->s[i];

p->ave=p->ave/N;}

147N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。编写函数:求出平均分,由函数值返回。例如,若学生的成绩是85766991726487,则平均分应当是78.625

double fun(STREC *h)

{double av=0.0;STREC *p=h->next;

while(p!=NULL){av=av+p->s;

p=p->next;}return av/N}


计算机二级C语言上机题库(八)的评论 (共 条)

分享到微博请遵守国家法律