将n个字符复制到另一字符串第m的位置处

合集下载

c语言程序填空题

c语言程序填空题
【3】s2[i]!=或*(s2 + i)!=【4】'\0'或NULL或0
16功能:输入字符串,再输入一个字符,将字符串中与输入字符相
同的字符删除。
【1】a[i] != '\0'或a[i]或a[i]!=NULL【2】a[j]='\0'或a[j]=NULL或a[j]=0
【3】cc=getchar()或scanf("%c",&cc)【4】fun(a,cc)
12功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘
输入。
【1】str【2】str[i]!='\0'或str[i]!=NULL或str[i]!=0或str[i]
【3】str[k]=str[i]或*(str+k)=*(str+i)或str[k]=*(str+i)或*(str+k)=str[i]
39功能:百马百担问题:有100匹马,驮100担货,大马驮三担,中
马驮2担,两匹小马驮一担,求大、中、小马各多少匹?
【1】3【2】2【3】hm【4】hl
40功能:找出数组中最大值和此元素的下标,数组元素的值由键盘
输入。
【1】a + i或&a[i]【2】p-a或-a+p【3】>【4】*s
41功能:输出两个整数中大的那个数,两个整数由键盘输入。
24功能:有n个整数,使其前面各数顺序向后移m个位置,最后m个数
变成最前面的m个数
【1】number,n,m【2】array,n,m【3】array+n-1或array + n -1【4】p-1或p -1
25功能:用冒泡法对数组a进行由小到大的排序。

数据结构答案 第5章 串学习指导

数据结构答案 第5章 串学习指导

第5章串5.1 知识点分析1.串的定义串(String)是由零个或多个任意字符组成的有限序列。

一般记作:s="a1 a2 …a i…a n"。

其中s 是串名,用双引号括起来的字符序列为串值,但引号本身并不属于串的内容。

a i(1<=i<=n)是一个任意字符,它称为串的元素,是构成串的基本单位,i是它在整个串中的序号;n为串的长度,表示串中所包含的字符个数。

2.几个术语(1)长度串中字符的个数,称为串的长度。

(2)空串长度为零的字符串称为空串。

(3)空格串由一个或多个连续空格组成的串称为空格串。

(4)串相等两个串相等,是指两个串的长度相等,且每个对应字符都相等。

(5)子串串中任意连续字符组成的子序列称为该串的子串。

(6)主串包含子串的串称为该子串的主串。

(7)模式匹配子串的定位运算又称为串的模式匹配,是一种求子串的第一个字符在主串中序号的运算。

被匹配的主串称为目标串,子串称为模式。

3.串的基本运算(1)求串长:LenStr(s)。

(2)串连接:ConcatStr(s1,s2) 。

(3)求子串:SubStr (s,i,len)。

(4)串比较:EqualStr (s1,s2)。

(5)子串查找:IndexStr (s,t),找子串t在主串s中首次出现的位置(也称模式匹配)。

(6)串插入:InsStr (s,t,i)。

(7)串删除:DelStr(s,i,len)。

4.串的存储(1)定长顺序存储。

(2)链接存储。

(3)串的堆分配存储。

5.2 典型习题分析【例1】下面关于串的的叙述中,哪一个是不正确的?()A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储分析:空串是不含任何字符的串,即空串的长度是零。

空格串是由空格组成的串,其长度等于空格的个数。

答案为B。

【例2】两个串相等的充分必要条件是( )。

A.两个串长度相等B.两个串有相同字符C.两个串长度相等且有相同字符D.以上结论均不正确分析:根据串相等定义,两个串是相等是指两个串的长度相等且对应字符都相等,故A、B、C均不正确,答案为D。

计算机二级题库填空题目

计算机二级题库填空题目

1、下列给定程序中,函数fun 的功能是:计算如下公式()()()12222213572462n n s n -⨯+=-+-⨯…-1直到函数值返回。

8、下列给定程序中,函数fun 的功能是:求ss 所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n 所指的变量中。

ss 所指字符串数组中共有M 个字符串,且串长小于N 。

9、下列给定程序中,函数fun 的功能是:将s 所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的次序。

