指针与数组练习题
- 格式:doc
- 大小:30.00 KB
- 文档页数:4
指针与数组练习题
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