编写好一个C语言程序,如何把数据一直保存下来

Python012

编写好一个C语言程序,如何把数据一直保存下来,第1张

数组保存。定义一个数组。

如:int a[6]={1,2,3,4,5,6}

然后输出

for(i=0i<6i++){

printf("%d",a[i])}

代码如下:

#include<stdio.h>

int main(){

int a[6]={1,2,3,4,5,6}

int i

for(i=0i<=5i++)

printf("%d\n",a[i])

}

扩展资料

保存方法二如下:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

int main()

{

FILE *fp

char in

fp = fopen("test.txt","w")

printf("请输入一个字符串(以!结束):\n")

while((in=getchar()) != '!')

{

if(in <='z' &&in >= 'a')

{

in -= 32

}

fputc(in,fp)

}

fclose(fp)

return 0

}

数据库是用来存入数据的仓库。用户可以对文件中的数据进行新增、查询、更新、删除等操作。但是C语言和数据库是两个东西,他们之间的关系就是C语言可以用来开发数据库管理软件,也可以通过C语言借助于SQL语句来操作数据库。

C语言普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,它具有自己独特的特点。具体体现在以下三个方面:

其一,广泛性。C 语言的运算范围的大小直接决定了其优劣性。C 语言中包含了34种运算符,因此运算范围要超出许多其它语言,此外其运算结果的表达形式也十分丰富。此外,C 语言包含了字符型、指针型等多种数据结构形式,因此,更为庞大的数据结构运算它也可以应付。

其二,简洁性。9 类控制语句和32个KEYWORDS是C语言所具有的基础特性,使得其在计算机应用程序编写中具有广泛的适用性,不仅可以适用广大编程人员的操作,提高其工作效率,同 时还能够支持高级编程,避免了语言切换的繁琐。

扩展资料

数据库架构

1、内层:最接近实际存储体,亦即有关数据的实际存储方式。

2、外层:最接近用户,即有关个别用户观看数据的方式。

3、概念层:介于两者之间的间接层。

参考资料来源:百度百科--数据库

/*

size_a,pa——指向数组a的有效末端

ma——a的最大容量,必须大于na

n=12——求n的阶

p——求阶乘时的当前乘数

*/

#include

#define

Ma

10000

int

pa/*指向数组a的有效末端*/

int

p=2

int

memory_over=0

union

data

{

unsigned

long

int

b

struct

{unsigned

l:16

unsigned

h:16

}m

}a[Ma]

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

算法说明1:考虑到result比较长,我用a[Ma].b来存储n!的result,每一位a[pa].b能存储4位10进制数字。

因为我定义的数组是静态的,所以Ma应该足够大。

ps:其实只用定义一个unsigned

long

int

b[Ma]就可以了(直接用b[pa]代替a[pa].b),但是我考虑到可能会访问每一结点b[pa]的高16位(a[pa].m.h)和低16位(a[pa].m.l),但是的我考虑是多余的!!不用像我这样定义这么复杂的共用体!!

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

unsigned

int

cashe

unsigned

int

carry

void

main()

{

unsigned

int

n/*求n的阶*/

void

facto(unsigned

int

n)

printf("Input

n:")

scanf("%u",&n)

/*=================开始求阶乘!=============*/

a[0].b=1/*初始化*/

facto(n)

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

算法说明2:上面这句直接调用facto(n)来求n!

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

/*========================以下是显示最后结果====================================*/

if(memory_over==0)

{printf("the

result

include

%dNO:\n",pa+1)

printf("%u",a[pa--].m.l)

for(pa>=0pa--)

printf("%04u",a[pa].m.l)

printf("\n")

}

getch()

}

/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

算法说明2:求阶函数facto(n)说明:

这个函数会不断地调用multiple(),它的作用是每被调用一次就使得a[pa].b与阶数p相乘一次,直到乘完n为止!

{multiple()

p++/*每一轮乘一个阶数p*/

}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

void

facto(unsigned

int

n)

{void

multiple()

pa=0

while(pa<Ma-1&&p<=n)/*容量限制*/

{multiple()

p++/*每一轮乘一个阶数p*/

}

if(p<=n)

{printf("memory

out!\n")memory_over=1}/*如果当前的存储结果的数组a[Ma]不够用!应提高Ma*/

}

/*==============================================================================

算法说明3:乘法函数multiple()说明:负责a[pa].b与阶数p相乘。

a[pa].b有很多结点,a[0].b、a[1].b、a[2].b、a[3].b、a[4].b、。。。

当然是从低结点a[0].b开始不断与p相乘,产生的“进位”加到高位a[1].b,直到a[pa].b*p为止!

随着结果数值增大,pa个结点的a[].b可能容纳不下结果,所以如果a[pa].b与p相乘后还有“进位”carry,就扩大pa,并把carry放入到新增加的结点:

if(carry>0)

a[++pa].b=carry

===================================================================================*/

void

multiple()

{int

i=0

carry=0

while(i<=pa)/*i指向当前处理的元素a[i],每一轮用一个位与阶数p相乘*/

{a[i].b=a[i].b*p+carry/*计算结果,要考虑来自低位的进位*/

carry=a[i].b/10000/*计算进位*/

a[i].b=a[i].b%10000/*计算余数*/

i++

}

if(carry>0)

a[++pa].b=carry

}