例如,s 所指的字符串为"def35adh3kjsdf7",执行后结果为"defadhajsdf3537"。

10、下列给定程序中已建立一个带头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。

函数fun 的功能是:把形参x 的值放入一个新结点并插入链表中,使插入后各结点数据域中的数据仍保持递增有序。

a 所则中2、3、、2、ss 函数N 个s 所最下标ss 找 2、3、5、4、N 矩矩阵1 2 3 4 5 6 7 8 9程序执行结果为0 0 1 0 0 4 0 0 719、程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。

函数fun 的功能是:将形参a 所指结构体变量中的数据赋给函数中的结构体变量b ,并修改b 中的学号和姓名,最后输出修改后的数据。

例如,a 所指变量中的学号、姓名和三门课的成绩依次是:10001、"ZhangSan"、95、80、88,则修改后输出b 中的数据应为:10002、"LiSi"、95、80、88。

20、下列给定程序的功能是:从键盘输入若干行字符串(每行不超过80个字符),写入文件myfile4.txt 中,用-1作字符串输入结束的标志,然后将文件的内容显示在屏幕上。

文件的读写分别由函数ReadText 和WriteText 实现。

C语言编辑作业二(1)

C语言编辑作业二(1)
int main()
{
int n;
for(n=100;n<=200;n++)
if(n%3!=0)
printf("%3d\n",n);
return 0;
}
2.编写一函数fun,实现矩阵(3行3列)的转置(即行列互换)。
#include<stdio.h>
#define N 3
float b[3][3];
#include<stdio.h>
int main()
{int i,n,s1,s2,s3;
for(i=1,s1=0,s2=0,s3=0;i<=100;i++)
{scanf("%d",&n);
if(n>0) s1=s1+1;
if(n<0) s2=s2+1;
if(n==0) s3=s3+1;
}
printf("s1=%d s2=%d s3=%d\n",s1,s2,s3);
printf("\n");
t=a[0]+a[1]+a[9];
for(i=1;i<9;i++)
{b=a[i-1]+a[i]+a[i+1];
if(t>b)
t=b;
}
printf("The smallest number is:%6.2f\n",t);
return 0;
}
4.编程判断输入的正整数是否既是5又是7的整倍数。若是,则输出yes;否则输出no。
}
int cpy(char s[],int m)

对字符数组的赋值方式

对字符数组的赋值方式

对字符数组的赋值方式字符数组是一种非常重要的数据类型,在C语言中被广泛使用。

也可以用来存储一些字符类型的数据,例如字符串。

在C语言中,赋值是将一个值赋给变量的操作。

字符数组的赋值方式有很多种,包括直接赋值、字符串常量赋值、字符串拷贝函数等。

本篇文章将详细介绍这些字符数组的赋值方式。

一、直接赋值直接给字符数组赋值是最基本的方法之一。

C语言中,可以用花括号{}将字符数组的所有元素包围起来,这样就可以一次性地将这些元素赋值给这个数组。

下面的代码就给一个名为str的字符数组赋了值:```cchar str[6] = {'h', 'e', 'l', 'l', 'o', '\0'};```这个数组被赋予了一个包含“hello”的字符串。

注意到这个字符数组的长度是6,而不是5。

原因是在C语言中,字符串是以‘\0’字符结尾的,这个字符也占用了数组中的一个位置。

这种方法虽然简单,但不太实用。

毕竟,赋值如上所示,即使字符串长度是已知的,也很难保证字符串与数组之间的匹配性,或者输入错误等问题。

所以通常大家使用其他方法来赋值字符数组。

二、字符串常量赋值在字符数组中存储字符串是字符数组最常见的应用之一。

可以通过用双引号“”括起来的一组字符来作为字符串的值。

下面的代码就定义了一个名为str的字符数组,赋值了一个字符串常量:```error: incompatible types in assignment of ‘const char [6]’ to ‘char [6]’```这是因为C语言不支持将一个字符串常量赋值给一个字符数组,除非使用字符串拷贝函数或循环语句一遍一遍地复制字符串。

使用循环语句可以完成这个任务,但非常繁琐。

字符串拷贝函数会更加便捷。

三、字符串拷贝函数字符串拷贝函数是一种处理字符串的函数,用于将一个字符串复制到另一个字符串中。

