本周仅仅进行一个程序,曾经的一个程序。
自己定义例如以下函数,输入n(n<46)个学生的姓名和成绩,顺序输出这n个学生的姓名和成绩,并输出最高成绩的姓名和成绩。预习struct结构体,思考怎样改进这一程序。
//为count个学生输入姓名和成绩void getStudentsInfo(char names[][20], int scores[] , int count);void getStudentsInfo(char* names[], int scores[] , int count);//依次打印count个学生的姓名和成绩
void printStudentsInfo(char* names[], int scores[],int count);
//获取最高成绩的学生的index
int getIndexOfMaxScore(int scores[],int count);
知识点:
1 字符串数组用于处理多个人的姓名
2 数组作为函数的參数
the core code:
/* Note:Your choice is C IDE */
#include "stdio.h"void inputStudents(char name[][20],int score[],int num);
void outputStudents(char name[][20],int score[],int num);
main()
{char name[45][20];int score[45];inputStudents(name,score,2);outputStudents(name,score,2);}void inputStudents(char name[][20],int score[],int num){int i ;for(i=0;i<num;i++)scanf("%s %d",name[i],&score[i]);
}
void outputStudents(char name[][20],int score[],int num){int i ;for(i=0;i<num;i++)printf("%s %d",name[i],score[i]);
}
an example :
/* Note:Your choice is C IDE */
#include "stdio.h"
#define N 45int inputSS(char names[][20],int score[],int num);
void printSS(char names[][20],int score[],int num);
void getMAX(char names[][20],int score[],int num);main()
{char names[N][20];int score[N];int num=0; int choose;printf("What do you want to do: INPUT(1),OUTPUT(2),MAX(3),EXIT(0):");scanf("%d",&choose);do{switch(choose){case 1: num = inputSS(names,score,num);break;case 2:printSS(names,score,num);break;case 3:getMAX(names,score,num);}printf("\nWhat do you want to do: INPUT(1),OUTPUT(2),MAX(3),EXIT(0):");scanf("%d",&choose);}while(choose != 0);}
int inputSS(char names[][20],int score[],int num){int n,i;printf("\nThis Time, How many students do you want to input :");scanf("%d",&n);if((n+num)>N || n <1){printf("not valid sum\n");return -1;}printf("NOW INPUT AS ( NAME SCORE ):\n");for(i=0;i<n;i++){printf("%d. ",i);scanf("%s %d",&names[i+num],&score[i+num]);}printf("THIS TIME , INPUT IS OVER\n");return num+n;
}
void printSS(char names[][20],int score[],int num){int i ;if(num==0) {printf("NO STUDENTS NOW\n");return;}printf("\nNOW , THE STUDENTS SCORES AS FOLLOWS \n");for(i = 0 ;i<num;i++)printf("%2d. name:%10s score:%3d\n",i,names[i],score[i]);
}
void getMAX(char names[][20],int score[],int num){int i ,max_index,max_score;if(num==0) {printf("NO STUDENTS NOW\n");return;}max_index=0;max_score=score[0];for(i = 1 ;i<num;i++)if( score[i] > max_score ){max_score = score[i];max_index = i;}printf("The Top Score is %d by %s \n",score[max_index],names[max_index]);}
=====================华丽的切割线====================================================
有非常多知识点须要大家复习。以下是一些比較cute的程序。弄懂啊弄懂
//0
#include "stdio.h"
void main(){int i=0, a[]={3,4,5,4,3};do{a[i]++;}while(a[++i]<5);for(i=0;i<5;i++)printf("%d",a[i]) ;
}//1
#include "stdio.h"
void main(){int a = 7;int b = 8;printf ( "a&b = %d\n",a&b);printf( "a&&b = %d\n",a&&b);
}
//2
#include "stdio.h"
void main(){int i ;for(int i = 0; i<4; i++){if( i==2)break;printf("%d ",i);}printf("\n");for(int i = 0; i<4; i++){if( i==2)continue;printf("%d ",i);}printf("\n");
}
//3
#include "stdio.h"
void main(){int sum=0,item=0;while(item<7){item++;sum+=item;if(sum==7)break; }printf("%d\n",sum);
}
//4
#include "stdio.h"
void main(){int a[]={1,2,3,4,5,6,7,8};int i,x ,*p;x=1;p=&a[3];for( i=0; i<3; i++ )x *= *(p+i);printf("x=%d\n",x);
}
//5
#include "stdio.h"
void main(){int i=5,x=1;for(;i<5;i++) x=x+1;printf("%d\n",x);
}
//6
#include "stdio.h"
void main(){int x,y;for (x=0, y=0 ; (y!=123) &&(x<4); x++) y++;printf("x=%d,y=%d\n",x,y);
}
//7
#include "stdio.h"
void main(){int a[7]={3,4,5,6,7,8,9};int *p,*q;int i,x;p=&a[0];q=&a[6];for (i=0;i<3;i++)if(*(p+i)==*(q-i) )x=*(p+i)*2;
}
//8
#include "stdio.h"
void main(){int a[5][5];printf("&a[3][2]-a=%d\n",&a[3][2]-a);
}
//9
#include "stdio.h"
void main(){int i=2,n=2;for(;i<5;i++){continue;n=n+i;}printf("%d\n",n);
}