计算机二级C语言上机题库(八)
字符题:
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’;}
93、将s所指字符串中除了下标为奇数、同时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中的值为:5,n中的值为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中的小写字母都改为对应的大写字母,其它字符不变并返回修改后的字符串。例如:若输入字符串“Ab、cD”,则输出字符串“AB,CD”。
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到最后的字到字符串的前部。例如,字符串 有的内容为ABCDEFGHIJK,m的 移动后,字符串中的内容应该 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;}}
123、将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。例如若二维数组中的数据为:
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所指的字符串后;若分别输入下面两个字符串FirstString和SecondString则程序输出:
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;}
四、
131、N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。找出学生的最低分,由函数值返回。
double fun(STREC *h)
{double min=h->s;
while(h!=NULL)
{if(min>h->s) min>h->s;h->h->next;}
return min;}
132、N名学生的成绩已在主函数中放入一个带头节点的链表结构中,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所指的数组中,分数范围之外的学生人数由函数值返回。例如,输入的分数是80和89,则应当把分数低于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所指的数组中,分数范围内的学生人数由函数值返回。若输入的分数是60和69,则应当把分数在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;}
147、N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。编写函数:求出平均分,由函数值返回。例如,若学生的成绩是85,76,69,91,72,64,87,则平均分应当是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}