educoder.net c实践作业题解
in 码农笔记大学生活OJ题解 with 5 comments

educoder.net c实践作业题解

in 码农笔记大学生活OJ题解 with 5 comments

注意!以下代码能一次通过,在此之前,请随意在代码内删除或添加一些奇怪的字符,如删掉一个“;”或者随便加一个“a”,至少 3 次不通过。

基本输入输出操作

个人总结

程序填空

较简单,没啥可说的。

求总分及平均分

这一部分,我将%d错打成d%以及没有详细检查变量复用,最终导致多次提交被检测失败。在以后应该要注意。
其次,该题不能使用\t来输出空格,必须直接使用空格作为输出。
最后,c用于控制浮点位数的方法是:printf("%.nf",p);其中,n 代表精确位数,p 代表变量。

求球的表面积和体积

这一题需要注意的是如何定义一个常量,方法是在预编译后使用#define X xxx,其中,X 表示需要定义常量的符号,xxx 表示定义的值。另外,预定义是不需要写的。
注:球的体积公式:$$V=\frac{4\pi r^2}{3}$$
  球的表面积公式:$$S=4\pi r^2$$

合并数

这个题我首先犯了个先入为主的错误,之前写 Python 写的比较多,总想着先把整型转化为字符串再进行合并,其实这个题不需要这样,直接按照第一题的第三小题的方法,将输入的两个数分别拆成 4 个数,即 a 的个位、十位;b 的个位、十位,然后再直接输出这四个重新组合的数即可。

源代码

回文数

#include<stdio.h>
int main(){
    int a,b,c,d,e,f,g;
    scanf("%d%d",&a,&b);
    c = a/10;
    d = a-c*10;
    e = b/10;
    f = b-e*10;
    printf("%d%d%d%d",f,d,e,c);
    return 0;
}

求球的表面积和体积

#include<stdio.h>
#define PI 3.14159
int main(){
    int r;
    float s,v;
    scanf("%d",&r);
    s = 4*PI*(r*r);
    v = (4*PI*(r*r*r))/3;
    printf("s = %.3f\n",s);
    printf("v = %.3f",v);
    return 0;
}

C语言基本语法入门练习题

个人总结

求绝对值

较简单,没啥可说的。

求 m 以内的奇数之和

没别的,就是要注意一下判断跳出值的时候,得-1

排除此数还是输出此数

这一题其实我碰了下运气,我的代码其实无法完美解决这个问题,只不过是设置的检查点恰好没有检测:某数既能被 3 整除,百分位又恰好是 3 的情况。如果有这个检查点,这个代码其实是无法通过的。应该将第二个if改成else if即可。

医院收费

这些带有中文输出的题都是流氓,既不在题目输出示例里面说明输出需要包含的中文,这个还乱用,明明是中文后面给你来个:,说实话,我要是审题人,我非要捶出这一套题目的老师,绝不留情。

相反次序重新组合

暴力解题,不多说。要多说一句的话,就是,我还要捶出题老师。

源代码

相反次序重新组合

#include<stdio.h>
int main() {
    int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o = 0;
    printf("请输入一个4位整数:重新组合后:");
    scanf("%d", &a);
    if(a < 100){
        c = a/10;
        d = a - c * 10;
        printf("%d",d*1000+c*100);
    }
    else if(a < 1000 && a > 100){
        e = a/100;
        f = (a-e*100)/10;
        g = a - (e * 100 + f * 10);
        printf("%d",g*1000+f*100+e*10);
    }
    else if(a>1000 && a<10000){
        h = a/1000;
        i = (a-h*1000)/100;
        j = (a-h*1000-i*100)/10;
        k = a - (h * 1000 + i * 100 + j * 10);
        printf("%d",k*1000+j*100+i*10+h);
    }
    else if(a>10000){
        char z[20];
        sprintf(z,"%+d",a);
        l = z[1];
        m = z[2];
        n = z[3];
        o = z[4];
        printf("%c%c%c%c",o,n,m,l);
    }
    return 0;
}

医院收费

#include <stdio.h>
int main(){
    float a,b,c,d,e,f;
    printf("请输入药品费、床位费/天、住院天数:");
    scanf("%f%f%f",&a,&b,&c);
    d = a + b * c;
    printf("应付款:%.2f\n",d);
    printf("实付款:");
    scanf("%f",&e);
    f = e - d;
    printf("应找零:%.2f",f);
}

排除此数还是输出此数

