c语言详解+例子1

1、数据类型转换    

/*数据类型转换

     c语言规定,不同类型的数据需要转换成同一类型后才可以进行计算

     注意:并不是所有类型的数据之间都可以进行转换。例如,指针和整型、实型、字符型之间不能进行类型转换

     相同类型的数据在转换时有规则可循,如字符必先转换为整型(c语言规定字符类型数据和整型数据之间可以通用),short型转换为int

     (同属于整型),float型数据在运算时一律转换为双精度double型,以提高运算精度(同属于实型)。

     不同类型的数据发生转换时,遵循低级向高级转换的原则,例如int型数据与double型数据进行运算时,是先将int型转换为double型后再

     进行运算,结果为double

     此外,在一个赋值语句中,若发生类型转换,则是赋值语句右部(表达式一侧)的值转换成左部(目标一侧)的类型;

     赋值运算符的结合性是按照自左向右的规则执行

     */

int main(int argc,constchar * argv[]) {

    // insert code here...

    //定义变量并赋初值

   int a=5;

   char c='a';

   float f=5.3;

   double m=12.65;

   double result;

    //同类型数据间进行运算并输出结果

   printf("a+c=%d\n",a+c);

   printf("a+c=%c\n",a+c);

   printf("f+m=%f\n",f+m);

    //不同类型数据间进行运算并输出结果

   printf("a+m=%f\n",a+m);

   printf("c+f=%f\n",c+f);

    //将上述四个变量进行混合运算,并输出结果

    result=a+c*(f+m);

   printf("double=%f\n",result);

   return0;

}

2、转义字符


int main(int argc,constchar * argv[])

{

   //换行符‘\n’,用于输出换行

    printf("How are you?\n");

    printf("I am fine.\n\n");

    //横向跳格符‘\t’,跳到下一个输入

    printf("How are you?\t");

    printf("I am fine.\n\n");

    //退格符‘\b’,使当前的输出位置退一格,即输出的起始位置左移一位

    printf("How are you?\n");

    printf("\bI am fine.\n\n");

    //回车符‘\r’。使当前输出位置回到本行开头

    printf("                I am fine.");//I前面共16个空格

    printf("\rHow are you?\n\n");

    //多个转义字符的混合运用

    printf("note:\n  a s\ti\b\bk\rp\n");

   return0;

}



3、关系非与或 (!、&& 、||)



int main(int argc,constchar * argv[])

{

   int logic;

   int a=1;

   int b=2;

   int c=3;

    logic=a+b>c&&b<=c;

   printf("logic=%d\n",logic);

    logic=a>=b+c||b==c;

   printf("logic=%d\n",logic);

    logic=!(a<c)+b!=1&&(a+c)/2;

   printf("logic=%d\n",logic);

   return0;

}

输出结果为:0、0、1


4、自增自减运算符

int main(int argc,constchar * argv[])

{

   int i,j,k;

   int m,n,p;

    i=8;

    j=10;

    k=12;

    m=++i;

   printf("i=%d\n",i);

   printf("m=%d\n",m);

    n=j--;

   printf("j=%d\n",j);

   printf("n=%d\n",n);

    p=(++m)*(n++)+(--k);

   printf("k=%d\n",k);

   printf("p=%d\n",p);

   return0;

}

输出结果为: i=9、 m=9、 j=9、 n=10、 k=11、 p=111

5、普通位运算


//简单位运算

int main(int argc,constchar * argv[])

{

   unsignedchar result;

   int a,b,c,d;

    a=2;

    b=4;

    c=6

    d=8;

    result=a&c;

       printf("result=%d\n",result);

    result=b|d;

       printf("result=%d\n",result);

    result=a^d;

       printf("result=%d\n",result);

    result=~a;

       printf("result=%d\n",result);

   return0;

}


答案是:2、12、10、253

6、位移运算


//简单位移运算

int main(int argc,constchar * argv[])

{

   unsigned a,b,c,d;

   int n;

    a=64;

    n=2;

    b=a>>(6-n);

   printf("b=%d\n",b);

    c=a<<n;

   printf("c=%d\n",c);

    d=(a>>(n-1))|(a<<(n+1));

   printf("d=%d\n",d);

   return0;

}

