函数的三张表格

时间:2019-09-24 01:11来源: 操作系统
函数原型: #includestdio.h #includestring.h #includemalloc.h #includestdlib.h #define Max_SeqList 10  typedef struct{   int num;  }Student;      typedef struct{   Student * date;   int Length;      int ListLength; printf(C

函数原型:

#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#define Max_SeqList 10
 typedef struct{
  int num;
 }Student;
   
 typedef struct{
  Student * date;
  int Length;
     int ListLength;

printf(Control-String, item1, item2, ...);

 }SeqList;

表一 转换说明符及作为结果的打印输出

 

转 换 说 明

输 出

%a 浮点数、十六进制数字和p-记数法
%A 浮点数、十六进制数字和P-记数法
%c 一个字符
%d 有符号十进制整数
%e 浮点数、e-记数法
%E 浮点数、E-记数法
%f 浮点数,十进制记数法
%g 根据数值不同自动选择%f或者%e。%e格式在指数小于-4或者大于等于精度时使用
%G 根据数值不同自动选择%f或者%E。%E格式在指数小于-4或者大于等于精度时使用
%i 有符号十进制整数
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x 使用十六进制数字0f的无符号十六进制整数
%X 使用十六进制数字0F的无符号十六进制整数
%% 打印一个百分号

 void InitList(SeqList* L){//1.初始化顺序表
  L->date=(Student *)malloc(Max_SeqList*sizeof(Student));
  if(!L->date)
  printf("内存分配失败n");
  L->Length=0;
  L->ListLength=Max_SeqList;
  printf("顺序表创建成功n");
 }
    
 void ClearList(SeqList *L){//2.清空顺序表
  L->Length=0;
    L->ListLength=0;
  printf("顺序表清除成功");
 }

表二 printf() 修饰符

 int isEmpty(SeqList *L){//3.判断顺序表是否为空
 
  if(L->Length==0) return 0;
 else
  return 1;
}

修 饰 符

意 义

标志 五种标志(-、+、空格、#和0)都将在表三中描述,可以使用零个或多个标志
digit 字段宽度的最小值。如果该字段不能容纳要打印的数或者字符串,系统会使用更宽的字段
示例:”%4d”
.digit 精度。对于%e、%E和%f转换,是将要在小数点的右边打印的数字的位数。对于%g和%G转换,是有效数字的最大位数。对于%s转换,是将要打印的字符的最大数目。对于整数转换,是将要打印的数字的最小位数;如果必要,要使用前导零来达到这个位数。只使用“.”表示其后跟随一个零,所以%.f与%.0f相同。示例:“%5.2f”打印一个浮点数,他的字段宽度为5个字符,小数点后有两个数字
h 和整数转换说明符一起使用,表示一个short int或者unsigned short int类型数值
示例:“%hu”、“%hx”和“%6.4hd”
hh 和整数转换说明符一起使用,表示一个signed char或者unsigned char类型数值
示例:“%hhu”、“%hhx”和“%6.4hhd”
j 和整数转换说明符一起使用,表示一个intmax_t或uintmax_t值
示例:“%jd”和“%8jX”
l 和整数说明符一起使用,表示一个long int或者unsigned long int类型值
示例:“%ld”和“%8lu”
ll 和整数说明符一起使用,表示一个long long int或unsigned long long int类型值
示例:“%lld”和“%8llu”
L 和浮点转换说明符一起使用,表示一个long double值
示例:“%Lf”和“.4Le”
t 和整数转换说明符一起使用,表示一个ptrdiff_t值(与两个指针之间的差相对应的类型)
示例:“%td”和“ti”
z 和整数转换说明符一起使用,表示一个size_t值(sizeof返回的类型)
示例:“%zd”和“zx”

 int LengthList(SeqList *L){//4.顺序表的长度
 
 return L->ListLength;

表三 printf() 的标志

}

标 志

意 义

- 项目是左对齐的,也就是说,会把项目打印在字段的左侧开始处
示例:“%-20s”
+ 有符号的值若为正,则显示带加号的符号;若为负,则带减号的符号
示例:“%+6.2f”
有符号的值若为正,则显示时带前导空格;若为负,则带减号符号。+标志会覆盖空格标志
示例:“% 6.2f”
# 使用转换说明的可选形式。若为%o格式,则以0开始;若为%x和%X格式,则以0x或0X开始,对于所有的浮点形式,#保证了即使不限任何数字,也打印一个小数点字符。对于%g和%G格式,它防止尾随零被删除
示例:“%#o”、“%#8.0f”和“%+#10.3E”
0 对于所有的数字格式,用前导零而不是用空格填充字段宽度。如果出现-标志或者指定了精度则忽略该标志
示例:“0d”和“.3f”

    void TraverseList(SeqList *L){//5.遍历顺序表
 int i;
  for(i=0;i<L->Length;i++)
   printf("号码为:%dt",L->date[i]);
 }

 void InsertList(SeqList *L,int i,int e){//6.插入元素
  int k;
  if(L->Length==Max_SeqList) printf("顺序表已经满了");
  if(i<1||i>L->Length+1) printf("插入位置无效");
  for(k=L->Length-1;k>=i-1;k--)
   L->date[k+1]=L->date[k];
      L->date[i-1].num=e;
   L->Length++;
   printf("插入完成");
 }

 void DeleteList (SeqList *L,int i){//7.删除元素
   int k;
  if(L->Length==0) printf("顺序表已经满了");
  if(i<1||i>L->Length+1) printf("删除位置无效");
  //*e=L->date[i-1].num;
  for(k=i;k<=L->Length;k++){
     L->date[k-1]=L->date[k];
   L->Length--;
  }
}

 void LocateList(int e, SeqList *L){//8.查找元素
   int i=0;
   while(i<L->Length&&L->date[i].num!=e)
   i++;
  if(i<L->Length)
   printf("找到了,位置在%d",i+1);
  else
   printf("找不到");
}    

 

 

int main(){
 
    int choice;
 int m=0;
    int n=0;
 int z=0;
 int j=0;
 SeqList *List;
 List=(SeqList*)malloc(sizeof(SeqList));
    while(1){
  printf("------------TEST------------n");
  printf("1.初始化表n2.清空顺序表n3.判断顺序表是否为空n4.顺序表的长度n5.遍历顺序表n6.插入元素n7.删除元素n8.查找元素");
  printf("请选择:");
  scanf("%d",&choice);
  switch(choice){
      case 1:
     InitList(List);

    break;
      case 2:ClearList(List);break;
   case 3:
    if(isEmpty(List))
    printf("表不为空n");
    else
    printf("表为空n");
    break;
   case 4:printf("表的长度为%d",LengthList(List)); break;
   
   case 5: TraverseList(List); break;
   case 6:
    
    printf("输入插入位置n");
    scanf("%d",&m);
    printf("输入插入值n");
    scanf("%d",&n);
       InsertList(List,m,n);
             break;
   case 7:
    printf("输入你要删除的元素位置:n");
    scanf("%d",&z);
    DeleteList (List,z);
    printf("元素已删除");
    break;
   case 8:
    
    printf("请输入你要查找的元素:");
    scanf("%d",&j);
     LocateList(j, List);
    break;
   
  
  }

 }

 return 0;
}

编辑: 操作系统 本文来源:函数的三张表格

关键词: