zoukankan      html  css  js  c++  java
  • 字符处理之一

    问题

      输入一串数用逗号隔开:如果为2个以上则输出他们的最大和次大值;如果为一个数则输出他本身;如果直接回车没数则输出0

     

    容器的使用 vector 

    动态开辟空间malloc + realloc

    终端输入的读取字符读入 + 字符类型转换(ch - '0')

    /*读入一批正整数存入到数组中,求他们的最大值和次大值*/
    1
    #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #include <conio.h> 5 #include"iostream" 6 #include"vector" 7 using namespace std; 8 9 #define INITSIZE 5 10 typedef struct 11 { 12 int *elem; 13 int length; 14 int listsize; 15 }Sqlist; 16 17 void Input(Sqlist *l) 18 { 19 int i; 20 int j=0; 21 char ch; 22 int tmp = 0; 23 vector<int> vec; 24 printf("Please inpit numbers: "); 25 l->length=0; 26 l->listsize=INITSIZE; 27 l->elem=(int *)malloc(l->listsize*sizeof(int)); //动态开辟存储空间,动态输入数据,回车结束 28 i=0; 29 while(1) 30 { 31 if(l->length>=l->listsize) 32 l->listsize+=INITSIZE; 33 l->elem=(int*)realloc(l->elem,l->listsize*sizeof(int)); 34 if(l->elem==NULL) 35 { 36 printf("Error! "); 37 exit(0); 38 } 39 40 scanf("%c",&ch); //字符读入,转换成int 41 if(ch == ',') 42 { 43 vec.push_back(tmp); 44 l->elem[i]=tmp; 45 l->length++; 46 i++; 47 tmp = 0; 48 } 49 else if(ch == ' ') 50 { 51 vec.push_back(tmp); 52 l->elem[i]=tmp; 53 l->length++; 54 break; 55 } 56 else 57 { 58 tmp = tmp * 10 +ch - '0'; //字符读入,转换成int 59 j++; 60 } 61 } 62 63 if(l->elem[0]==0&&j==0) //j用来判断有没有数字的输入,排除只输入一个0时的bug 64 l->length=0; 65 } 66 67 void Sort(Sqlist *l,int *m1,int *m2) 68 { 69 int i,j; 70 int t; 71 for(i=0;i<l->length;i++) 72 { 73 for(j=0;j<l->length;j++) 74 if(l->elem[j]<l->elem[j+1]) 75 { 76 t=l->elem[j]; 77 l->elem[j]=l->elem[j+1]; 78 l->elem[j+1]=t; 79 } 80 } 81 82 for(i=0;i<l->length;i++) 83 printf("%d ",l->elem[i]); 84 85 *m1=l->elem[0]; 86 *m2=l->elem[1]; 87 } 88 89 void Output(int max,int min) 90 { 91 printf(" the first max is :%d ",max); 92 printf(" the second max is :%d ",min); 93 } 94 95 void main() 96 { 97 int max,min; 98 Sqlist l; 99 Input (&l); 100 if(l.length==0) 101 { 102 printf(" 未输入原始数据,结果为0! "); 103 } 104 else if(l.length==1) 105 printf(" 只输入了一个数字,最大值等于次大值,其值为%d ",l.elem[0]); 106 else 107 { 108 Sort (&l,&max,&min); 109 Output(max,min); 110 free(l.elem); 111 } 112 printf(" 按任意键继续....."); 113 getch(); 114 }

     

     

  • 相关阅读:
    使用DataList进行ItemDataBound时出来重复绑定
    往一个数据添加另外一个数据表里面的数据
    在ServU配置ODBC过程记录(一)
    在RowDeleting中GridViewDeleteEventArgs e的RowIndex获得值错误的问题
    在Master母版页中通过FindControl()方法获取服务器控件
    经典的间隔时间滚动新闻(图片),可控制滚动
    为枚举类型添加描述信息 this 扩展 泛型约束 位运算[转]
    SQL Server 获取插入记录后的ID(自动编号)
    Shapes
    CSSFriendlyAdapter 的一个Bug
  • 原文地址:https://www.cnblogs.com/xymqx/p/3700201.html
Copyright © 2011-2022 走看看