本文目录一览:
什么才是最纯的C语言?C语言的精华又是什么呢?
学习了一段时间的c语言,没有听过你说的问题--什么才是最纯的C语言?
你的意思是纯纯的c语言吗,c语言很少有不纯的呵!
他的精华吗!下面是书上说的!
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。
“纯C”是指什么样的C语言?
如果非常较真的说,纯C指的是标准C,也就是没经过扩展的C语言。因为各个编译器都对C语言进行了扩展,有的扩展是约定俗成的(也就是说各种编译器都用同一个函数扩展了同一个功能),这种扩展不影响C的移植,并且我们通常学到的都是标准C以及约定俗成的扩展;另外还有些扩展是我有你没有,或者你有我没有的,这种通常都是很不常用的功能,这种扩展影响了移植性
但是,我们在平常生活中所说的那种纯C编程并非仅仅指标准C,而是连带着那些约定俗成的扩展的,也就是说不影响移植性的C语言。
那为什么还要说“纯”C呢,因为要强调代码里不能有C++语言,因为现在多数编译器C++和C语言都可以编译并运行(也就是可以无缝的混合编程),前一行写printf后一行写cout是没问题的,但如果要求是纯C,那么就要注意只能用printf
有没有纯c语言版本的 打印任意一年的日历程序代码
我刚自己做了一个 你拿去用把,包含文件,可保存!
新建一个richenganpai.txt文件,保存你所记录的日程安排
#includestdio.h
#includeconio.h
#includestdlib.h
//闰年
//每个月天数
//星期
//输入查询
//显示某个月
//添加文件 记录日程 有 TRUE 没有 FALSE
//删除 添加 修改日程安排
//修改判断有无记录
#define TRUE 1
#define FALSE 0
typedef struct richenganpai
{
int year;
char month;
char day;
char t[80];
struct richenganpai *next;
}RCAP;
int runnian(int year); //是否为闰年
void show(int start, int day); //显示日历
void showstar(); //输出*
int dingwei(int year, int month, int day); //定位需要查询日期与参照日期的时间差
int monthtm(int i, int flag); //某年某月的天数
void searchday(RCAP *p); //查询某一天
void showmonth(RCAP *p); //显示某个月
RCAP * open_file(); //打开文件,查询多少条信息
int save_file(RCAP *p); //保存文件
void showall(RCAP *p); //显示所有日程安排
void addinfo(RCAP *p);
void delinfo(RCAP *p);
void modifyinfo(RCAP *p);
void addinfo(RCAP *p)
{
int year, month, day;
int f = 0,k = 0;
RCAP *p2 , *p1, *r = p; ;
loop:printf("需要添加的信息的日期。--年--月--日\n");
scanf("%d%d%d", year, month, day);
for(p1 = p -next ; p1; p1 = p1-next)
{
if((year == p1 - year) (month == p1 -month) (day == p1 - day))
{
printf("%d年%d月%d有记录,信息:%s\n", year, month, day, p2-t);
printf("是否修改?1为修改,0为否\n");
scanf("%d", f);
if(f == 1)
{
k = 1;
modifyinfo(p);
break;
}
}
r = p1;
}
if(k == 0 )
{
p2 = (RCAP *)malloc(sizeof(RCAP));
r - next = p2;
r = p2;
printf("需要添加的信息:\n");
scanf("%s", p2-t);
p2-year = year;
p2-month = month;
p2-day = day;
p2 -next =NULL;
printf("添加完毕,添加的信息为:\n");
printf("%d年%d月%d日,信息:%s\n", p2-year, p2-month, p2-day, p2-t);
}
printf("\n是否继续添加?1为继续,0为否\n");
scanf("%d", f);
if(f == 1)
{
k = 0;
goto loop;
}
getch();
}
void delinfo(RCAP *p)
{
int year, month, day;
int flag = 0, f = 0;
RCAP *r = p, *p1;
loop:printf("需要删除的信息的日期。--年--月--日\n");
scanf("%d%d%d", year, month, day);
for(p1 = p -next ; p1; p1 = p1-next)
{
if((year == p1 - year) (month == p1 - month) (day == p1 - day))
{
r-next = p1-next;
flag = 1;
printf("删除成功\n");
break;
}
r = p1;
}
if(flag == 0)
printf("所要删除的日期无信息!\n");
printf("\n是否继续删除?1为继续,0为否\n");
scanf("%d", f);
if(f == 1)
{
r = p;
goto loop;
}
getch();
}
void modifyinfo(RCAP *p)
{
int flag = 0, c, f = 0;
int year, month, day;
RCAP *p1 = p;
loop: printf("输入要修改的日期,--年--月--日\n");
scanf("%d%d%d", year, month, day);
for(p1 = p-next ; p1; p1 = p1-next)
{
if((year == p1 - year) (month == p1 -month) (day == p1 - day))
{
printf("%d年%d月%d有记录,信息:%s\n", year, month, day, p1-t);
printf("将%s修改为:", p1 - t);
scanf("%s", p1-t);
printf("修改后的信息为:%d年%d月%d信息:%s\n", year, month, day, p1 - t);
flag = 1;
break;
}
}
printf("\n");
if(flag == 0)
{
printf("本日无信息,无法修改,是否添加?1为添加,0为不添加!\n");
scanf("%d", c);
if(c == 1)
addinfo(p);
}
printf("是否继续查找?1为继续,0为否\n");
scanf("%d", f);
if(f == 1)
goto loop;
getch();
}
void showall(RCAP *p)
{
int n = 0;
RCAP *p1;
for(p1 = p -next; p1; p1 = p1-next)
{
n++;
printf("第%d个信息%d年%d月%d日:%s\n", n, p1 - year, p1 - month, p1 - day, p1-t);
}
printf("\n");
if(n == 0)
printf("无信息!\n");
printf("\n");
getch();
}
int save_file(RCAP *p)
{
FILE *fp;
RCAP *p1;
int n = 0;
if((fp = fopen("richenganpai.txt","wb")) == NULL)
{
printf("读文件错误\n");
exit(0);
}
for(p1 = p -next; p1 != NULL; p1 = p1-next)
{
fwrite(p1,sizeof(RCAP),1,fp);
n++;
}
fclose(fp);
return n;
}
RCAP * open_file()
{
FILE *fp;
int n = 0;
RCAP *p1, *p2, *head, *r ;
if((fp=fopen("richenganpai.txt","rb")) == NULL)
{
printf("\n\n*****文件不存在!系统将自动创建,并返回目录\n");
exit(0);
}
head = (RCAP *)malloc(sizeof(RCAP));
head -next = NULL;
p1 = head;
while(!feof(fp))
{
p2 = (RCAP *)malloc(sizeof(RCAP));
fread(p2, sizeof(RCAP), 1, fp);
p1 - next = p2;
r = p1;
p1 = p2;
}
r -next = NULL;
free(p2);
fclose(fp);
return head;
}
void showmonth(RCAP *p)
{
int time, year, month;
int t, D_t, flag, CX = 0, f = 0;
RCAP *p1 ;
loop: printf("输入查询日期--年--月,显示当月日期,并显示当月是否有日程安排\n\n"); //并显示是否有日程安排
scanf("%d%d", year, month);
if(year32767||year-32768||month12||month1)
{
printf("输入有误!\n");
exit(0);
}
printf("你所查的是%d年%d月\n\n", year, month);
time = dingwei(year, month, 1);
t = time%7;
t = (t + 6)%7;
if(year = 2011)
t = t;
else
{
if(t = 6)
t = 6;
else
t = 5 - t;
}
flag = runnian(year);
D_t = monthtm(month, flag);
show(t, D_t);
for(p1 = p -next ; p1; p1 = p1-next)
{
if((year == p1 - year) (month == p1 -month))
{
CX++;
printf("本月第%d个信息%d年%d月%d日:%s\n", CX, year, month, p1 - day, p1-t);
}
}
printf("\n");
if(CX == 0)
printf("本月无信息!\n");
printf("\n");
printf("是否继续查找?1为继续,0为否\n");
scanf("%d", f);
if(f == 1)
goto loop;
getch();
}
void searchday(RCAP *p)
{
int time, year, month, day;
int t, CX = 0, flag = 0;
RCAP *p1;
loop:printf("输入查询日期--年--月--日,显示星期几,并显示是否有日程安排\n"); //并显示是否有日程安排
scanf("%d%d%d", year, month, day);
if(year32767||year-32768||month12||month1||day31||day1)
{
printf("输入有误!\n");
exit(0);
}
printf("你所查的是%d年%d月%d日\n", year, month, day);
time = dingwei(year, month, day);
t = time%7;
t = (t + 6)%7;
if(year = 2011)
{
switch(t)
{
case 0: printf("你查询的是星期天\n\n");break;
case 1: printf("你查询的是星期一\n\n");break;
case 2: printf("你查询的是星期二\n\n");break;
case 3: printf("你查询的是星期三\n\n");break;
case 4: printf("你查询的是星期四\n\n");break;
case 5: printf("你查询的是星期五\n\n");break;
case 6: printf("你查询的是星期六\n\n");break;
}
}
else
{
switch(t)
{
case 0: printf("你查询的是星期五\n\n");break;
case 1: printf("你查询的是星期四\n\n");break;
case 2: printf("你查询的是星期三\n\n");break;
case 3: printf("你查询的是星期二\n\n");break;
case 4: printf("你查询的是星期一\n\n");break;
case 5: printf("你查询的是星期天\n\n");break;
case 6: printf("你查询的是星期六n\n");break;
}
}
printf("\n");
for(p1 = p -next ; p1; p1 = p1-next)
{
if((p1 - year == year) (p1 -month == month) (p1 - day == day))
{
CX++;
printf("%d年%d月%d有记录,信息:%s\n", year, month, day, p1-t);
}
}
if(CX == 0)
printf("本日无信息!\n");
printf("\n是否继续查找?1为继续,0为否\n");
scanf("%d", flag);
if(flag == 1)
goto loop;
getch();
}
int monthtm(int i, int flag)
{
int t;
switch(i)
{
case 1: t = 31;break;
case 2:
if(flag == FALSE)
t = 28;
else
t = 29;
break;
case 3: t = 31;break;
case 4: t = 30;break;
case 5: t = 31;break;
case 6: t = 30;break;
case 7: t = 31;break;
case 8: t = 31;break;
case 9: t = 30;break;
case 10: t = 31;break;
case 11: t = 30;break;
case 12: t = 31;break;
}
return t;
}
int dingwei(int year, int month, int day)
{
int DC = 0, T_y, T_m, T_year = 2011, T_month = 1, T_day = 1; //2011年01月01日 星期六
int flag = FALSE; //FALSE非闰年 TRUE闰年
int i, j, m, n, k;
if(T_year = year)
i = 1;
else
i = -1;
for(T_y = yearT_year ? T_year : year; T_y (yearT_year ? year : T_year); T_y++)
{
flag = runnian(T_y);
if(flag == TRUE)
DC += 366;
else
DC += 365;
}
if( i 0 )
for(T_m = T_month; T_m month ; T_m++)
{
flag = runnian(T_y);
DC += i*monthtm(T_m,flag);
}
else
{
{
if(runnian(year))
k = TRUE;
else
k = FALSE;
}
for(T_m = T_month; T_m month ; T_m++)
DC += i*monthtm(T_m,k);
}
if(T_year year)
j = -1;
if(T_year = year)
j = 1;
m = day;
n = T_day;
DC = DC + j*(m - n);
return DC;
}
void showstar()
{
int i;
for(i = 0; i 55; i++)
printf("*");
printf("\n");
}
int runnian(int year)
{
if(year%4 == 0 year%100 != 0 || year%400 == 0)
return TRUE;
else
return FALSE;
}
void show(int start, int day)
{
int i;
showstar();
printf("Sun\tMon\tTue\tWen\tThu\tFri\tSat\t\n");
for(i = 1; i = start; i++)
printf("\t");
for(i = 1; i = day; i++)
{
printf("%d\t", i);
if((start + i)%7 == 0)
printf("\n");
}
printf("\n");
showstar();
printf("\n");
printf("按任意键返回菜单!\n");
getch();
}
void main(void)
{
int i, n = 0;
RCAP *head;
head = open_file();
do
{
system("cls");
printf("选择使用功能:\n");
printf("1:查询指定时间为星期几和相关信息\n");
printf("2:显示指定月份的所有时间信息\n");
printf("3:显示所有日程安排\n");
printf("4:添加某天信息\n");
printf("5:删除某天信息\n");
printf("6:修改信息\n");
printf("0:退出\n");
printf("请选择!\n");
scanf("%d", i);
switch(i)
{
case 0: break;
case 1: searchday(head);break;
case 2: showmonth(head);break;
case 3:showall(head); break;
case 4:addinfo(head); break;
case 5:delinfo(head); break;
case 6:modifyinfo(head); break;
}
}while(i 0 );
n = save_file(head);
printf("文件功有%d个信息\n", n);
free(head);
getch();
}