你首先得把*r和*c初始化为0
你外面的循环,i<3写成了1<3
【相关推荐】
编写程序:从键盘任意输入一个字符串,输出该字符串。然后,将该字符串逆序存放后再输出,要求用字符指针完成。(提示:逆序存放的函数接口:void invstr(char *s))
#include<stdio.h>
#include<string.h>
void invstr(char *s)
{
char b;
int len;
len=strlen(s); /*获取该字符串的长度*/
for(int i=0;i<len/2;i++){ /*该循环的目的是每次将字符串的头和尾换一下位置*/
b=*(s+i); /*字符串的第i个元素的地址暂时放到b里*/
*(s+i)=*(s+len-1-i); /*将字符串的倒数第i个元素换到第i个元素*/
*(s+len-1-i)=b; /*再将b存放的地址放回倒数第i个元素*/
}
}
int main()
{
char a[1000];
gets(a); /*输入字符串*/
printf("%s\n",a); /*正序输出一次*/
invstr(a); /*运行函数*/
printf("%s",a); /*逆序输出*/
}
利用指针编程,用指针方法编写一函数,实现两个字符串的比较。编程点拨:即自己编写一个strcmp函数:strcmp(s1,s2),如果s1= s2,返回值为0,如果s1≠s2, 返回它们二者第一个不同字符的ASCII码差值(如"BOY"与"BAD", 第二个字母不同,"O"与"A"之差为79-65=14)。如果要s1>s2,则输出正值,如果s1<s2,则输出负值。
#include<stdio.h>
#include<string.h>
void strcmp(char *s1,char *s2)
{
int len,i=0,sum=0,lenmax;
lenmax = strlen(s1);
len = strlen(s2);
if(lenmax < len){
lenmax = len;
}
for(i=0;i<lenmax and sum==0;i++){
if(*(s1+i) > *(s1+i)){
sum = *(s1+i) - *(s2+i);
}
if(*(s1+i) < *(s2+i)){
sum = ( - (*(s1+i) - *(s2+i)));
}
}
printf("%d",sum);
}
int main()
{
char s1[1000],s2[1000];
gets(s1);
gets(s2);
strcmp(s1,s2);
}