如何学习c语言

如何学习c语言,第1张

C语言是编程语言的入门级语言,它是面向过程的编程语言,是其他如C++,java,C#等现在主流编程语言的基础。相对而言,C语言还是比较容易的,刚开始看的时候,先注重看得懂,不要太注重记住那些命令。毕竟程序是活的,写程序主要要有思路,熟练程度是靠你多用来慢慢积累起来的。当把所有C的内容学习一遍下来,对C有一个比较全面的了解之后,就可以多去看看别人的代码,这样对更深入的理解C语言、以及拓宽编程思路都有好处。C++一般需要有C语言的基础,在有C语言的基础上,再好好揣摩面向对象的编程思想,然后学一学MFC啊什么的,C++应该能比较好的掌握下来,至少不会一头雾水。 这边提出几点学程序的建议:1。不要死记语法;2。多动手多练习;3。遇到问题,首先尝试自己解决;4。多用Google、baidu;5。多阅读别人的源代码。 学程序要有恒心,坚持下来,相信楼主一定可以学好C语言的。

#include <stdioh>

#include <conioh>

#include <stringh>

#define SIZE 300

typedef struct

{

char name[30];

int num;

char shang[10];

float price;

}record;

void DataInput(record com, int nptr);

int DataRead(record com,int nptr) ;

void DataStorage(record com, int n); /信息保存到文件/

void DataFind( );

void DataDisPlay( );

void DataAdd( );

void DataDel( );

void DataStatistic( );

int main( )

{

record shangpin[SIZE];

int number=20; /设商品数/

char fn;

printf("\t~~~~~~商品管理系统~~~~~~");

while(1)

{

printf("\n\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\t0退出系统");

printf("\n\t~~~~~~~~~~~~~~~~\n");

printf("\t请输入你的一个选项(数字0-6): ");

fflush(stdin);

scanf("%c",&fn);

puts("\n");

switch(fn) /切换到不同功能/

{

case '1':

DataInput(shangpin, &number );

break; /录入信息/

case '2':DataDisPlay();

break; /信息显示/

case '3':

DataFind();

break; /信息查找/

case '4':

DataAdd( );

break; /增加/

case '5':

DataDel( );

break; /删除/

case '6':

DataStatistic();

break; /信息统计/

case '0':

return 0;

default:puts("\t\t没有这个项!返回主菜单!");

break;

}

printf("\n\t\t完毕!按任意键继续");

getch( );

puts("\n");

}

}

void DataInput(record com, int nptr) /商品信息录入/

{

int i = 0;

int n ; /录入的总数/

char YesOrNo; /判断是否保存/

char shangming[30]; /商名/

int haoma; /商品号/

char shangjia[10]; /单价/

float danjia;

printf("\t\t请输入商品个数:");

scanf("%d",&n);

nptr = n; /nptr返回商品个数/

printf("\t\t现在开始录入这%d个商品信息:\n\n",n);

while(i<n)

{

printf("请输入商品的商品名:",i+1);

scanf("%s",&shangming);

printf("请输入商品的商品号:",i+1);

scanf("%d",&haoma);

printf("请输入商品的生产商:",i+1);

scanf("%s",&shangjia);

printf("请输入商品的单价 :",i+1);

scanf("%f",&danjia);

if(danjia>=0&&danjia<=1000) /有效的单价才录入/

{

strcpy(com[i]name,shangming);

com[i]num = haoma;

strcpy(com[i]shang,shangjia);

com[i]price = danjia;

i =i+1;

}

else

printf("输入的单价是一个无效的值!!!\n\n");

} /结束while/

printf("要保存您刚才录入的数据吗(Y/N)"); /选择保存/

fflush(stdin);

scanf("%c",&YesOrNo);

if(YesOrNo=='y'||YesOrNo=='Y')

DataStorage(com,n);

else if(YesOrNo=='n'||YesOrNo=='N')

return;

else

printf("输入了不正确的选项\n");

return;

} /结束函数/

void DataFind( ) /查找/

