第五周第三天:C基础

1.作业题

(1)

/*

.从键盘上输入10个数据到一维数组中,然后找出数组中的最大值和该值所在的元素下标.

要求调用子函数search(int *pa,int n,int *pmax,int *pflag)完成,数组名作为实参,

指针作为形参,最大值和下标在形参中以指针的形式返回。编程素材有printf("Input 10 numbers:");

和printf("Max is:%d\n",...);以及printf("Max position is:%d\n",...)

*/

#include<stdio.h>

void *Search(int *Array,int n,int *Max,int *flag);

int theStrLength(char *S);

int main(){

int a[10]={0};

printf("请初始化数组:\n");

for(int i=0;i<10;i++){

scanf("%d",&a[i]);

}

int max,flag;

Search(a,10,&max,&flag);

printf("最大的元素为Array[%d]=%d",flag,max);

return 0;

}

void *Search(int *Array,int n,int *Max,int *flag){

*Max=Array[0];

*flag=0;

for(int i=0;i<n;i++){

if(Array[i]>*Max){

*Max=Array[i];

*flag=i;

}

}

}

(2)

/*

编写一函数,求一个字符串的长度,要求用字符指针实现。

在主函数中输入字符串,调用该函数输出其长度。

*/

#include<stdio.h>

int theStrLength(char *S);

int main(){

char str[100]={""};

gets(str);

printf("%d\n",theStrLength(str));

return 0;

}

int theStrLength(char *S){

int StrLength=0;

int i=0;

while(S[i]!='\0'){

StrLength++;

i++;

}

return StrLength;

}

(3)

/*

3.从键盘上先后读入两个字符串,假定存储在字符数组s1和s2中。

注意,这两个字符串最长均可达到26个字符、最短均可为0个字符。

将字符串s2插入字符串s1中,生成一个新的字符串s。

插入方法为s2的第i个字符插入到原s1的第i个字符后,如果s2比s1(假定s1的长度为L1)长,

则s2的第L1个字符开始到s2结尾的所有字符按在s2中的顺序放在新生成的字符串s之后。

用指针完成程序。程序的运行效果应类似地如下图所示。

*/

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

char *theNewString(char *S1,char * S2);

int S1_Length = 0;

int S2_Length = 0;

int main(){

char s1[26]={""};

char s2[26]={""};

printf("请输入两个字符数组\n");

gets(s1);

gets(s2);

char *TheString = theNewString(s1,s2);

puts(TheString);

return 0;

}

char *theNewString(char *S1,char * S2){

char *NewString = (char*)malloc(sizeof(char)*(S1_Length+S2_Length+1));

int TempFlag=0;

if(strlen(S1)>=strlen(S2)){

for(int i=0;i<strlen(S1);i++){

if(S2[i]!='\0'){

NewString[TempFlag++]=S1[i];

NewString[TempFlag++]=S2[i];

}

else{

break;

}

}

NewString[TempFlag]='\0';

return NewString;

}

if(strlen(S1)<strlen(S2)){

for(int i=0;i<strlen(S1);i++){

NewString[TempFlag++]=S1[i];

NewString[TempFlag++]=S2[i];

}

for(int i=strlen(S1);i<strlen(S2);i++){

NewString[TempFlag++]=S2[i];

}

NewString[TempFlag]='\0';

return NewString;

}

}

(4)

/*

写一个函数,用于统计一个字符串中字母、数字、空格的个数。

在主函数中输入该字符串后,调用上述函数,并输出统计结果。要求用指针实现。

*/

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

void tongJi(char *Array);

int main(){

char Array[50]={""};

printf("请输入一个字符串\n");

gets(Array);

tongJi(Array);

return 0;

}

void tongJi(char *Array){

int zimu=0,shuzi=0,kongge=0;

for(int i=0;i<strlen(Array);i++){

if((Array[i]>='a'&&Array[i]<='z')||(Array[i]>='A'&&Array[i]<='Z')){

zimu++;

}

if(Array[i]>='0'&&Array[i]<='9'){

shuzi++;

}

if(Array[i]==' '){

kongge++;

}

}

printf("字母:%d 数字:%d 空格:%d\n",zimu,shuzi,kongge);

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容