结果为:4、256、544
无符号数左移一位除以2,低位补0、右移一位乘以2,高位补0

7、指针操作符


// 指针操作

int main(int argc,constchar * argv[])

{

   int *p;

   int begin,end;

    begin=10;

    p=&begin;

    end=*p;

   printf("begin=%d\n",begin);

   printf("end=%d\n",end);

   printf("p=%d\n",p);

   printf("*p=%d\n",*p);

   return0;

}


8、if-else &switch


9、for语句

//利用for循环打印出菱形

int main(int argc,constchar * argv[])

{

   int i,j,k;

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

    {

        //当行数为i时,空格数是i的函数为4-i

       for(j=0;j<=3-i;++j)printf(" ");

        //星号数也为i的函数为2i1

       for(k=0;k<=2*i;++k)printf("*");

       printf("\n");

    }

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

    {

        //当行数为i时,空格数是i的函数为4-i

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

        //星号数也为i的函数为2i1

       for(k=0;k<=6-2*i;++k)printf("*");

       printf("\n");

    }

   return0;

}

打印结果为:

    *

   ***

  *****

 *******

*********

 *******

  *****

   ***

    *

10、while & do-while


#include "math.h"

int main(int argc,constchar * argv[])

{

//    //求最大公约数和最小公倍数利用辗转相除法while

//    int x,y,num1,num2,temp;

//    printf("请输入俩个数:\n");

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

//    x=num1;

//    y=num2;

//    while(y!=0)

//    {

//        temp=x%y;

//        x=y;

//        y=temp;

//    }

//    printf("它们的最大公约数是%d\n",x);

//    printf("它们的最小公倍数是%d\n",num1*num2/x);

    //sin(x)=x-x^3/3!+x^5/5!-x^7/7!+...直到最后一项的绝对值小于1e-7时为止 do-while

   double s,t,x;

   int n;

    printf("please enter x:");

   scanf("%lf",&x);

    t=x;

    n=1;

    s=x;

   do{

        n=n+2;

        t=t*(-x*x)/((float)(n)-1)/((float)(n));

        s+=t;

    }while (fabs(t)>=1e-8);

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

   return0;

}


11、break & continue  & exit();
     

#include "stdlib.h"

int main(int argc,constchar * argv[])

{

    //10个球的面积 break & continue

   int radius;

   double area;

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

    {

        area=3.1416*radius*radius;

       if(area>=120.0)break;

       printf("square=%f\n",area);

    }

    printf("now radius=%d\n",radius-1);

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

    {

        area=3.1416*radius*radius;

       if(area<120.0)continue;

       printf("square=%f\n",area);

    }

    printf("now radius=%d\n",radius-1);

    //exit() 输入月数,打印出1999年的该月有几天

   int month;

   int day;

    printf("please enter the month number:");

   scanf("%d",&month);

   switch (month) {

       case1:

       case3:

       case5:

       case7:

       case8:

       case10:

       case12:day=31;break;

       case4:

       case6:

       case9:

       case11:day=30;break;

       case2:day=28;break;

       default:exit(0);

    }

    printf("199.%d has %d days.\n",month,day);

   return0;

}

12、利用上述实现功能:验证哥德巴赫猜想,即任一充分大的偶数,可以用俩个素数之和表示

#include <math.h>

int main(int argc,constchar * argv[])

{

   int i,j,num;

   int p,q,flagp,flagq;

    printf("please input a plus integer:");

   scanf("%d",&num);

   if(((num%2)!=0)||(num<=4))printf("input data error!\n");

   else{

        p=1;

       do{

            p=p+1;

            q=num-p;

            flagp=1;

            flagq=1;

           for(i=2;i<(int)(floor(sqrt((double)(p))));++i)

                {

                   if((p%i)==0)

                    {

                        flagp=0;

                       break;

                    }

                }

                j=2;

               while(j<=(int)(floor(sqrt((double)(q)))))

                {

                   if((q%j)==0)

                    {

                        flagq=0;

                       break;

                    }

                    j++;

                }

        }while(flagp*flagq==0);

       printf("%d=%d+%d\n",num,p,q);

    }

   return0;

}

