C语言6

合集下载

C语言第六章_数组_2

C语言第六章_数组_2

if (a[i]>a[i+1])
{temp=a[i];a[i]=a[i+1];a[i+1]=temp;14}
#include <stdio.h> main(){ /*对10个整数排序*/
int a[10]={9, 8, 5, 4, 2, 0, 6, 1, 3, 7}, i, k; for (k=1;k<10;k++)
f0=1 (n=0m) ain(){
f1=1
(n=1) int i; long f [20]={1,1};
0 f1n=fn-1f+[0f]n-2 (nfo2r) (i=2;i<20;i++)
1
1
f[1]
2
2
f[2]
f[i]=f[i-2]+f[i-1];
3
3
f[3]
for(i=0;i<20;i++)
4
数组是具有一定顺序的若干同数据类型变 量的集合体。数组要有名称,要有规模。
一.一维数组定义
类型说明符 数组名[常量];
例如:int a[6]; a = = &a[0]
a
内存映象:编译时分配一片连续的内 存空间,数组名为该空间的首地址— —常量地址。
0 a[0]
1 a[1]
2 a[2]
3 a[3]
1
4 a[4]
4
一行一行地存储所有的数组 5
a[0][1] a[0][2] a[0][3] a[1][0] a[1][1]
元素,数组名为该空间的首 6 a[1][2]
地址——地址常量。
7 a[1][3]
8

计算机二级C语言第6章 字符型数据

计算机二级C语言第6章 字符型数据

正确答案:B 【解析】程序首先赋值a为字符'3',赋值b为字符'A',循环变量i的初 值为0,每次循环后自增1,最大值为5,if条件判断i的值,当i的值为 偶数时,将b与i的和当做字符输出;当i的值为奇数时,将a与i的和当 做字符输出;所以i为0时,输出b+0即A;i为1时,输出a+1即'4';i为 2时,输出b+2即C;i为3时输出a+3即'6'……,综上,程序运行结果 为:A4C6E8,本题答案为B。
有如下程序 #include <stdio.h> #include <string.h> main() {
char* str = "0\n0123\4"; printf("%d", strlen(str)); }
程序运行后的输出结果是()。 A.3 B.6 C.8 D.7
正确答案:D 【解析】strlen()函数求得参数中字符串的长度(不包括字符串结束符'\0'); 程序定义一个字符指针变量str,并使用字符串"0\n0123\4"初始化,然后将 str传给strlen()函数,用strlen()函数计算该字符串的长度,该字符串中的字符 分别是:'0'、'\n'、'0'、'1'、'2'、'3'、'\4'、'\0'。其中'\4'表示菱形符号'◆', 除了'\0',其他字符都属于strlen()函数的计算字符,结果为7,本题答案为D。
以下正确的字符常量是()。 A."AB" B.'\0AB' C.'AB' D.'\xAB'

C语言第6章习题解答

C语言第6章习题解答

第6章函数和模块设计【习题6-1】更正下面函数中的错误。

(1)返回求x和y平方和的函数。

(2)返回求x和y为直角边的斜边的函数。

sum_of_sq(x,y) hypot(double x,double y){ {double x,y; h=sqrt(x*x+y*y);return(x*x+y*y); return(h);} }程序如下:/*c6_1(1).c*/ /*c6_1(2).c*/(1) (2)double sum_of_sq(double x,double y) double hypot(double x,double y) { {return(x*x+y*y); double h;} h=sqrt(x*x+y*y);return(h);}【习题6-2】说明下面函数的功能。

