c日记

作者在 2017-04-13 21:51:07 发布以下内容

最简单的结构体定义、输出

#include<stdio.h>

struct Date

{

    int month;

    int day;
    int year;
}birthday;
struct Student

{

    int num;

    char name[20];
    char sex;
    int age;
    float score;
    char addr[30];
    struct Date birthday;
}a={102,"zhangsan",'M',22,66.0,"123 shenzhen road"};
int main(int argc, char* argv[])
{
    printf("num:%d\nname:%s\nsex:%c\nage:%d\nscore:%.2f\n",a.num,a.name,a.sex,a.age,a.score);
    return 0;
}
作者在 2017-04-18 11:16:35 补充以下内容
数组指针:
#include<stdio.h>
 
int main()
{
     
   char c[][4] = {"哥", "哥", "我", "岸", "上", "走"};    //UTF-8:一个汉字=3个字节
 
   char (*p)[4];
   int i;    p=c;    //将指针定位于c[0]
    for(i=0;i<=5;i++)
    {
        printf("%s, ", *(p+i));  //或者将*(p+i)替换成*p++
    }
    printf("\n");    
    for(i=5;i>=0;i--)
    {
        printf("%s,",*(p+i));    //或者将*(p+i)替换成*p--
    }
    return 0;
}
指针数组:


#include<stdio.h>
 
int main()
{
 
    int i;
  char *pch[6] = {"妹","妹","你","坐","船","头"};
    for(i=0;i<6;i++)
   {
        printf("%s, ",pch[i]); 
    } 
    printf("\n"); 
    for(i=5; i>=0; i--)
   { 
        printf("%s\n",pch[i]); 
    }
    return 0;
}
作者在 2017-04-18 11:17:23 补充以下内容

年月日判断

#include<stdio.h>

int main()
{
int year,mouth,day,sum,x;
    printf("年月日:");
scanf("%d,%d,%d",&year,&mouth,&day);
switch(mouth)
{
case 1: sum=0;break;
case 2: sum=31;break;
    case 3: sum=31+28;break;
case 4: sum=31+28+31;break;
case 5: sum=31+28+31+30;break;
case 6: sum=31+28+31+30+31;break;
case 7: sum=31+28+31+30+31+30;break;
case 8: sum=31+28+31+30+31+30+31;break;
case 9: sum=31+28+31+30+31+30+31+31;break;
case 10:sum=31+28+31+30+31+30+31+31+30;break;
case 11:sum=31+28+31+30+31+30+31+31+30+31;break;
case 12:sum=31+28+31+30+31+30+31+31+30+31+30;break;
    default:printf("ERROR!\n");
}
x=sum+day;
if((year%400==0)||(year%4==0&&year%100!=0))
{
printf("%d年是闰年!\n",year);
if(mouth>2)
{
x+=1;
}
}
else printf("%d年不是闰年!\n",year);
printf("%d年%d月%d日是%d年的第%d天!\n",year,mouth,day,year,x);
return 0;
}
作者在 2017-04-18 11:18:51 补充以下内容

十进制转换二进制函数

#include<stdio.h>

int main()
{
int a,i,j,b[1000];
printf("请输入要转换成2进制的整数:\n");
scanf("%d",&a);
    for(i=0;;i++)
{
b[i]=a%2;
a=(int)((a*1.0)/2.0);
if(a==0)break;
}
for(j=i;j>=0;j--)
{
printf("%d",b[j]);
}

return 0;
}
作者在 2017-04-18 11:19:56 补充以下内容

输入-1时结束问题

#include<stdio.h>
int main()
{
int cj=0,he=0,i=0;
while(i<30)
{
scanf("%d",&cj);
            he+=cj;
if(cj==-1)break;
}
printf("%d",he+1);
return 0;
}

作者在 2017-04-18 11:22:08 补充以下内容

动态链表