参考结果:

please input a plus integer:39

input data error!

please input a plus integer:10

10=3+7


13、一维数组
除了基本类型数据(整型、字符型、实型),c语言还提供了构造类型的数据,它们有:构造类型、结构体类型、共用体类型。构造类型数据实际上是由基本数据类型按一定规则构成的,所以有时也称它们为导出类型。数组类型属于构造类型。

选择排序法的原理;从一堆数中先找出最小的将其标记;然后再在余下的数中找出最小的,标记并放在前一个标记数的后面;依次执行,完成排序。

//一维数组 选择排序

#include <stdio.h>

int main()

{

   int i,j,min,temp;

   int array[10];

    printf("please input ten integer:\n");

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

    {

       printf("array[%d]=",i);

       scanf("%d",&array[i]);

    }

    printf("the array is: ");

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

    {

       printf("%d ",array[i]);

    }

   printf("\n");

    //选择排序

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

    {

        min=i;

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

        {

           if(array[min]>array[j])

            {

                min=j;

            }

        }

        temp=array[i];

        array[i]=array[min];

        array[min]=temp;

    }

    printf("the sort result is:\n");

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

    {

       printf("%d ",array[i]);

    }

   printf("\n");

       return0;

}


14、二维数组
二维数组的下标和一维数组一样均是从0开始。二维数组以行-列矩阵的形式存储。第一个下标代表行,第二个下标代表列,这意味着按照在内存中的实际存储顺序访问数组元素时,右边的下标比左边的下标的变化快一些。
a是一个二维数组
第0行首地址 (第0行第0列地址)a[0]、*(a+0)、*a
*(a+1) 第一行第0列地址
第一行第2列元素地址 *(a+1)+2、a[1]+2、&a[1][2]
取第一行第2列元素的值  a[1][2]、*(a[1]+2)、*(*(a+1)+2)

/*

 4个学生每个学生学5门课程,要求输入课程名称,没个学生的学号和成绩

 1)求第一门课程的平均成绩

 (2)找出俩们成绩不及格的学生的学号及成绩、平均成绩

*/

void aver(char course[6][10],int stu[4][6]);

void low2(char course[6][10],int stu[4][6]);

int main()

{

    int i,j;

    int stu[4][6]={0};

    char course[6][10]={"",};

    printf("请输入5门课程\n");

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

    {

        scanf("%s",course[i]);

    }

    printf("课程是:\n");

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

    {

        printf("%s\t",course[i]);

    }

    printf("\n");

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

    {

        printf("请输入第%d个学生的学号及成绩:\n",i+1);

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

        {

            scanf("%d",&stu[i][j]);

        }

    }

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

    {

        printf("%s\t",course[i]);

    }

    printf("\n");

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

    {

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

        {

            printf("%d\t",stu[i][j]);

        }

        printf("\n");

    }

//    aver(course, stu);

    low2(course, stu);

    return 0;

}

void aver(char course[6][10],int stu[4][6])

{

    int i;

    int sum;

    double avg;

    int n;

    printf("请输入求哪门课程的平均成绩\n");

    scanf("%d",&n);

    while (n>5||n<1) {

        printf("课程号应该为(1-5!\n请重新输入:\n");

        scanf("%d",&n);

    }



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

    {

        sum+=stu[i][n];

    }

    avg=sum/4;

    printf("the  course is %s,the average is %5.2f\n",course[n],avg);

}

void low2(char course[6][10],int stu[4][6])

{

    int i=0,j=0,k=0,n=0,num=0,sum=0;;

    int s[4][2]={};

    double avg;

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

    {

        num=0;

        for(j=1;j<6;++j)

        {

            if(stu[i][j]<60)

            {

                num++;

                if(s[k][0]!=i)

                {

                    k++;

                    s[k][0]=i;

                    s[k][1]=num;

                }else{

                    s[k][1]=num;

                }

            }

        }

    }

    n=k;

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

    {

        sum=0;

        if(s[k][1]>2)

        {

            printf("学号为%d的学生有超过俩们的成绩不及格!\n该学生的成绩为:\n",stu[s[k][0]][0]);

            for(j=1;j<6;++j)

            {

                printf("%s:%d\n",course[j],stu[s[k][0]][j]);

                sum+=stu[s[k][0]][j];

                

            }

            avg=sum/5;

            printf("学号为%d的学生的平均成绩为:%5.2f\n",stu[s[k][0]][0],avg);

            printf("\n");


        }

    }

}


