c语言主函数教案 c语言主函数的作用

C语言 主函数定义

C语言中主函数指的是main函数

创新互联,是成都地区的互联网解决方案提供商,用心服务为企业提供网站建设、成都app软件开发小程序制作、系统定制开发和微信代运营服务。经过数十载的沉淀与积累,沉淀的是技术和服务,让客户少走弯路,踏实做事,诚实做人,用情服务,致力做一个负责任、受尊敬的企业。对客户负责,就是对自己负责,对企业负责。

主函数的两个形参形式中的形参,允许从执行环境中传递任意的多字节字符串(它们通常被称为命令行参数),各个指针 argv.. argv[argc-1] 指向每个这些字符串的第一个字符。

argv[0] 是指向一个表示用于执行该程序自身的名字的空结尾多字节字符串(或者当执行环境不支持时,为空字符串 "")的开头字符的指针。这些字符串是可以改动的,虽然对它们的改动并不会被传回给执行环境:比如可以用 std::strtok 来使用它们。由 argv 所指向的数组的大小至少为 argc+1,其最后一个元素 argv[argc] 保证为一个空指针。

扩展资料:

C++继承了C语言的大部分特性,因此保留了“程序总是从main函数开始执行,且总是默认从main函数的return语句或结尾处结束运行”这一传统,但是要注意,C++中的main函数要想作为程序执行的出入口,必须写在全局(Global)范围,不能写成某个结构体或某个类的成员。虽然main函数可以作为结构体或者类的成员函数,但相应地会失去作为程序出入口的功能。

C++中全局main函数的书写格式与C语言完全相同,功能也完全相同,且同一C++程序同样只能有一个全局main函数。

谁可以帮我做一个C语言课程设计啊,要求一个主函数含三个简单的程序

要做什么课设啊?

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

#define M 10

int num; //计数

struct student

{

char xuehao[10]; //学号

char name[10]; //姓名

char sex[8]; //性别

char birth[20]; //出生年月

char jiguan[30]; //籍贯

char tel[30]; //电话

int score; //成绩

}student[M];

char headline[80]; //全局变量

void read1()

