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