//矩阵倒置

int main()

{

   int array[10][10];

   int i,j,t,n;

    printf("please enter the size of array :");

   scanf("%d",&n);

    printf("please input the number of array:\n");

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

    {

       for (j=0; j<n;++j) {

           scanf("%d",&array[i][j]);

        }

    }

    printf("原数组为:\n");

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

    {

       for (j=0; j<n;++j) {

           printf("%d\t",array[i][j]);

        }

       printf("\n");

    }

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

    {

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

            t=array[i][j];

            array[i][j]=array[j][i];

            array[j][i]=t;

        }

    }

    printf("数组转制后为:\n");

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

    {

       for (j=0; j<n;++j) {

           printf("%d\t",array[i][j]);

        }

       printf("\n");

    }

   return 0;

}



//学生成绩操作
int main()
{

    float score[3][4]={{55,56,70,60},{80,50,90,81},{90,99,100,98}};

//    float s[12]={65,67,70,60,80,87,90,81,90,99,100,98};

//    average(*score, 12);

//    average(s, 12);

//    search(score, 1);

   low(score);

    return 0;

}

void average(float *p,int n)

{

   float* p_end;

   float sum=0.0,aver=0.0;

    p_end=p+n;

   for(;p<p_end;++p)

    {

        sum+=*(p);

    }

    aver=sum/n;

    printf("the average score is %5.2f\n",aver);

}

void search(float(*p)[4],int n)

{

   int i=0;

    printf("the score of NO.%d are:\n",n);

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

    {

       printf("%5.2f ",*(*(p+n)+i));

    }

   printf("\n");

}

void low(float (*p)[4])

{

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

//    int s[10]={100};

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

    {

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

        {

           if(*(*(p+i)+j)<60)

            {

                printf("the %d score of NO.%d is lower than 60!\n",j,i);

               search(p, i);

//                if(s[k]!=i)

//                {

//                    s[k]=i;

//                    k++;

//                }

            }

        }

    }

//    n=k;

//    for(k=0;k<n;++k)

//    {

//        printf("the score of NO.%d is lower than 60!\n",s[k]);

//        for(j=0;j<4;++j)

//        {

//            printf("%5.2f ",*(*(p+s[k])+j));

//        }

//        printf("\n");

//    }

}



    //打印平行四边形

   char str[10][10]={' '};

   int i,j,n;

    printf("input the size of array:");

   scanf("%d",&n);

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

    {

//        for(j=0;j<2*n;++j)

//        {

//            if(j<i)

//            {

//                str[i][j]=' ';

//            }else if(j<n+i){

//                str[i][j]='*';

//            }

//        }

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

        {

           str[i][j]='*';

        }

    }

    printf("平行四边形str\n");

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

    {

       for(j=0;j<2*n;++j)

        {

           printf("%c\t",str[i][j]);

        }

       printf("\n\n");

    }

    //通过二维数组打印空心菱形

//    char array[15][15];

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

//    printf("input the size of array:");

//    scanf("%d",&n);

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

//    {

//        for(j=0;j<n;++j)

//        {

//            if(i==0||i==n-1)

//            {

//                if(j==(n)/2)

//                {

//                    array[i][j]='*';

//                }else{

//                    array[i][j]=' ';

//                }

//            }else if(i==n/2){

//                if(j==0||j==n-1)

//                {

//                    array[i][j]='*';

//                }else{

//                    array[i][j]=' ';

//                }

//            }else if(i<n/2){

//                if(j<n/2)

//                {

//                    if(j==n/2-i)

//                    {

//                        

//                        array[i][j]='*';

//                    }else{

//                        array[i][j]=' ';

//                    }

//

//                }else{

//                    if(j==n/2+i)

//                    {

//                        array[i][j]='*';

//                    }else{

//                        array[i][j]=' ';

//                    }

