指针与数组练习题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

指针与数组练习题

1、下面程序实现如下功能:输入一个整数字符串转换为一个整数值,如”1234”转换为1234,”-1234”转换为-1234。读懂main函数,编写转换函数chnum

#include

#include

void main()

{

char s[6];

int n;

int chnum(char *p);

gets(s);

if (*s=='-')

n=-chnum(s+1);

else

n=chnum(s);

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

}

int chnum(char*p) {

int sum=0;

while(*p!='\0') {

if(*p>='0'&&*p<='9')

sum=sum*10+*p-'0';

p++;

} return sum;

}

2、从键盘输入一个字符串,去掉所有非十六进制字符后转换成十进制数输出。读懂以下main函数,编写相应的函数del16和htod。

#include

#include

void main()

{ char s1[10],s2[10];

void del16(char*,char*);

int htod(char*);

gets(s1); //读入一字符串

del16(s1,s2); //去掉所有非十六进制字符到s2

printf("%d\n",htod(s2)); //把s2转换为10进制

}

void del16(char*s1,char*s2){

for(;*s1!='\0';s1++)

if(*s1>='0'&&*s1<='9'||*s1>='a'&&*s1<='f'||*s1>='A'&&*s1<='F'){

*s2 = *s1;

s2++;}

*s2='\0';

}

int htod(char*s2){

int sum=0;

for(;*s2!='\0';s2++){

if(*s2>='0'&&*s2<='9')

sum=sum*16+*s2-'0';

else if(*s2>='a'&&*s2<='f')

sum=sum*16+*s2-'a'+10;

else if(*s2>='A'&&*s2<='F')

sum=sum*16+*s2-'A'+10;

}

return sum;

}

3、编写函数insert(char *s1,char *s2,int pos),实现在字符串s1中的指定位置pos处插入字符串s2。

Happy Year

New

7

Happy New Year

#include

#include

int main(void) {

void insert(char *s1,char *s2,int pos);

char s1[80],s2[80];

int pos;

gets(s1);

gets(s2);

scanf("%d",&pos);

insert(s1,s2,pos);

puts(s1);

return 0;

}

void insert(char *s1,char *s2,int pos) {

char s[100];

strcpy(s,(s1+pos-1));

strcpy((s1+pos-1),s2);

strcat(s1,s);

}

4、编写程序,实现下面一个有关单词个数统计问题。编写一个函数findstr(char *str,char *substr),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为”asd asasdfg asd as zx67 asd mklo”,子字符串为as,函数返回值是6。

asd asasdfg asd as zx67 asd mklo

as

6

#include

int main(void) {

int findstr(char *,char *);

char s1[80],s2[3];

int count;

gets(s1);

gets(s2);

count = findstr(s1,s2);

printf("%d",count);

return 0;

}

int findstr(char *str,char *substr) {

int count = 0;

for(;*str!='\0';str++)

if(*str == *substr&&*(str+1) == *(substr+1))

count++;

return count;

}

5、有已按升序排好顺序的字符串a,编写程序将字符串s中的每个字符按升序的规则插到字符串a中,最后输出”abdefghjkmnptwy”。

#include

#include

void main() {

char a[20]="bdfhjmptwy";

char s[ ]="ganke";

int i,j,n;

char temp;

strcat(a,s);

n = strlen(a);

for(i = 1;i

for(j = 0;j

相关文档
最新文档