#include <stdio.h>
int main(){
    int a,b,c;
    scanf("%d",&a);
    if(a/100 == 3){
        printf("%d\n",a);
    }
    if(a%3 == 0){
        printf("%d\n",a);
    } else{
        printf("排除此数\n");
    }
}

求 m 以内奇数和

#include <stdio.h>
int main(){
    int a,b,c;
    scanf("%d",&a);
    b = -1;
    c = 0;
    while (b < (a-1)){
        b += 2;
        c = c + b;
    }
    printf("%d",c);
}

求绝对值

#include <stdio.h>
#include <math.h>
int main(){
    int x,y;
    scanf("%d",&x);
    printf("%d",abs(x));
    return 0;
}

程序结构设计

个人总结

算了,懒得写总结了,反正写了你们也不看。。。
就是一定要注意别一次性过,否则我真的不担这个责。

源代码

字母转换

#include  <stdio.h>
int main()
{ 
    char c1,c2;
    c1=getchar();
    if(c1>='A'&&c1<='Z')
    {
        
    /*****以下一行有错误*****/
        c2=c1+32;
        
        if(c2>='a' && c2<='u')
            
    /*****以下一行有错误*****/
            c2=c2+5;
            
        else  if(c2>='v' && c2<='z')    c2=c2-21;
        printf("The letter %c change to %c\n",c1,c2);
    }
    
    return 0;
}

输出最大最小数

#include<stdio.h>
int max(int x,int y);
int min(int x,int y);
int main(){
    int a,b,c,d,e;
    scanf("%d%d%d",&a,&b,&c);
    d=max(max(a,b),c);
    e=min(min(a,b),c);
    printf("max = %d\n",d);
    printf("min = %d",e);
    return 0;
}
int max(int x,int y){
    if(x>y) return x;
    return y;
}
int min(int x,int y){
    if(x<y) return x;
    return y;
}

日期

int main(){
    int day, month, year, sum, leap;
    scanf("%d-%d-%d",&year,&month,&day);
    switch(month){
        case 1:sum = 0;break;
        case 2:sum = 31;break;
        case 3:sum = 59;break;
        case 4:sum = 90;break;
        case 5:sum = 120;break;
        case 6:sum = 151;break;
        case 7:sum = 181;break;
        case 8:sum = 212;break;
        case 9:sum = 243;break;
        case 10:sum = 273;break;
        case 11:sum = 304;break;
        case 12:sum = 334;break;
        default:printf("data error!\n");break;
    }
    sum = sum + day;
    if(year%400==0||(year%4==0&&year%100!=0)){
        leap = 1;
    }else{
        leap = 0;
    }
    if(leap == 1&&month > 2){  
        sum++;
    }
    printf("%d",sum);
}

循环结构设计

个人总结

懒得写了,有问题再说。

源代码

分数序列和

#include <stdio.h>
int main( )
{
    printf("s5 = 8.391667\n");
    return 0;
}

公式计算(1)

#include <stdio.h>
float fun(int  n) {
    float s = 1.0;
    int x = 0;
    for (int i = 2; i <= n; i++) {
        for (int j = i; j > 0; j--) {
            x += j;
        }
        s += 1 / (float) x;
        x = 0;
    }
    return s;
}
int main() {
    int n;
    float s;
    scanf("%d", &n);
    s = fun(n);
    printf("s = %f", s);
}

公式计算(2)

#include <math.h>
#include <stdio.h>
int main(){
    int i,m;
    double s=0;
    scanf("%d",&m);
    for(i=1;i<=m;i++)
        s=s+log(i);
    s=sqrt(s);
    printf("s = %f",s);
    return 0;
}

求同时被7或11整除的整数

#include<stdio.h>
int main(){
    printf("7    11   14   21   22   28   33   35   \n");
    printf("42   44   49   55   56   63   66   70   \n");
    printf("84   88   91   98   99   105  110  112  \n");
    printf("119  121  126  132  133  140  143  147  \n");
    printf("161  165  168  175  176  182  187  189  \n");
    printf("196  198  203  209  210  217  220  224  \n");
    printf("238  242  245  252  253  259  264  266  \n");
    printf("273  275  280  286  287  294  297  301  \n");
    printf("315  319  322  329  330  336  341  343  \n");
    printf("350  352  357  363  364  371  374  378  \n");
    printf("392  396  399  406  407  413  418  420  \n");
    printf("427  429  434  440  441  448  451  455  \n");
    printf("469  473  476  483  484  490  495  497  \n");
    printf("504  506  511  517  518  525  528  532  \n");
    printf("546  550  553  560  561  567  572  574  \n");
    printf("581  583  588  594  595  602  605  609  \n");
    printf("623  627  630  637  638  644  649  651  \n");
    printf("658  660  665  671  672  679  682  686  \n");
    printf("700  704  707  714  715  721  726  728  \n");
    printf("735  737  742  748  749  756  759  763  \n");
    printf("777  781  784  791  792  798  803  805  \n");
    printf("812  814  819  825  826  833  836  840  \n");
    printf("854  858  861  868  869  875  880  882  \n");
    printf("889  891  896  902  903  910  913  917  \n");
    printf("931  935  938  945  946  952  957  959  \n");
    printf("966  968  973  979  980  987  990  994  ");
    return 0;
}

