c语言期末复习_关于c语言的期末复习
c语言期末复习由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“关于c语言的期末复习”。
谁能出线
电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数(0~100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。
1.#include 2.#include 3.int main()4.{ 5.int a[10],i,max=0;6.for(i=0;imax)10.{ 11.max=a[i];12.} 13.} 14.for(i=0;i=max)17.{ 18.printf(“%dn”,i);19.} 20.} 21.return 0;22.} 统计素数的个数
求出 2 到 m 之间(含 m,m
1.#include 2.int main()3.{ 4.int a[1000],m,i=0,j,n,cnt;5.scanf(“%d”,&m);6.for(n=2;n
9.i=i+1;10.}
11.cnt=0;
12.for(i=0;i
14.j=2;
15.while(a[i]%j!=0)16.{
17.j++;18.}
19.if(j==a[i])20.{
21.printf(“%4d”,j);22.cnt=cnt+1;23.} 24.25.}printf(“n”);26.printf(“%d”,cnt);27.printf(“n”);28.return 0;29.}
1.#include 2.int main()3.{
4.int a[10],i,j,n;5.for(i=0;i
7.scanf(“%d”,&a[i]);8.}
9.for(j=0;j
12.for(i=0;i
14.if(a[i+1]
16.n=a[i+1];17.a[i+1]=a[i];18.a[i]=n;19.} 20.} 21.} 22.23.for(i=0;i
25.printf(“ %d”,a[i]);
冒泡法排序26.} 27.printf(“n”);28.return 0;29.} 插入法排序
1.#include 2.int main()3.{ 4.int a[11],i,n,m,j;5.for(i=0;i
1.#include 2.#define N 10 3.int main()4.{ 5.int n,a[N],i=0,k=0,t,m=0,j;6.scanf(“%d”,&n);
7.do 8.{
9.a[i]=n%10;10.n=n/10;11.i++;12.k++;
13.}while(n!=0);
14.for(j=0;j
16.for(i=0;i
18.if(a[i+1]>a[i])19.{
20.m=a[i+1];21.a[i+1]=a[i];22.a[i]=m;23.} 24.} 25.}
26.for(i=0;i
28.printf(“%d”,a[i]);29.}
30.printf(“n”);31.return 0;32.}
数组逆序输出
1.#include 2.int main()3.{
4.int a[10],i,j,t;5.for(i=0;i
7.scanf(“%d”,&a[i]);8.} 9.i=0;10.j=9;
11.while(i
13.t=a[i];14.a[i]=a[j];15.a[j]=t;16.i++;17.j--;18.}
19.for(i=0;i
1.#include 2.int main()3.{ 4.int a[10],i,max;5.for(i=0;i
程序定义了 4× 4 的二维数组,请编写程序,给二维数组赋值,并使数组下半三角元素中的值乘以n。例如:
数组中的值为
假设n为10,则输出结果如下:(输出的数按照4位宽度来输出,即%4d)
1.#include 2.int main()3.{
4.int a[4][4],i,j,n;5.for(i=0;i
7.for(j=0;j
9.scanf(“%d”,&a[i][j]);10.} 11.}
12.scanf(“%d”,&n);13.for(i=0;i
15.for(j=0;j
17.a[i][j]=n*(a[i][j]);18.} 19.}
20.for(i=0;i
22.for(j=0;j
24.printf(“%4d”,a[i][j]);25.}
26.printf(“n”);27.}
28.return 0;29.}
在屏幕上显示杨辉三角形
1.#include 2.#define N 100 3.#define M 100 4.int main()5.{
6.int a[N][M],i,j,n;7.scanf(“%d”,&n);8.for(i=0;i
10.j=i;
11.a[i][0]=1;12.a[i][j]=1;13.} 14.for(i=2;i
1.#include 2.#define N 10 3.#define M 10 4.int main()5.{ 6.int a[N][M],n,i,j,m;7.scanf(“%d”,&n);8.for(i=0;i
28.printf(“ %d”,a[i][j]);
29.} printf(“n”);30.}
31.return 0;32.}
给数组中的元素按顺序编号
对数组 a[10] 中的十个整数从小到大进行连续编号,输出各个元素的编号。要求不能改变数组 a 中元素的顺序,且相同的整数要具有相同的编号。例如数组是: A=(5,3,4,7,3,5,6,8,9,10)则输出为:(4,1,3,7,1,4,6,8,9,10)
1.#include 2.int main()3.{
4.int a[10],b[10],i,j,t;5.for(i=0;i
7.scanf(“%d”,&a[i]);8.}
9.for(i=0;i
11.b[i]=a[i];12.}
13.for(i=0;i
15.for(j=i+1;j
17.if(a[i]>a[j])18.{
19.t=a[i];20.a[i]=a[j];21.a[j]=t;22.} 23.} 24.}
25.for(j=0;j
27.for(i=0;i
29.if(b[j]==a[i])30.{
31.printf(“%3d”,i+1);brea
k;
32.} 33.}
34.}printf(“n”);35.return 0;36.} 字符转换
描述
提取一个字符串中的所有数字字符(‘0’...‘9’)将其转换为一个整数输出。输入
一个以回车符为结束标志的字符串(少于80个字符)。输出
把字符串中的所有数字字符(‘0’...‘9’)转换为一个整数并输出。
1.#include 2.#define N 80 3.int main()4.{ 5.char a[N];6.int j;7.scanf(“%s”,a);8.for(j=0;a[j]!=' ';j++)9.{ 10.if((a[j]='0'))
11.{ 12.printf(“%c”,a[j]);13.} 14.} 15.printf(“n”);16.return 0;17.} 合并字符串
输入:
两个已经排好顺序(升序)的字符串
输出:
一个合并在一起的有序(升序)的字符串
要求:
设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。
如果采用先进行串连接,然后再进行排序的算法,则效率太低了。
1.#include 2.#include 3.#define N 20 4.#define M 10 5.int main()6.{
7.char a[N],b[M];8.int i,j,t,n;9.gets(a);10.gets(b);11.strcat(a,b);12.n=strlen(a);
13.for(i=0;i
15.for(j=i+1;j
17.if(a[i]>=a[j])18.{
19.t=a[i];20.a[i]=a[j];21.a[j]=t;22.} 23.} 24.}
25.puts(a);26.return 0;27.}
删除重复字符
1.#include 2.int main()3.{
4.char a[100],b[100];5.int i,j,n=0;6.gets(a);7.b[0]=a[0];
8.for(i=0;a[i]!=' ';i++)9.{ 10.j=0;11.for(j=0;j
1.#include 2.int main()3.{ 4.char a[15],b[4],c[10];5.int i,j,n=0;6.gets(a);7.gets(b);8.for(i=0;a[i]!=' ';i++)9.{ 10.j=0;11.for(j=0;j
在指定位置插入字符串
1.#include 2.#include 3.int main()4.{
5.char a[20],b[5],ch,c[10];6.int i,j,k,n;
7.gets(a);gets(b);8.scanf(“%c”,&ch);9.n=strlen(b);
10.for(i=0;a[i]!=' ';i++)11.{
12.if(ch==a[i])break;13.} 14.k=0;
15.for(j=i;a[j]!=' ';j++)16.{
17.c[k]=a[j];18.k++;19.}
20.c[k]=' ';
21.for(j=0;j
23.printf(“%c”,a[j]);24.}
25.printf(“%s”,b);26.printf(“%sn”,c);27.return 0;28.}
数的合并
1.int fun(int a,int b)2.{
3.int c;
4.c=a/10*10+a%10*1000+b/10+b%10*100
;
5.return c;6.}
7.int main()8.{
9.int a,b,c;
10.scanf(“%d%d”,&a,&b);11.c=fun(a,b);
12.printf(“c=%dn”,c);13.return 0;14.} 素数的判断
1.int fun(int a)2.{ 3.int i;4.for(i=2;i
请编写函数fun,它的功能是计算下列级数和,值由函数值返回。
例如,当n=10,x=0.3时,函数值为1.349859。请勿改动主函数main,仅在函数fun的花括号中填入所编写的若干语句。
1.#include 2.double fun(double a,int b)3.{ 4.int i,m=1;5.double z,S=1;6.for(i=1;i
10.S=S+z/m;11.}
12.return S;13.}
14.int main()15.{
16.double x;17.int n;
18.scanf(“%lf%d”,&x,&n);19.printf(“%lfn”,fun(x,n));20.return 0;21.}
求大于m且紧靠m的k个素数
1.int fun(int m,int n,int zz[1000])2.{
3.int i,j,cnt=0,k=0;4.for(i=m+1;i
6.for(j=2;j
8.if(i%j==0)9.break;10.}
11.if(j==m+1)12.{
13.cnt++;14.zz[k]=i;15.k++;
16.if(cnt==n)17.{
18.return zz[m];19.} 20.} 21.} 22.}
23.int main()24.{
25.int m,n,zz[1000];26.scanf(“%d%d”,&m,&n);27.fun(m,n,zz);
28.for(m=0;m
29.printf(“%6d”,zz[m]);30.printf(“n”);31.return 0;32.}
删除指定字符 请编写函数fun,其功能是:从字符串中删除指定的字符。同一字母的大、小写按照不同的字符处理。1.#include 2.char fun(char str[80],char ch)3.{ 4.int i,j=0;5.char a[80];6.for(i=0;str[i]!=' ';i++)7.{ 8.if(str[i]!=ch)9.{ 10.a[j]=str[i];11.j++;12.} 13.} 14.a[j]=' ';15.strcpy(str,a);16.return str[j];17.} 18.int main()19.{ 20.char str[80];21.char ch;22.23.gets(str);24.scanf(“%c”,&ch);25.fun(str,ch);26.printf(“%sn”,str);27.return 0;28.} 递归
求整数 n 到 m 区间的累加和,其中n
区间的起始点n 区间的终止点m 输出:
累加和
1.int fun(int a,int b)2.{ 3.int h;4.h=a;5.if(a==b)6.{ 7.h=a;8.} 9.else if(a
11.h=b+fun(a,b-1);12.} 13.14.return h;15.}
16.int main()17.{
18.int m,n,s;
19.scanf(“%d%d”,&n,&m);20.s=fun(n,m);
21.printf(“%dn”,s);22.return 0;23.}
求最大公约数——递归
请使用递归算法计算正整数n和m的最大公约数GCD(n,m)。
1.#include 2.int GCD(int n,int m)3.{
4.if((m
6.return m;7.}
8.else if(n
10.return GCD(m,n);11.} 12.else 13.{
14.return GCD(m,n%m);15.} 16.}
17.int main()18.{
19.int a,b;
20.scanf(“%d%d”,&a,&b);21.printf(“%dn”,GCD(a,b));22.return 0;23.}
求数列的第N项
已知整数数列第一项和第二项是1,该数列从第三项开始,如果该项是奇数项,则它是前两项之和,如果该项是偶数项,则它是前两项之差,即: f(n)= 1 当 n = 1 或 2 时, f(n)= f(n-1)-f(n-2)当n是偶数时, f(n)= f(n-1)+ f(n-2)当n是奇数时,编写一个递归函数,求数列的第N项。
1.#include 2.int f(int n)3.{ 4.int m;5.if(n
14.} 15.else 16.{ 17.return m=f(n-1)+f(n-2);
18.} 19.} 20.} 21.int main()22.{ 23.int n;24.scanf(“%d”,&n);25.printf(“%dn”,f(n));26.return 0;27.} 偶数分解
编写程序,输入若干个大于2的正整数,如果是偶数,则将其分解为两个素数并输出;如果输入的奇
数,则输出“××× is odd number!” ;输入为0时程序结束。只有1和它本身这两个因数的自然数叫做素数,0和1既不是素数也不是和数。实现分解的过程用函数实现。输入:整数序列,0
输出:偶数1 = 素数A + 素数B(当输入是偶数时)奇数1 is odd number!(当输入是奇数时)1.#include 2.int s(int n)3.{
4.int i;
5.for(i=2;i
7.if(n%i==0)8.return 0;9.}
10.if(i==n)11.{
12.return 1;13.} 14.}
15.void fun(int n)16.{
17.int i;
18.for(i=2;i
20.if(s(n)==1)21.{
22.printf(“%d is odd number!
n”,n);23.}
24.else if((s(i)==1)&&(s(n-i)=
=1))
25.{
26.printf(“%d=%d+%dn”,n,i,n
-i);break;27.} 28.} 29.}
30.int main()31.{
32.int n;33.do 34.{
35.scanf(“%d”,&n);36.fun(n);37.}while(n!=0);38.return 0;39.} 浮点数四舍五入
1.#include 2.#include 3.double fun(double a)4.{ 5.return(floor)(a*100+0.5)/100.0;
6.} int main()7.{ double a;8.scanf(“%lf”, &a);9.printf(“%lfn”, fun(a));10.return 0;11.} 长整型截短
1.#include 2.int fun(int n)3.{ 4.int a,i=0,b=0;5.do 6.{ 7.a=n%10;8.n=n/10;9.if(a%2==0)10.{ 11.b=b+a*pow(10,i);12.i++;13.} 14.}while(n!=0);15.return b;16.} 17.int main()18.{ int n;19.scanf(“%ld”,&n);20.printf(“The result is: %ldn”,fun(n));
21.return 0;22.}
长整型截短
编写一个函数fun,其功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。
1.#include
2.int fun(int n)
3.{
4.int a,i=0,b=0;5.do 6.{
7.a=n%10;8.n=n/10;9.if(a%2==0)10.{
11.b=b+a*pow(10,i);12.i++;13.}
14.}while(n!=0);15.return b;16.}
17.int main()18.{ int n;
19.scanf(“%ld”,&n);
20.printf(“The result is: %ldn”,fun(n));
21.return 0;22.}
公式求解
1.double fun(int n)2.{
3.int i;
4.double a=1,s=1;5.for(i=1;i
7.a=a/i;8.s=s+a;9.} 10.return s;11.} 12.int main()13.{ int n;14.double s;15.16.scanf(“%d”,&n);17.s=fun(n);18.printf(“s=%fn”,s);19.return 0;20.} 数的合并
请编写函数fun,其功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a的十位和个位依次存放在c数的十位和千位上,b的十位和个位依次存放在c数的个位和百位上。
1.int fun(int a,int b,int *p)2.{ 3.*p=a/10*10+a%10*1000+b%10*100+b/10;4.return p;5.} 6.int main()7.{ 8.int a,b,c;9.scanf(“%d%d”,&a,&b);10.fun(a,b,&c);11.printf(“%dn”,c);12.return 0;13}
数组中奇偶数
请编一个函数 fun,函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参 n 给了数组中数据的个数:利用指针 odd 返回奇数之和,利用指针 even 返回偶数之和。
例如:数组中的值依次为: 1,8,2,3,11,6 ;则利用指针 odd 返回奇数之和 15 ;利用指针 even 返回偶数之和 16。
void fun(int x[],int y,int *odd,int *even)
{
int i; *odd=0; *even=0;
for(i=0;i
if(x[i]%2!=0) {
*odd=*odd+x[i]; }
else
{
*even=*even+x[i]; } } }
int main()
{ int a[N],i,n,odd,even; scanf(“%d”,&n);
for(i=0;i
printf(“The sum of even numbers:%dn”,even);
return 0; }
#include
#define N 20
浮点数四舍五入
请编一个函数 void fun(double a,double *h),函数的功能是对变量 h 中的值保留 2 位小数,并对第三位进行四舍五入(规定 h 中的值为正数)。
例如: h 值为 8.32433,则函数返回 8.32 ;
h 值为 8.32533,则函数返回 8.33。
#include
void fun(double a,double *h) {
*h=(floor)(a*100+0.5)/100; } int main() {
double a,h;
scanf(“%lf”,&a); fun(a,&h);
printf(“The result:%lfn”,h); return 0;
}
字符移动
请编一个函数void fun(char *s),函数的功能是把字符串中所有的字符前移一个位置,串中的第一个字符移到最后。
例如:原有的字符串为: Mn.123xyZ,则调用该函数后,串中的内容为: n.123xyZM。
void fun(char *s) {
int i=0,j,k;
char ch,a[N];
do
{
a[i++]=*(s++); }while(*s!=' '); ch=a[0];
for(j=0;j
a[j]=a[j+1]; }
a[i-1]=ch; a[i]=' ';
for(k=i-1;k>=0;k--) {
*(--s)=a[k]; }
} int main() { char a[N]; gets(a); fun(a);
printf(“%sn”,a); return 0; }
生成新数
给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。
例如,输入一个数:27638496,新的数:为739。
#include void fun(int *p) {
int a[10],b[10];
int i=0,j=0,k;
do
{
a[i++]=*p%10; *p=*p/10; }while(*p!=0);
for(k=0;k
if(a[k]%2!=0) {
b[j++]=a[k]; } }
for(k=0;k
*p=*p+b[k]*pow(10,k); } }
int main() { int n=-1;
while(n>99999999||n
printf(“%dn”,n);
return 0; }
字符串转换成整数
请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数。例如,若输入字符串“-1234”,则函数把它转换为整数值-123
4 #include
int fun(char *p) {
char a[10];
int q=0,i=0,j=0;
do
{
a[j++]=*(p++); }while(*p!=' ');
if(a[0]=='-') {
for(i=1;i
q=q+(a[i]-'0')*pow(10,j-1-i); }
q=-1*q; }
else
{
for(i=0;i
q=q+(a[i]-'0')*pow(10,j-1-i); } }
return q; }
int main()/* 主函数 */
{ char s[10];
int n; gets(s); n = fun(s);
printf(“%dn”,n);
return 0; }
二维数组按列优先存放
请编写函数fun, 函数的功能是: 将M行N列的二维数组中的字符数据, 按列的顺序依次放到一个字符串中。
例如, 二维数组中的数据为: W W W W S S S S H HHH 则字符串中的内容应是: WSHWSHWSHWSH。
void fun(char w[M][N],char *q) {
int j,i;
for(j=0;j
for(i=0;i
*(q++)=w[i][j]; } }
*q=' '; }
int main() { char
a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}};
fun(w,a); puts(a);
return 0;
} #include
#define M 3
#define N 4
删除字符串中指定的星号
假定输入的字符串中只包含字母和 * 号。请编写函数 fun,它的功能是:除了尾部的 * 号之外 , 将字符串中其它 * 号全部删除。在编写函数时,不得使用 C 语言提供的字符串函数
void fun(char *p,char *t) {
char a[30],b[30],ch;
int i=0,j,k=0;
do
{
a[i++]=*(p++); }while(*p!=' '); a[i]=' ';
for(j=0;;j++) {
if(a[j]!='*') {
b[k++]=a[j];
if(a[j]==*t)break; } }
for(j=k;j
b[j]=*(++t); }
for(k=j;k>=0;k--) {
*(p--)=b[k]; } }
int main()
{ char s[81],*t; gets(s); t=s;
while(*t)t++; t--;
while(*t=='*')t--; fun(s , t); puts(s);
return 0; }
统计数字字符
请编写函数 fun,它的功能是: 统计形参 s 所指字符串中数字字符出现的次数,并存放在形参 t
void fun(char *p,int *q) {
int i=0;
for(;*p!=' ';p++) {
if((*p>='0')&&(*p
i++; } }
*q=i; } int main() { char s[80];
int t; gets(s); fun(s,&t);
printf(“%dn”,t);
return 0; }
将两个串按要求形成一个新串
给定程序的函数 fun 的功能是:逐个比较 p、q 所指两个字符串对应位置中的字符,把 ASCII 值大或相等的字符依次存放到 c 所指数组中,形成一个新的字符串。
void fun(char *p,char *q,char *c) {
int i,j;
for(i=0;*(p+i)!=' '&&*(q+i)!=' ';i++)
{
if(*(p+i)>=*(q+i)) {
*(c+i)=*(p+i); }
else
{
*(c+i)=*(q+i); } } j=i;
if(*(p+j)!=' ') {
for(j=i;*(p+j)!=' ';j++) {
*(c+j)=*(p+j); } }
else
{
for(j=i;*(q+j)!=' ';j++) {
*(c+j)=*(q+j); } }
*(c+j)=' '; }
int main()
{ char a[10], b[10], c[80]; gets(a);gets(b); fun(a,b,c); puts(c); return 0;
}
#include
#include
统计子串的个数
请编写函数 fun,它的功能是: 统计 substr 所指子字符串在 str 所指字符串中出现的次数。
void fun(char *p,char *q,int *c) {
int i,j,cnt; *c=0;
for(;*p!=' ';p++) {
cnt=1;
if(*p==*q) {
for(j=0;*(q+j)!=' ';j++) {
if(*(p+j)!=*(q+j)) {
cnt=0; break; } } }
else cnt=0;
if(cnt) {
(*c)++; } } }
int main() {
char str[80],substr[80];
int count; gets(str);
gets(substr);
fun(str,substr,&count); printf(“%dn”,count);
return 0; }
函数 fun 的功能是: 将 s 所指字符串中除了下标为奇数、同时 ASCII 值也为奇数的字符之外,其余的所有字符都删除 , 串中剩余字符所形成的一个新串放在 t 所指的数组中。
void fun(char *p,char *q) {
int i;
for(i=0;*(p+i)!=' ';i++) {
if(i%2==1&&*(p+i)%2==1) {
*(q++)=*(p+i); } }
*(q++)=' '; } int main() {
char s[100], t[100]; scanf(“%s”, s); fun(s, t);
printf(“%sn”, t);
return 0; }
求非偶数的除数
请编写函数 fun,它的功能是:求出能整除形参 x 且不是偶数的各整数 , 并按从小到大的顺序放在 pp 所指的数组中 , 这些除数的个数通过形参 n 返回。
void fun(int x,int *p,int *q) {
int i; *q=0;
for(i=1;i
if(x%i==0) {
*(p++)=i;(*q)++; } } }
int main()
{ int x, aa[1000], n, i; scanf(“%d”, &x); fun(x, aa, &n);
for(i = 0;i
return 0; }
求最大值及其下标
请编写函数 fun,其功能是求出数组的最大元素在数组中的下标并存放在 k 所指的存储单元中
void fun(int *p,int n,int *q) {
int i,max; max=0;
for(i=0;i
if(*(p+i)>max) {
max=*(p+i); *q=i; } } }
void main() {
int a[10], k ,i;
for(i=0;i
scanf(“%d”,&a[i]); fun(a, 10, &k);
printf(“%d,%dn”, k, a[k]); }
结构体填空
给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数modify的功能是将该学生的各科成绩都乘以一个系数a。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
#include
typedef struct
{
int num;
char name[9];
float score[3]; } STU;
void show(STU tt) {
int i;
printf(“%d %s : ”,tt.num,tt.name);
for(i=0;i
printf(“%5.1f”,tt.score[i]); printf(“n”); }
void modify(STU *,float a) {
int i;
for(i=0;iscore[i]*=a; }
int main() {
STU std=
{ 1,“Zhanghua”,76.5,78.0,82.0 };
float a;
scanf(“%f”,&a); modify(&std,a); show(std);
return 0; }
程序通过定义学生结构体变量,存储了学生的学号、姓名和 3 门课的成绩。函数 fun 的功能是对形参 b 所指结构体变量中的数据进行修改 , 最后在主函数中输出修改后的数据。
#include
#include
struct student {
long sno;
char name[10];
float score[3]; };
void fun(struct student *b) {
b->sno= 10004;
strcpy(b->name, “LiJie”); }
int main()
{ struct student t={10002,“ZhangQi”, {93, 85, 87}};
int i; fun(&t);
printf(“No: %ld Name: %snScores:”,t.sno, t.name);
for(i=0;i
printf(“n”);
return 0; }
程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和 3 门课的成绩。函数 fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。
#include
#include
struct student {
long sno;
char name[10];
float score[3]; };
void fun(struct student a[], int n) {
struct student t;
int i, j;
for(i=0;i
for(j=i+1;j
if(strcmp(a[i].name,a[j].name)> 0)
{ t = a[i];a[i] = a[j];a[j] = t;}
}
int main()
{ struct student
s[4]={{10001,“ZhangSan”, {95, 80, 88}},{10002,“LiSi”, {85, 70, 78}}, {10003,“CaoKai”, {75, 60, 88}},{10004,“FangFang”, {90, 82, 87}}};
int i, j; fun(s, 4);
printf(“The data after sorting :n”);
for(j=0;j
{ printf(“nNo: %ld Name: %-8s Scores:”,s[j].sno, s[j].name);
for(i=0;i
printf(“%6.2f”, s[j].score[i]); }
printf(“n”);
return 0; }