2015作业必做题

2015作业必做题

C语言程序设计作业之必做题第 1-3 章E01.【顺序程序与基本运算符】从键盘输入两个正整数a 和b ,计算并输出a / b 的商和余数。

输出格式要求占6列,右对齐。

E02.【顺序程序与基本运算符】编写程序计算用户输入的3 个整数的平均值、和、最大值和最小值,并输出到屏幕上。

输出格式要求平均值占8列,保留4位小数,左对齐;最大值和最小值占6列,右对齐。

E03.【顺序程序与基本运算符】从键盘输入一个浮点变量r ,以r 为半径,求相应的圆的周长和面积,求相应球体的体积和表面积,并将结果输出到屏幕上。

输出格式要求保留3为小数,右对齐。

E04.【顺序程序与基本运算符】编写程序输出用户输入的一个3 位正整数的3 个数字的和,例如234,2+3+4=9。

E05.【字符数据】从键盘输入一个字符,输出这个字符对应的ASCII 码。

E06.【字符数据】从键盘输入一个小写字母,将其转换成相应的大写字母输出到屏幕上。

E07.【顺序程序与基本运算符】从键盘输入一个数x,计算表达式的值并输出到屏幕上,要求保留4为小数。

表达式如下:第 4 章选择程序设计E08.【if 语句】从键盘输入三个浮点变量a 、b 和c ,用公式法求解ax2 + bx + c = 0 ,并将结果输出到屏幕上。

请根据b2 − 4ac 的值,合理给出方程的根。

(注:当b2 − 4ac < 0 时,不能用sqrt 函数求的值,否则程序会出现异常。

)E09.【if 语句】根据用户的输入3 个顶点坐标计算三角形的面积和周长,如果不能构成三角形提示错误。

E10.【switch 语句】不考虑闰年,输入月份,用switch 语句实现显示该月有多少天。

E11.【switch 语句】已知2013 年 1 月 1 日是星期二,输入2013 年的一个日期(月和日),判断这天是星期几?E12.【if 语句】从键盘输入两个浮点数x1 和y1 作为圆心坐标,从键盘输入一个浮点数r 作为半径,这样就在二维平面上唯一地确定了一个圆。

东北石油大学C实验教案2017年度第3学期

东北石油大学C实验教案2017年度第3学期

$ $$$ $$$$$ $$$$$$$ $$$$$$$$$
$$$$$ $$$$ $$$ $$ $
$$$$$ $$$$$ $$$$$ $$$$$ $$$$$
实 验 项 目
5. 按如下格式打印直角九九乘法表 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
1. 图形输出的分析步骤为什么? 2. 在使用循环的过程中应注意哪些问题?
思 考 题
一、实验目的 二、实验项目(3、4 题) 三、实验内容(程序)
实 验 报 告 要 求
四、实验结果(运行结果)
实验名称
一维数组
实验次数
第 6 次
是否上交报告

备注
实验内容(教学过程) 实 验 目 的
1.掌握一维数组定义、初始化和元素引用的方法。 2.掌握一维数组的输入、输出方法。 3.掌握一维数组存储和移动的方法。 4.掌握一维数组的常用算法。 1.有一数组内放 5 个整数,要求找出第一次出现的最小数和它的下标,然后 把它和数组中最前面的元素即第一个数对换位置。 2.找出含有 10 个元素一维组数中的最大值和最小值,并互换这两个数的位 置。 3.从键盘上输入若干(<20)个学生的成绩,统计计算出平均成绩,并输出 低于平均分的学生成绩,用输入负数结束输入。 4.用数组存储并输出 Fibonacci 数列的前 20 项,按 5 个一行输出 5.一个数列的前三个数是 0、0、1,以后的每个数都是前三个数的和,编程 求改数列的前 20 项,并按每行 4 个数的格式输出。 6.对 n 个整数组成的一维数组按逆序重新存储并输出(n<10) 。 7.一个数组有 8 个元素,将前 3 个元素通过移动串到后 3 个位置上,如果其 初始数据为: 1 2 3 4 5 6 7 8 不增加数组,也不增加数组的存储单元,通 过移动数组元素将数组变化为: 4 5 6 7 8 1 2 3 8.在一维数组中有 10 个整数,求出其中能被 5 整除的所有数的和。 9.将 10 个数中的所有偶数除以 2,所有奇数乘以 2 后输出这些数值。 10.在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序 排列,已知升序数组{1, 2, 4, 6, 8, 9, 12, 15, 149, 156 }。 11.从键盘上输入 10 元素的值存入一维数组 m 中,然后将下标为(0. 2. 4. 6. 8)的元素值赋值给数组 n,最后输出数组 n 的内容。 12.输入 10 个正整数到 a 数组中,求 a 数组中素数的平均值。 13.输入 10 个无序的整数,用选择法对 10 个整数按升序排序,注意要求只 排 3 轮。 14.对 n 个整数组成的一维数组用顺序法按从小到大排序后输出(4<n<10) , 要求排序只排 3 轮。 1. 使用一维数组时应注意哪些问题? 2. 怎样使随机函数每次运行产生不同组的测试数据? 3. 选择法排序的算法是怎样描述的?

