大一c语言
1. 大一c语言,求解,谢谢
#include<stdio.h>
intmain()
{
intn=1,t,max,min,s=0;
scanf("%d",&max);
s=min=max;
while(~scanf("%d",&t))
{
n++;
s+=t;
if(min>t)min=t;
if(max<t)max=t;
}
printf("%d%d%.3f ",min,max,s/(float)n);
return0;
}
2. 大一计算机学生如何学好c语言
随着科技的发达时代的进步,现在计算机已经成为了一项普及的学科,可以说任何一项科技的发展,现在都离不开计算机的帮助。比如我们学地质的方面,一些地质图的绘制以及等高线了测量,都需要计算机协助。
在有些工业化的程序设计方面,计算机更是起到了不可忽略的作用。我在大学的时候,大一学习的计算机语言是vb,但是慢慢我发现vb还只是能解决初级的问题,如果想要更高深的还是要学好c语言。
于是我是自己学习的c语言,而且在学习过程中虽然有很多的困难,但是只要你能够掌握最基本的核心算法,都能够将它们迎刃而解。
首先在学c语言的时候,一定要将各种算法都记住,如果不行的话,把它们写在本子上,自己默写几遍。要这些算法公式在自己脑海里滚瓜烂熟,在使用过程中才不会出现差错。
记住算法是第一步,其次还要学会怎样去使用,其实就像套用公式一样,掌握了公式的基本内容,就可以把所需要的东西往公式里面套。
在拿到一个c语言的题的时候,首先要明白他要做什么。做好最基本的分析,目前手中有哪些数据,最终我要获得什么样的结果,将头和尾首先想好。然后再去填充中间的过程,在填充过程的时候慢慢摸索到底是用哪一个算法比较合适,刚开始做题的时候肯定要套有好几个算法,但是慢慢熟练了就能很顺利的找到合适的算法。
c语言在应用方面大多数是要编程软件,所以也要考虑到软件的实用性。考试一般都是让填空题或者是改错题,其实归根结底就是为了让你掌握整个算法的运行过程。
现在正处在大一的计算机起步阶段,所以不用太着急的去快速完成,只要现在能掌握基础的运用和软件的编程,慢慢熟练起来就可以了。如果足够熟悉之后,可以报考国家级计算机考试,这个等级考试是比较权威的,而且获得证书对今后的发展也有好处。
3. 大一C语言编程题
车票根据题意两两站点连线生成,金额和数量分别用随机数。
数据存储:站点,车票,用户分别为3个结构体,用于对应数据库。
购买流程:检查输入数值有效性->检查车票库存->购买成功同步修改用户购买流水及车票库存。(这里题目需求不明确,没有指明用户购买方式),我的代码允许一个用户同时购买多种票,每种票可分批购买多张。购买流水记录自动增加和更新。
退票流程:检查输入和用户购买记录,同步更新用户及车票信息。
删除流程:选择删除没有被用户购买的票(函数检查所有用户,虽然本题只要一个用户,实际传参用户数组首地址)。
PS: 这个题目涉及到增删改,用链表来写更好,但考虑你学习范围,没有使用链表而是动态数组,动态数组删除,考虑内存占用,不仅要需循环移位还要释放多余地址。
另外整体程序,异常的处理我只是单纯返回0或者1或者-1区分基本的成功与失败。你如想对个别异常进行特殊处理,自行修改返回值,接收判断。
下面是代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>
#include <conio.h>
#define MS 5//最大站点数
typedef struct station
{
char sid[10];
char sName[20];
}STN;
typedef struct ticket
{
int tid;//票编号
STN *ssP;//起始站
STN *tsP;//终点站
int value;//票价
int number;//数量
}TKT;
typedef struct userInfo//用户
{
char uid[20];//身份证号
int cnt;//购买的票种类数量
int *btids;//购买的所有票id数组
int *btNum;//购买的所有票数量数组
}UIFO;
int init(STN stns[MS],TKT **tkts);//初始化车站、票数据
int disAllTickets(TKT *tkts);
int buyTicket(UIFO *uifo,TKT *tkts);//异常返回0
int reTicket(UIFO *uifo,TKT *tkts);//异常返回0
int showMenu(UIFO *uifo,TKT *tkts);
int delIntByIndex(int *nums,int len,int index);//通过下标index删除动态整型数组nums对应元素,并释放多余地址,返回删除后的数组长度,异常返回-1
int delTkts(UIFO *uifos,int len,TKT *tkts);//删除指定票(检查用户组,只要有一个用户购买,无法删除)
int cnt;//票种类数量
int main()
{
STN stns[MS];
TKT *tkts=NULL;
UIFO uifo={"321002199902050614",0,NULL,NULL};
srand(time(NULL));
cnt=init(stns,&tkts);
printf("共生成%d组票(每组往返两种票,共%d种票) ",cnt/2,cnt);
printf("按任意键继续。。。。 "),getch();
system("cls");
showMenu(&uifo,tkts);
return 0;
}
int showMenu(UIFO *uifo,TKT *tkts)
{
int n=5;
printf("(1) Buy ticket ");
printf("(2) Refund ticket ");
printf("(3) Remove ticket ");
printf("(4) Display all tickets ");
printf("(0) Exit ");
while(n<0 || n>4)
scanf("%d",&n);
switch(n)
{
case 0: return 0;
case 1: if(!buyTicket(uifo,tkts)) return 0;break;
case 2: if(!reTicket(uifo,tkts)) return 0;break;
case 3: if(!delTkts(uifo,1,tkts)) return 0;break;
//这里删除功能,用户多名,要传数组首地址,由于演示只有一个用户(len=对应用户数),所以只传该用户地址(len=1)
case 4: disAllTickets(tkts);break;
}
showMenu(uifo,tkts);
return 1;
}
int disAllTickets(TKT *tkts)
{
int i;
for(i=0;i<cnt;i++)
printf("编号:%2d 路程:%s-%s 票价:%3d 剩余票数:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);
printf("按任意键继续。。。。 "),getch();
system("cls");
return 1;
}
int delIntByIndex(int *nums,int len,int index)
{
int i,*temp=NULL;
if(index>len-1) return -1;
for(i=index;i<len-1;i++)
nums[i]=nums[i+1];
len--;
if(len)
{
temp=(int *)realloc(nums,sizeof(int)*len);
if(!temp) return -1;
nums=temp;
}
else
free(nums);
return len;
}
int reTicket(UIFO *uifo,TKT *tkts)
{
int i,j,tid,n,index,len,flag=0;
printf("当前用户购买记录: ");
for(i=0;i<uifo->cnt;i++)
{
for(j=0;j<cnt;j++)
if(tkts[j].tid==uifo->btids[i]) index=j;
printf("--车票编号:%d,起末站:%s-%s,购买票数:%d ",uifo->btids[i],tkts[index].ssP->sName,tkts[index].tsP->sName,uifo->btNum[i]);
}
printf("请输入要退票的车票id及票数:"),scanf("%d%d",&tid,&n);
for(i=0;i<uifo->cnt;i++)
if(uifo->btids[i]==tid && uifo->btNum[i]>=n)
{
for(j=0;j<cnt;j++)
if(tkts[j].tid==uifo->btids[i]) tkts[j].number+=n;//同步修改对应车票剩余票数
uifo->btNum[i]-=n;//用户购买记录修改
if(uifo->btNum[i]==0)//某种车票全部退完,删除该条记录
{
len=delIntByIndex(uifo->btNum,uifo->cnt,i);
if(len==-1) return 0;
len=delIntByIndex(uifo->btids,uifo->cnt,i);
if(len==-1) return 0;
uifo->cnt=len;
}
flag=1;
break;
}
if(flag)
printf("退票成功! ");
else
printf("无此购买记录或输入数量不符合 ");
printf("按任意键继续。。。。 "),getch();
system("cls");
return 1;
}
int buyTicket(UIFO *uifo,TKT *tkts)
{
char spn[20],tpn[20];
int i,n=-1,index=-1,*temp=NULL;
for(i=0;i<cnt;i++)
printf("编号:%2d 路程:%s-%s 票价:%3d 剩余票数:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);
printf("请输入始发站站名和终点站站名:"),scanf("%s%s",spn,tpn);
for(i=0;i<cnt;i++)
if(strcmp(tkts[i].ssP->sName,spn)==0 && strcmp(tkts[i].tsP->sName,tpn)==0)
{
printf("车票%s-%s 票价:%3d 剩余票数:%d ",tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);
index=i;
break;
}
if(index==-1)
printf("购买失败!无此路程的车票 ");
else
{
while(n<=0)
{
printf("请输入要购买的数量(大于0):"),scanf("%d",&n);
if(tkts[index].number<n)
printf("错误:车票数量不足或者输入数值超出范围!请重新输入! "),n=-1;
}
for(i=0;i<uifo->cnt;i++)//检查用户购买记录,重复票累加购买数量,不同票新增记录
{
if(uifo->btids[i]==tkts[index].tid)
{
printf("该票已购买了%d张,现再次购买%d张,累计购买了%d张 ",uifo->btNum[i],n,uifo->btNum[i]+n);
uifo->btNum[i]+=n;
tkts[index].number-=n;
break;
}
}
if(i==uifo->cnt)//未检查到重复记录,新增
{
if(!uifo->btids)
{
uifo->btids=(int *)malloc(sizeof(int));
if(!uifo->btids) return 0;
uifo->btNum=(int *)malloc(sizeof(int));
if(!uifo->btNum) return 0;
}
else
{
temp=(int *)realloc(uifo->btids,sizeof(int)*(uifo->cnt+1));
if(!temp) return 0;
uifo->btids=temp;
temp=(int *)realloc(uifo->btNum,sizeof(int)*(uifo->cnt+1));
if(!temp) return 0;
uifo->btNum=temp;
}
uifo->btids[uifo->cnt]=tkts[index].tid;
printf("该票购买了%d张 ",(uifo->btNum[uifo->cnt]=n));
tkts[index].number-=n;
uifo->cnt++;
printf("用户购买记录: ");
for(i=0;i<uifo->cnt;i++)
printf("--车票编号:%d,购买票数:%d ",uifo->btids[i],uifo->btNum[i]);
}
printf("本次成功购买了%s-%s的票%d张! ",tkts[index].ssP->sName,tkts[index].tsP->sName,n);
}
printf("按任意键继续。。。。 "),getch();
system("cls");
return 1;
}
int delTkts(UIFO *uifos,int len,TKT *tkts)//len:所有购买的用户数量
{
int i,j,k,tid,flag=0,index;
for(i=0;i<cnt;i++)
printf("编号:%2d 路程:%s-%s 票价:%3d 剩余票数:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);
printf("请输入要删除的车票编号:"),scanf("%d",&tid);
for(i=0;i<cnt;i++)
if(tid==tkts[i].tid)
{
index=i;
flag=1;
for(j=0;j<len;j++)//检查所有用户购买记录
{
for(k=0;k<uifos[j].cnt;k++)
if(uifos[j].btids[k]==tid)
{
flag=0;
printf("该票已被用户购买,无法删除,需先完成退票! ");
break;
}
if(!flag)
break;
}
break;
}
if(!flag) printf(" 删除失败,输入数值超出范围或不可删除! ");
else
{
cnt--;
if(cnt==0)
{
free(tkts[index].ssP);
free(tkts[index].tsP);
free(&tkts[index]);
}
else
{
free(tkts[index].ssP);
free(tkts[index].tsP);
for(i=index;i<cnt;i++)
tkts[i]=tkts[i+1];
tkts[cnt].ssP=NULL;
tkts[cnt].tsP=NULL;
free(&tkts[cnt]);
}
printf(" 删除成功! ");
}
printf("按任意键继续。。。。 "),getch();
system("cls");
return 1;
}
int init(STN stns[MS],TKT **tkts)
{
TKT *tTemp=NULL;
int i,j,n,v,cnt=2;
static int id=1;
printf("生成站点: ");
for(i=0;i<MS;i++,id++)
{
sprintf(stns[i].sid,"车站%03d",id);
sprintf(stns[i].sName,"SN%03d",id);
printf("----站点名:%s。站点ID:%s ",stns[i].sid,stns[i].sName);
}
printf("计算所有站点连线,生成车票(票是往返,所以一次生成往返两组票): ");
for(i=0;i<MS;i++)
for(j=i+1;j<MS;j++)
{
if(!(*tkts))
{
*tkts=(TKT *)malloc(sizeof(TKT)*2);
if(!(*tkts)) return -1;
}
else
{
tTemp=(TKT *)realloc((*tkts),sizeof(TKT)*cnt);
if(!tTemp) return -1;
*tkts=tTemp;
}
n=rand()%4+2;//每种票随机2~5张(保证总数大于20)
v=rand()%201+50;//随机生成票价50~250
(*tkts)[cnt-1].tid=cnt;
(*tkts)[cnt-1].ssP=&stns[i];
(*tkts)[cnt-1].tsP=&stns[j];
(*tkts)[cnt-1].value=v;
(*tkts)[cnt-1].number=n;
(*tkts)[cnt-2].tid=cnt-1;
(*tkts)[cnt-2].ssP=&stns[j];
(*tkts)[cnt-2].tsP=&stns[i];
(*tkts)[cnt-2].value=v;
(*tkts)[cnt-2].number=n;
printf("----%s和%s的之间往返票各生成%d张,票价为%d(随机) ",stns[i].sName,stns[j].sName,n,v);
cnt+=2;
}
return cnt-2;
}
//答题不易,如采纳的,请不要无故删除问题。
4. 大一c语言学到了什么
c课程仅仅是带你入门,涉及的不过是基础语法
建议你先巩固基础,学习c语言库函数。了解各个库函数的实现方法,学习自己改写功能类似的库函数,毕竟库函数是c前辈们写的精华,可取之处很多
另外还要学习数据结构 算法等课程,以后用c写小课题,指针的使用也很关键。
学习的过程中多动手调试程序,一阶段后自己挑个小课题来做,写c就是不断调试和修改的过程
5. 大一期末C语言考试的重点是什么
选择,循环,函数,数组,指针,文件都要,其中函数(自定义函数),指针是重点,要掌握指向不同对象的指针,比如文件指针,指向函数的等。顺便把文件的也看看
6. 大一C语言计算机作业
c语言是国际上广泛流行的、很有发展前途的计算机高级语言。它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。
早期的操作系统等系统软件主要是用汇编语言编写的(包括
unix操作系统在内)。由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差。为了提高可读性和可移植性,最好改用高级语言,但一般的高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作),例如:对内存地址的操作、位操作等)。人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。于是,c语言就在这种情况下应运而生了。
c语言是在b语言的基础上发展起来的,它的根源可以追溯到algol
60。
1960年出现的algol
60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。1963年英国的剑桥大学推出了cpl(combinedprogram-
ming
language)语言。cpl语言在algol
60的基础上接近了硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的matin
richards对
cpl语言作了简化,推出了bcpl(basic
combined
programming
language)语言。1970年美国贝尔实验室的
ken
thompson以
bcpl语言为基础,又作了进一步简化,设计出了很简单的而且很接近硬件的
b语言(
取
bcpl的第一个字母),并用
b语言写第一个unix操作系统,在pdp-7上实现。
1971年在pdp-11/20上实现了b语言,并写了unix操作系统。但b语言过于简单,功能有限。1972年至
1973年间,贝尔实验室的
d.m.ritchie在b语言的基础上设计出了c语言(取
bcpl的第二个字母)。c语言既保持了bcpl和b语言的优点(精练、接近硬件),又克服了它们的缺点(过于简单、数据无类型等)。
最初的c语言只是为描述和实现unix操作系统提供一种工作语言而设计的。1973年,k.thom-
pson和d.m.ritchie两人合作把unix的90%以上用
c改写(unix第5版。原来的
unix操作系统是1969年由美国的贝尔实验室的
k.thompson和d.m.ritchie开发成功的,是用汇编语言写的)。
7. 大一新生学c语言用什么软件
大一新生学c语言用vscode,vim等等。学c语言,关键是亲自动手。建议你从网上找一个有现成教学代码的教学资料或网站,按上面的要求在本地计算机上搭建对应的编译环境,当然也可以直接用网上的c代码编译器。通过下载课程的教学c代码,自己编辑修改,再编译运行,学起来很快。
c语言内容
C语言是一种计算机编程语言,简单它是人类与计算机交互的语言,用于告诉计算机让它做什么。C语言是一种高级语言,所谓高级是指它可以被人类轻松的阅读。这是相对于机器语言与汇编语言而言的。C语言程序需要经过处理后转换成机器语言才可以工作。
8. 我是大一的!怎么在一星期内学C语言!!重点是不挂科就行了!!!求高手指点!
根据我当初学习 C 语言编程的亲身体会就是:如果你想在短时间内快速掌握 C 语言编程,首先必须要在自己的电脑上安装一个 C 语言编程的集成编程环境!然后再购买一本比较适合初学者的 C 语言教材。我当时购买的是:谭浩强编写的《C 语言程序设计》一书,我个人感觉该教材比较通俗易懂,适合初学者学习 C 语言。
另外, 就是最、最重要的一点必须要做到:一边用自己的头脑理解教材上所讲的 C 语言理论知识,但是同时还必须要亲自上机编写、并且调试教材中的所有例题程序、以及每一章后面的所有练习题。直到把所有的例题程序、以及练习题程序都调试通过,能够运行出正确的结果为止。而绝对不能够只是阅读教材上的 源程序、观看视频等,如果仅仅是这样的话,那么在一星期之内肯定是无法掌握 C 语言编程技能的。
最后,再需要说明一点的就是:由于你在掌握 C 语言编程的时间上有时间要求(一星期),故你在这一星期之内,必须全力以赴地上机编程调试 C 语言,即:把你的所有空闲时间都用来学习 C 语言上机编程调试!!!只有这样,你才能够做到在一星期之内掌握 C 语言的编程。
9. 大一的时候C语言怎么学
怎么学?用心学,好好学。
不是人到了教室糊弄一堂课就叫学了。不是交了作业互相吵吵答案就叫学了。也别奔着过计算机二级三级这种垃圾证书去。
如果是新人,最开始接触编程肯定一脸懵逼。
学语言,不管是c语言还是d语言,是学编程语言还是说人话的语言,不管是口语还是书面语,英语还是汉语,都有知道基本要素。
学英语你要有单词量,c语言你要知道关键词,
学英语你要会语法,才能组织句子,c语言也是,你要会语法,才能会写出逻辑表达你的意思。编程语言和自然语言没啥区别,不过就是写给编译器看的。
基础语法会了,也能表达句子了,是不是该解决实际问题了?跟你写作文一样的,一步步来就是喽。
怎么体现你学会了基础呢?输入输出交互最基本的肯定要会吧?文件读写操作要会吧?字符串处理要会吧?简单的结构体和指针能掌握了没?不能只会if
else。这些基本的会了,最简单的排序算法也得会吧?
c基础掌握了,后面还有数据结构要看呢😂