{

void OnNumber(record com,int n ); /按商品号排序/

int key; /key为要查找的关键值/

int low = 0; /下限/

int high ; /上限/

int mid ; /中间值/

char ans; /选项/

record com[SIZE];

int n;

if(DataRead(com,&n)==1) /从文件中读取信息/

{

OnNumber(com,n); /先按商品号排序/

high = n;

do

{

printf("\n\n\t\t请输入你要查找的商品号:");

scanf("%d",&key);

low = 0;high = n;

while (low <=high)

{

mid = (high + low)/2; /折半查找法/

if (key == com[mid]num )

{

printf("\n\t\t你要找的是第%d个商品\n",mid + 1);

printf("\t\t结果如下:\n\n");

printf("序号\t\t商品名\t 商品号\t生产商\t单价\n");

printf("%3d%17s%12d%12s%81f\n",mid+1,com[mid]name,com[mid]num,com[mid]shang,

com[mid]price);

break; /如果找到则退出循环/

}

if (key > com[mid]num ) low = mid + 1;

else high = mid - 1;

}

if (low > high)

printf("\t\t,没有找到这个价格!\n");

printf("\n\t\t还要继续查询吗(Y/N)?");

ans = getch( );

}

while (ans =='Y'||ans == 'y'); /结束dowhile/

}

}

void DataStorage(record com, int n) /录入保存文件/

{

int i;

FILE comPtr;

char FileName[20];

printf("请输入您要保存的文件名:");

scanf("%s",FileName);

printf("正在将商品信息保存到文件,请稍候……\n");

if((comPtr=fopen(FileName,"w"))==NULL)

printf("没有该文件\n");

else

for(i=0 ; i<n ; i++)

fprintf(comPtr,"\n%17s%12d%12s%81f",com[i]name,com[i]num,com[i]shang,com[i]price);

fclose(comPtr);

}

int DataRead(record com,int nptr) /读取文件/

{

int i=0;

char datafile[20];

FILE comPtr;

nptr = 0;

printf("请输入文件名:");

scanf("%s",datafile);

if((comPtr = fopen(datafile,"r")) == NULL) /打开文件/

{

printf("没有该文件,请重新输入!\n");

return 0;

}

else

{

printf("正在读取商品单价,请稍候……\n");

while (!feof(comPtr))

{

fscanf(comPtr,"%s%d%s%f",&com[i]name,&com[i]num,&com[i]shang,&com[i]price);

i++;

}

nptr = i;

printf("\n");

fclose(comPtr);

return 1;

}

}

void DataDisPlay()

{

void OnPrice(record com,int n ); /按单价/

void OnNumber(record com,int n ); /按商品号/

int N;

int i;

record com[300];

char YesNo; /是否按顺序显示/

char tp;

if(DataRead(com,&N)==1) /从文件读取数据/

{

printf("序号\t\t商品名\t 商品号\t生产商\t单价\n");

for(i=0;i<N;i++)

printf("%3d%17s%12d%12s%81f\n",i+1,com[i]name,com[i]num,com[i]shang,com[i]price);

printf("要按顺序显示吗?(Y/N)");

fflush(stdin);

scanf("%c",&YesNo);

if(YesNo=='y'||YesNo=='Y')

{

printf("\t请输入排序方式:\n");

printf("\t(1按价格排序从低到高;2按商品号排序从低到高)");

fflush(stdin);

scanf("%c",&tp);

if(tp=='1')

OnPrice(com,N);

else if(tp =='2')

OnNumber(com,N);

else

printf("\t输入了不正确项!\n");

}

}

} /结束显示成绩/

void OnPrice(record com,int n ) /按单价顺序/

{ int i,j;

record temp;

printf("\t\t按单价排序---\n\n");

printf("商品总数为%d:\n",n);

for(j=0 ; j<n-1 ; j++) /冒泡排序/

for(i=0 ; i<n-j-1 ; i++)

if(com[i]price>com[i+1]price)

{

temp=com[i];

com[i]=com[i+1];

com[i+1]=temp;

}

printf("\n\t\t按成绩排序的结果如下(按分数从低到高):\n\n");

printf("序号\t\t商品名\t 商品号\t生产商\t单价\n");

for(i=0 ; i<n ; i++)

printf("%3d%17s%12d%12s%81f\n",i+1,com[i]name,com[i]num,com[i]shang,

com[i]price);

}

void OnNumber(record com,int n ) /按序号顺序/

