精华内容
下载资源
问答
  • C语言程序设计项目教程项目二:项目C语言程序设计项目教程.pdf,C语言言程序序设计项目教教程 项目一共分为两个任务 项目一 欢迎进入C语言世界 任务一 熟悉C开发环境 任务二 创建简...|下载前务必先预览,自己验证...
  • 江西理工大学信息工程学院教案 C语言程序设计A 课程名称C语言程序设计A 教学内容函数 教材章节 第8章 授课学时2学时? 教学目的 了解函数的递归调用 掌握局部变量与全局变量的定义正确理解变量的作用范围 掌握自顶向...
  • 项目一 初识C语言 初识C语言 项目说明 本项目通过输出学生的基本信息引领学习者进入C语言的学习主要内容包括对C语言编译器Visual C++ 6.0的使用C程序的构成和C语言特性三方面内容通过这3个任务的学习使学习者对C语言...
  • Python应用程序设计3.1 数字类型目录12数字类型概述数值处理函数 数字类型概述Python有三种数字类型分别是整数类型浮点数类型和复数类型例如某学生的年龄23为整数类型他所学课程Python程序设计基础的成绩94.5为...
  • 广东理工职业学院 邱炳城 2008.12 * Visual 程序设计实验 实验8 猜牌游戏 * 功能描述 模拟三张牌的猜牌游戏有三张牌两张梅花10和一张红桃K游戏者在三张牌中猜出哪一张是红桃K若猜对积分增加否则减少积分为0时游戏...
  • 第7章 Web Service技术 ;本章学习目标;7.1 Web Service 概述;7.1.1 Web Service简介;7.1.1 Web Service简介;7.1.1 Web Service简介;7.1.1 Web Service简介;7.1.1 Web Service简介;7.1.1 Web Service简介;...
  • 实用标准文案 实用标准文案 精彩文档 精彩文档 程序设计与算法综合实习I 个人物品管理程序2015.05.16题 目: 班 级: 学生学号: 学生姓名 指导老师: 提交时间 成 绩: 个人物品管理程序 2015.05.16 评分项目 得分 功能...
  • 本教材以两轮智能移动机器人工程项目为主线,通过循序渐进的构建智能机器人的智能控制器和传感器电路,将单片机外围接口特性、内部结构原理、应用设计方法和C语言程序设计等知识通过先项目实践、后总结归纳的方式...
  • C语言程序设计之通讯录

    万次阅读 多人点赞 2018-01-20 10:23:52
    C语言的学习过程中,经常会让我们自己编写一个小项目,其中,通讯录的编写就是其中的一个经典作业。下面我就献上自己编写的通讯录代码。 注:本程个人亲测有效,没有任何问题,可以实现以下的基本的功能。  1:...

    在C语言的学习过程中,经常会让我们自己编写一个小项目,其中,通讯录的编写就是其中的一个经典作业。下面我就献上自己编写的通讯录代码。

    注:本程个人亲测有效,没有任何问题,可以实现以下的基本的功能。

          1:添加个人信息;

          2:查询个人信息,可供两种选择方法,一种按姓名查询,一种按电话号码查询;

          3:删除个人信息;

          4:修改个人信息;

          5:实现信息排序;

          6:输出全部信息;

          7:采用文件形式对通讯录进行操作,包括  写入文件 和  读取文件  ,从而保证能对添加的联系人进行保存。即在下一次打开vim编辑器的时候,依旧能看到上次添加的联系人的相关信息。

    #include <stdio.h>
    #include <stdlib.h>
    #include<string.h>
    #define FALSE 0
    #define TRUE 1
    #define MAXSIZE 20
    typedef int Status;
    typedef char Elemtype;
    typedef struct Node
    {
        Elemtype name[MAXSIZE];
        Elemtype number[MAXSIZE];
        Elemtype sex[MAXSIZE];
        struct Node *next;
    }Node;
    typedef Node *Linklist;
    
    Status Inserlist(Linklist *Lp);  //插入联系人
    void  Initlist(Linklist *Lp);//对链表进行初始化
    void mydisplay(Linklist *Lp); //显示通讯录
    void Deletelist(); //删除联系人
    Status Findlist(Linklist *Lp); //查找联系人
    void Reviselist(); //修改联系人
    Status Sortlist();//对通讯录进行排序
    Status Length();//判断文件字符个数
    void savelinkman();//保存链表中的结点到文件
    void loadlinkman(Linklist Lp);//加载联系人
    
    
    
    int main()
    {
        printf("*************************\n");
        Linklist Lp;
        Initlist(&Lp);
        loadlinkman(Lp);//调用加载联系人到链表的函数,确保显示联系人的时候,链表不为空
        int sel;
        Elemtype a[MAXSIZE],b[MAXSIZE];
        while(1)
        {
    	printf("\t\tmenu: \n");
    	printf("\t\t1:添加联系人\n");
    	printf("\t\t2:查找联系人\n");
    	printf("\t\t3:删除联系人\n");
    	printf("\t\t4:修改联系人\n");
    	printf("\t\t5:显示联系人\n");
    	printf("\t\t6:对通讯录进行排序\n");
    	printf("\t\t7:保存并退出通讯录\n");
    	printf("请输入要执行的功能所对应的序号,以回车键结束!\n");
    	scanf("%d",&sel);
    	getchar();
    	switch(sel)
    	{
    	    case 1:
    	        Inserlist(&Lp);
    		printf("*************************\n");//无实际意义,仅为输出界面美化
    		break;
    	    case 2:
    		Findlist(&Lp);
    		printf("*************************\n");
    		break;
    	    case 3:
    		Deletelist(&Lp);
        		printf("*************************\n");
            	break;
    	    case 4:
    	        Reviselist(&Lp);
                    printf("************************\n");
    		break;
    	    case 5:
    		mydisplay(&Lp);
    	    	printf("*************************\n");
             	break;
    	    case 6:
    		Sortlist(&Lp);
    		printf("**************************\n");
    		break;
    	    case 7:
    		printf("*************************\n");
    	       	savelinkman(Lp);
                    system("clear");
                    printf("成功退出!\n联系人已保存!\n");
                    return;
    
    	    default:
    	      	break;   
    
    	}
        }
        return 0;
    }
    
    /***********初始化***********/
    void  Initlist(Linklist *Lp)
    {
        Node *p=(Node *)malloc(sizeof(Node));
        if (p==NULL)
        {
    	printf("申请失败");
    	return;
        }
        else
        {
    	*Lp=p;
    	p->next==NULL;
        }
    }
    
    /************添加联系人***********/
    Status Inserlist(Linklist *Lp)//添加联系人
    {
       Node *p=(Node *)malloc(sizeof (Node));
        if(p==NULL)
        {
    	printf("申请失败");
    	return FALSE;
        }
        else
        {
          Elemtype a[MAXSIZE];
          Elemtype b[MAXSIZE];
          Elemtype c[MAXSIZE];
          printf("请输入要保存的联系人名字:\n");
          scanf("%s",a);
          printf("请输入要保存的联系人号码:\n");
          scanf("%s",b);
          printf("请输入要保持的联系人性别:\n");
          scanf("%s",c);
    
          Linklist L=*Lp;
          while(L!=NULL && L->next!=NULL)
          {
    	  L=L->next;
          }
          strcpy(p->name,a);
          strcpy(p->number,b);
          strcpy(p->sex,c);
          L->next=p;
          p->next=NULL;
        }
    }
    
    /***********显示通讯录*********/
    void mydisplay(Linklist *Lp)//显示通讯录
    {
        printf("姓名           号码          性别 \n");
        Linklist l=(*Lp)->next;
        while(l!=NULL)
        {
    	printf("%-15s%-15s%-15s\n",l->name,l->number,l->sex);
    	l=l->next;
        }
    }
    
    /************查找联系人***********/
    Status Findlist(Linklist *Lp)//查找联系人
    {
        printf("请输入查询方式:\n 1:按姓名查询\n 2:按电话号码查询\n");
        int c=0;
        int sel;
        Elemtype a[MAXSIZE];
        Elemtype b[MAXSIZE];
        while(1)
        {
          scanf("%d",&sel);
          getchar();
          switch(sel)
        {
    	case 1 :
    	    printf("请输入要查询的联系人姓名:\n");
    	    scanf("%s",a);
    	    Linklist p=(*Lp)->next;
    	    while(p!=NULL)
    	    {
    		if(strcmp(p->name,a)==0)
    		{
    		    printf("姓名           号码          性别\n");
    		    printf("%-15s%-15s%-15s\n",p->name,p->number,p->sex);
    		    c=1;
    		}
    		p=p->next;
    	    }
    	    if(c==0)
    	    {
    		printf("该联系人不存在的哟!\n");
    	    }
    	    return;
    
    	case 2 :
        	    printf("请输入要查询人的电话号码:\n");
        	    scanf("%s",b);
    	    Linklist q=(*Lp)->next;
    	    while(q!=NULL)
    	    {
    	     	if(strcmp(q->number,b)==0)
    	      	{
    	    	    printf("姓名           号码          性别\n");
    	    	    printf("%-15s%-15s%-15s\n",q->name,q->number,q->sex);
    	    	    c=1;
    	      	}
    		q=q->next;
    	    }
    	    if(c==0)
    	    {	
         		printf("该电话号码不存在的哟!\n");
    	    }
    	    return;
    
    	default :
    	    printf("无此查询方式\n");
    	    return;
        }
        }
    }
    
    /*************删除联系人**************/
    void Deletelist(Linklist *Lp)//删除联系人
    {
        if( (*Lp)->next==NULL )
        {
    	printf("当前通讯录为空,无法执行!\n");
        }
        else
        { 
           	int b=0;
            Elemtype a[MAXSIZE];
            printf("请输入要删除的联系人\n");
            scanf("%s",a);
            Linklist q;
            Linklist p=*Lp;
            while(p!=NULL && p->next!=NULL)
    	{
    	    if(strcmp(p->next->name,a)==0)
    	    {
    	       	q=p->next;
    	        p->next=p->next->next;
    	        free(q);
    	        b=1;
    	    }
       	    p=p->next;
            }
           	if(b==0)//判断循环是否执行,没执行的话,说明该联系人不存在。
        	printf("该联系人不存在的哟!\n");
        }
    }
    
    /***********修改联系人***********/
    void Reviselist(Linklist *Lp)//修改联系人
    {
        Node *q=(Node *)malloc(sizeof (Node));
        if(q==NULL)
        {
    	printf("申请失败");
        }
    
        if((*Lp)->next==NULL)
        {
    	printf("当前通讯录为空,无法执行!\n");
        }
        else
        {
    	int i=0;
    	Elemtype a[MAXSIZE];
    	Elemtype b[MAXSIZE];
    	Elemtype c[MAXSIZE];
    	Elemtype d[MAXSIZE];
    	printf("请输入要修改的联系人姓名:\n");
    	scanf("%s",a);
    	Linklist h;
    	Linklist p=*Lp;
    
    	while(p!=NULL && p->next!=NULL)
    	{
    	    if(strcmp(p->next->name,a)==0)
    	    {
    		printf("请输入修改后的联系人姓名:\n");
    		scanf("%s",b);
    		printf("请输入修改后的联系人号码:\n");
    		scanf("%s",c);
    		printf("请输入修改后的联系人性别:\n");
    		scanf("%s",d);
    	        strcpy(q->name,b);
                    strcpy(q->number,c);
    		strcpy(q->sex,d);
    	        h=p->next;
    		q->next=p->next->next;
    	    	p->next=q;
    
    		free(h);
    		i=1;
    	    }
    	    p=p->next;
    	}
    	if(i==0)
    	    printf("你要修改的联系人不存在的哟!\n");
         }
    }
    
    
    /**********对联系人进行排序***********/
    Status Sortlist(Linklist *Lp)//使用冒泡排序对通讯录进行排序
    {
        if(*Lp==NULL)
        {
    	printf("当前通讯录为空!\n");
    	return FALSE;
        }
        char name[20];
        Node tmp,*r,*p,*q;
        r=(*Lp)->next;
        while(r)
        {
        	p=r;
    	q=r->next;
    	while(q)
    	{
    	    if(( strcmp(p->name,q->name)>0 ))
    	    {
    		strcpy(tmp.name,q->name);
    		strcpy(q->name,p->name);
    		strcpy(p->name,tmp.name);
    
    	    	strcpy(tmp.number,q->number);
    		strcpy(q->number,p->number);
    		strcpy(p->number,tmp.number);
    
    	    	strcpy(tmp.sex,q->sex);
    		strcpy(q->sex,p->sex);
    		strcpy(p->sex,tmp.sex);
    	    }
    	    q=q->next;
    	}
    	r=r->next;
        }
    
        printf("姓名           号码          性别\n");
        Linklist l=(*Lp)->next;
        while(l!=NULL)
        {
    	printf(" %-15s%-15s%-15s\n",l->name,l->number,l->sex);
    	l=l->next;
        }
    
        return TRUE;
    }
    
    
    Status Length(FILE *f)  //文件字符个数
    {
        int length;
        fseek(f,0,2);
        length = ftell(f);
        rewind(f);
    
        return length;
    }
    
    
    void savelinkman(Linklist Lp)  //保存链表中的各节点到文件
    {
        FILE *file=fopen("通讯录","w+");
        if(file==NULL)
        {
    	perror("fopen1");
    	exit(1);
        }
    
        char name[MAXSIZE]={0};
        char number[MAXSIZE]={0};
        char sex[MAXSIZE]={0};
    
        Linklist temp = Lp;
        while(temp->next!=NULL)
        {
    	strcpy(name,temp->next->name);
    	strcpy(number,temp->next->number);
    	strcpy(sex,temp->next->sex);
    
    	if(fwrite(name,sizeof(char),20,file)==EOF)
    	{
    	    perror("fwrite1");
    	    fclose(file);
    	    exit(2);
    	}
    
    	if(fwrite(number,sizeof(char),20,file)==EOF)
    	{
    	    perror("fwrite2");
    	    fclose(file);
    	    exit(3);
    	}
    
    	if(fwrite(sex,sizeof(char),20,file)==EOF)
    	{
    	    perror("fwrite3");
    	    fclose(file);
    	    exit(4);
    	}
    
    	memset(name,0,20);
    	memset(number,0,20);
    	memset(sex,0,20);
    
    	temp=temp->next;
        }
        fclose(file);
    }
    
    
    void loadlinkman(Linklist Lp)  //加载文件中的联系人到链表中
    {
        FILE *file=fopen("通讯录","a+");
        if(file==NULL)
        {
    	perror("fopen2");
    	fclose(file);
    	exit(5);
        }
    
        char buffer1[MAXSIZE]={0};
        char buffer2[MAXSIZE]={0};
        char buffer3[MAXSIZE]={0};
    
        int len=Length(file);
        int i=0;
        while(i<(  len/(3*MAXSIZE) ) )
        {
    	if(fread(buffer1,sizeof(char),20,file)==EOF)
    	{
    	    perror("fread1");
    	    fclose(file);
    	    exit(6);
    	}
    
    	if(fread(buffer2,sizeof(char),20,file)==EOF)
    	{
    	    perror("fread2");
    	    fclose(file);
    	    exit(7);
    	}
    
    	if(fread(buffer3,sizeof(char),20,file)==EOF)
    	{
    	    perror("fread3");
    	    fclose(file);
    	    exit(8);
    	}
    
    	Linklist p=(Linklist)malloc(sizeof(Node));
    	if(p==NULL)
    	{
    	    return;
    	}
    	else 
    	{
    	    strcpy(p->name,buffer1);
    	    strcpy(p->number,buffer2);
    	    strcpy(p->sex,buffer3);
    
    	    memset(buffer1,0,20);
    	    memset(buffer2,0,20);
    	    memset(buffer3,0,20);
    
    	    Linklist temp=Lp;
    	    while(temp->next!=NULL)
    	    {
    		temp=temp->next;
    
        	    }
    	    temp->next=p;
    	    p->next=NULL;
    	}
    	i++;
        }
    }
    
    ps:都是本人一个一个码的,希望能够相关学习的小伙伴提供一些参考,而不是照抄照搬,代码的能力培养永远与自己敲代码的行数成正相关。

         最后,希望走过路过的给个赞呗,哈哈(标准式吆喝!)



    展开全文
  • 本教材以两轮智能移动机器人工程项目为主线,通过循序渐进的构建智能机器人的智能控制器和传感器电路,将单片机外围接口特性、内部结构原理、应用设计方法和C语言程序设计等知识通过先项目实践、后总结归纳的方式...
  • 1 // 个人所得税计算器if语句版.cpp: 2 问题描述:https://blog.csdn.net/sxhelijian/article/details/43918271 3 // 4 5 #include "stdafx.h" 6 7 8 int main() 9 { 10 double dSal...

    对比笔者和老师的code

    笔者:

     1 // 个人所得税计算器if语句版.cpp: 
     2 问题描述:https://blog.csdn.net/sxhelijian/article/details/43918271
     3 //
     4 
     5 #include "stdafx.h"
     6 
     7 
     8 int main()
     9 {
    10     double dSalary, dTax = 0, dNetIncome = 0;
    11     printf("请输入您本月的收入总额(元):");
    12     scanf_s("%lf", &dSalary);
    13     // 下面求解应缴个人所和税dTax和税后收入dNetIncome  
    14 
    15     if (dSalary <= 3500)
    16     {
    17         dTax = 0;
    18         dNetIncome = dSalary;
    19     }
    20     else
    21     {
    22         if (dSalary <= 5000)
    23         {
    24             dTax = (dSalary - 3500) *3.0 / 100 - 0;
    25             dNetIncome = dSalary - dTax;
    26         }
    27         else
    28         {
    29             if (dSalary <= 8000)
    30             {
    31                 dTax = (dSalary - 3500) *10.0 / 100 - 105;
    32                 dNetIncome = dSalary - dTax;
    33             }
    34             else
    35             {
    36                 if (dSalary <= 12500 )
    37                 {
    38                     dTax = (dSalary - 3500) *20.0 / 100 - 555;
    39                     dNetIncome = dSalary - dTax;
    40                 }
    41                 else
    42                 {
    43                     if (dSalary <= 38500)
    44                     {
    45                         dTax = (dSalary - 3500) *25.0 / 100 - 1005;
    46                         dNetIncome = dSalary - dTax;
    47                     }
    48                     else
    49                     {
    50                         if (dSalary <= 58500)
    51                         {
    52                             dTax = (dSalary - 3500) *30.0 / 100 - 2755;
    53                             dNetIncome = dSalary - dTax;
    54                         }
    55                         else
    56                         {
    57                             if (dSalary <= 83500)
    58                             {
    59                                 dTax = (dSalary - 3500) *35.0 / 100 - 5505;
    60                                 dNetIncome = dSalary - dTax;
    61                             }
    62                             else
    63                             {
    64                                 dTax = (dSalary - 3500) *45.0 / 100 - 13505;
    65                                 dNetIncome = dSalary - dTax;
    66                             }
    67                         }
    68                     }
    69                 }
    70             }
    71         }
    72     }
    73 
    74 
    75     printf("您本月应缴个人所和税 %.2lf 元,税后收入是 %.2lf 元。\n", dTax, dNetIncome);
    76     printf("依法纳税,共享繁荣。谢谢使用!\n");
    77     return 0;
    78 }

     

    老师:

     1 #include <stdio.h>  
     2 int main ( )  
     3 {  
     4     double dSalary,dTax=0,dNetIncome=0; //请欣符合匈牙利命名法的变量名  
     5     double dValue;   //在模板基础上加一个变量,表示超出起征点的收入  
     6     double dRate, dOffset;  //分别表示税率和速算扣除数  
     7     printf("请输入您本月的收入总额(元):");  
     8     scanf("%lf", &dSalary);  
     9     // 下面求解应缴个人所和税dTax和税后收入dNetIncome  
    10     dValue = dSalary - 3500;   //在起征点基础上考虑纳税  
    11     if(dValue <= 0.0)  
    12         dTax = 0.0;  //不需要交税  
    13     else  
    14     {  
    15         if(dValue <= 1500)  
    16             dRate = 0.03, dOffset = 0.0;   //这一组if语句用于得到税率和速算扣除数  
    17         else if(dValue <= 4500)  
    18             dRate = 0.1, dOffset = 105.0;  
    19         else if(dValue <= 9000)  
    20             dRate = 0.2, dOffset = 555.0;  
    21         else if(dValue <= 35000)  
    22             dRate = 0.25, dOffset = 1005.0;  
    23         else if(dValue <= 55000)  
    24             dRate = 0.3, dOffset = 2755.0;  
    25         else if(dValue <= 80000)  
    26             dRate = 0.35, dOffset = 5505.0;  
    27         else  
    28             dRate = 0.45, dOffset = 13505.0;  
    29         dTax = dValue * dRate - dOffset;  //计算所得税,体会将“确定参数”与“计算”分开的好处:思路更明晰,不易在计算公式上犯大错  
    30     }  
    31     dNetIncome = dSalary-dTax;        //计算税后收入  
    32     printf("您本月应缴个人所和税 %.2lf 元,税后收入是 %.2lf 元。\n", dTax, dNetIncome);  
    33     printf("依法纳税,共享繁荣。谢谢使用!\n");  
    34     return 0;  
    35 }  

     

    感想:

    1.这个问题非常简单,所以笔者的code还算凑合,但是老师的code明显更优(更容易阅读与维护),因为其中体现了“模块化”的编程思维(我感觉这类似 C++的面向对象的思维,即OOP),所以小问题也蕴含着大道理;

     

    2.程序中的bug 基本上可以分成三种:语法错误、运行错误、逻辑错误。其中最棘手的错误是逻辑错误。

    但事实上,语法错误中也有一种非常棘手的错误,那就是 编译器不会报错的语法错误,程序规模一大,极其难以排查,如

    if( x = 100 )
    
    if(); //单分支

    这些错误,有些聪明的编译器(如vs的最新版)也能查出来,但不聪明的就不会提示出来了。要避免这样的错误,只有靠经验与养成良好的编程习惯(convention)。

    if( 100 == x )
    
    if(){
    }
     //单分支

     

     

     

     

     

    =

    转载于:https://www.cnblogs.com/miyazakehime/p/9123102.html

    展开全文
  • 设计一个健康评估软件,作为公益项目。 根据一个人的身高,体重,运动能力,肺活量等外在的指标,对一个人的健康状况进行量化评估。80分以上为健康,60分以上健康状况一般,60分以下为不健康。 具体评分细则:...
  • 设计一个健康评估软件,作为公益项目。 根据一个人的身高,体重,运动能力,肺活量等外在的指标,对一个人的健康状况进行量化评估。80分以上为健康,60分以上健康状况一般,60分以下为不健康。 具体评分细则:...
  • 一个基于C语言的学生成绩管理系统,适合大一学生设计C语言课程设计参考之用。 源代码下载链接:https://pan.baidu.com/s/1UsdFE9o_plwNdR8-cQtlfw 提取码:miuz 程序介绍: 一、程序基本介绍: 编译器:Dev C++;...

    一个基于C语言的学生成绩管理系统,适合大一学生设计C语言课程设计参考之用。

    程序介绍:

    一、源码下载地址:

    https://pan.baidu.com/s/1UsdFE9o_plwNdR8-cQtlfw 提取码:miuz

    二、程序基本介绍:

    编译器:Dev C++;数据存储方式:记事本

    三:程序实现的功能

    1、个人信息的新增:此功能可以输入相应的学生信息。信息依次输入完毕后可以选择是否继续进行录入。
    在这里插入图片描述
    2、个人信息的删除:此功能主要负责对库内信息的删除。输入需要删除的学生的学号之后,会提示相关信息确认是否删除等。
    在这里插入图片描述
    3、个人信息的修改:此功能是负责对库内的信息进行修改。
    在这里插入图片描述
    4、根据名字查找学生的信息:本功能可以通过名字来查询学生的个人信息,并输出。同名的也一并查出来。
    在这里插入图片描述
    5、根据学号查找学生的信息本功能可以通过学号来查询学生的个人信息,并输出。
    在这里插入图片描述
    6、输出所有学生的信息:本功能会把所有学生信息输出展示。
    在这里插入图片描述

    展开全文
  • NOTE:以下为我个人整理的,也在实际项目经常遇到的一些细节点,还不够全面,最近项目比较忙,有时间再好好整理下。 细节性点: 1. #include指令 1)#include文件名>:搜寻系统文件头文件所在目录。E.g: #include 2...

    NOTE:以下为我个人整理的,也在实际项目经常遇到的一些细节点,还不够全面,最近项目比较忙,有时间再好好整理下。

    细节性点:

    1. #include指令

    1)#include<文件名>:搜寻系统文件头文件所在目录。E.g: #include</user/include>

    2)#include”文件名:搜寻当前目录,然后搜寻系统文件头文件目录。E.g:#include “C:\cprogs\utils.h”

     

    2.Static:所声明的变量,只能在本文件内使用,用它声明的变量的初始化式必须是常量;

     

    3.Struct

    1)不能使用 =  or =来判断两个结构是否相等或者不等;

    2)两种命名结构的方法:

    (1)“结构标记

    E.g: struct part {........};

    声明变量:struct part part1, part2;

    (2)typedef来定义类型名;

    E.g: typedef struct {.......} Part;

    变量声明:Part part1, part2;

    E.g: typedef struct Fly_Info{.....}FLYINFO, *P_FLYINFO;

    变量声明:P_FLYINFO pFlyInfo;

     

    4.-> 和 的区别: ->是指针对其指向对象以及成员的操作; 是结构体对其成员的操 作,句点的优先级几乎高于所有其他运算符;

    5.C语言不支持newdelete

    6.字符串字面量的操作:char ch; ch = “abc”[1], 结果是ch = ‘b’;

    7. 对于十六进制数的打印信息设置为:%#x or %#X

    8.v...printf(...)

    1)vfprintf:  int vfprintf(FILE *stream, char *format, va_list param);
    e.g:

    #include<stdio.h>

    #include<stdarg.h>

    FILE *fp;

    int vfpf(char *fmt, ...)

    {

    va_list argptr;

    int cnt;

    va_start(argptr, fmt);

    cnt = vfprintf(fp, fmt, argptr);

    va_end(argptr);

    return(cnt);

    }

    int main(void)

    {

    int inumber = 30;

    float fnumber = 90.0;

    char string[4] = "abc";

    fp = tmpfile();

    if (fp == NULL)

    {

    perror("tmpfile() call");

    exit(1);

    }

    vfpf("%d %f %s", inumber, fnumber, string);

    rewind(fp);

    fscanf(fp,"%d %f %s", &inumber, &fnumber, string);

    printf("%d %f %s\n", inumber, fnumber, string);

    fclose(fp);

    return 0;

    }

     

    2)vprintf:  int vprintf(char *format, va_list param);

    E.g:

    #include <stdio.h>

    #include <stdarg.h>

    int vpf(char *fmt, ...)

    {

    va_list argptr;

    int cnt;

    va_start(argptr, fmt);

    cnt = vprintf(fmt, argptr);

    va_end(argptr);

    return(cnt);

    }

    int main(void)

    {

    int inumber = 30;

    float fnumber = 90.0;

    char *string = "abc";

    vpf("%d %f %s\n",inumber,fnumber,string);

    return 0;

    }

     

    3)vsprintf:  int vsprintf(char *string, char *format, va_list param);

                   注该函数会出现内存溢出情况,建议使用vsnprintf

    E.g:

    #include <stdarg.h>

    char buffer[80];

    int vspf(char *fmt, ...)

    {

    va_list argptr;

    int cnt;

    va_start(argptr, fmt);

    cnt = vsprintf(buffer, fmt, argptr);

    va_end(argptr);

    return(cnt);

    }

    int main(void)

    {

    int inumber = 30;

    float fnumber = 90.0;

    char string[4] = "abc";

    vspf("%d %f %s", inumber, fnumber, string);

    printf("%s\n", buffer);

    return 0;

    }

     

    7.字符串转换函数

    1) double atof(const char *nptr);

    E.g:

    #include <stdlib.h>

    #include <stdio.h>

    int main()

    {

      Float f;

      char *str ="12345.67";

      f =atof(str);

      printf("string = %s float = %f\n", str, f);

      return 0;

    }12345.670000

     

    2)int atoi(const char *nptr);

    3)long atol(const char *nptr);

    4)double strtod(const char *nptr,char **endptr); strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针endptr传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456123e-2

    E.g:

    #include<stdlib.h>

    #include<stdio.h>

    void main()

    {

        char *endptr;

        char a[] ="12345.6789";

        char b[] ="1234.567qwer";

        char c[] ="-232.23e4";

        printf("a=%lf\n",strtod(a,NULL) );

        printf("b=%lf\n",strtod(b,&endptr) );

        printf("endptr=%s\n", endptr );

        printf("c=%lf\n",strtod(c,NULL) );

    }a=12345.678900

    b=1234.567000

    endptr=qwer

    c=-2322300.000000

     

    8.伪随机序列生成函数
    1)int rand(void);

    2)void srand(unsigned int seed);

     

    9.void *bsearch(const void *key, const void *base, size_t nelem, size_t width, int(*fcmp)(const void *, const *));

    E.g:

    #include<stdlib.h>

    #include<stdio.h>

    #include<string.h>

     

    struct city_info{

    char *city;

    int miles;

    };

    int compare_citys(const void *key_ptr, const void *element_ptr);

     main()

    {

    char city_name[81];

    struct city_info *ptr;

    const struct city_info mileage[ ] = {{"A", 2260},{"B",3340},{C,1110},{D},1233};

    printf("Enter the city name:");

    scanf("%80[^\n]",city_name);

     

    ptr=bsearch(city_name,mileage,sizeof(mileage)/sizeof(mileage[0]),sizeof(mileage[0]),compare_citys);

    if(ptr != NULL)

    printf("%s is %d miles from NewYork \n",city_name, ptr->miles);

    else

    printf("%s No found!\n",city_name);

    return 0;

     

    }

    int compare_citys(const void *key_ptr, const void *element_ptr)

    {

    return strcmp((char*)key_ptr,((struct city_info*)element_ptr)->city);

    }

     

     

    展开全文
  • 返回:贺老师课程教学链接 项目要求【项目个人所得税计算器switch语句版】编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入(计算办法见附:关于个人所得税的有关背景知识)。(1)用...
  • 返回:贺老师课程教学链接 项目要求【项目个人所得税计算器if语句版】编写选择结构程序,输入个人月收入总额,计算出他本月应缴税款和税后收入(计算办法见附:关于个人所得税的有关背景知识)。(1)用if语句的...
  • switch语句常用于解决多分支、...项目1-26-2:成绩等级 1 /* 成绩等级(switch).cpp: 2 问题描述:给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90分以上为’A’,80-89分为’B’,...
  • 任务和代码: /* *Copyright (c)2016, 个人学习 *All rights reserved. *文件名称:Myc4.cbp *作 者:Coco *完成日期:2016年7月13日 ...*程序输出:输出圆柱体的表面积s */ #include int main() { floa
  • 返回:贺老师课程教学链接 项目要求【项目5 - 发奖金】(1)过年了,村里要庆祝一下。村长对村里的128个村民说:做一个游戏,让每个人把出生年+月+日得到一个数。例如:1995年11月8日=1995+11+8=2014。然后把这个...
  • 返回:贺老师课程教学链接 项目要求【项目1-小明借书】小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?提示:本问题实际上是一个排列问题,即求从5个中取3个进行排列...
  • 返回:贺老师课程教学链接【项目5-个税计算器之码数分离】在学习分支结构时,我们做过一个个人所得税计算器if语句版,在其中,税率等数据直接写进了程序。这并不是一个好的方案。 下面定义了一个结构体数组,保存...
  • C语言编写GUI程序

    万次阅读 多人点赞 2017-05-14 17:34:36
    简介众所周知,C程序设计语言是一种高效的、灵活的、强大的系统编程语言,采用了面向过程的编程范式,广泛的应用在系统性编程项目上。著名的linux内核就采用了C语言编写。C语言原生面向过程,提供的抽象能力有限,...
  • C语言个人财务管理

    2021-03-18 22:45:47
    C语言个人财务管理 ...【设计思想】本程序是一个财务管理程序,涉及收入和支出,虽然是个人财务管理程序,但最好能够按照一种标准的财务管理软件来考虑,所以在程序设计时;需要考虑如下几个因素: 每
  • 对于刚刚迈入C语言的我们而言,在学习数组章节后已经能够利用所学知识完成一些编程,于是便需要一些程序项目帮助我们巩固所学知识,个人认为三子棋游戏是一种比较好的编程练习。 一、什么是三子棋? 三子棋是一种...
  •  基本程序设计技术,递归程序设计,程序结构,文件,结构体,类型定义 实验内容 1.分别调试课件中的给定n求Fibonacci(n)递归与非递归函数,并编写测试函数对两种或多种不同方法所需时间进行比较,且当某一轮计算...

空空如也

空空如也

1 2 3 4 5 6
收藏数 106
精华内容 42
关键字:

c语言程序设计个人项目

c语言 订阅