当前位置:首页 » 编程语言 » 大一c语言

大一c语言

发布时间: 2022-12-16 11:01:38

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基础掌握了,后面还有数据结构要看呢😂

热点内容
安卓和ios步数哪个准确 发布:2025-01-24 13:12:13 浏览:289
怎么给电脑换配置 发布:2025-01-24 13:04:04 浏览:919
如何修改服务密码10086 发布:2025-01-24 12:44:27 浏览:512
dosftp连接 发布:2025-01-24 12:35:56 浏览:802
编程来炒股 发布:2025-01-24 12:35:14 浏览:854
python正则中括号 发布:2025-01-24 12:32:08 浏览:584
配置排列用英语怎么说 发布:2025-01-24 12:32:00 浏览:607
led流水灯c语言程序 发布:2025-01-24 12:28:15 浏览:46
苹果平板锁屏密码在哪里 发布:2025-01-24 12:16:41 浏览:958
网校c语言 发布:2025-01-24 12:12:15 浏览:787