zoukankan      html  css  js  c++  java
  • C程序设计Week12晚上练习


    本周仅仅进行一个程序,曾经的一个程序。


    自己定义例如以下函数,输入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 45
    
    int 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("
    What 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("
    This Time, How many students do you want to input :");
    	scanf("%d",&n);
    	
    	if((n+num)>N || n <1){
    	  printf("not valid sum
    ");
    	  return -1;
    	}
    	printf("NOW INPUT AS ( NAME SCORE ):
    ");
    	for(i=0;i<n;i++){
    	  printf("%d. ",i);
    	  scanf("%s %d",&names[i+num],&score[i+num]);
    	}
    	printf("THIS TIME , INPUT IS OVER
    ");
    	return num+n;
    }
    void printSS(char names[][20],int score[],int num){
    	int i ;
    	if(num==0) {
    		printf("NO STUDENTS NOW
    ");
    		return;
    	}
    
    	printf("
    NOW , THE STUDENTS SCORES AS FOLLOWS 
    ");
    	
    	for(i = 0 ;i<num;i++)
    	  printf("%2d. name:%10s score:%3d
    ",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
    ");
    		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 
    ",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
    ",a&b);
       printf( "a&&b = %d
    ",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("
    ");
     for(int i = 0; i<4; i++){
          if( i==2)
             continue;
          printf("%d ",i);
       }
       printf("
    ");
    }
    //3 
    #include "stdio.h"
    void main(){
      int sum=0,item=0;
      while(item<7){
        item++;
        sum+=item;
        if(sum==7)
          break;  }
      printf("%d
    ",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
    ",x);
    }
    //5 
    #include "stdio.h"
    void main(){
      int i=5,x=1;
      for(;i<5;i++) x=x+1;
      printf("%d
    ",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
    ",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
    ",&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);
    }


  • 相关阅读:
    链表--判断一个链表是否为回文结构
    矩阵--“之”字形打印矩阵
    二叉树——平衡二叉树,二叉搜索树,完全二叉树
    链表--反转单向和双向链表
    codeforces 490C. Hacking Cypher 解题报告
    codeforces 490B.Queue 解题报告
    BestCoder19 1001.Alexandra and Prime Numbers(hdu 5108) 解题报告
    codeforces 488A. Giga Tower 解题报告
    codeforces 489C.Given Length and Sum of Digits... 解题报告
    codeforces 489B. BerSU Ball 解题报告
  • 原文地址:https://www.cnblogs.com/lytwajue/p/6811251.html
Copyright © 2011-2022 走看看