c语言字符串作业题,C语言课后习题练习(四)

(ps:提前声明一下:课后习题是备份给自己看的😂)

1.输入3个整数,按由小到大的顺序输出

int main() {

void swap(int *p1, int * p2);

int n1, n2, n3;

int *p1, *p2, *p3;

printf("input three integer n1,n2,n3:");

scanf("%d,%d,%d",&n1,&n2,&n3);

p1 = &n1;

p2 = &n2;

p3 = &n3;

if (n1 > n2)

swap(p1, p2);

if (n1 > n3)

swap(p1, p3);

if (n2 > n3)

swap(p2, p3);

printf("Now,the order is:%d,%d,%d\n",n1,n2,n3);

return 0;

}

void swap(int *p1, int *p2) {

int p;

p = *p1;

*p1 = *p2;

*p2 = p;

}

远行结果:

a408349eefe1

c1.png

2.输入三个字符串,按由小到大的顺序输出

//记得导入头文件:#import

int main() {

void swap(char *, char *);

char str1[20],str2[31],str3[20];

printf("input three line:\n");

gets(str1);

gets(str2);

gets(str3);

if (strcmp(str1, str2) > 0)

swap(str1, str2);

if (strcmp(str1, str3) > 0)

swap(str1, str3);

if (strcmp(str2, str3) > 0)

swap(str2, str3);

printf("Now,the order is:\n");

printf("%s\n%s\n%s\n",str1,str2,str3);

return 0;

}

void swap(char *p1, char *p2){

char p[20];

strcpy(p, p1);

strcpy(p1, p2);

strcpy(p2, p);

}

运行结果:

a408349eefe1

c2.png

(注:在Xcode中运行才显示的warning: this program uses gets(), which is unsafe.关于使用gets()不安全的警告)

3.写一函数,求一个字符串的长度。在main函数中输入字符串,并输入其长度

int main() {

int length(char *p);

int len;

char str[20];

printf("input string: ");

scanf("%s",str);

len = length(str);

printf("The length of string is %d. \n",len);

return 0;

}

int length(char *p) { //求字符串长度函数

int n = 0;

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

n++;

p++;

}

return(n);

}

运行结果:

a408349eefe1

c3.png

4.有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串

//记得导入头文件:#import

int main() {

void copystr(char *, char *, int);

int m;

char str1[20],str2[20];

printf("input string:\n");

gets(str1);

printf("which character that begin to copy?");

scanf("%d",&m);

if (strlen(str1) < m)

printf("input error!");

else {

copystr(str1, str2, m);

printf("result:%s\n",str2);

}

return 0;

}

void copystr(char *p1, char *p2, int m) { //字符串部分复制函数

int n = 0;

while (n < m - 1) {

n++;

p1++;

}

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

*p2 = *p1;

p1++;

p2++;

}

*p2 = '\0';

}

运行结果:

a408349eefe1

c4.png

(注:在Xcode中运行才显示的warning: this program uses gets(), which is unsafe.关于使用gets()不安全的警告)

5.输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少

//记得导入头文件:#import

int main() {

int upper = 0, lower = 0, digit = 0, space = 0, other = 0, i = 0;

char *p,s[20];

printf("input string: ");

while ((s[i] = getchar()) != '\n')

i++;

p = &s[0];

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

if (('A' <= *p) && (*p <= 'Z'))

++upper;

else if (('a' <= *p) && (*p <= 'z'))

++lower;

else if (*p == ' ')

++space;

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

++digit;

else

++other;

p++;

}

printf("upper case:%d lower case:%d",upper,lower);

printf(" space:%d digit:%d other:%d\n",space,digit,other);

return 0;

}

运行结果:

a408349eefe1

c5.png

6.将n个数按输入时顺序的逆序排列,用函数实现

int main() {

void sort(char *p, int m);

int i, n;

char *p, num[20];

printf("input n:");

scanf("%d",&n);

printf("please input these numbers:\n");

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

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

p = &num[0];

sort(p, n);

printf("Now,the sequence is:\n");

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

printf("%d",num[i]);

printf("\n");

return 0;

}

void sort(char *p, int m) { //将n个逆序排列函数

int i;

char temp, *p1, *p2;

for (i = 0; i < m/2; i++) {

p1 = p + i;

p2 = p + (m - 1 - i);

temp = *p1;

*p1 = *p2;

*p2 = temp;

}

}

运行结果:

a408349eefe1

c6.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值