c语言程序设计
百度知道应该有很多这样的问题了,自己找答案。查 C语言 n阶层
什么是C语言?C语言的简介。C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。语言特点:C是中级语言/C是结构式语言/C语言功能齐全/C语言适用范围大/简洁紧凑、灵活方便/运算符丰富/数据类型丰富/C是结构式语言/语法限制不太严格,程序设计自由度大/适用范围大,可移植性好。
#include <stdio.h>#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define INFO_FILE "user.txt"
#define CREATE(type) (type*)malloc(sizeof(type))
#define NAME_LEN 10
#define CODE_LEN 10
#define RS_SUCCESS 0
#define RS_MEMFLOW 1
#define RS_UNCMPLT 2
#define RS_DATAERR 3
#define RS_USEREST 4
#define RS_EXCSATH 5
#define RS_NOADMIN 6
#define RS_NETUSER 7
enum USER_TYPE{UT_NORM, UT_ADMIN};
const char *str_ut[] = {"普通", "管理员"};
typedef struct user_info
{
int ui_num;
char ui_name[NAME_LEN];
char ui_code[CODE_LEN];
enum USER_TYPE ui_type;
struct user_info *next;
} USER, *PUSER;
typedef struct user_sys
{
int user_num;
PUSER user_list;
PUSER pre_user;
} SYSTEM;
void init_user(PUSER pu, int num, const char *name,
const char *code, enum USER_TYPE type)
{
pu->ui_num = num;
strcpy(pu->ui_name, name);
strcpy(pu->ui_code, code);
pu->ui_type = type;
pu->next = NULL;
}
void write_user(FILE *fp, PUSER pu)
{
fprintf(fp, " %d %s %s %d\n", pu->ui_num, pu->ui_name,
pu->ui_code, pu->ui_type);
}
PUSER read_user(FILE *fp)
{
PUSER pu = CREATE(USER);
if (pu != NULL)
{
fscanf(fp, "%d%s%s%d", &pu->ui_num, pu->ui_name,
pu->ui_code, &pu->ui_type);
}
return pu;
}
void init_sys(SYSTEM *ps)
{
ps->user_num = 0;
ps->user_list = NULL;
ps->pre_user = NULL;
}
void destroy_user_list(PUSER pu)
{
while (pu)
{
PUSER t;
t = pu->next;
free(pu);
pu = t;
}
}
int write_sys(FILE *fp, SYSTEM *ps)
{
int i;
PUSER pu = ps->user_list;
for (i = 0; i < ps->user_num; i++)
{
if (pu == NULL)
{
return RS_DATAERR;
}
write_user(fp, pu);
pu = pu->next;
}
return RS_SUCCESS;
}
PUSER find_user_name(SYSTEM *ps, const char *name)
{
int i;
PUSER pr = NULL, pu = ps->user_list;
for (i = 0; i < ps->user_num; i++)
{
if (!strcmp(name, pu->ui_name))
pr = pu;
pu = pu->next;
}
return pr;
}
PUSER find_user_num(SYSTEM *ps, int num)
{
int i;
PUSER pr = NULL, pu = ps->user_list;
for (i = 0; i < ps->user_num; i++)
{
if (num == pu->ui_num)
{
pr = pu;
break;
}
pu = pu->next;
}
return pr;
}
int add_user(SYSTEM *ps, PUSER pu)
{
if (find_user_name(ps, pu->ui_name) != NULL ||
find_user_num(ps, pu->ui_num) != NULL )
return RS_USEREST;
pu->next = ps->user_list;
ps->user_list = pu;
ps->user_num++;
return RS_SUCCESS;
}
int delete_user(SYSTEM *ps, PUSER pu)
{
PUSER pf;
pf = ps->user_list;
if (pu == NULL)
{
return RS_NETUSER;
}
else if (pu == pf)
{
ps->user_list = pf->next;
free(pf);
ps->user_num--;
return RS_SUCCESS;
}
while (pf->next && pf->next != pu) pf = pf->next;
if (pf == NULL)
return RS_NETUSER;
else
pf->next = pu->next;
free(pu);
ps->user_num--;
return RS_SUCCESS;
}
int read_sys(FILE *fp, SYSTEM *ps)
{
int i, nad = 0;
PUSER pu;
pu = read_user(fp);
while (!feof(fp))
{
if (pu == NULL)
{
destroy_user_list(ps->user_list);
return RS_MEMFLOW;
}
else if (pu->ui_type == UT_ADMIN)
{
nad++;
}
if (add_user(ps, pu) != RS_SUCCESS)
return RS_DATAERR;
pu = read_user(fp);
}
if (nad == 0) return RS_NOADMIN;
return RS_SUCCESS;
}
int login(SYSTEM *ps, const char *name, const char *code)
{
static nfail = 3;
PUSER pu;
if ((pu = find_user_name(ps, name)) == NULL || strcmp(pu->ui_code, code) != 0)
{
nfail--;
}
else
{
ps->pre_user = pu;
nfail = 3;
}
return nfail;
}
void menu(SYSTEM *ps)
{
char *mu_lab[] = {"退出", "登陆", "修改密码", "增加", "删除", "用户列表"};
int level = 1;
int choice = -1;
char ch;
while (choice != 0)
{
int i;
system("cls");
if (ps->pre_user == NULL)
{
puts("\n你还没有登陆");
}
else
{
printf("\t-----欢迎 %s !!-----\n\n", ps->pre_user->ui_name);
printf("\t编号:%d, 身份: %s\n", ps->pre_user->ui_num,
str_ut[ps->pre_user->ui_type]);
if ( ps->pre_user->ui_type == UT_ADMIN) level = 5;
else if ( ps->pre_user->ui_type == UT_NORM) level = 2;
}
puts("\n\n=====菜单======");
for (i = 1; i <= level; i++)
{
printf("%d. %s\n", i, mu_lab[i]);
}
printf("%d. %s\n", 0, mu_lab[0]);
ch = getch();
choice = ch - '0';
if (choice <= level)
{
switch (choice)
{
case 0:
break;
case 1:
{
char name[NAME_LEN];
char code[NAME_LEN];
int nf;
puts("请输入登陆名:");
scanf("%s", name);
puts("请输入密码:");
scanf("%s", code);
if ((nf = login(ps, name, code)) != 3)
{
puts("\n登陆失败");
puts("用户名或密码错误");
if (nf == 0)
{
puts("\n程序即将退出!!");
getch();
return;
}
printf("你还剩下%d次机会\n", nf);
}
else
{
puts("登陆成功");
}
getch();
break;
}
case 2:
{
char code[CODE_LEN];
puts("请输入新密码");
scanf("%s", code);
strcpy(ps->pre_user->ui_code, code);
puts("修改成功!");
getch();
break;
}
case 3:
{
int num = -1;
enum USER_TYPE type;
PUSER pu = CREATE(USER);
if (pu == NULL)
{
puts("\n内存分配失败,程序退出!!");
getch();
return;
}
while (find_user_num(ps, ++num) != NULL);
pu->ui_num = num;
puts("输入新用户名称");
scanf("%s", &pu->ui_name);
puts("输入新用户密码");
scanf("%s", &pu->ui_code);
printf("输入新用户权限 ");
do
{
for (i = 0; i < sizeof(str_ut) / sizeof(char*); i++)
{
printf("%d.%s ", i, str_ut[i]);
}
scanf("%d", &type);
}
while (type < 0 || type > UT_ADMIN);
pu->ui_type = type;
if (add_user(ps, pu) == RS_SUCCESS)
{
puts("添加成功");
printf("编号:%d\n", num);
}
else
{
puts("该用户已存在!");
}
getch();
{
PUSER pu;
pu = ps->user_list;
getch();
}
break;
}
case 4:
{
int num;
PUSER pu;
puts("输入用户编号");
scanf("%d", &num);
if (num == ps->pre_user->ui_num)
{
puts("你不能删除自己!");
}
else
{
pu = find_user_num(ps, num);
if (delete_user(ps, pu) == RS_SUCCESS)
{
puts("删除成功!");
}
else
{
puts("用户不存在!");
}
}
getch();
break;
}
case 5:
{
PUSER pu;
pu = ps->user_list;
printf("%4s%8s%7s\n", "编号", "用户名", "权限");
for (i = 0; i < ps->user_num; i++)
{
printf("%4d%8s%7s\n", pu->ui_num, pu->ui_name, str_ut[pu->ui_type]);
pu = pu->next;
}
getch();
}
};
}
}
}
int main()
{
FILE *fp;
SYSTEM sys;
int flg;
init_sys(&sys);
fp = fopen(INFO_FILE, "r");
if (fp == NULL)
{
puts("系统载入失败!");
puts(INFO_FILE"打开失败");
getch();
return 1;
}
else if ((flg = read_sys(fp, &sys)) != RS_SUCCESS)
{
puts("系统载入失败!");
switch (flg)
{
case RS_MEMFLOW:
puts("内存分配失败");
break;
case RS_UNCMPLT:
puts("数据不完整!");
break;
case RS_NOADMIN:
puts("没有系统用户数据");
break;
}
fclose(fp);
getch();
}
else
{
puts("系统载入成功");
getch();
menu(&sys);
fp = fopen(INFO_FILE, "w");
write_sys(fp, &sys);
}
return 0;
}
文件user.txt放在同一目录,内容:
0 admin 123 1
第一次登陆时使,登陆名 admin 密码 123
计算机程序设计语言有哪些?
机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。 用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的...
程序设计语言的基本知识
程序设计语言的基本知识介绍如下:1、第一代机器语言 机器语言是由二进制 0、1 代码指令构成,不同的 CPU 具有不同的指令系统。机器语言程序难编写、难修改、难维护,需要用户直接对存储空间进行分配,编程效率极低。这种语言已经被渐渐淘汰了。2、第二代汇编语言 汇编语言指令是机器指令的符号化,与...
程序设计语言一般可分为三类
程序设计语言分成了三大类,分别是机器语言,汇编语言和高级语言。1,机器语言 机器语言,顾名思义就是机器认识的语言,即这类语言或者其构成的程序可以直接被机器所识别的语言。这类语言是无需翻译的,其优点是较为直接,但缺点也非常明显——难以被人类所理解和记忆。2,汇编语言 汇编语言是第二代...
程序设计语言通常有哪些?
程序设计语言通常分为:机器语言、汇编语言、高级语言三类。机器语言是最底层的语言,只有“0”和“1”,二进制语言,就像开关一样,0是关,1是通过。汇编语言指令是机器指令的符号化,与机器指令存在着直接的对应关系。高级语言面向用户的、基本上独立于计算机种类和结构的语言。高级语言的一个命令可以...
什么是程序设计语言?
程序设计语言(programming language)是用于编写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言包含三个方面,即语法、语义和语用。语法表示程序的结构或形式,亦即表示构成程序的各个记号之间的组合规则,...
计算机程序设计语言有哪些
汇编语言是用一些容易理解和记忆的字母,单词来代替一个特定的指令,虽然使用性上要高于机器语言,但同样对机器依赖性大,不同的机器有不同的指令系统,不同的机器有不同的汇编语言,在实际应用中也很难大范围的扩展开来。高级语言是独立于指令系统的程序设计语言,相比以上两种计算机语言,非常的直观、...
什么是程序?什么是程序设计?
1、计算机程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。它以某些程序设计语言编写,运行于某种目标结构体系上。打个比方,程序就如同以英语(程序设计语言)写作的文章,要让一个懂得英语的人(编译器)同时也会阅读这篇文章的人(结构体系)来阅读、理解、标记...
程序设计高级语言有哪些?
高级语言包括很多编程语言,如目前流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言,中文版的C语言习语言等等,这些语言的语法、命令格式都不相同。程序设计语言的类型:命令式语言,这种语言的语义基础是模拟“数据存储\/数据操作”的图灵机可计算模型,十分符合现代计算机体系结构...
程序设计语言有哪几种?
2、缺点:是用指令编程,而成千上万条指令很难记住,且一旦出错很难找出错误。不同型号的计算机,指令编码并不相同,因此,针对某一型计算机写的程序移植到另外一种计算机上后,运行结果未必正确,甚至有可能根本不能运行。二、汇编语言 1、优点:可直接访问系统接口,汇编程序翻译成的机器语言程序的效率...
程序设计语言有哪些特点?
用高级程序设计语言编写的程序可读性好,但不能被机器直接执行。高级编程语言的可阅读性更强,能够方便的表达程序的功能,但高级编程语言因为是一种编译语言,所以它的运行速度比汇编程序要低,同时因为高级语言比较冗长,所以代码的执行速度也要慢一些。另外,高级编程语言的架构高于汇编,不能编写直接访问...
戎虾博苏: #include<stdio.h> long Factorial(int n) { int i; long f =1; for(i=1;i<=n;i++) f *= i; return f; } int main() {int i; long sum=0; for(i=1;i<=9;i+=2) sum += Factorial(i); printf("sum=%ld\n",sum); return 0; }
建宁县18511316870: 什么是c语言程序设计 - ?
戎虾博苏: C语言是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台.二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准.c语言程序设计 就是用c语言的功能函数开发的程序.
建宁县18511316870: C语言程序设计 - ?
戎虾博苏: 1 # include 2 void print(int n); 3 int increment(int n); 4 int main(void) 5 { 6 int n=3; 7 increment (n); 8 print(n); 9 n = increment(n); 10 print (n); 11 print (...
建宁县18511316870: 简述开发一个c语言程序的步骤 - ?
戎虾博苏: 1 写代码.这是最基础的一步,即实现C语言的源文件(.c,必需),和可能的头文件(.h,非必需). 2 编译.将编写好的代码,通过编译工具,转换为目标文件.此步中,会对文件内部及包含的头文件进行语法语义的分析检查.如果出错,...
建宁县18511316870: vc/c语言程序设计是什么 - ?
戎虾博苏: 就是用C语言编写代码,设计程序.”C语言“是一种计算机程序设计语言.它既有高级语言的特点,又具有汇编语言的特点.它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序.因此,它的应用范围广泛.
建宁县18511316870: C语言程序设计?
戎虾博苏: 我这个是图书管理系统的C预言源程序 #include<stdio.h> #include<string.h> #include<conio.h> #include<stdlib.h> #include<ctype.h> #define STACK_INIT_SIZE 10 #define OK 1 #define TRUE 1 #define ERROR 0 /*定义学生类型,用于存放借出...
建宁县18511316870: C语言程序设计?
戎虾博苏: .学C语言重要的是你的逻辑思维和坚持学习的恒心,学编程特别是语言就要多看,多思考,多练,也就是多敲代码. 2.就C语言来说,是编程者应该好好学的一门语言,因为它是你日后要学的其他一些更高级的面向对象的编程语言的基础,学好了...
建宁县18511316870: C语言程序设计?
戎虾博苏: #include<stdio.h> #define N 50 //根据班上人数可自由定 struct student { int num; char name[10]; int grade[4]; }stu[N]; void print(struct student *p) { int b; for(;p<stu+N;p++) { int average=0,score=0; for(b=0;b<4;b++) average+=p->grade[b]; score=...
建宁县18511316870: c语言程序设计?
戎虾博苏: #include<stdio.h>int chengji(){float cj[9];char xh[9];printf("请输入10位学生成绩:");for(int i=0;i<10;i++) { scanf("%f",cj[i]); } for(int j=0;i<10;j++) { scanf("%c",a[j]); } return 0;}int paixu(float a[9]){float temp;for(i=0;i<10;i++) { for(j=0;j<10-1-i;j++)...