当前位置:首页 » 编程语言 » c语言程序实验

c语言程序实验

发布时间: 2022-11-01 23:10:38

c语言程序设计实验报告怎么写啊

通过本试验初步培养计算机逻辑解题能力。熟练掌握赋值语句和if语句的应用;掌握switch多路分支语句和if嵌套语句的使用

② C语言程序实验设计

年龄分段:

main()
{
int x;
scanf("%d", &x);
if(x <= 0)
{printf("input error\n"); return;}
switch(x)
{
case 1:case 2:case 3:case 4:case 5:
printf("学龄前幼儿\n");
break;
case 6:case 7:case 8:case 9:case 10:case 11:
printf("儿童\n");
break;
case 12:case 13:case 14:case 15:case 16:case 17:
printf("少年\n");
break;
case 18:case 19:case 20:case 21:case 22:case 23:case 24:
case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:
case 34:case 35:case 36:case 37:case 38:case 39:
printf("青年\n");
break;
case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 48:
case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:
case 58:case 59:
printf("中年\n");
break;
default:
printf("老年\n");
break;
}
}

Sn=:

int value(int a, int n)
{
int i, result = 0;
while(n --)
{
result += a;
a *= 10;
}
return result;
}
int calc(int a, int n)
{
int i, result = 0;
result = value(a, n);
while(--n)
{
result -= value(a, n);
}
return result;
}
main()
{
int a, n;
scanf("%d", &n);
for(a = 1; a < 10; a++)
printf("a= %d, n = %d, result is %d\n", a, n, calc(a, n));
}

猴子吃桃:

int main()
{
int i,j;
j=1;
for(i=1;i<10;i++)
{
j=2*(j+1);
}
printf("第一天摘桃子的个数为%d\n",j);
return 0;
}

③ c语言程序设计实验报告

五、 课程设计小结心得体会
1设计思想
1)、设定一个一维数组,可先按员工序号设定每位员工的工资
2)、利用While语句和Prinft语句完成用户菜单的设计
功能为:第1项 设为员工编号和工资数据
第2项 设为修改员工工资数据
第3项 设为查询员工工资数据
第4项 设为结束系统
3)、当用户选择1、2项时,需输入员工编号,所以需要设计编号校正功能,如果出错可输出“The error employe number”
4)、当选择2时,进行工资数据的修改,并将新数据存回该员工的工资数组中
5)、利用for循环中判断语句,将用户工资数与数组中的工资数进行比较,如相同则输出,将计数器加1,如此下去,直到把整个数组遍历一遍
6)、判断计数器是否为0, 是0表示找不到相符的工资,如果不为0,则输出共查出几比相符的工资
以上当然里面也涉及了“函数的模块化”理念,可以避免但需要重复打印头文件时重复编写打印信头的语句。像这样的程序是多见的,这样不但降低了程序还发效率,而且耗时浪费资源“共用体”的使用简化了程序的“复杂”性,正如(4)中,学号与姓名同时表示一个人,但在函数使用了“共用体”,从而程序的简单可以便于纠错,查找问题,避免了代码的重复,这样就给编译时带来了一定的难度与“量”的繁杂。一般不采取这样的做法,力求“简单、明了、清晰”。

④ C语言程序实验课

  1. #include<stdio.h>
    intmain(){
    inta=0;
    intb=0;
    intc=0;
    intmax=0;
    scanf("%d%d%d",&a,&b,&c);
    max=a>b?a:b;
    max=max>c?max:c;
    printf("%d ",max);
    return0;
    }
  2. #include<stdio.h>
    intmain(){
    intscore;
    chargrade;
    scanf("%d",&score);
    if(score>=90)
    {
    grade='A';
    }
    elseif(score>=80&&score<90)
    {
    grade='B';
    }
    elseif(score>=70&&score<80)
    {
    grade='C';
    }
    elseif(score>=60&&score<70)
    {
    grade='D';
    }
    else{
    grade='E';
    }

    switch(grade)
    {
    case'A':
    printf("A");
    break;
    case'B':
    printf("B");
    break;
    case'C':
    printf("C");
    break;
    case'D':
    printf("D");
    break;
    case'E':
    printf("E");
    break;
    }
    return0;
    }
  3. #include<stdio.h>
    intmain(){
    intx=0,y=0;
    scanf("%d",&x);
    if(x<1)
    {
    y=x;
    }
    elseif(x<10&&x>=1)
    {
    y=2*x-1;
    }
    elseif(x>=10)
    {
    y=3*x+11;
    }
    printf("%d ",y);
    return0;
    }

