C++作业(字符数组及函数)
c语言字符数组及使用方法
c语言字符数组及使用方法
C语言中的字符数组是一种特殊类型的数组,用于存储字符型数据。
字符数组可以用于存储字符串或者单个字符。
- 使用字符数组类型:`char array_name[size];`
- 例如:`char str[10];`声明了一个大小为10的字符数组,用于存储字符串。
2.字符数组的赋值:
-字符串赋值:直接将字符串赋值给字符数组;
-单个字符赋值:可以使用下标索引的方式逐个字符赋值。
3.字符数组的访问:
-通过下标索引访问字符数组的元素;
-字符数组的下标从0开始,最后一个元素的下标是数组大小减一
4.字符数组的输入输出:
- `printf(`函数:可以直接输出字符串或者字符数组;
- `scanf(`函数:可以用`%s`格式化输入一个字符串。
5.字符串处理函数:
- 字符串长度:`strlen(str)`,返回字符串的长度,不包含结束符'\0';
- 字符串拷贝:`strcpy(dest, src)`,将src字符串复制到dest字符串;
- 字符串连接:`strcat(dest, src)`,将src字符串连接到dest字符串的末尾;
- 字符串比较:`strcmp(str1, str2)`,比较两个字符串的大小。
这些是基本的字符数组的使用方法,可以根据需要进行进一步的学习和探索。
C语言字符、字符串定义及相关函数
1、strcmp 功能:比较两个字符串,两个字符串从左向右逐个字符相比(按ASCII值比较),直到出现不同的字
符或遇到‘\0’为止 格式:extern int strcmp(const char *s1,const char *s2); 结果: 当s1<s2时,返回一个负数 当s1=s2时,返回值为0 当s1>s2时,返回正数
char str={'"','h','e','l','l','o','"','\0'}; =“hello”(必须加“\0”,若没有他,认为字符 数组,不是字符串) 3、char指针 char *m="hello,world";
数组形式和指针形式的区别:
数组形式: 编译器会把数组名m看作是数组首元素的地址&m[0]的同义词,m是个地址常量。可以用m+1来标识 数组里的下一个元素,但不能使用++m,增量运算符只能在变量前使用, 而不能在常量前使用。
19、strspn 功能:从str字符串的开头计算连续的字符,而这些字符全都是accept所指的字符串中的字符,如果
返回值是n,则代表字符串str开头连续有n个字符都是属于字符串accept内的字符 格式:size_t strspn(char const *str,char const *accept)
到遇上非数字或字符串结束时结束转换。将不合条件而终止的nptr字符指针有endptr返回。 9、strtod
功能:将字符串转换为浮点数 函数定义: double strtod(const char *nptr,char **endptr); nptr字符串可包含正负号,小数点或E(e)来表示指数部分,如123.456或123e-2.
C语言字符串函数大全
今天总结了下C语言字符串函数。
C语言字符串函数总结:1.字符处理库(ctype)中的函数2.stdio中的字符串和字符输入/输出的函数3.通用实用库stdlib中的字符串转换函数4.字符串处理库string中的字符串处理函数C语言的字符串实际上是存储单个字符的数组,结尾包含一个结束该字符串的特别的字符("空字符",用'\0'表示)。
char string1[]="first"实际上有6个元素。
char color="blue" char * p="blue"注意p[i]不能修改,若需修改应用字符数组。
一、.字符处理库(ctype)中的函数#include<ctype.h>函数原型:int f(int c)isdigit, isalpha, isalnum, isxdigit, islower, isupper, tolower, toupper, isspace,空白字符:新行符\n, 空格,回车''\r",水平制表符"\t", 垂直制表符"\v" isctrl, ispunct, isprint, isalpha二、stdio中的字符串和字符输入/输出的函数int getchar(void) 从标准输入设备读取字符以整数返回char * get(char * s) 从标准输入设备读入字符到数组s直到遇到新行符和文件结束符为止,然后再数组后追加NULL字符int putchar(int c) 打印字符int puts(const char * s) 打印字符串s和新行符int sprintf(char * s, const char * format) 与printf区别在于输出结果存放在s中int sscanf(char * s, const char * format); 与scanf区别在于从数组s读取数据示例1 字符串反转#include <stdio.h> void reverse(char *s) {if(s[0] == '\0') return;else{reverse(&s[1]); putchar(s[0]);}}int main(){char s[100];gets(s);reverse(s);return 0;}输入:sf输出:fs示例2 sscanf和sprintf #include<stdio.h>int main(){int x=1;double y=2.1;char s[100];sprintf(s,"Hello!%d, %f", x, y);puts(s);sscanf(s,"%d%f",&x,&y);printf("x:%d, y:%f", x, y);return 0;}输出:Hello!1, 2.100000x:1, y:2.100000三、stdlib中的字符串转换函数#include<stdlib.h>1. atoi(将字符串转换成整型数)定义函数int atoi(const char *nptr); 函数说明atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。
【C语言】第七章作业
如果要求输出100~200之间的素数,如何修改 main函数。
3.main函数实现
int main() { int i;
printf("100~200之间的素数有:"); for(i=100;i<=200;i++) if (primer(i)) printf("%d ",i);
{ printf("请输入一个大于2的整数:"); scanf("%d",&m);
} flag=primer(m); if (flag) printf("%d是素数。\n",m); else printf("%d不是素数。\n",m); return 0; }
3.运行程序
输入测试数据:17 输入测试数据:34 输入测试数据:2 输入测试数据:1 输入测试数据:0 分别测试程序的正确性。
convert(i); }运行结果是什么?
最小公倍数=(i*j)/最大公约数
1.最大公约数函数实现
int gongyue(int i,int j) { int t,r; if (j>i)
{t=i;i=j;j=t;} while( (r=i%j)!=0) {
i=j; j=r; } return(j); }
1.最小公倍数函数实现
int gongbei(int i,int j,int h) { return(i*j/h); }
9.运行程序
输入测试数据: I am No.201002,You are No.201003! 检测程序的正确性。 正确结果: 字母个数是:13 数字个数是:12 空格个数是:4 其它字符个数是:4
东北大学C语言程序作业4
C语言程序设计实验报告1.实验目的1.熟练掌握一维数组、二维数组的定义、初始化和输入和输出的方法;2.掌握字符数组和字符串函数的使用;3.掌握与数组有关的常用方法(如查找、排序等)。
2.实验指导1)对任意一个一维整型数组,从中找出数组元素的最大值和最小值并输出。
要求:①数组有10个元素;②使用scanf函数实现数组元素的输入,在输入前给出必要的提示;③输出时,首先输出数组的10个元素,然后输出其最大值和最小值。
2)编写函数cmpStr(char s1[ ],char s2[ ])比较两个字符串s1和s2的大小。
如果s1>s2,返回一个正数;s1=s2,返回0;s1<s2,返回一个负数,在主函数中调用该函数完成字符串的比较操作,并输出返回值。
要求①不允许使用strcmp()函数;②用gets()函数在主函数中输入两个字符串;③实现cmpStr()函数,返回的正数或负数的绝对值应该是进行比较的两个字符串中相应的字符的ASCII码的差值。
3)将三个学生、四门课程的成绩分别存放在4*5数组的前3*4列,计算出每个学生的总成绩存放在该数组的最后一列的对应行上,然后计算出单科成绩的平均分存放在最后的对应列上。
要求:①数组类型定义为实型,成绩由scanf函数从键盘输入;②输出原始成绩(3*4列);③计算每个学生的总成绩以及单科成绩的平均分,并按要求填入到数组中,输出的结果数组(4*5列);④修改程序,采用函数调用的方式实现。
●编写一个input()函数,功能是输入学生的原始成绩;●编写一个compute()函数,功能是计算出每个学生的总成绩和单科成绩的平均分,并将计算结果分别填入4*5矩阵的最后一列和最后一行中;●编写一个output()函数,功能是输出数组元素;●在主函数中定义一个4*5数组,调用上述三个函数,以数组作为函数参数,实现该程序。
3.算法描述流程图(1)流程图如下(2)程序流程图如下(3)程序流程图如下4.原程序(1)程序为#include<stdio.h> main(){int a[10],i,max,min;for (i=0;i<=9;i++){scanf("%d",&a[i]); }max=a[0];min=a[0];for(i=1;i<=9;i++)开始定义子函数comStr() 声明变量z,s1,s2;结束输入单词输出结果{if(a[i]>max)max=a[i];if(a[i]<min)min=a[i];}for(i=0;i<=9;i++){printf("a[%d]=%d\n",i,a[i]);}printf("the maximum value is %d,and the minimum value is %d\n",max,min); }(2)原程序为#include<stdio.h>int cmpStr(char s1[],char s2[]){int i,diff;i=0;while((s1[i]==s2[i])&&(s1[i]!='\0')) i++;if (s1[i]=='\0'&&s2[i]=='\0')diff=0;elsediff=s1[i]-s2[i];return diff;}main(){int z;char s1[100],s2[100];printf("input the first string:");gets(s1);printf("input the second string:");gets(s2);z=cmpStr(s1,s2);printf("the difference between two string is %d\n",z);}(3)#include<stdio.h>input(float stu[4][5]){int i,j;printf("请输入各门课程成绩:");for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%f",&stu[i][j]);}compute(float stu[4][5]){int i,j;for(i=0;i<4;i++){stu[i][4]=0;stu[i][4]=stu[i][0]+stu[i][1]+stu[i][2]+stu[i][3];for(j=0;j<5;j++){stu[3][j]=0;stu[3][j]=(stu[0][j]+stu[1][j]+stu[2][j])/3;}}}output(float stu[4][5]){int i,j;for(i=0;i<4;i++)for(j=0;j<5;j++){printf("%6.1f ",stu[i][j]);if((j+1)%5==0)printf("\n");}}main(){float a[4][5];input(*a);compute(*a);output(*a);}4.测试数据(1)①测试数据为10 ,454,61,31,34, 71, 58, 68 ,12 ,19.②测试数据2,4,6,7,8,9,4,6,7,3.(2)①测试数据为abc, des.②测试数据为abcd, abcd.③测试数据为hjkl, asdf.(3)测试数据为:85,98, 96,97,85,84,85,86,92,93,87,96。
c 语言字符数组
c 语言字符数组字符数组是C语言中常用的数据类型之一,它可以用来存储一系列字符。
在C语言中,字符数组以null字符('\0')结尾,因此它的长度可以根据实际存储的字符个数动态变化。
使用字符数组时,我们可以对其进行初始化、赋值、拷贝、连接等各种操作。
在本文中,我们将介绍字符数组的基本用法以及一些常见的应用场景。
一、字符数组的定义和初始化在C语言中,我们可以通过以下方式来定义和初始化一个字符数组:```cchar str1[10]; // 定义一个长度为10的字符数组char str2[10] = "Hello"; // 定义并初始化一个长度为10的字符数组char str3[] = "Hello"; // 定义并初始化一个长度为6的字符数组```二、字符数组的赋值和拷贝我们可以使用赋值运算符‘=’将一个字符数组赋值给另一个字符数组,或者使用strcpy函数进行拷贝操作。
例如:```cchar str1[10];char str2[10] = "Hello";strcpy(str1, str2); // 将str2拷贝到str1中```三、字符数组的连接我们可以使用strcat函数将两个字符数组连接起来。
例如:```cchar str1[10] = "Hello";char str2[10] = "World";strcat(str1, str2); // 将str2连接到str1的末尾```四、字符数组的输入和输出在C语言中,我们可以使用scanf函数来输入一个字符数组,使用printf函数来输出一个字符数组。
例如:```cchar str[10];scanf("%s", str); // 输入一个字符数组printf("%s", str); // 输出一个字符数组```五、字符数组的比较我们可以使用strcmp函数来比较两个字符数组是否相等。
c语言作业
1、用下面的scanf函数输入数据,使a=10, b=20, c1='A', c2='a', x=1.5, y=-3.75, z=67.8,请问在键盘上如何输入数据?scanf("%5d%5d%c%c%f%f%*f,%f", &a,&b,&c1,&c2,&x,&y,&z);2、设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf函数输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字第三次作业1、有3个整数a,b,c,由键盘输入,输出其中最大的数。
2、有一个函数:x x<1y= 2x-1 1<=x<103x-11 x>=10写一段程序,输入x,输出y的值。
3、给出一百分制成绩,要求输出成绩等级A、B、C、D、E。
90分以上为A,80-89分为B,70-79为C,60-69为D,60分以下为E。
4、给一个不多于5位的正整数,输出这个数是几位数。
第四次作业1、给一个不多于5位的正整数,要求:a.求出它是几位数;+b.分别输出每一位数字;c.按逆序输出各位数字,例如:原数为321,应输出123。
2、教材P112页第5.8题(if语句解法创建一个独立文件,switch语句解法创建一个独立文件第五次作业1、输入两个正整数m和n,求其最大公约数和最小公倍数。
(经典题)2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数,并输出。
3、求s=a+aa+aaa+aaaa+....+(a...a)之值,其中a是一个数字,n表示a的位数。
1、输入两个字符串,使用指针p将两个字符串按次序复制到数组c中。
例:输入“zhe"和"jiang",将"zhejiang"保存在数组c中。
C语言作业
hv=PI*r*r*h;
printf("圆周长为%f,圆面积为%f,圆球表面积为%f,圆球体积为%f,圆柱表面积为%f,圆柱体积为%f",l,s,ss,sv,hs,hv);
}
已知三角形的三边长,求三角形面积。
#include<stdio.h>
#include<math.h>
scanf("%d,%d,%d",&x,&y,&z);
if(x>y)
{m=x,x=y,y=m;}
if(x>z)
{m=x,x=z,z=m;}
if(y>z)
{m=y,y=z,z=m;}
printf("%d,%d,%d\n",x,y,z);
}
当月收入超过1600元时,超过部分交税款20%。试编写一程序计算税款(其中月收入由键盘输入。
#include<stdio.h>
void main()
{
float x,y;
printf("请输入购货款\n");
scanf("%f",&x);
if(x>=1000)
y=x*0.8;
else if(x>=500)
y=x*0.9;
else if(x>=200)
y=x*0.95;
else if(x>=100)
{
float a,r,n,I,D,p,q;
printf("请输入每年可以还贷的金额a,年利率r,还清贷款的年数n\n");
scanf("%f%f%f",&a,&r,&n);
C字符数组练习题及解答
字符数组第1题:编写程序,比较两个字符串的大小,不允许使用strcmp函数。
输入分2行,每一行均为字符串(不包含空格)。
如果第一个字符串大于第二个字符串,则输出1;如果两个字符串大小相等,则输出0;如果第一个字符串小于第二个字符串,则输出-1。
样例输入:ChinaChina样例输出:0#include<iostream.h> int main(){char a[100],b[100];int t=0,i;cin>>a;cin>>b;for(i=0;a[i]!=0||b[i]!=0;i++){if(a[i]>b[i]){t=1;break;}if(a[i]<b[i]){t=-1;break;}}cout<<t;return 0;}第2题:编写程序,将一个字符串首尾互换,并与原字符串连接后输出。
输入字符串(不包含空格),输出处理后的结果。
样例输入:china样例输出:chinaanihc#include<iostream.h> #include<string.h> int main(){char str1[100],i;int n; cin>>str1;n=strlen(str1);for(i=0;i<n;i++){str1[n+i]=str1[n-i-1];}for(i=0;i<n*2;i++)cout<<str1[i];return 0;}第3题:编写程序,输入由数字字符构成的字符串,分别统计该字符串中数字字符对应的数字中奇数和偶数的个数。
样例输入:7843028503样例输出:4 6#include <string.h>#include <iostream.h> int main(){int a[100],i,n,o,j;char str[100];o=0;j=0;cin>>str;n=strlen(str);for(i=0;i<n;i++){a[i]=str[i];}for(i=0;i<n;i++){a[i]=a[i]-48;if(a[i]%2==0){o=o+1;}else{j=j+1;}}cout<<j<<" "<<o;return 0;字符数组}第4题:编写程序,输入字符串(不包含空格),删除字符串中ASCII码值能被3整除的字符,将剩余字符按从小到大排序后输出。
C语言作业及参考答案
C语言及实验作业参考做法分支程序设计1.从键盘上输入10个整数,计算这些整数的和2.水仙花数。
一个3位数,若其各位数字之和等于它本身,这个数就称为水仙花数.输出所有的水仙花数。
(如153)#include<>int main()...前20项之和。
#include<>int main(){float sum,fenzi,fenmu,a;int i;fenzi=2;fenmu=1;sum=0;for(i=1; i<=20; i++){sum+=fenzi/fenmu;a=fenmu;fenmu=fenzi;fenzi+=a;}printf("%.3f",sum);return 0;}4.迭代法求平方根。
利用公式x(n+1)=1/2*(x(n)+a/x(n)) 计算a的平方根.要求|x(n+1)-x(n)|<1e-5#include <>#include <>main(){float x0,x1,a;printf("input a="); scanf("%f",&a);x1=a/2;do{ x0=x1;x1=(x0+a/x0)/2;}while(fabs(x1-x0)>1e-5);printf("the sqrt of %f is %f\n",a,x1);}5.百钱买百鸡:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何6.某人摘下一些桃子,第一天卖掉一半,又吃了一个,第二天卖掉剩下的一半,又吃了一个,以后每天都是如此处理,到第n天发现只剩下一只桃子。
输入n,输出一共摘了多少桃子。
7.一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1, 2*2, 3*3, 4*4, 5*5, 6*6。
C程序设计 字符数组应用(教案)
字符数组应用
课型
实训课
教学时数
2
教学目的
掌握常用的串函数、字符函数,字符串典型操作
重点难点
字法
指导、讲解演示
学法建议
讨论交流、模仿练习
教学
过程
设计
(复习内容、课题引入、主要知识点序列或操作步骤教法设计、时间分配等)
1、布置上机练习作业及要求
输入一个字串,判断它是否是对称串。如”abcdcba”是对称串,”123456789”不是。
随机产生N个大写字母输出,然后统计其中共有多少个元音字符。(设N为200)
从键盘输入两个字串,判断它们是否相同。
从键盘输入两个字串,输出其中较短的那个字串,并输出它的长度。
输入一行字符串,按如下规则加密:如果是英文字母则大写变小写、小写变大写,对非英文字符则保持不变。试写加密程序。
2、实验操作考察
实验预习情况,源程序、测试数据准备情况
程序实现过程,问题解决指导
根据实验中发生问题,有针对性小结
交流讨论
3、完成上机实训报告册
备注
思考与
练习
使用字符串函数应该注意什么?
gets()、scanf()的区别是什么?
如何确定字符串结束标志?
教学后记
C语言(数组)习题与答案
一、单选题1、下列描述中不正确的是()A.字符串的结束符是'\0'。
B.可以对字符型数组进行整体输入、输出。
C.字符型数组中能存放字符串。
D.字符串函数声明在ctype.h中。
正确答案:D2、下面是有关C语言字符数组的描述,其中错误的是()A.不可以用赋值语句给字符数组名赋字符串B.可以用输入语句把字符串整体输入给字符数组C.字符数组只能存放字符串D.字符数组中的内容不一定是字符串正确答案:C3、下面是对数组s的初始化操作,其中不正确的是()A.char s[5]= " ";B.char s[5]={'a'};C.char s[5]={"a"};D.char s[5]= "abcdef";正确答案:D4、下面叙述正确的是()A.字符串"123 "与"123"相等。
B.字符串"123"小于字符串"2"。
C.两个字符串所包含的字符个数不相同时,才能进行大小比较。
D.字符个数多的字符串比字符个数少的字符串大。
正确答案:B5、下面程序段的输出结果是()char a[7]=“123456”;char b[4]=”ABC”;strcpy(a,b);printf(“%c”,a[5]);A.\0B.C.5D.6正确答案:D6、以下对二维数组a的正确说明是__。
A.double a[1][4];B.float a(3)(4);C. floatf a(3,4);D. int a[3][];正确答案:A7、以下能对二维数组a进行正确初始化的语句是__。
A. int a[][3]={{1,2,3},{4,5,6}};B.int a[2][]={{1,0,1},{5,2,3}};C.int a [2][4]={{1,2,3},{4,5},{6}};D. int a[][3={{1,0,1},{},{1,1}};正确答案:A8、若有说明: int a[3][4]={0};则下面正确的叙述是__。
程序设计(C)作业三(有答案)
程序设计(C)作业三(有答案)第3次作业答案(红字为答案)1. 下列叙述中错误的是()A. 对于double 类型数组,不可直接用数组名对数组进行整体输入或输出B. 数组名代表数组所占存储区的首地址,其值不可变C. 在程序执行过程中,当数组元素下标超出定义的下标范围时,系统将给出“下标”越界的错误提示D. 可以通过赋初值的方式确定数组元素个数提示:请从数组下标的合法取值范围来考虑。
2. 已有定义char a[] = “xyz”,b[]={ ‘x’, ‘y’, ‘z’} ,以下叙述正确的是()A. 数组a 和 b 的长度相同B. 数组 a 的长度小于数组 b 的长度C. 数组a 的长度大于数组 b 的长度D. 上述说法均不正确提示:此题考察字符数组长度和字符串长度之间的关系。
3. 以下能正确定义一维数组的选项是()A. int num[];B. #define N 100 int num[N]C. int num[0..100];D. int N = 100; int num[N];提示:此题考察一维数组的维数界定问题。
4. 下列程序的输出结果是()#includevoid main(){char a[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f ’, ‘g’, ‘h’, ‘\0 ’}; int i, j;i = sizeof(a); j = strlen(a);printf( “%d, %d\n”, i,j); }A. 9,9B. 8, 9C. 1, 8D. 9,8提示:此题考察字符数组长度和字符串长度之间的关系。
5. 以下不能正确定义二维数组的选项是()A. int a[2][] = {{1, 2}, {3, 4}};B. int a[][2] = {1, 2, 3, 4};C. int a[2][2] = {{1}, {2}};D. int a[2][2] = {{1}, 2, 3};提示:此题考察二维数组初始化的规定。
c语言数组、函数主要内容
c语言数组、函数主要内容数组,顾名思义就是一组同类型的数。
一、数组的声明声明数组的语法为在数组名后加上用方括号括起来的维数说明。
本接仅介绍一维数组。
下面是一个整型数组的例子:int array[10];这条语句定义了一个具有10个整型元素的名为array的数组。
这些整数在内存中是连续存储的。
数组的大小等于每个元素的大小乘上数组元素的个数。
方括号中的维数表达式可以包含运算符,但其计算结果必须是一个长整型值。
这个数组是一维的。
下面这些声明是合法的:int offset[5+3];float count[5*2+3];下面是不合法的:int n=10;int offset[n]; /*在声明时,变量不能作为数组的维数*/二、用下标访问数组元素int offset[10];表明该数组是一维数组,里面有10个数,它们分别为offset[0],off set[1],……offset[9];千万注意,数组的第一个元素下标从0开始。
一些刚学编程的人员经常在这儿犯一些错误。
offset[3]=25;上面的例子是把25赋值给整型数组offset的第四个元素。
在赋值的时候,可以使用变量作为数组下标。
main(){int i,offset[10];for(i=0;i<10;i++) scanf(%d,&offset[i]);for(i=9;i>=0;i--) printf(%d ,offset[i]);printf(\n);}题目的意思是先输入10个整数,存入到数组中,然后反序输出。
三、数组的初始化前面说了,变量可以在定义的时候初始化,数组也可以。
int array[5]={1,2,3,4,5};在定义数组时,可以用放在一对大括号中的初始化表对其进行初始化。
初始化值的个数可以和数组元素个数一样多。
如果初始化的个数多于元素个数,将产生编译错误;如果少于元素个数,其余的元素被初始化为0。
如果维数表达式为空时,那么将用初始化值的个数来隐式地指定数组元素的个数,如下所式:int array[]={1,2,3,4,5};这也表明数组array元素个数为5。
字符数组练习题
字符数组练习题字符数组是C语言中常用的数据类型之一,用于存储一系列字符。
在本文中,我们将探讨一些字符数组的练习题,以帮助提升对字符数组的理解和运用。
1. 字符串拷贝题目描述:给定两个字符数组str1和str2,请编写一个函数,将str2的内容拷贝到str1中。
要求:不使用标准库函数strcpy(),而是自己编写实现。
解题思路:遍历str2,将每个字符逐个拷贝到str1的对应位置。
代码示例:```cvoid stringCopy(char str1[], char str2[]) {int i = 0;while (str2[i] != '\0') {str1[i] = str2[i];i++;}str1[i] = '\0'; // 添加字符串结束符}2. 字符串连接题目描述:给定两个字符数组str1和str2,请编写一个函数,将str2的内容连接到str1的末尾。
要求:不使用标准库函数strcat(),而是自己编写实现。
解题思路:先找到str1的末尾位置,然后从该位置开始,逐个拷贝str2的字符到str1。
代码示例:```cvoid stringConcat(char str1[], char str2[]) {int i = 0;while (str1[i] != '\0') {i++;}int j = 0;while (str2[j] != '\0') {str1[i] = str2[j];i++;j++;str1[i] = '\0'; // 添加字符串结束符}```3. 字符串长度题目描述:给定一个字符数组,请编写一个函数,计算该字符数组表示的字符串的长度。
要求:不使用标准库函数strlen(),而是自己编写实现。
解题思路:遍历字符数组,直到遇到字符串结束符'\0'时停止,并记录经过的字符个数。
安徽大学C语言实验平台作业答案完整版
安徽大学C语言实验平台作业答案Company number:【0089WT-8898YT-W8CCB-BUUT-202108】实验三C基本数据类型及运算1. 编程:根据需要定义相关变量,键盘输入、、三个实数分别赋给相关三个变量,输出该3个变量的和s、乘积p 和平均值a。
2. 编程:输入球的半径,计算球体表面积和球体积。
3. 编程:定义6个变量,通过键盘将“10,-10, 40000, a,,hello”这六个值分别赋给相应变量,然后在屏幕上输出变量的值(每行输出一个变量)。
4. 编程:从键盘接收1个字符给变量s1,1个字符串(允许带有空格)给字符数组s2,输出字符变量s1的ASCII 码值及字符数组s2中的字符串。
5. 编程:从键盘输入二个整数分别赋给整型变量a、b,将它们按由小到大的顺序输出。
6. 编程:调用标准库函数sin(x)计算6800的正弦值(此题为选做)。
7. 编程:键盘输入一个实数赋给变量x,计算 y=x*x*x+x*x+x 的值,分别输出y值、y值的整数部分和小数部分(此题为选做)。
8. 编程:键盘输入四个整数分别赋给整型变量a、b、c、d,用三目运算方法将它们按由大到小的顺序输出(此题为选做)。
1.#include<>main(){float x,y,z,s,p,a;scanf("x=%fy=%fz=%f",&x,&y,&z);s=x+y+z;p=x*y*z;a=s/3;printf("s=%f,p=%f,a=%f",s,p,a);}2.#include<>main(){float r,s,v;printf("input r");scanf("%f",&r);s=4**r*r;v=4/3**r*r*r;printf("s=%f,v=%f",s,v);}3.#include<>main(){int a,b;long c;char d,st[6];float e;scanf("%d%d%ld%c%f%s",&a,&b,&c,&d,&e,st);printf("a=%d\n,b=%d\n,c=%d\n,d=%c\n,e=%f\n,ch=%s",a,b,c,d,e,st);}4.#include<>main(){ char s1,s2[6];scanf("%c%s",&s1,s2);printf("s1=%d,s2=%s",s1,s2);}5.#include<>main(){ int a,b;scanf("a=%db=%d",&a,&b);if (a<b)printf("a=%db=%d",a,b);elseprintf("b=%da=%d",b,a);}6.#include<>#include<>main(){float a,b;scanf("%f",&a);b=sin(a);printf("%f",b);}7.#include<>main(){float x,y,b;int a;scanf("%f",&x);y=x*x*x+x*x+x;a=(int)y;b=y-a;printf("%f\n%d\n%f\n",y,a,b);}实验四C分支结构程序设计1. 编程:从键盘输入一个字符,如是大写字母,则输出相应小写字母;如是小写字母,则原样输出;其它字符输出“Not letter!”。
C语言第9讲 字符数组
1 2 3
4 7 5 8 a[i][j]=i*1+j*3+1 6 9 #include <stdio.h> void main(void) { int a[3][3],i,j; for(i=0;i<3;i++) 生成如下矩阵?? for(j=0;j<3;j++) 1 5 9 13 a[i][j]=i+j*3+1; 5 9 13 17 for(i=0;i<3;i++) 9 13 17 21 { for(j=0;j<3;j++) printf(“%4d”,a[i][j]); printf(“\n”); } }
专题二、字符数组
例1 输入一个字符串,按逆序存放后输出。(见p109 例4.22) #include <stdio.h> #include<string.h> void main(void) { char s[80], ch; int i, len ; gets(s) ; len=strlen(s); for(i=0; i<len/2; i++) 交 { ch=s[i]; s[i]=s[len-i-1]; 换 s[len-i-1]=ch; 字 符 } printf("s=%s\n",s); }
合 肥 ★ 课堂作业: 输入一组整数给一个数组a[3][3],编程以矩阵形式输出该数 工 组,并求此矩阵的主对角线元素之和。 业 大 学
则输出的结果是 __________。
Xuan shanli
合 肥 工 业 大 学
⑵ 矩阵的转置运算
例1:将一个二维数组中的行和列元素互换,存放到另一个二 维数组中( p98~99 例4.7 )。
C语言,第8章 数组(字符数组)
(字符数组)
内 容 提 要
• • • • • • • •
•
• •
什么是字符串? 字符数组的作用 字符数组的定义 字符数组的输入和输出 字符数组的初始化 程序实例 字符串复制函数strcpy 字符串连接函数strcat 字符串比较函数strcmp 字符串长度函数strlen 程序实例
什么是字符串?
给字符数组赋值
例如:
char c[]={“boy”}; char c[]=“boy”; char c[]={„b‟, „o‟, „y‟, „\0‟};
赋值后字符数组c在内存中的状态:
c[0] b c[1] c[2] o y c[3] \0
给字符数组赋值
• 从键盘输入:
•
例如:: 使用循环逐个字符输入 #include <stdio.h> int main(void) { char c[20]; int i; for (i=0; i<3; i++) { scanf(“%c”, &c[i]); } c[i] = „\0‟; …….. return 0;
输出结果
printf(“zimu=%d,shuzi=%d,kongge=%d,qita=%d\n",
zimu, shuzi, kongge, qita);
return 0; }
使用字符串处理函数必须加头文件 <string.h>
字符串复制函数strcpy
1. strcpy(字符数组1,字符串2) 作用:将字符串2复制到字符数组1中去。
例如:输入 My name is chdong!
遇到第一个空格结束,因此只输入 My
字符数组的输出
C语言程序设计——字符数组
3.字符串连接函数(strcat)
一般形式为:strcat(字符数组名1,字符数组名2);
功能:把字符数组2中的字符串连接到字符数组1中字符
串的后面,并删去字符串1后的’ \0’。函数调用
后得到一个函数值——字符数组1的地址。
例如:#include<string.h>
c[7]=′p′;c[8]=′p′;c[9]=′y′;
字符数组类型说明的形式与前面介绍的数值数组相同。 一般形式:类型说明符 数组名(常量表达式);
例如:char c[10]; (每个数组元素占1个字节的内存单元)
由于字符型和整型是互相通用的,因此也可定义一个 整型数组,用它存放字符数组。 例如:int c[10];
(每个数组元素占2个字节的内存单元, 合法,但浪费存储空间)
二、字符数组的初始化(两种方法)
1.逐个给数组中的各元素赋初值。 如:char c[10]={′I′, ′ ′, ′a′, ′m′,′ ′ ,
′h′,′a′,′p′,′p′,′y′}; 把10个字符分别赋给c[0]—c[9]10个元素。
当对全体元素赋初值时也可以省去长度说明。
2.用字符串直接给字符数组赋初值。 C语言中,没有专门的字符串变量,通常用一个字符数组 来存放一个字符串。 如:char c[10]={“I am happy”};
或char c[10]=“I am happy”; (花括号可省略)
上例也可把长度省略,此时编译系统通过计算初值个数 自动确定该数组长度为11,其中字符串有效长度为10, 另外加上以’ \0’作为字符串的结束符。
scanf(“%s%s%s”,str1,str2,str3); 输入字符:How_are_you?,系统分别将三个字符 串送到三个数组中。
c语言字符数组、字符串习题
班级学号姓名分数
实验九字符数组、字符串
实验目的:
1、掌握字符数组的定义及数组元素的引用方法。
2、掌握字符数组的赋值、输入输出方法。
3、掌握字符串数据的处理方法。
4、掌握与字符数组有关的基本算法的程序设计。
5、能够应用字符数组进行综合程序设计。
实验内容:
1、输入一行字符,统计其中有多少个单词,单词之间用空格分开。
P165
2、统计出一行字符串中各元音字母的个数(大小写不区分)。
提示:首先从键盘接收一行字符串存放在字符数组中,然后逐个字符判断是否是元音字母,如果是,则数量加1。
3、有一篇文章,共有3行文字,每行有80个字符。
要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
提示:可以定义二维字符数组str,大小为3×80,每行存放一个字符串,可以把str[0]、str[1]、str[2]看作3个一维字符组,用gets函数分别读入3个字符串,赋给3个一维字符数组。
然后逐个字符判断是哪一类,相应数量值加1。
友情提示:部分文档来自网络整理,供您参考!文档可复制、编制,期待您的好评与关注!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符数组
1、编写程序,从键盘输入一任意字符串(不包含空格),然后输入所要查找字符。
如果存在则输出它在字符串中第一次出现的位置,否则输出NO。
样例输入:Hello a
样例输出:NO
样例输入:Hello l
样例输出:2
#include<iostream.h>
int main( )
{ char str[100],ch; int i,flag=0;
cin>>str>>ch;
for(i=0;str[i]!=0;i++)
if(str[i]==ch){flag=1;break;}
if(flag) cout<<i;
else cout<<"NO";
return 0;
}
2、编写程序,将一个字符串逆序存放,并与原字符串连接后输出。
输入字符串(不包含空格),输出处理后的结果。
样例输入:china
样例输出:chinaanihc
#include<iostream.h>
#include<string.h>
int main( )
{ char a[100],b[100]; int i,len=0;
cin>>a;
len=strlen(a);
for(i=0;i<len;i++)
b[i]=a[len-i-1];
b[i]=0; strcat(a,b);
cout<<a;
return 0;
}
3、编写程序,输入两个字符串(不包含空格),输出两个字符串中第一个不相同字符的ASCII 值之差的绝对值,如果两个字符串完全相同则输出0。
样例输入:abcd abed
样例输出:2
样例输入:abcd abcd
样例输出:0
#include<iostream.h>
#include<math.h>
int main( )
{ char a[100],b[100]; int i,len=0;
cin>>a>>b;
for(i=0;a[i]!=0||b[i]!=0;i++)
if(a[i]!=b[i])break;
cout<<abs(a[i]-b[i]);
return 0;
}
4、编写程序,输入字符串(不包含空格),统计英文字母、数字字符及其他字符的个数。
样例输入:abc129++*ABC
样例输出:6 3 3
#include<iostream.h>
int main( )
{ char str[100]; int i,a=0,b=0,c=0;
cin>>str;
for(i=0;str[i]!=0;i++)
if(str[i]>='a'&&str[i]<='z'|| str[i]>='A'&&str[i]<='Z') a++;
else if(str[i]>='0'&&str[i]<='9') b++;
else c++;
cout<<a<<" "<<b<<" "<<c;
return 0;
}
5、在情报传递过程中,为了防止情报被截获,往往需要对情报用一定的方式加密,简单的加密算法虽然不足以完全避免情报被破译,但仍然能防止情报被轻易地识别。
一种简单的加密方法:对给定的一个字符串,把其中的每个英文字母都用其后面第4个字母代替,如果后面不足4个字母,则从a或A重新开始。
编写程序,从键盘输入一任意字符串(不包含空格),输出加密后的结果。
样例输入:Hello
样例输出:Lipps
#include<iostream.h>
int main( )
{ char str[100]; int i;
cin>>str;
for(i=0;str[i]!=0;i++)
if(str[i]>='a'&&str[i]<='z') str[i]=(str[i]-'a'+4)%26+'a';
else if(str[i]>='A'&&str[i]<='Z') str[i]=(str[i]-'A'+4)%26+'A';
cout<<str;
return 0;
}。