C语言编程题与答案解析

C语言编程题与答案解析
}
9.(*)试编程:判断输入的正整数是否既是 5,又是 7 的整数倍 数。若是则输出 yes;否 则输出 no。
10.(*)已有函数调用语句 c=add(a,b);请编写 aad 函数,计算两 个实数 a 和 b 的和,并返回和值。
11.(*)有人想将手中一张面值 100 元的人民币换成 5 元、1 元、 0.5 元面值的零钱 100 张,以上三种面值的零钱至少有一张,问共有几
12.(*)求 Sn=a+aa+aaa+aaaa+aaaaa 的前 5 项之和,其中 a 是一个
数字,例如:
2+22+222+2222+22222
程序 1:main()
{int i, a,n;
long sum=0, b=1,c=1;
scanf("%d,%d",&a,&n);
for(i=1;i<=n;i++) {sum+=a*c;
} 14.(*)用近似1 公式1 求自然对数的底 e 的值。
e≈12+!1!+3! + +…… #include"math.h" main() {float i,j,e,p=1.0,sum=0.0; for(i=1;i<10 ;i++)
{for(j=1;j<=i;j++) p=p*j;
sum=sum+1.0/p; p=1.0;} e=i+sum; printf("%f\n",e); } 15.(*)请编程,用 scanf()函数输入三个字符,对这三个字符各 加一个整数 1 后,用 putchar()函数输出,且每输出一个字符换一行。 16.(*)请编程,用 scanf()函数输入三个整数,输出其中不大不 小的那个数,输出宽度为五位。 int findmid(int i,int j,int k) {int n;

谭浩强教材习题选

谭浩强教材习题选

1)要将“China”译成密码,密码规律是:用原来的字母后面第4个字母替原来的字母。

例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。

因此,“China”应译为“Glmre”。

请编一程序,用赋初值的方法使c1、c2、c3、c4、c5五个变量的值分别为‘C’,‘h’、‘i’、‘n’、‘a’,经过运算,使分别变为‘G’,‘l’,‘m’,‘r’、‘e’,并输出。

2)给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’,90分以上为‘A’,80—89分为‘B’,70—79分为‘B’,60—69分为‘B’,60分以下为‘E’3)给出一个不多于5位的正整数,要求:1、求出它是几位数;2、分别打印出每一位数字;3、按逆序打印出个位数字,例如原数是321,应输出123。

4)输入4个整数,要求按由小到大的顺序输出。

5)企业发放的奖金根据利润提成。

数组6)用筛选法求100之内的素数7)用选择法对10个整数排序8)求一个3*3的整型矩形对角线元素之和9)已有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中10)将一个数组中的值按逆序重新存放。

11)打印魔方阵。

行,列,对角线和相等12)找出一个二维数组的鞍点,该行最大,该列最小,也可能没有。

13)有15个数按由大到小存放,用折半法找出该数是数组中第几个元素的值。