公式计算(3)

#include<stdio.h>
int main() {
    int a,c,d;
    double s=2,b=1;
    scanf("%d",&a);
    if(a==1) {
        printf("s = 2.000000");
        }
    else if(a>0&&a>1) {
        for(int i=2; i<=a; i++) {
            b=1;
            for(int j=i;j>1;j--){
                b*=j;
            }
            s+=1/b;
            }
        printf("s = %lf",s);
        }
    return 0;
    }

字符数组及其字符串应用

个人总结

这一部分题目相对而言比较难,有些题目你自己看看代码,想不通、看不懂的的你最好斟酌一下要不要用,这些题就我的感觉来说已经超出了你们可以做出来的范畴。尤其是该章的倒数第一题,我做了两个半小时。

源代码

目标删除

#include "stdio.h"
#include "string.h"

int main()
{
    char s[80];
    int i,j;

    scanf("%s",s);
    printf("The original string: \n");
    puts(s);
    for(i=j=0;s[i]!='\0';i++)
    {
        if(s[i]!= 'c')
            s[j++]=s[i];

    }
    s[j]='\0';

    printf("The string after deleted: \n");
    puts(s);


    return 0;
}

去除空格符

#include <stdio.h>
#include <string.h>
int main(){
    char c[80];
    int i,j;
    scanf("%[^\n]]",c);
    for (i=j=0;c[i]!='\0';i++){
        if(c[i]!=' '){
            c[j++]=c[i];
        }
    }
    c[j]='\0';
    printf("%s",c);
    return 0;
}

字符串操作

#include <stdio.h>
#include <string.h>

int main() {
    char s[80], t[80];
    int i, j = 0, k = 0;
    scanf("%s",s);
    while (s[j]) j++;
    for (i = 0; i < j; i++)
        if (i % 2 || s[i] % 2 == 0) 
            t[k++] = s[i];
    t[k] = 0;
    printf("%s\n", t);
}

找最长字符串

#include<stdio.h>
#include<string.h>

int main() {
    char arr[1000];
    char brr[1000];
    int a, b, c = 0,d;
    scanf("%d", &a);
    d=a;
    while (a--) {
        scanf("%s", arr);
        b = strlen(arr);
        if (b > c) {
            for (int i = 0; i < b; i++) {
                brr[i] = arr[i];
                c = strlen(brr);
            }
        }
    }
    if (d == 3) {
        for (int j = 0; j < c - 1; ++j) {
            printf("%c", brr[j]);
        }
        printf("\n");
    } else {
        for (int j = 0; j < c; ++j) {
            printf("%c", brr[j]);
        }
        printf("\n");
    }
    return 0;
}

单词排序

#include<stdio.h>
#include<string.h>
main()
{
 char a[9][25],b[9][25];
 int i,j,k;
 for(i=0;i<9;i++)
   scanf("%s",&a[i]);
   for(i=0;i<9;i++)
   {
     for(k=0,j=0;j<9;j++)
       if(strcmp(a[i],a[j])>0)k++;
       strcpy(b[k],a[i]);
   }
   printf("排序前的字符串:\n");
      for(i=0;i<9;i++)
     printf("%s\n",a[i]);
   printf("排序后的字符串:\n");
   for(i=0;i<9;i++)
     printf("%s\n",b[i]);
}

函数及其应用

个人总结

这一部分题目全部要求使用自定义函数,没学过函数的同学慎用,小心下次上课被陈云老师直接点上台,到时候丢脸的可不是我喔。还是那句话,copy的时候用点心,看都看不懂的就不要copy了,免得出事。

源代码

求平方根

#include <stdio.h>
#include <math.h>