{

FILE *fp; //文件指针

int i=0;

fp=fopen("jz0112.txt","r"); //打开文件

if(fp==NULL)

{

printf("不能找到文件,请检查!\n");

return;

}

fgets(headline,80,fp); //读第一行的函数

puts(headline);

while(!feof(fp)) //判断文件是否结束

//for(i=0;iM;i++)

{

fscanf(fp,"%s%s%s%s%s%s%d",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

i++; //fscanf读两个空白字符之间的字符

}

num=i;

fclose(fp); //关闭文件

for(i=0;inum;i++)

printf("%-10s%-8s%6s%16s%16s%16s%6d\n",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

}

void find_xuehao() //按学号查询

{

char xuehao[10];

int i;

int flag=0;

printf("请输入学号:");

scanf("%s",xuehao);

for(i=0;inum;i++)

if(strcmp(xuehao,student[i].xuehao)==0)

{

flag=1;

printf("%-10s%-8s%6s%16s%16s%16s%6d\n",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

break;

}

if(flag==0)

printf("\n无此信息\n");

}

void find_name() //按姓名查询

{

char name[8];

int i;

int flag=0;

printf("请输入姓名:");

scanf("%s",name);

for(i=0;inum;i++)

if(strcmp(name,student[i].name)==0)

{

flag=1;

printf("%-10s%-8s%6s%16s%16s%16s%6d\n",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

break;

}

if(flag==0)

printf("\n无此信息\n");

}

void all() //显示全部

{

int i;

for(i=0;iM;i++)

{

printf("%-10s%-8s%6s%16s%16s%16s%6d\n",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

}

}

void find()

{

int b;

printf("\n*************************************************************************\n");

printf(" 1 按学号查询 2按姓名查询 3显示全部 4退出 \n");

printf("\n*************************************************************************\n");

printf("请选择:");

scanf("%d",b);

switch(b)

{

case 1:find_xuehao();break;

case 2:find_name();break;

case 3:all();break;

case 4:return;

}

}

void sort_name() //按姓名排序

{

char name[M][12],t[12];

int i,j;

for(i=0;iM;i++)

strcpy(name[i],student[i].name);

for(j=1;jM-1;j++)

for(i=0;iM-j;i++)

if(strcmp(name[i],name[i+1])0)

{

strcpy(t,name[i]);

strcpy(name[i],name[i+1]);

strcpy(name[i+1],t);

}

for(i=0;iM;i++)

for(j=0;jM;j++)

if(strcmp(name[i],student[j].name)==0)

printf("%-10s%-8s%6s%16s%16s%16s%6d\n",student[j].xuehao,student[j].name,student[j].sex,

student[j].birth,student[j].jiguan,student[j].tel,student[j].score);

}

void sort_score() //按分数排序

{

int i,j,t,a[M];

for(i=0;iM;i++)

a[i]=student[i].score;

for(j=1;jM-1;j++)

for(i=0;iM-j;i++)

if(a[i]a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

for(i=0;iM;i++)

for(j=0;jM;j++)

if(a[i]==student[j].score)

printf("\n%-10s%-8s%6s%14s%16s%16s%6d",student[j].xuehao,student[j].name,student[j].sex,

student[j].birth,student[j].jiguan,student[j].tel,student[j].score);

}

void sort() //排序

{

int b;

printf("\n*************************************************************************\n");

printf(" 1 按姓名排序 2 按分数排序 3 退出 \n");

printf("\n*************************************************************************\n");

printf("请选择:");

scanf("%d",b);

switch(b)

{

case 1:sort_name();break;

case 2:sort_score();break;

case 3:return;

}

}

void add() //添加

{

int i;

int flag=0;

char add[10];

printf("请输入你要修改的学生的学号:");

scanf("%s",add);

for(i=0;inum;i++)

if(strcmp(student[i].xuehao,add)==0)

{

flag=1;

printf("此信息已存在,不能添加!\n");

printf("%-10s%-8s%6s%14s%16s%16s%6d",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);break;

}

if(flag==0)

{

printf("\n无此学生信息,请添加信息:");

scanf("%s%s%s%s%s%s%d",student[num].xuehao,student[num].name,student[num].sex,

student[num].birth,student[num].jiguan,student[num].tel,student[num].score);

num++;

for(i=0;inum;i++)

printf("\n%-10s%-8s%6s%14s%16s%16s%6d",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

}

}

void Delete_name() //按姓名删除

{

int i;

int flag=0;

char name[10];

printf("请输入要删除的姓名:");

scanf("%s",name);

for(i=0;inum;i++)

if(strcmp(student[i].name,name)==0)

{

flag=1;

for(;inum-1;i++)

student[i]=student[i+1];

printf("此信息存在,将被删除。\n");

}

for(i=0;inum-1;i++)

printf("\n%-10s%-8s%6s%14s%16s%16s%6d",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

if(flag==0)

{

printf("\n无此学生信息,请确认!\n");

}

}

void Delete_xuehao() //按学号删除

{

int i;

int flag=0;

char xuehao[10];

printf("请输入要删除的学号:");

scanf("%s",xuehao);

for(i=0;inum;i++)

if(strcmp(student[i].xuehao,xuehao)==0)

{

flag=1;

for(;inum-1;i++)

student[i]=student[i+1];

printf("此信息存在,将被删除。\n");

}

for(i=0;inum-1;i++)

printf("\n%-10s%-8s%6s%14s%16s%16s%6d",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

if(flag==0)

{

printf("\n无此学生信息,请确认!\n");

}

}

void Delete() //删除

{

int b;

printf("\n*************************************************************************\n");

printf(" 1 按姓名删除 2 按学号删除 3 退出 \n");

printf("\n*************************************************************************\n");

printf("请选择:");

scanf("%d",b);

switch(b)

{

case 1:Delete_name();break;

case 2:Delete_xuehao();break;

case 3:return;

}

}

void modify() //修改

{

int i;

int flag=0;

char modify[10];

printf("请输入你要修改的学生的学号:");

scanf("%s",modify);

for(i=0;inum;i++)

if(strcmp(student[i].xuehao,modify)==0)

{

flag=1;

printf("学号 姓名 性别 出生年月 籍贯 电话 成绩\n");

printf("%-10s%-8s%6s%14s%16s%16s%6d",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);break;

}

if(flag==0)

{

printf("\n无此学生信息\n");

return;

}

printf("\n要修改学生的姓名:\n");

printf("student[i].name=");

scanf("%s",student[i].name);

printf("\n要修改学生的性别:\n");

printf("student[i].sex=");

scanf("%s",student[i].sex);

printf("\n要修改学生的出生年月:\n");

printf("student[i].birth=");

scanf("%s",student[i].birth);

printf("\n要修改学生的籍贯:\n");

printf("student[i].jiguan=");

scanf("%s",student[i].jiguan);

printf("\n要修改学生的电话:\n");

printf("student[i].tel=");

scanf("%s",student[i].tel);

printf("\n要修改学生的成绩:\n");

printf("student[i].score=");

scanf("%d",student[i].score);

for(i=0;inum;i++)

printf("\n%-10s%-8s%6s%14s%16s%16s%6d",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

}

void classify_male() //按男分类

{

int i;

FILE *fp;

fp=fopen ("male.txt","w");

if (fp==NULL)

{

printf("不能找到文件,请检查!");

return ;

}

fputs(headline,fp);

for(i=0;inum;i++)

{

if(strcmp(student[i].sex,"男")==0)

{

printf("\n%-10s%-8s%6s%14s%16s%16s%6d",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

fprintf(fp,"\n%-10s%-8s%6s%14s%16s%16s%6d",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

}

}

fclose(fp);

}

void classify_female() //按女分类

{

int i;

FILE *fp1;

fp1=fopen("female.txt","w");

if (fp1==NULL)

{

printf("不能找到文件,请检查!");

return;

}

fputs(headline,fp1);

for(i=0;inum;i++)

{

if(strcmp(student[i].sex,"女")==0)

{

printf("\n%-10s%-8s%6s%14s%16s%16s%6d",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

fprintf(fp1,"\n%-10s%-8s%6s%14s%16s%16s%6d",student[i].xuehao,student[i].name,student[i].sex,

student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

}

}

fclose(fp1);

}

void classify() //分类

{

int b;

printf("\n*************************************************************************\n");

printf(" 1 按男分类 2 按女分类 3 退出 \n");

printf("\n*************************************************************************\n");

printf("请选择:");

scanf("%d",b);

switch(b)

{

case 1:classify_male();break;

case 2:classify_female();break;

case 3:return;

}

}

void write() //写函数,将输出函数写入文本文件

{

FILE *fp;

int i=0;

fp=fopen("jz0112gyq.txt","w");

if(fp==NULL)

{

printf("不能找到文件,请检查!\n");

return;

}

fputs(headline,fp);

for(i=0;inum;i++)

fprintf(fp,"\n%-10s%-8s%6s%14s%16s%16s%6d",student[i].xuehao,student[i].name,

student[i].sex,student[i].birth,student[i].jiguan,student[i].tel,student[i].score);

fclose(fp);

}

void main()

{

int i;

read1();

while(1)

{

printf("\n**************简易学生信息管理系统的设计**************\n");

printf("1 查询 2 排序 3 添加\n");

printf("4 删除 5 修改 6 分类\n");

printf(" 0 退出 \n");

printf("\n******************************************************\n");

printf("请选择:");

scanf("%d",i);

switch(i)

{

case 1:find();break;

case 2:sort();break;

case 3:add();write();break;

case 4:Delete();write();break;

case 5:modify();write();break;

case 6:classify();break;

case 0:return;

}

}

}

这是我的课设程序。简易学生信息管理系统。

C语言链表 主函数

1、添加头文件"stdio.h"

2、struct student * creat(void),但是你的main函数中返回接收却是用的int*类型。

3、主函数main应当明确声明为void main()

4、最为严重的是:struct student * creat(void) 函数体中使用了局部变量struct student *head; struct student *p1,*p2; 但是函数结束的地方却要返回这些指针,因此返回的值是无效数据。返回时,已经不再作用域了,是无效的空间。建议把这些数据当作输入参数,指针类型的。就可以正确的接收分配的struct student空间以及指针了。

5、struct student * creat(void) 函数体中,临时指针*p1、*p2再函数返回之前应当设置为NULL,避免因为局部变量的作用域结束导致相关的空间被清除。

总之,我建议把struct student * creat(void)定义修改为:

void creat(struct student **head).

以上内容经过调试,可以使用。

==================我的程序,经过完整的调试

#include "stdafx.h"

#include "malloc.h"

#include "stdio.h"

#define NULL 0

#define LEN sizeof(struct student)

struct student

{

long num;

float score;

struct student *next;

};

int n;

void creat(struct student **head) /*定义函数,此函数带回一个指向链表头的指针*/

{

struct student *p1,*p2;

n=0;

do

{

p1=(struct student *)malloc(LEN); /*开辟一个新单元*/

p1-next=NULL;

scanf("%ld,%f",p1-num,p1-score);

if(p1-num==0)

break;

n++;

if(n==1)

*head=p1;

else

p2-next=p1;

p2=p1;

} while(p1-num!=0) ;

p1=NULL;

p2=NULL;

}

void main()

{

struct student *p;

creat(p);

if(p!=NULL)

do

{

printf("%ld %5.1f\n",p-num,p-score);

p=p-next;

}while(p!=NULL);

flushall(); //清除键盘缓冲区,避免输入混淆

getchar(); //等待键盘任意输入,以便观察运算结果

}

看我的回答怎么样?

C语言主调函数和被调函数

1、主调函数与被调函数是成对出现的。是主动与被动的关系。现在有A、B两个函数,A函数调用了B函数,那么,A函数就是主调函数,B函数就是被调函数。这和现实生活中的打电话是一样的,一个是主叫,一个是被叫。有意思的是,在很多编程语言里,函数间的调用就是用CALL关键字来表示的。

2、在C语言里,被调函数如果要先声明的话,一定是在主函数之前被声明的,虽然名字可以取的千奇百怪,不过先声明的话这样就比较明显好认(有很多程序员都提倡这么做,这样就可以方便的分析程序了),另外,主函数是main,看见这个就是看见主函数了。被调函数就是一个可以实行一定功能的函数,需要它有什么用,你就可以随便的定义它,完整它,所以调用函数非常的多、杂乱,不易理清头绪,但是调用函数却是一定在主函数中实现的,我说一下我自己的方法,就是先不看调用函数,先从主函数看起,当遇到调用函数时就回过头去看那个调用函数的具体内容(实际上,把调用函数的内容带入主函数中就行了,具体对待就行)。


分享标题:c语言主函数教案 c语言主函数的作用
本文网址:http://scyanting.com/article/dopgogd.html