14)电文加密15)字符串连接16)字符串比较17)字符串拷贝函数18)写两个函数,分别求两个整数的最大公约数和最小公倍数19)写一个判素数的函数20)写一个函数,使一个给定的二维数组行列互换21)写一个函数,使字符串反序存放,在主函数中输入输出22)写一函数,将一个字符串中元音字母复制到另一字符串23)写一函数,输入一个4位数字,要求输出4个数字字符,但要求数字间空一个空格24)编写一个函数,统计参数字符串中字母、数字、空格和其他字符的个数25)写一个函数,输入一行字符,将此字符串最长的单词输出26)写一函数,用起泡法对10个字符排序27)输入10个学生5门课的成绩,分别用函数求:每个学生的平均分,每门课的平均分,找出最高分数对应的学生和课程,28)写几个函数,输入10个职工的姓名和职工号,按职工号从大到小的顺序排序,姓名顺序也随着调整;用折半法查找输入的一个职工号,输出该职工姓名。

c语言程序设计期末考试试卷(B)

c语言程序设计期末考试试卷(B)
void main()
{
int x[4][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8},{7,8,9,10}};
int i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
*(*(x+i)+j)/=*(*(x+i)+i);
for(i=0;i<4;i++)
{
for(j=0;j<4;j++) printf("%3d",*(*(x+i)+j));
则以下叙述中正确的是C。
A、ptr是指向一维组数的指针变量
B、ptr是指向int型数据的指针变量
C、ptr是指向函数的指针,该函数返回一个int型数据
D、ptr是一个函数名,该函数的返回值是指向int型数据的指针
重庆邮电大学2006-2007学年第一学期
一、单选题(每题1分共三十分)
1、以下叙述不正确的是D。
4、设有说明;char w;int x;float y;double z;则表达式w-x+z-y值的数据
类型为D。
A、float B、char C、int D、double.
5、能正确表示“当x取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是B。
A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
A、203 B、204 C、1a4 D、1a6
22、左移运算:int a=16,c=a<<2;变量c的值是。

高中信息学奥赛C++ 第5章 数组(C++版)

高中信息学奥赛C++ 第5章  数组(C++版)

例5.3 宾馆里有一百个房间,从1100编了号。第一个服务员把所有的房 间门都打开了,第二个服务员把所有编 号是2的倍数的房间“相反处理”,第 三个服务员把所有编号是3的倍数的房 间作“相反处理”…,以后每个服务员 都是如此。当第100个服务员来过后, 哪几扇门是打开的。(所谓“相反处理” ห้องสมุดไป่ตู้:原来开着的门关上,原来关上的门 打开。) 【分析】此题较简单,用 a[1],a[2],…,a[n]表示编号为1,2, 3,…,n的门是否开着。模拟这些操作 即可,参考程序如下: #include<cstdio> #include<cstring> #define MAXN 100+10 int a[MAXN]; int main() { int n,k,first=1; memset(a,0,sizeof(a)); for (int i=1;i<=100;++i) for (int j=1;j<=100;++j) if (j%i==0) a[j]=!a[j];
for (int i=1;i<=100;++i) if (a[i]) { if(first) first=0; else printf(" "); printf("%d",i); } printf("\n"); return 0; } 运行结果: 1 4 9 16 25 36 49 64 81 100 【说明】: memset(a,0,sizeof(a))的作用是把 数组a清零,它在cstring中定义。虽 然也能用for循环完成相同的任务,但 是用memset又方便又快捷。另一个 技巧在输出:为了避免输出多余空格, 设置了一个标志变量first,可以表示 当前要输出是否为第一个。第一个变 量前不应该有空格,但其他都有。

国家计算机二级机试试题及答案