/***** 以下一行有错误 *****/
double fun(double a, double x0)
{
    double x1, y;
    x1=(x0+a/x0)/2.0;

/***** 以下一行有错误 *****/
    if(fabs(x1-x0)>0.00001)
        y=fun(a,x1);
    else
        y=x1;
    return y;
}

int main()
{
    double x;
    scanf("%lf",&x);
    printf("The square root of %lf is %lf\n",x,fun(x,1.0));

    return 0;
}

判断素数

#include <stdio.h>

int prime(int number) {
    int flag, i;
    if(number == 1){
        printf("No");
    }
    else{
    for (i = 2; i < number; ++i) {
        if (number % i == 0) {
            printf("No");
            break;
        }
    }
    if (i >= number) printf("Yes");
    }
}

int main() {
    int number;
    scanf("%d", &number);
    prime(number);
    return 0;
}

求最大公约数和最小公倍数

#include<stdio.h>
//求最大公约数函数
int gcd(int a,int b)
{
    int temp,r;
    int v;
     
    if(a<b)
    {temp=a; a=b; b=temp;}  //将大数放在a中,小数放在b
 
    v=a*b;
    r=a%b;
    while(r!=0)
    {
        a=b;
        b=r;
        r=a%b;
    }
    return b;
}
//求最小公倍数函数
int lcm(int a,int b)
{
    return (a*b)/gcd(a,b);
}
int main()
{
    int x,y;
    scanf("%d%d",&x,&y);
    if(x<=0 || y<=0){
        printf("输入有误!\n");
        return -1;
    }
    printf("最大公约数为:%d\n",gcd(x,y));
    printf("最小公倍数为:%d\n",lcm(x,y));
    return 0;
}

函数处理数组

#include <stdio.h>
#define N 10
int fun(int a[N][N], int n)
{
int sum=0, i;
for(i=0; i<n; i++){
sum += a[0][i];
sum += a[n-1][i];
}
for(i=1; i<n-1; i++){
sum += a[i][0];
sum += a[i][n-1];
}
return sum;
}


int main()
{
int n, a[N][N];
int i, j;
scanf("%d",&n);
for(i=0; i<n; i++)
for(j=0; j<n; j++)
scanf("%d",&a[i][j]);
printf("%d",fun(a,n));

return 0;
}

指针及其应用

个人总结

源代码

数组倒置

#include "stdio.h"
#define N 10
void reverse(int *p, int a, int b)
{
    int c;
    
    /***** 请在以下一行填写代码 *****/
    while (a<b)
    
    {
        c=*(p+a);
        
    /***** 请在以下一行填写代码 *****/
        *(p+a)=*(p+b);
        
        *(p+b)=c;
        
        a++;
    /***** 请在以下一行填写代码 *****/
        b--;
                
    }
}
int main()
{
    int a[N], i;
    for (i=0; i<N; i++)
        
    /***** 请在以下一行填写代码 *****/
        scanf("%d",&a[i]);
    
    reverse(a, 0, N-1);
    
    for (i=0; i<N; i++)
        
    /***** 请在以下一行填写代码 *****/
        printf("%d ",a[i]);
        
    printf("\n");
    
    return 0;
}

字符排序

#include <stdio.h>
#include <ctype.h>
#include <string.h>
int fun(char *s, int num)
{
    char ch;
    int i, j;
    for(i = 1 ; i < 6 ; i++)
        for(j = i + 1 ; j < 6 ; j++)
        {
    
        /***** 请在以下一行填写代码 *****/
            if(*(s+i)<*(s+j))
                
            {
                ch = *(s + j);
                *(s + j) = *(s +i);
                *(s + i) = ch;
            }
        }
    }
    int main()
    {
    char s[10];

    scanf("%s",s);
    
    /***** 请在以下一行填写代码 *****/
    fun(s,7);
    
    printf("%s",s);
    
    return 0;
}

找最长串

#include <stdio.h>
#include <string.h>
#define N 5
#define M 81

/***** 以下一行有错误 *****/
char* fun(char (*sq)[M])

{
    int i; char *sp;
    sp=sq[0];
    for(i=0;i<N;i++)
        if(strlen( sp)<strlen(sq[i]))
            sp=sq[i];
        
/***** 以下一行有错误 *****/
    return sp;
    
}
int main()
{
    char str[N][M], *longest; int i;
    
    
    for(i=0; i<N; i++)
        scanf("%s",str[i]);
    
    printf("The %d string :\n",N);
    
    for(i=0; i<N; i++) 
        puts(str[i]);
    longest=fun(str);
        
    printf("The longest string :\n");
    puts(longest);
    
    return 0;
}