(1)itoa(int n,char s[ ])(2)int htod(char hex [ ]){ { int i,dec=0;static int i=0,j=0; for(i=0;hex[i]!='\0';i++)int c; { if(hex[i]>='0'&&hex[i]<='9') if(n!=0) dec=dec*16+hex[i]-'0';{ if(hex[i]>='A'&&hex[i]<='F') j++; dec=dec*16+hex[i]-'A'+10;c=n%10+'0'; if(hex[i]>='a'&&hex[i]<='f') itoa(n/10,s); dec=dec*16+hex[i]-'a'+10;s[i++]=c; }} return(dec);else }{ (3)void stod(int n)if(j==0) s[j++]='0'; { int i;s[j]='\0'; if(n<0){ putchar('-');n=-n;} i=j=0; if((i=n/10)!=0) stod(i);} putchar(n%10+'0');} }功能:(1)(略)(2)(略)【习题6-3】编写已知三角形三边求面积的函数,对于给定的3个量(正值),按两边之和大于第三边的规定,判别其能否构成三角形,若能构成三角形,输出对应的三角形面积。

C语言 第六章 数组

C语言 第六章 数组
2.
6
6.1 排序问题
3. 初始化
类型名 数组名[数组长度]={初值表}; 初值表中依次放着数组元素的初值。例如: int a[10]={1,2,3,4,5,6,7,8,9,10}; 静态存储的数组如果没有初始化,系统自动给所有的数组元素赋0。 即 static int b[5]; 等价于 static int b[5]={0,0,0,0,0}; 初始化也可以只针对部分元素,如 static int b[5]={1,2,3}; 只对数组b的前3个元素赋初值,其余元素的初值为0。又如 int f[20]={0,1}; 对数组f的前两个元素赋初值,其余元素的值 不确定。
18
6.2 矩阵中最大值的位置
4. 使用二维数组编程
例7:定义一个3*2的二维数组a,数组元素的值由下式给 出,按矩阵的形式输出a。a[i][j]=i+j(0≤i ≤2, 0≤j ≤1), 见文件p131ex7-6.cpp
i
j
第1次 第2次 第3次 第4次 第5次
第6次
0 0 1 1 2
2
0 1 0 1 0
9
6.1 排序问题
4. 使用一维数组编程
例4:输入一个正整数n(1<n≤10), 再输入n个整数,将它们存入 数组a中。 ① 输出最小值和它所对应的下标。 ② 将最小值与第一个数交换,输 出交换后的n个数。 数组的长度在定义时必须确定, 如果无法确定需要处理的数据 数量,至少也要估计其上限, 并将该上限值作为数组长度。 因为n ≤10,数组长度就取上 限10。此外,如果用变量 index记录最小值对应的下标, 则最小值就是a[index]。 见p124ex7-4.cpp
8
6.1 排序问题
4. 使用一维数组编程

C语言6-数组