国家计算机二级机试试题及答案
设计题:char *b=a;
while(*b=='*') b++;
while(*b) *a++=*b++;
*a=0;
十二、填空题:t[][N]i=0;i<ns修改题:fun(int a[],int m)else if(m>a[mid])
设计题:char *b=a;
while(b<p)
{
if(*b!='*') *a++=*b;
while(fabs(x1-x0)>=0.000001)
{
x0=x1;
x1=cos(x0);
}
return x1;
九、填空题:NN-10修改题:s=s+(n+1.)/n;return t;
设计题:int f0=0,f1=1,f2=f0+f1;
while(f2<t)
{
f0=f1;
f1=f2;
f2=f0+f1;
中逐个读入,并调用库函数atoi和atof将字符串转换成相应的整数、浮点数,然后将
显示在屏幕上。
四十九、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有
学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件
中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输
}
return f2;
十、填空题:0j--j修改题:double f(double x)return s;
设计题:int i;
double s=0;
for(i=1;i<=m;i++) s+=log(i);

c语言试题100道

c语言试题100道

1.按下述格式,从键盘输入一个整数加法表达式:操作数1+操作数2,然后计算并输出表达式的计算结果,形式如下:操作数1+操作数2=计算结果。

(课本62)2.输入两个整形数并打印,如果用户不慎输入了非法字符,那么程序提示“输入数据类型错误”。

(课本68页)3.已知三角形的三边长a,b,c,要求编写程序,从键盘输入a,b,c的值,计算并输出三角形的面积(注意不存在的情况)。

(第三章习题)4.编程从键盘输入圆的半径r,计算并输出圆的周长和面积。

(第三章习题)5.任意从键盘输入一个三位整数,要求正确分离它的个位,十位和百位数,并分别在屏幕上输出。

(课本82)6.写一个函数实现统计一个输入的整形数的位数。

7.编程计算方程ax*x+bx+c=0的根,a,b,c由键盘输入,只是用主函数来实现。

(课本83页,但需综合考虑)8.编写三个函数,分别在b*b-4*a*c大于0、小于0、等于0时进行调用,并输出结果,在主函数中读入a、b、c的值。

9.从键盘输入你和你朋友的年龄,编程判断谁的年龄大,并打印最大者的年龄。

(课本86页)10.从键盘输入一个年份,判断该年是否是闰年,并输出结果。

11.判断某人是否属于肥胖体型。

根据身高与体重因素,医务工作者经广泛的调查分析给出了以下按“体指数”对肥胖程度的划分:体指数t=w/h*h(w为体重,单位为kg,h为身高,单位为m)。

当t<18时,为低体重;当t介于18和25之间时,为正常体重;当t介于25和27之间时,为超重体重;当t≧27时,为肥胖。

编程从键盘输入你的身高h和体重w,根据上式,判断体重类型。

(课本89)12.利用switch语句将百分制成绩转化为五分制成绩。

(课本97)13.利用switch语句将五分制成绩转换成对应分数范围并输出。

14.编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1 运算符op 操作数2 计算表达式的值,指定的运算符为加减乘除。

c语言试题100道

c语言试题100道

1.按下述格式,从键盘输入一个整数加法表达式:操作数1+操作数2,然后计算并输出表达式的计算结果,形式如下:操作数1+操作数2=计算结果。

(课本62)2.输入两个整形数并打印,如果用户不慎输入了非法字符,那么程序提示“输入数据类型错误”。

(课本68页)3.已知三角形的三边长a,b,c,要求编写程序,从键盘输入a,b,c的值,计算并输出三角形的面积(注意不存在的情况)。

(第三章习题)4.编程从键盘输入圆的半径r,计算并输出圆的周长和面积。

(第三章习题)5.任意从键盘输入一个三位整数,要求正确分离它的个位,十位和百位数,并分别在屏幕上输出。

(课本82)6.写一个函数实现统计一个输入的整形数的位数。

7.编程计算方程ax*x+bx+c=0的根,a,b,c由键盘输入,只是用主函数来实现。

(课本83页,但需综合考虑)8.编写三个函数,分别在b*b-4*a*c大于0、小于0、等于0时进行调用,并输出结果,在主函数中读入a、b、c的值。

9.从键盘输入你和你朋友的年龄,编程判断谁的年龄大,并打印最大者的年龄。

(课本86页)10.从键盘输入一个年份,判断该年是否是闰年,并输出结果。

11.判断某人是否属于肥胖体型。

根据身高与体重因素,医务工作者经广泛的调查分析给出了以下按“体指数”对肥胖程度的划分:体指数t=w/h*h(w为体重,单位为kg,h为身高,单位为m)。

当t<18时,为低体重;当t介于18和25之间时,为正常体重;当t介于25和27之间时,为超重体重;当t≧27时,为肥胖。

编程从键盘输入你的身高h和体重w,根据上式,判断体重类型。

(课本89)12.利用switch语句将百分制成绩转化为五分制成绩。

(课本97)13.利用switch语句将五分制成绩转换成对应分数范围并输出。

14.编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:操作数1 运算符op 操作数2 计算表达式的值,指定的运算符为加减乘除。

c语言程序设计第五版课后答案谭浩强第八章课后答案

c语言程序设计第五版课后答案谭浩强第八章课后答案

c语⾔程序设计第五版课后答案谭浩强第⼋章课后答案c语⾔程序设计第五版课后答案谭浩强习题答案第⼋章善于利⽤指针本章习题均要求使⽤指针⽅法处理。

1. 输⼊3个整数,要求按由⼩到⼤的顺序输出。

解题思路:先获取到三个变量的地址,然后获取三个数据,通过指针进⾏⽐较转换即可答案:#include <stdio.h>void swap(int *p_a, int *p_b){int temp = *p_a;*p_a = *p_b;*p_b = temp;}int main(){int a, b, c, *p_a = &a, *p_b = &b, *p_c = &c; // 获取每个变量空间的地址printf("Please enter three numbers:");scanf_s("%d%d%d", p_a, p_b, p_c);if (*p_a > *p_b) {swap(p_a, p_b);//通过指针进⾏指向空间内的数据交换}if (*p_a > *p_c) {swap(p_a, p_c);}if (*p_b > *p_c) {swap(p_b, p_c);}printf("%d %d %d\n", *p_a, *p_b, *p_c);system("pause");return 0;}2. 输⼊3个字符串,要求按由⼩到⼤的顺序输出。

解题思路:字符串的⽐较可以使⽤strcmp函数,返回值>0表⽰⼤于,返回值⼩于0表⽰⼩于,返回追等于0表⽰相同。

其他的⽐较排序思路与数字的排序交换没有区别,逐个进⾏⽐较先找出最⼤的,然后找出第⼆⼤的。

答案:#include <stdio.h>int main(){char str[3][32];char *p[3];printf("Please enter three strings:");for (int i = 0; i < 3; i++) {p[i] = str[i];scanf_s("%s", p[i], 32);//后边的数字限制缓冲区边界,防⽌缓冲区溢出访问越界}//让p[0]和p[1]/p[2]分别进⾏⽐较,找出最⼤的字符串,i+1之后,则让p[1]和p[2]进⾏⽐较,找出第⼆⼤//i循环总个数-1次,最后⼀个是不需要⽐较的for (int i = 0; i < 2; i++) {for (int j = i + 1; j < 3; j++) {if (strcmp(p[i], p[j]) > 0) {char *tmp = p[i]; p[i] = p[j]; p[j] = tmp;}}}printf("%s %s %s\n", p[0], p[1], p[2]);system("pause");return 0;}3. 输⼊10个整数,将其中最⼩的数与第⼀个数对换, 把最⼤的数与最后⼀个数对换。

C语言字符串操作总结大全(超详细)

C语言字符串操作总结大全(超详细)

C语⾔字符串操作总结⼤全(超详细)strcpy(p, p1) 复制字符串strncpy(p, p1, n) 复制指定长度字符串strcat(p, p1) 附加字符串strncat(p, p1, n) 附加指定长度字符串strlen(p) 取字符串长度strcmp(p, p1) ⽐较字符串strcasecmp忽略⼤⼩写⽐较字符串strncmp(p, p1, n) ⽐较指定长度字符串strchr(p, c) 在字符串中查找指定字符strrchr(p, c) 在字符串中反向查找strstr(p, p1) 查找字符串strpbrk(p, p1) 以⽬标字符串的所有字符作为集合,在当前字符串查找该集合的任⼀元素strspn(p, p1) 以⽬标字符串的所有字符作为集合,在当前字符串查找不属于该集合的任⼀元素的偏移strcspn(p, p1) 以⽬标字符串的所有字符作为集合,在当前字符串查找属于该集合的任⼀元素的偏移* 具有指定长度的字符串处理函数在已处理的字符串之后填补零结尾符strtod(p, ppend) 从字符串 p 中转换 double 类型数值,并将后续的字符串指针存储到 ppend 指向的 char* 类型存储。

strtol(p, ppend, base) 从字符串 p 中转换 long 类型整型数值,base 显式设置转换的整型进制,设置为 0 以根据特定格式判断所⽤进制,0x, 0X 前缀以解释为⼗六进制格式整型,0 前缀以解释为⼋进制格式整型atoi(p) 字符串转换到 int 整型atof(p) 字符串转换到 double 符点数atol(p) 字符串转换到 long 整型isalpha() 检查是否为字母字符isupper() 检查是否为⼤写字母字符islower() 检查是否为⼩写字母字符isdigit() 检查是否为数字isxdigit() 检查是否为⼗六进制数字表⽰的有效字符isspace() 检查是否为空格类型字符iscntrl() 检查是否为控制字符ispunct() 检查是否为标点符号isalnum() 检查是否为字母和数字isprint() 检查是否是可打印字符isgraph() 检查是否是图形字符,等效于 isalnum() | ispunct()功能:将字符串source拷贝到字符串destination中例程:#include <iostream.h>#include <string.h>void main(void){ char str1[10] = { "TsinghuaOK"}; char str2[10] = { "Computer"}; cout <<strcpy(str1,str2)<<endl;}运⾏结果是:Computer第⼆个字符串将覆盖掉第⼀个字符串的所有内容!注意:在定义数组时,字符数组1的字符串长度必须⼤于或等于字符串2的字符串长度。

C语言程序设计教程 杨路明 答案第8章

C语言程序设计教程 杨路明 答案第8章
getch();
}
9、
/*输入n个数,并排序后输出。*/
#include<stdio.h>
#include<string.h>
int *paixu(int data[],int n)
{ int i,*p1,*p2,temp;
p1=data;
for(p1=data;p1<data+n-1;p1++)
printf("Please input a string: ");
gets(a);
p=a;q=b;
printf("\n\nPlease input m and n(like 1,1): ");
scanf("%d,%d",&m,&n);
if( (strlen(a)>=m) && ((strlen(a)-m+1)>=n) )/*复制的位置要符合要求*/
#include<stdio.h>
void main()
{
int a[100],temp1=0,temp2=0,max=0,min=0,k;
printf("\nPlease input 8 ge shu: ");
for(k=0;k<8;k++)
{ scanf("%d",&a[k]);
{
t=(int)(*p-48);
a[i]=a[i]*10+t;
p++;
if((*p)>'9'||(*p)<'0')

字符串循环移位

字符串循环移位

字符串循环移位再看⾯试题时出现了⼀个字符串左右移动循环的问题,看了⼀遍还没有弄懂,就发了点时间来看了⼀下字符数组与字符指针的问题,最终还是得到解决,呵呵,只要肯发功夫,还是会有收获的例如:有⼀组char的字符串:abcdefghijk 。

你要循环左移3位变成ijkabcdefgh(也有写出ijkabcdefghi);或右移三位变成defghijkabc(也有写成cdefghijkabc);⾸先我们来解决字符串循环左移的问题:⽅法⼀:利⽤已有的字符串函数。

#include<stdio.h>#include<string.h>void rightloop(char *a, int n);main(){char a[100]; int n;printf("请输⼊要循环的字符串:\n");scanf("%s",a);printf("请输⼊要循环字符串的位数:\n");scanf("%d",&n); \\以上代码也可以直接赋初值,我考虑的是⼀般情况\\void rightloop(a,n); \\本例以a[]="abcdefghijk", n=3为例讲解\\printf("输出循环右移的字符串:%s\n",a);}void rightloop(char *a, int n){char b[100]; \\数组b要做的够⼤即可\\int m;m=strlen(a)-n; \\求出除去要循环右移之后剩下的字符的个数\\strcpy(b,a+n); \\ a+n,a代表a[0]的地址再加上n,表⽰要把a[n]之后的字符串(即那些不⽤循环右移的字符,共有m个)复制到数组b 中。

这时b[]="defghijk"。

\\strcpy(b+m,a); \\ b+m, 因为上⾯已经把没有循环的m个字符赋给了b,所以b[m]之前的不能在赋值了,只能把a的全部字符串赋给b[m]之后的空间了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档