C++作业(字符数组及函数)
- 格式:doc
- 大小:34.50 KB
- 文档页数:3
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语言字符串函数。
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语言程序设计实验报告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语言中,字符数组以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函数来比较两个字符数组是否相等。
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中。
字符数组第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语言及实验作业参考做法分支程序设计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。
字符数组
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;
}。