⑤ C语言实验

哈夫曼编码(Huffman Coding)是一种编码方式,以哈夫曼树—即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。 在计算机信息处理中,“哈夫曼编码”是一种一致性编码法(又称"熵编码法"),用于数据的无损耗压缩。这一术语是指使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。这种方法是由David.A.Huffman发展起来的。 例如,在英文中,e的出现概率很高,而z的出现概率则最低。当利用哈夫曼编码对一篇英文进行压缩时,e极有可能用一个位(bit)来表示,而z则可能花去25个位(不是26)。用普通的表示方法时,每个英文字母均占用一个字节(byte),即8个位。二者相比,e使用了一般编码的1/8的长度,z则使用了3倍多。倘若我们能实现对于英文中各个字母出现概率的较准确的估算,就可以大幅度提高无损压缩的比例。

本文描述在网上能够找到的最简单,最快速的哈夫曼编码。本方法不使用任何扩展动态库,比如STL或者组件。只使用简单的C函数,比如:memset,memmove,qsort,malloc,realloc和memcpy。
因此,大家都会发现,理解甚至修改这个编码都是很容易的。

背景
哈夫曼压缩是个无损的压缩算法,一般用来压缩文本和程序文件。哈夫曼压缩属于可变代码长度算法一族。意思是个体符号(例如,文本文件中的字符)用一个特定长度的位序列替代。因此,在文件中出现频率高的符号,使用短的位序列,而那些很少出现的符号,则用较长的位序列。
编码使用
我用简单的C函数写这个编码是为了让它在任何地方使用都会比较方便。你可以将他们放到类中,或者直接使用这个函数。并且我使用了简单的格式,仅仅输入输出缓冲区,而不象其它文章中那样,输入输出文件。
bool CompressHuffman(BYTE *pSrc, int nSrcLen, BYTE *&pDes, int &nDesLen);
bool DecompressHuffman(BYTE *pSrc, int nSrcLen, BYTE *&pDes, int &nDesLen);
要点说明
速度
为了让它(huffman.cpp)快速运行,我花了很长时间。同时,我没有使用任何动态库,比如STL或者MFC。它压缩1M数据少于100ms(P3处理器,主频1G)。
压缩
压缩代码非常简单,首先用ASCII值初始化511个哈夫曼节点:
CHuffmanNode nodes[511];
for(int nCount = 0; nCount < 256; nCount++)
nodes[nCount].byAscii = nCount;
然后,计算在输入缓冲区数据中,每个ASCII码出现的频率:
for(nCount = 0; nCount < nSrcLen; nCount++)
nodes[pSrc[nCount]].nFrequency++;
然后,根据频率进行排序:
qsort(nodes, 256, sizeof(CHuffmanNode), frequencyCompare);
现在,构造哈夫曼树,获取每个ASCII码对应的位序列:
int nNodeCount = GetHuffmanTree(nodes);
构造哈夫曼树非常简单,将所有的节点放到一个队列中,用一个节点替换两个频率最低的节点,新节点的频率就是这两个节点的频率之和。这样,新节点就是两个被替换节点的父节点了。如此循环,直到队列中只剩一个节点(树根)。
// parent node
pNode = &nodes[nParentNode++];
// pop first child
pNode->pLeft = PopNode(pNodes, nBackNode--, false);
// pop second child
pNode->pRight = PopNode(pNodes, nBackNode--, true);
// adjust parent of the two poped nodes
pNode->pLeft->pParent = pNode->pRight->pParent = pNode;
// adjust parent frequency
pNode->nFrequency = pNode->pLeft->nFrequency + pNode->pRight->nFrequency;
这里我用了一个好的诀窍来避免使用任何队列组件。我先前就直到ASCII码只有256个,但我分配了511个(CHuffmanNode nodes[511]),前255个记录ASCII码,而用后255个记录哈夫曼树中的父节点。并且在构造树的时候只使用一个指针数组(ChuffmanNode *pNodes[256])来指向这些节点。同样使用两个变量来操作队列索引(int nParentNode = nNodeCount;nBackNode = nNodeCount –1)。
接着,压缩的最后一步是将每个ASCII编码写入输出缓冲区中:
int nDesIndex = 0;
// loop to write codes
for(nCount = 0; nCount < nSrcLen; nCount++)
{
*(DWORD*)(pDesPtr+(nDesIndex>>3)) |=
nodes[pSrc[nCount]].dwCode << (nDesIndex&7);
nDesIndex += nodes[pSrc[nCount]].nCodeLength;
}
(nDesIndex>>3): >>3 以8位为界限右移后到达右边字节的前面
(nDesIndex&7): &7 得到最高位.
注意:在压缩缓冲区中,我们必须保存哈夫曼树的节点以及位序列,这样我们才能在解压缩时重新构造哈夫曼树(只需保存ASCII值和对应的位序列)。
解压缩
解压缩比构造哈夫曼树要简单的多,将输入缓冲区中的每个编码用对应的ASCII码逐个替换就可以了。只要记住,这里的输入缓冲区是一个包含每个ASCII值的编码的位流。因此,为了用ASCII值替换编码,我们必须用位流搜索哈夫曼树,直到发现一个叶节点,然后将它的ASCII值添加到输出缓冲区中:
int nDesIndex = 0;
DWORD nCode;
while(nDesIndex < nDesLen)
{
nCode = (*(DWORD*)(pSrc+(nSrcIndex>>3)))>>(nSrcIndex&7);
pNode = pRoot;
while(pNode->pLeft)
{
pNode = (nCode&1) ? pNode->pRight : pNode->pLeft;
nCode >>= 1;
nSrcIndex++;
}
pDes[nDesIndex++] = pNode->byAscii;
}

