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);
    }


  • 相关阅读:
    一个传奇世界玩家对盛大传奇世界的看法
    详解Silverlight 2中的独立存储
    U盘几种工作模式的区别(ZIP,FDD,HDD)
    P2P之UDP穿透NAT的原理与实现(转)
    ASP.Net2.0 GridView 多列排序,显示排序图标,分页(转)
    NHibernate代码解析 SqlCommand SqlString 参数名后绑定
    Silverlight技术调查(转)
    对美国转嫁次贷危机的思考
    SQLite.Interop.DLL与System.Data.SQLite.dll比较
    JavaScript中“单实例模式(单值模型)”的实现
  • 原文地址:https://www.cnblogs.com/lytwajue/p/6811251.html
Copyright © 2011-2022 走看看