//                }

//            }else{

//                if(j<n/2)

//                {

//                    if(j==i-n/2)

//                    {

//                        

//                        array[i][j]='*';

//                    }else{

//                        array[i][j]=' ';

//                    }

//                    

//                }else{

//                    if(j==n/2+(n-1-i))

//                    {

//                        array[i][j]='*';

//                    }else{

//                        array[i][j]=' ';

//                    }

//                }

//            }

//           

//        }

//    }

//            printf("数组array\n");

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

//            {

//                for(j=0;j<n;++j)

//                {

//                    printf("%c\t",array[i][j]);

//                }

//                printf("\n\n");

//            }


//打印一个n阶魔方阵,要求每一行每一列以及对角线之和均相等

//n阶魔方阵 (右上斜法)

int main()

{

   int array[16][16]={0};

   int i=0,j,k,m,n=0;

    m=1;

   while (m==1) {

        printf("请输入n(0<n<15),n为奇数!\n");

       scanf("%d",&n);

       if(n!=0&&n<=15&&n%2!=0)

        {

           printf("矩阵阶数是%d\n",n);

            m=0;

        }

    }

//建立魔方阵法一

    j=n/2;

    array[0][j]=1;

   for(k=2;k<=n*n;++k)

    {

        i--;

        j++;

       if(i<0&&j>n-1)

        {

            i=i+2;

            j--;

        }else{

           if(i<0)

            {

                i=n-1;

            }

           if(j>n-1)

            {

                j=0;

            }

        }

       if(array[i][j]==0)

        {

            array[i][j]=k;

        }else{

            i=i+2;

            j--;

            array[i][j]=k;

        }

    }

//建立魔方阵法2

    int s=1;

   int a[NUM][NUM];

   for(i=0;i<n;)

    {

       for(j=n/2;j<n;)

        {

            a[i][j]=s;

            s++;

            k=(n+i-1)%n;

            l=(j+1)%n;

            //判断下一个位置是否有值

           if(a[k][l]==0)

            {

                i=k;

                j=l;

            }elseif(a[++i][j]!=0){

               break;

            }

        }

    }

    


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

    {

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

        {

           printf("%d\t",array[i][j]);

        }

       printf("\n");

    }

   return0;

}


/*

 螺旋方阵

 */


#include<stdio.h>

#define N 15

int main()

{

   int i=0,j,n,k;

    printf("请输入要显示的NN的二维数组的宽度:\n");

    scanf("%d",&n);

   int sum=n*n;

   int s=1;

   int a[N][N];


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

    {

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

        {

            a[j][i]=s;

            s++;

        }

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

        {

            a[n-i-1][j]=s;

            s++;

        }

       for(j=n-i-1;j>i;--j)

        {

            a[j][n-i-1]=s;

            s++;

        }

       for(j=n-i-1;j>i;--j)

        {

            a[i][j]=s;

            s++;

        }

    }

   if(n%2==1)

    {

        a[n/2][n/2]=sum;

    }

    printf("%d%d的二维数组:\n\n",n,n);

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

    {

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

        {

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

        }

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

    }

}

/*

 杨辉三角

*/

#include<stdio.h>

#define N 20

int main()

{

   int i,j,n;

    printf("请输入要显示的行数:\n");

    scanf("%d",&n);

   int a[N][N];

    a[0][0]=1;

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

    {

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

        {

           if(0==j)

            {

                a[i][j]=1;

            }else{

                a[i][j]=a[i-1][j-1]+a[i-1][j];

            }

            

        }

    }

    printf("生成的%d阶杨辉三角如下:\n",n);

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

    {

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

        {

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

        }

        printf("\n");

    }

    

}

/*

 矩阵排序

*/

#include<stdio.h>

#define N 15

void exchange(int *p,int * q)

{

   int temp;

    temp=*p;

    *p=*q;

    *q=temp;

}

int main()