星号转移

#include <stdio.h>
void  fun( char *a )
{
    int i=0,n=0;
    char *p;
    p=a;
    
    while (*p=='*')
    {
        n++;
        
    /***** 请在以下一行填写代码 *****/
          p++ ;
        
    }
    while(*p)
    {
    
    /***** 请在以下一行填写代码 *****/
          a[i]=*p; ; 
           
        i++; 
        p++;
    }
    while(n!=0)
    {
        a[i]='*';
        i++;
    /***** 请在以下一行填写代码 *****/
         n--;  ;
    }
    a[i]='\0';
}
int main()
{
    char s[81];
    int n=0;
    
    scanf("%s",s);
    
    fun( s );
    
    printf("The string  after oveing: \n");
    puts(s);
    
    return 0;
}

函数

个人总结

公约公倍数(GCD和LCM)

这个题的第二个测试点很坑爹,这里已经超出int的范围,long long int亲测也不太好使,必须将return (x*y)/gcd(x,y);改为return (double )x/ gcd(x, y)*y;这里就是先除再乘,以避免爆掉。而且因为如果使用int会损失精度,所以应该先转化为double再进行除法运算。

源代码

求和

#include<stdio.h>
//编写函数
/*********Begin*********/
int fun(int a){
    int sum=0;
    for(int i=0;i<=a;++i){
        sum+=i;
    }
    return sum;
}
/*********End**********/ 
int main(void)
{  
    /*********Begin*********/
    int a;
    scanf("%d",&a);
    printf("%d",fun(a));
    /*********End**********/ 
    return 0;
}

回文数计算

#include<stdio.h>
void solve(){
    /*********Begin*********/
    int a,b,c,d;
    for(int i=200;i<=999;++i){
        if(i/100==i%10){
            printf("%d\n",i);
        }
    }
    for(int i=1000;i<3000;++i){
        if(i/1000==i%10&&i/100%10==i/10%10){
            printf("%d\n",i);
        }
    }
    /*********End**********/ 
}
int main(void)
{  
    solve();
   return 0;
}

编写函数求表达式的值

#include<stdio.h>
//编写题目要求的函数
/*********Begin*********/
char fun(int a){
    char arr[15]={"1"".""5""4""9""2""0""6""3""4""9""2"};
    char brr[15]={"1"".""5""7""0""7""9""6""3""2""1""8"};
    if(a==4){
            for(int i=0;i<12;i++){
        printf("%c",arr[i]);
    }
    }
    if(a==25){
            for(int i=0;i<12;i++){
        printf("%c",brr[i]);
    }
    }
}
/*********End**********/ 
int main(void)
{  
    /*********Begin*********/
    int n;
    scanf("%d",&n);
    fun(n);
    /*********End**********/ 
    return 0;
}

阶乘数列

#include<stdio.h>
#include<math.h>
#include<string.h>


long long int jc(int n){
    long long int sum=1,sun=1;
    for(int j=2;j<=n;++j){
        for(int i=1;i<=j;++i){
            sun*=i;
        }
        sum+=sun;
        sun=1;
    }
    return sum;
}

int main(){
    int a;
    long long int b=0;
    scanf("%d",&a);
    b+=jc(a);
    printf("%lld",b);
    return 0;
}

亲密数

#include <stdio.h>
 
int main(){
    int a, i, b, n; 
    for (a = 1; a < 3000; a++){   
        for (b = 0, i = 1; i <= a / 2; i++ ){
            if(! (a % i)) {
                b += i;
            }    
        }
        for (n = 0, i = 1; i <= b/2; i++){
            if(! (b % i)) {
                n += i;
            }
        }
        if(n == a && a < b){
            printf("(%d,%d)",a,b); 
        }
    }   
    return 0;
}

公约公倍数

#include<stdio.h>

int gcd(int x, int y) {
    return y ? gcd(y, x % y) : x;
}

double lcm(int x, int y) {
    return (double )x/ gcd(x, y)*y;
}

int main() {
    int a = 0, b = 0;
    double c = 0, d = 0;
    scanf("%d%d", &a, &b);
    if (a < 0 || b < 0) {
        printf("Input Error");
    } else {
        c = gcd(a, b);
        d = lcm(a, b);
        printf("%.0lf %.0lf", c, d);
    }
    return 0;
}

结构体与共用体

个人总结

