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。
- 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;
}。