{

   int i,j,n,k=0;

   int a[N][N]={0};

   int t=0;

   int s=1;

    printf("请输入NN的矩阵的宽度,N应该为大于3的奇数!\n");

    scanf("%d",&n);

   while(n<4||n%2==0)

    {

        printf("您的输入有误!\n请重新输入NN的矩阵的宽度,N应该为大于3的奇数!\n");

        scanf("%d",&n);

    }

    printf("如果选择人为赋值请选1,默认赋值请选2:\n");

    scanf("%d",&t);

   while(t<1||t>2)

    {

        printf("您的选择有误!请重新选择赋值方式。\n如果选择人为赋值请选1,默认赋值请选2:\n");

        scanf("%d",&t);

    }

   switch(t)

    {

       case1:

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

            {

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

                {

                    printf("请输入第%d行的第%d个数!\n",i+1,j+1);

                    scanf("%d",&a[i][j]);

                }

            }

           break;

       case2:

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

            {

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

                {

                    a[i][j]=s;

                    s++;

                }

            }

           break;

        default:break;

    }

    printf("您输入的矩阵为:\n");

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

    {

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

        {

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

        }

        printf("\n");

    }

    //冒泡排序

   int a1[N*N]={0};

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

    {

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

        {

            a1[k]=a[i][j];

            k++;

        }

    }

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

    {

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

        {

           if(a1[j]>a1[j+1])

            {

                exchange(&a1[j],&a1[j+1]);

            }

        }

    }

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

    {

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

        {

            a[i][j]=a1[k];

            k--;

        }

    }

    printf("排序后的矩阵为:\n");

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

    {

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

        {

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

        }

        printf("\n");

    }

    exchange(&a[0][0],&a[n/2][n/2]);

    exchange(&a[0][0],&a[n-1][n-1]);

    exchange(&a[0][n-1],&a[n-1][n-2]);

    exchange(&a[n-1][0],&a[n-1][n-3]);

    exchange(&a[n-1][n-1],&a[n-1][n-4]);

    printf("改变后的矩阵为:\n");

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

    {

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

        {

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

        }

        printf("\n");

    }


   return0;

}

15、字符数组
在c语言中,文字信息作为字符串处理,而字符串又以字符数组对形式组织。字符数组需预先制定长度,以保证能存放足够长的文字信息。

//文本编辑器。空行退出

#define MAX 100

#define LEN 80

int main()

{

   char text[MAX][LEN];

   registerint t,i,j;//定义三个寄存器变量

   for(t=0;t<MAX;++t)

    {

       printf("%d:",t);

        gets(text[t]);

       if(!text[t][0])break;

    }

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

    {

       for(j=0;text[i][j];++j)

        {

            putchar(text[i][j]);

        }

       putchar('\n');

    }

   return0;

}

16、数组应用

//学生成绩查询

int main()

{

   int selsect;

   int i,j;

   int score[5][7];

   int avg=0;

   int sum=0;

   do{

        printf("本程序有4项功能:\n");

        printf("1、根据学号查询学生成句\n");

        printf("2、根据考试号统计成绩\n");

        printf("3、根据考试号和学号查询成绩\n");

       printf("4、成绩录入\n");

       printf("0、退出\n");

        printf("请输入选择(04\n");

       scanf("%d",&selsect);

       switch (selsect) {

           case0:

               printf("ok\n");

               exit(0);

               break;

           case1:

               printf("请输入学号:");

               scanf("%d",&i);

               for(j=1;j<7;j++)

                {

                   printf("%d科成绩是%d\n",j,score[i][j]);

                    sum+=score[i][j];

                }

                avg=sum/6;

               printf("学生的平均成绩是%d\n",avg);

               break;

           case2:

               printf("请输入考试号:");

               scanf("%d",&j);

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

                {

                   printf("%d号学生的成绩是%d\n",i,score[i][j]);

                    sum+=score[i][j];

                }

                avg=sum/4;

               printf("本科的平均成绩是%d\n",avg);

               break;

           case3:

               printf("请输入学号和考试号:");

               scanf("%d %d",&i,&j);

               printf("%d号学生的第%d科考试成绩是%d\n",i,j,score[i][j]);

               break;

           case4:

               printf("请输入成绩\n");

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

                {

                   for(j=1;j<7;j++)

                    {

                       scanf("%d",&score[i][j]);

                    }

                }

               break;

           default:

               break;

        }

    }while(1);

   return0;

}


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值