#include<stdio.h>                            //头文件  
#include<malloc.h>                           //头文件  
#define LEN sizeof(struct Student)           //宏定义
struct Student                               //定义结构体
{   int num;                                 //定义num为整形变量
float score;                             //定义单精度变量score
struct Student * next;                   //指针变量next指向结构体
};                                           //结构体写完加";"表示结束
int n;                                       //全局变量n
struct Student * creat(void)                 //此函数返回一个指向链表头的指针
{   struct Student * head;                   //定义结构体类型指针变量head头指针
struct Student * p1,* p2;                //定义结构体类型指针变量p1,p2
n=0;                                     //n赋值0
p1=p2=(struct Student * ) malloc(LEN);   //用malloc函数开辟一个长度为LEN的新单元
scanf("%ld,%f",&p1->num ,&p1->score );   //输入付给num,score的值
head=NULL;                               //指针变量head不指向任何类型
while(p1->num !=0)                       //当指针p1指向num的值不为0时
{   n=n+1;                               //节点计数器
if(n==1) head=p1;                    //如果n=1为真,head指向p1
else p2->next =p1;                   //如果n=1为假,将下一个节点指向p1
p2=p1;                               //再将p2指向p1
p1=(struct Student *) malloc(LEN);   //用malloc函数开辟一个长度为LEN的新单元
scanf("%d,%f",&p1->num ,&p1->score );//输出p1
}
p2->next =NULL;                          //p2指向终点
return(head);                            //返回head
}
int main()                                   //主函数
{   struct Student * pt;                     //定义结构体类型指针变量pt
pt=creat();                              //调用函数creat,使pt指向该函数返回的指针变量
printf("\nnum:%ld\nscore:%5.1f\n",pt->num ,pt->score );//输出pt
return 0;                                //结束
}

作者在 2017-04-18 11:23:16 补充以下内容

爱心程序

#include<stdio.h>
#include<math.h>
#include<windows.h>
#include<tchar.h>
float f(float x,float y,float z)
{
float a=x*x+9.0f/4.0f*y*y+z*z-1;
return a*a*a-x*x*z*z*z-9.0f/80.0f*y*y*z*z*z;
}
float h(float x,float z)
{
for(float y=1.0f;y>=0.0f;y-=0.001f)
if(f(x,y,z)<=0.0f)
return y;
return 0.0f;
}
int main(int argc,char * crgv[])
{
HANDLE o=GetStdHandle(STD_OUTPUT_HANDLE);
_TCHAR buffer[25][80]={ _T(' ') };
_TCHAR ramp[]=_T("-=+*#%@");
for(float t=0.1f;;t+=0.1f)
{
int sy=0;
float s=sinf(t);
float a=s*s*s*s*0.2f;
for(float z=1.3f;z>-1.2f;z-=0.1f)
{
_TCHAR* p=&buffer[sy++][0];
float tz=z*(1.2f+a);
for(float x=-1.5f;x<1.5f;x+=0.05f)
{
float tx=x*(1.2f+a);
float v=f(tx,0.0f,tz);
if(v<=0.0f)
{
float y0=h(tx,tz);
float ny=0.01f;
float nx=h(tx+ny,tz)-y0;
float nz=h(tx,tz+ny)-y0;
float nd=1.0f/sqrtf(nx*nx+ny*ny+nz*nz);
float d=(nx+ny-nz)*nd*0.5f+0.5f;
*p++=ramp[(int)(d*0.5f)];
}
else 
*p++=' ';
}
}
for(sy=0;sy<25;sy++)
COORD coord=(0,sy);
SetConsoleCursorPosition(o,coord);
WriteConsole(o,buffer[sy],79,NULL,0);
}
Sleep(33);
}
}

作者在 2017-04-18 11:24:48 补充以下内容
简单的链表应用
#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct Student)
struct Student
{
int a;
char b[20];
struct Student * next;
}*head,*p1,*p2;
int n,x=0;;
struct Student * scan()
{
p1=p2=(struct Student *)malloc(LEN);
printf("输入学号,姓名:");
scanf("%d,%s",&p1->a,&p1->b);
while(p1->a!=NULL)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct Student *)malloc(LEN);
printf("输入学号,姓名:");
scanf("%d,%s",&p1->a,&p1->b);
}
p2->next=NULL;
return (head);
}
void print(struct Student * head)
{
struct Student * p;
p=head;
printf("一共%d个信息:\n",n);
if(head!=NULL)
do
{
x=x+1;
printf("序号:%d,学号:%d,姓名:%s\n",x,p->a,p->b);
p=p->next;
}while(p!=NULL);
}
int main()
{
struct Student * head;
head=scan();
print(head);
    return 0;
}
默认分类 | 阅读 690 次
文章评论,共0条
游客请输入验证码
文章分类
文章归档
最新评论