{

int i,j;

record temp;

printf("\t\t按商品号排序---\n\n");

printf("商品总数为%d:\n",n);

for(j=0 ; j<n-1 ; j++)

for(i=0 ; i<n-j-1 ; i++)

if(com[i]num>com[i+1]num)

{

temp=com[i];

com[i]=com[i+1];

com[i+1]=temp;

}

printf("\n\t按商品号排序的结果如下(按商品号从小到大):\n\n");

printf("序号\t\t商品名\t 商品号\t生产商\t单价\n");

for(i=0 ; i<n ; i++)

printf("%3d%17s%12d%12s%81f\n",i+1,com[i]name,com[i]num,com[i]shang,

com[i]price);

}

void DataAdd( ) /增加/

{

int i=0,n,m; /商品名称/

char shangming[30];

int haoma; /生产商/

char shangjia[10];

float danjia;

char YesOrNo;

record com[SIZE];

printf("\t\t读取原有数据信息---\n");

if(DataRead(com,&n)==1)

{

printf("\t\t信息读取完毕!\n\n");

printf("\t\t请输入要添加的商品总数:");

scanf("%d",&m);

printf("\t\t现在开始录入这%d个商品信息:\n\n",m);

while(i<m)

{

printf("第%d个商品的商品名:",i+1);

scanf("%s",&shangming);

printf("第%d个商品的商品号:",i+1);

scanf("%d",&haoma);

printf("第%d个商品的生产商:",i+1);

scanf("%s",&shangjia);

printf("第%d个商品的单价:",i+1);

scanf("%f",&danjia);

if(danjia>=0&&danjia<=1000) /有效的单价才录入/

{

strcpy(com[i+n]name,shangming);

com[i+n]num = haoma;

strcpy(com[i+n]shang,shangjia);

com[i+n]price = danjia;

i =i+1;

}

else

printf("输入的单价是一个无效的值,请重新输入!\n\n");

}

printf("要保存您刚才录入的数据吗(Y/N)");

fflush(stdin);

scanf("%c",&YesOrNo);

if(YesOrNo=='y'||YesOrNo=='Y')

DataStorage(com,n+m);

else if(YesOrNo=='n'||YesOrNo=='N')

return;

else

printf("输入了不正确项,返回上一级\n");

return;

}

}

void DataDel( )//删除

{

void OnNumber(record com,int n );

record com[SIZE];

int i; /总记录数/

int n; /要删除的记录号/

int m;

printf("\t\t读取原有数据信息---\n");

if(DataRead(com,&n)==1)

{

printf("\t\t原始数据如下:\n\n");

OnNumber(com,n );

printf("请输入你要删除的记录的序号");

scanf("%d",&m);

if(m>=1 && m<=n)

{

for(i=m-1;i<n-1;i++)

com [i] = com[i+1];

DataStorage(com,n-1);

}

}

}

void DataStatistic( ) /统计信息/

{

int high=0,low=200,ave=0;

int n,i,sum=0;

int g,l;

record com[SIZE];

printf("读取数据信息---\n");

if(DataRead(com,&n)==1)

{

printf("商品总数为%d\n\n",n);

for(i=0;i<n;i++)

{

if(com[i]price>high)

{

high = com[i]price;

g=i;

}

if(com[i]price<low)

{

low = com[i]price;

l=i;

}

sum += com[i]price;

}

ave=sum/n;

printf("\t\t最高\t最低\t平均\n"); /计算值/

printf("商品单价统计:\t%d\t%d\t%d\n\n",high,low,ave);

printf("序号\t\t商品名\t 商品号\t生产商\t单价\n");

for(i=0 ; i<n ; i++)

printf("%3d%17s%12d%12s%81f\n",i+1,com[i]name,com[i]num,com[i]shang,

com[i]price);

printf("\t\t 序号\t\t 商品名\t 商品号\t 生产商 单价\n");

printf("单价最高的商品是:%3d%17s%12d%12s%81f\n\n",g+1,com[g]name,com[g]num,com[g]shang,com[g]price);

printf("单价最低的商品是:%3d%17s%12d%12s%81f\n",l+1,com[l]name,com[l]num,com[l]shang,com[l]price);

} /结束统计/

}

以上就是关于如何学习c语言全部的内容,包括:如何学习c语言、c语言商品管理系统源代码,加注释、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9464092.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存