⑥ 学院c语言实验报告选择结构程序设计

一、
scanf("%lf", x); 改为scanf("%lf", &x);

y = 1 / x 没加分号

二、if( a + b > c || b + c > a || a + c > b)改成if( !(a + b > c || b + c > a || a + c > b) )

⑦ 大学C语言程序设计实验报告,求程序步骤。

#include<stdio.h>
void main()
{ float f=555.5678,ff;
int a[10]={ 0,1,2,3,4,5,6,7,8,9 },b[10],i;
FILE *fp;
if ( fp=fopen("TEXT.dat","wb+") )
{ fwrite(&f,sizeof(float),1,fp);
for ( i=0;i<10;i++ ) fwrite(&a[i],sizeof(int),1,fp);
fclose(fp);
} else printf("无法建立文件。\n"); goto ERROREND;
if ( fp=fopen("TEXT.dat","rb") )
{ fread(&ff,sizeof(float),1,fp);
for ( i=0;i<10;i++ ) fread(&b[i],sizeof(int),1,fp);
fclose(fp);
} else printf("无法打开文件。\n"); goto ERROREND;
printf("%.2f ",ff); for ( i=0;i<10;i++ ) printf("%d ",b[i]); printf("\n");
ERROREND:;
}

⑧ C语言循环实验

#include"stdio.h"
#include"string.h"
intmain()
{
chars[110];
intcnt;
gets(s);
intlen=strlen(s);
cnt=0;
intflag=0;

int_flag=0;

for(inti=0;i<=len;i++)
{
if((s[i]>='0'&&s[i]<='9')&&(s[i+1]=='.'&&(s[i+2]>='0'&&s[i+2]<='9')))
{
_flag=1;//出现数字标记
continue;

}
if(_flag==1)
{
cnt--;//前面有数字,现在不是数字,说明增加了一个整数
_flag=0;
// 处理了部分小数问题如果是0.3之类的还是会有问题的
}

}
for(inti=0;i<=len;i++)
{

if((s[i]>='0'&&s[i]<='9'))
{
flag=1;//出现数字标记
continue;

}
if((flag==1))
{
cnt++;//前面有数字,现在不是数字,说明增加了一个整数
flag=0;

}



}
printf("%d ",cnt);
getchar();
return0;
}

基本在下面的兄弟上面改进了点 ============貌似被我改难看了..楼下别怪我啊,,,,大哥你的代码看起来很舒服的..

热点内容
净网密码是什么 发布:2025-01-10 05:04:31 浏览:821
C语言醉酒 发布:2025-01-10 05:02:07 浏览:759
淘宝上传宝贝品牌怎么填写 发布:2025-01-10 04:27:26 浏览:552
在计算机的存储单元中存储的 发布:2025-01-10 04:26:37 浏览:733
压缩表qb 发布:2025-01-10 04:24:55 浏览:999
linuxhttpd访问 发布:2025-01-10 04:17:57 浏览:405
java实时监控 发布:2025-01-10 04:11:46 浏览:363
c语言程序试题 发布:2025-01-10 04:05:17 浏览:793
ibatis生成sql 发布:2025-01-10 03:56:10 浏览:519
我的表姐迪克电脑密码多少 发布:2025-01-10 03:27:40 浏览:768