c语言必背代码,c语言代码大全
一、你所见过最美的C语言代码是什么
运行后能够打印自身的C代码:
main(){char*c="main(){char*c=%c%s%c;printf(c,34,c,34);}";printf(c,34,c,34);}
编译后运行,就会在命令行打印出跟源码一模一样的字符串。
这种能够不利用外部输入,就能打印出自身源码的程序,叫做Quine。这实际上是编程语言研究领域一个非常有意思的课题,除了上述代码外,其实还有很多能做到打印自身的代码。
我们来看这段代码,实际上他只有两句。第一句是声明并赋值一个字符串c,第二句则是打印。c中有三个输出控制符,实际打印时,第一个%c是34,第二个%s是c本身,而第三个%c则是34。
实际上,这是利用了c语言中printf的格式控制符语法,当c作为printf的第一个参数时,这些控制符会被解释为输出变量,而当c作为一个字符串变量直接打印时,它们有只是带%百分号的字符。
另外,这里使用的34,正是ascii码的双引号,这使得他们在作为字符打印时成为源码中的双引号。
二、C语言简单代码
例一://按"1"、"2"控制
#include"stdio.h"
#include"conio.h"
voiddelay(intx)
{inty;
while(x--)
for(y=0;y<125;y++)
{;}
}
voidpout(inti)
{
if(i==1)
{
printf("%c",26);
delay(1000000);
printf("\b%c",0);
}
if(i==2)
{
printf("\b%c",0);
printf("%c",27);
delay(1000000);
printf("\b%c\b\b",0);
}
}
intmain()
{
inta=1;
while(1)
{
if(kbhit())
{
a=getch()-48;
}
pout(a);
}
return0;
}
例二:猜一个1~到100的数
#include<iostream>
#include<cstdlib>
#include<ctime>
usingnamespacestd;
intmain()
{
srand(time(0));//生成随机数生成器种子
inttheNumber=rand()%100+1;//1-100的随机数
inttries=0,guess;
cout<<"\tWecometoGuessMyNumber\n\n";
do
{
cout<<"Enteraguess:";
cin>>guess;
++tries;
if(guess>theNumber)
cout<<"Toohigh!\n\n";
if(guess<theNumber)
cout<<"Toolow!\n\n";
}while(guess!=theNumber);
cout<<"\nThat'sit!Yougotitin"<<tries<<"guess!\n";
return0;
}
三、c语言100行简单一点的代码
#include<malloc.h>
#include<stdio.h>
#include<stdlib.h>
#defineLENsizeof(structscorenode)
#defineDEBUG
#include<string.h>
structscorenode
{intnumber;/*学号*/
charname[10];/*姓名*/
floatyuwen;/*语文成绩*/
floatyingyu;/*英语成绩*/
floatshuxue;/*数学成绩*/
structscorenode*next;
};
typedefstructscorenodescore;
intn,k;/*n,k为全局变量,本程序中的函数均可以使用它*/
/*==============================================================================================*/
score*creat2311(void)
/*函数creat2311,功能:创建链表,此函数带回一个指向链表头的指针*/
{
score*head;
score*p1,*p2,*p3,*max;
inti,j;
floatfen;
chart[10];
n=0;
p1=p2=p3=(score*)malloc(LEN);head=p3;/*开辟一个新单元*/
printf("请输入学生资料,输0退出!\n");
repeat1:printf("请输入学生学号(学号应大于0):");/*输入学号,学号应大于0*/
scanf("%d",&p1->number);
while(p1->number<0)
{getchar();
printf("输入错误,请重新输入学生学号:");
scanf("%d",&p1->number);}
/*输入学号为字符或小于0时,程序报错,提示重新输入学号*/
if(p1->number==0)
gotoend;/*当输入的学号为0时,转到末尾,结束创建链表*/
else
{
p3=head;
if(n>0)
{for(i=0;i<n;i++)
{if(p1->number!=p3->number)
p3=p3->next;
else
{printf("学号重复,请重输!\n");
gotorepeat1;
/*当输入的学号已经存在,程序报错,返回前面重新输入*/
}
}
}
}
printf("请输入学生姓名:");
scanf("%s",&p1->name);/*输入学生姓名*/
printf("请输入语文成绩(0~100):");/*输入语文成绩,成绩应在0-100*/
scanf("%f",&p1->yuwen);
while(p1->yuwen<0||p1->yuwen>100)
{getchar();
printf("输入错误,请重新输入语文成绩");/*输入错误,重新输入语文成绩直到正确为止*/
scanf("%f",&p1->yuwen);}
printf("请输入英语成绩(0~100):");/*输入英语成绩,成绩应在0-100*/
scanf("%f",&p1->yingyu);
while(p1->yingyu<0||p1->yingyu>100)
{getchar();
printf("输入错误,请重新输入英语成绩");/*输入错误,重新输入英语成绩直到正确为止*/
scanf("%f",&p1->yingyu);}
printf("请输入数学成绩(0~100):");/*输入数学成绩,成绩应在0-100*/
scanf("%f",&p1->shuxue);
while(p1->shuxue<0||p1->shuxue>100)
{getchar();
printf("输入错误,请重新输入数学成绩");
scanf("%f",&p1->shuxue);}/*输入错误,重新输入数学成绩直到正确为止*/
p1=head;
p0=stu;
if(head==NULL)
{head=p0;p0->next=NULL;}/*当原来链表为空时,从首结点开始存放资料*/
else/*原来链表不为空*/
{
if(p1->next==NULL)/*找到原来链表的末尾*/
{
p1->next=p0;
p0->next=NULL;/*将它与新开单元相连接*/
}
else
{
while(p1->next!=NULL)/*还没找到末尾,继续找*/
{
p2=p1;p1=p1->next;
}
p1->next=p0;
p0->next=NULL;
}
}
n=n+1;
p1=head;
p0=stu;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
max=p1;
p1=p1->next;
if(max->number>p1->number)
{
k=max->number;
max->number=p1->number;
p1->number=k;
/*交换前后结点中的学号值,使得学号大者移到后面的结点中*/
strcpy(t,max->name);
strcpy(max->name,p1->name);
strcpy(p1->name,t);
/*交换前后结点中的姓名,使之与学号相匹配*/
fen=max->yuwen;
max->yuwen=p1->yuwen;
p1->yuwen=fen;
/*交换前后结点中的语文成绩,使之与学号相匹配*/
fen=max->yingyu;
max->yingyu=p1->yingyu;
p1->yingyu=fen;
/*交换前后结点中的英语成绩,使之与学号相匹配*/
fen=max->shuxue;
max->shuxue=p1->shuxue;
p1->shuxue=fen;
/*交换前后结点中的数学成绩,使之与学号相匹配*/
}
}
max=head;p1=head;/*重新使max,p指向链表头*/
}end2:
printf("现在的学生数为:%d个!\n",n);
return(head);
}
/*==============================================================================================*/
/*==============================================================================================*/
score*search2311(score*head)
/*函数search2311,功能:查询学生成绩*/
{intnumber;
score*p1,*p2;
printf("输入要查询的学生的学号,");
scanf("%d",&number);
while(number!=0)
{
if(head==NULL)
{printf("\n没有任何学生资料!\n");return(head);}
printf("-----------------------------------------\n");
printf("|学号\t|姓名\t|语文\t|英语\t|数学\t|\n");
printf("-----------------------------------------\n");/*打印表格域*/
p1=head;
while(number!=p1->number&&p1->next!=NULL)
{p2=p1;p1=p1->next;}
if(number==p1->number)
{printf("|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|\n",p1->number,p1->name,p1->yuwen,p1->yingyu,p1->shuxue);
printf("-----------------------------------------\n");}/*打印表格域*/
else
printf("%d不存在此学生!\n",number);
printf("输入要查询的学生的学号,");
scanf("%d",&number);
}
printf("已经退出了!\n");
return(head);}