C语言6-数组
end
一维数组的定义和引用
一维数组的定义
类型说明符 数组名[常量表达式];
例:int a[10] ;
a
说明:
(1) 类型说明符用来说明数组中各个数组 元素的类型。
(2)数组名命名规则和变量名相同。 (3)[]代表定义的是数组。
(4)常量表达式的值代表数组的长度,可 以是一般常量和符号常量,不可为变量。
算法2: 输入 a amax for ( i=2; i<=10; i++)
{ 输入 a if ( a>max ) max=a; }
输出 max
显然算法2比算法1简洁, 同时节省了存储空间。
end
算法3:采用数组
算法2:采用简单变量 main()
main()
{ int max,a;
{ int max,a[10];
scanf(“%d”,&a);
for(i=0;i<=9;i++)
max=a;
scanf(“%d”,&a[i]);
for(i=2;i<=10;i++)
/*读入10个数,放入数组*/
{ scanf(“%d”,&a);
max=a[0]; for(i=1;i<10;i++)
与算法2比较 if(max<a) max=a; }
for( i=0;i<n-1;i++)
在a[i]~a[n-1] 范围内找
最小元素a[p], 与a[i]互换
a[0] a[1] a[2] a[3] a[4]
第一轮比 较 第二轮比 较
第三轮比较
82 31 65 9 47 9 31 65 82 47 9 31 65 82 47

c语言 高级 教程 第六章

c语言 高级 教程 第六章

• 但结构不能整体地加以比较
结构和函数(续)
• 可以定义返回结构的函数:
/*makepoint: make a point from x and y components */ struct point makepoint(int x, int y) { struct point temp; temp.x = x; temp.y = y; return temp; } 用makepoint初始化结构变量(另一种结构变量初始化的方法): struct rect screen; struct point middle, makepoint(int, int); screen.pt1 = makepoint(0,0); screen.pt2 = makepoint(XMAX, YMAX); middle = makepoint((screen.pt1.x+screen.pt2.x)/2, (screen.pt1.y +screen.pt2.y)/2)
• 结构的指针十分常用:
struct point origin, *pp; pp = &origin; 但是,通过指针求结构的方法虽然直观,然而十分繁琐 printf(“origin is (%d,%d)\n”, (*pp).x, (*pp).y); 续)
• 为方便,特别为通过结构的指针存取结构的成员设计了一个 更方便的写法: <指针>-><成员>
结构组成的数组(续)
• /* getword: get next word or character from input */ int getword(char *word, int lim) { int c, getch(void); void ungetch(char); char *w = word; while (isspace(c = getch( ))) ; if (c != EOF) *w++ = c; if (!isalpha(c)) { *w = ‘\0’; return c; } for ( ; --lim > 0; w++) if (!isalmun(*w = getch())) { ungetch(c); break; } *w = ‘\0’; return word[0]; }

C语言的六种常用算法

C语言的六种常用算法

C语言的六种常用算法C语言是一种非常流行的编程语言,广泛应用于各种领域中。

在C语言中,有许多常用的算法,可以用来解决各种问题。

下面我们将详细介绍C语言中的六种常用算法。

1.排序算法:排序算法可以将一组数据按照一定的规则进行排序。

常见的排序算法有冒泡排序、选择排序、插入排序、快速排序等。

这些排序算法的原理各有不同,但都可以实现对数据的排序。

排序算法对于处理大量数据的应用非常重要,可以提高查找、统计等操作的效率。

2.查找算法:查找算法是指在一组数据中寻找特定元素的过程。

常见的查找算法有线性查找、二分查找、哈希查找等。

这些算法的实现方式不同,但都可以高效地找到目标元素。

查找算法广泛应用于数据库查询、引擎等需要快速查找数据的场景中。

3.图算法:图算法是针对图结构进行的一系列操作。

图是由顶点和边组成的数据结构,可以用来表示各种关系。

在图算法中,常见的操作包括遍历、连通性判断、最短路径查找等。

图算法在网络分析、社交网络分析、运输规划等领域中有着广泛的应用。

4.动态规划算法:动态规划算法是一种解决多阶段决策问题的方法。

它将问题划分为若干个阶段,每个阶段都有一系列可选的决策。

通过求解每个阶段的最优决策,最终得到整个问题的最优解。

动态规划算法在最短路径问题、背包问题、序列比对等领域中有着重要的地位。

5.深度优先算法:深度优先算法是一种遍历图或树的方法。

它从一个起始节点开始,沿着一条路径尽可能远地,直到遇到死路才返回并尝试其他路径。

深度优先算法常用于解决迷宫问题、图的连通性判断等。

6.广度优先算法:广度优先算法是一种遍历图或树的方法。

它从一个起始节点开始,首先访问所有相邻节点,然后再访问它们的相邻节点,以此类推,直到遍历完所有节点。

广度优先算法常用于寻找最短路径、社交网络分析等。

以上就是C语言中的六种常用算法。

这些算法在各自的领域中有着广泛的应用,对于解决各种问题起到了重要的作用。

对于想要学习C语言的人来说,掌握这些算法是非常重要的一步。

c语言教学第6章 数组

c语言教学第6章  数组

§ 6.1 基本概念
整形、实型、字符型都属于基本类型。 其存储特点是:每个变量单独存储,亦称简单变 量。 如:char X=„a‟; int y1=0,y2; y2=X-1; 各变量之间独立存放,没有任何联系。
数组
数组是一种构造的数据类型,在计算机中分配连续 的内存空间。 数组:按序排列的具有相同类型的变量的集合。 用一符号名(数组名)来表示这一数组; 用数组名跟下标来唯一确定数组中的元素;
四、二维数组的初始化 (按行存放) 1、按存放顺序赋值 如:int x[2][3]={1,2,3,4,5,6}; 2、按行赋值 如:int x[2][3]={ {1,2,3},{4,5,6} }; 3、部分赋值 如:static int x[2][3]={1,2,4}; static int x[2][3]={ {1,2,},{4} }; 4、省略第一维长度 如: static int x[][3]={1,2,3,4,5,6,7};
课后 练习:分别定义一个一维数组和一个二维数组并 初始化,找出一维数组和二维数组中的最大元素和最小 元素以及对应的下标。
§6.4
字符数组
定义形式: char 数组名[exp]
一 、字符数组的定义 如:char c[5]; 在C语言中没有专门的字符串 c[0]=„h‟; c[1]=„a‟ 变量,而是将字符串存入字符数 c[2]=„p‟; c[3]=„p‟; 组来处理。 c[4]=„y‟; 即用一个一维数组来存放一 还可以这样定义: 个字符串,每个元素存放一个字 int c[5]; 符。
c[0]=„h‟; c[2]=„p‟; c[4]=„y‟; c[1]=„a‟ c[3]=„p‟;
二、字符数组的初始化
1、按单个元素赋值
static char c[10]={„s‟,„t‟,„o‟,„r‟,„e‟};
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华北水院高级语言程序设计(C语言)实验报告(六)
2014--2015学年第二学期
2014级专业:通信工程学号:201416416姓名:李瑞鹏………………………………………………………………………………………………
一、实验题目:指针
二、实验目的:(略)
三、实验内容
1. 程序验证(略)
2.程序设计
1)分别求出数组中所有3的倍数之和以及5的倍数之和。