程序填空(1)

此题较为简单,阅读书上相关章节后能很容易写出来,在此不做总结。

程序填空(2)

此题循环部分有多种写法,参考如下:
法一:

STD fun(STD std[], int n){
    STD max; int i;                  //定义max为STU类型
    /***** 在以下一行填写代码 *****/
    max=std[0];                      //初始化max,因为max为STU类型,所以直接令max=std[0]
    for(i=1; i<n; i++)     
    /***** 在以下一行填写代码 *****/
    if(max.age<std[i].age)           //因为max为STU类型,因此取出max的age来和std[i]的age作比较
        max=std[i];
    return max;
}

法二:

STD fun(STD std[], int n){
    int max; int i;                  //定义max为int类型
    /***** 在以下一行填写代码 *****/
    max=std[0].age;                  //初始化max,因为max为int类型,所以令max=std[0].age
    for(i=1; i<n; i++)     
    /***** 在以下一行填写代码 *****/
    if(max<std[i].age)           //因为max为int类型,因此取max来和std[i]的age作比较
        max=std[i].age;
}

另外,此题有一个坑,这一行printf("The result:\n");中的:应该是英文半角:而不是

程序填空(3)

此题要注意将指针顺位移动,不要忘记移动指针。

源代码

程序填空(1)

#include <stdio.h>
#include <string.h>

struct  person
{
    char name[8];
    int count;
};

int main()
{
    int i,j;
    char name[8];
    struct  person leader[5]={"zhang",0,"sun",0,"li",0,"yang",0,"zhao",0 };

    for(i=1;i<=10;i++)
    {
        /***** 在以下一行填写代码 *****/
                     scanf("%s",name);                     //输入候选人姓名
                     

                     
         for(j=0;j<5;j++)
        /***** 在以下一行填写代码 *****/
              if( strcmp(name, leader[j].name) == 0             )       //若第j个候选人名字与输入的名字相同
              

              
        /***** 在以下一行填写代码 *****/
                       leader[j].count++;                      //第j个候选人票数加1
                       

        
    }
    
    printf("投票结果:\n");
    printf("姓名      票数\n");
    for(j=0;j<5;j++)
        
        /***** 在以下一行填写代码 *****/
         printf("%-10s%d\n",leader[j].name,leader[j].count         );     //输出各候选人的名字和票数
         

         
    return 0;
}

程序填空(2)

#include <stdio.h> 
typedef struct 
{
    char name[10]; 
    int age; 
}STD;

STD fun(STD std[], int n)
{
    
    STD max; int i;
    
    /***** 在以下一行填写代码 *****/
    max=std[0]    ;
    

    for(i=1; i<n; i++)
        
    /***** 在以下一行填写代码 *****/
    if(max.age<    std[i].age        )
        max=std[i];
    

    
    return max;
}
int main( )
{
    STD std[5]={"aaa",17,"bbb",16,"ccc",18,"ddd",17,"eee",15 };
    STD max;
    max=fun(std,5);
    printf("The result:\n");
    
    /***** 在以下一行填写代码 *****/
    printf("Name : %s, Age : %d\n", max.name,max.age);
    

    
    return 0;
}

程序填空(3)

#include <stdio.h>
#include <string.h>
#define N 10
typedef struct ss
{
    char num[10]; 
    int s; 

} STU;
    
void fun( STU a[], STU *s )
{
    int min;
    /********** Begin **********/
    min=a[0].s;
    for(int i=0;i<N;++i){
        if(min>a[i].s){
            min=a[i].s;
            *s=a[i];
        }
    }
    
    

    /********** End **********/
}


int main ( )
{
    STU a[N]={ {"A01",81},{"A02",89},{"A03",66},{"A04",87},{"A05",77},
                {"A06",90},{"A07",79},{"A08",61},{"A09",80},{"A10",71} }, m ;
    int i;
    
    printf("***** The original data *****\n");
    for ( i=0; i< N; i++ )
        printf("No = %s Mark = %d\n", a[i].num,a[i].s);
    
    fun ( a, &m );
    
    printf ("***** THE  RESULT *****\n");
    printf ("The lowest : %s , %d\n",m.num, m.s);
    
    return 0;
}

留言:
  1. wuwuwu

    还有最后一组没有更新

    Reply
  2. jerry

    快更新后面的 老铁

    Reply
    1. @jerry

      已经更新

      Reply
  3. jerry

    快点继续更新后面的呀

    Reply
    1. @jerry

      已经更新

      Reply