形参n给了数组中数据的个数,利用指针three返回3的倍数之和,利用指针five返回5的倍数之和。

例如:数组中的值依次为:1,5,9,2,3,15,11,6,10;则利用指针three返回3的倍数之和33;利用指针five返回5的倍数之和30。

请在下面空白处完善这一函数的功能,并且调试运行出结果。

源代码:
#include <stdio.h>
#define N 20
void fun(int *a,int n,int *three,int *five)
{ int i;
*three=0;*five=0;
for(i=0;i<n;i++)
if(a[i]%3==0)
*three+=a[i];
for(i=0;i<n;i++)
if(a[i]%5==0)
*five+=a[i];
}
void main()
{
int a[N]={1,5,9,2,3,15,11,6,10},i,n=9,three,five;
printf("The original data is:\n");
for(i=0;i<n;i++)
printf("%5d",*(a+i));
printf("\n\n");
fun(a,n,&three,&five);
printf("3的倍数之和:%d\n",three);
printf("5的倍数之和:%d\n",five);
}
}
运行结果:
2)从键盘输入一个字符串,实现利用字符指针将字符串的字符顺序逆置并输出。

(例如输入abcdef,输出fedcba)。

请编写相应的程序代码,并调试运行出正确结
果。

源代码:
#include<stdio.h>
#include<string.h>
void main()
{
int i;
int length;
char str[80];
char s;
printf("请输入一个字符串:\n");
scanf("%s",str);
length=strlen(str);
printf("字符串逆序输出为:\n");
for(i=length;i>0;i--)
{
s=str[i-1];
printf("%c",s);
}
printf("\n");}
void fun(char *s)
{
int i,length;
char temp;
length=strlen(s);
for(i=0;i<length/2;i++)
{temp=s[i];
s[i]=s[length-i-1];
s[length-i-1]=temp;
}
}
运行结果:
实验心得:C语言马上快要结课了,感觉还没有完全掌握课本内容,心里还是很着急的,所以我决定在接下来的几周里好好复习C语言,多做课后练习题,希望自己能在期末考试考个好的成绩。

相关文档
最新文档