C语言——字符串

时间:2022-08-16 00:24:03

1.从键盘上接收一个字符串,保存到一个字符数组中。
然后从后面往前倒序输出这个字符串。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char str[100];
  int i;
  printf("请输入一个字符串:\n");
  fflush(stdout);
  gets(str);
  printf("\n");
  printf("倒序输出这个字符串为:\n");
  for (i = strlen(str); i >= 0; i--) {
  putchar(str[i]);
  }
return EXIT_SUCCESS;
}

2.编写一个程序,首先要求用户输入姓,然后输入名,然后使用一个逗号和空格将姓和名组合在一起,并

存储和显示组合好的结果和结果的长度。下面是程序运行时的情形:
Enter your first name: Li
Enter your last name: Ming
The name is: Li, Ming
The length of name: 8

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char xing[10];
  char ming[10];
  int num1 = 0, num2 = 0;
  memset(xing, 0, sizeof(xing));
  memset(ming, 0, sizeof(ming));
  puts("Enter your first name:\n");
  fflush(stdout);
  gets(xing);
  puts("Enter your last name:\n");
  fflush(stdout);
  gets(ming);
  num1 = strlen(xing);
  num2 = strlen(ming);
  printf("Enter your first name:%s\n", xing);
  printf("Enter your last name:%s\n", ming);
  printf("The name is:%s, %s\n", xing, ming);
  printf("The length of name:%d\n", num1 + num2);
return EXIT_SUCCESS;
}

3.从键盘上接收一个字符串,并统计其中字符的个数。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char str[100];
  int i,num=0;
  printf("请输入一个字符串:\n");
  fflush(stdout);
  gets(str);
  for(i=0;str[i]!='\0';i++)
  {
  num++;
  }
  printf("其中字符的个数为:\n %d",num);
return EXIT_SUCCESS;
}

4.按照下面要求完成程序:
定义一个char数组address,使用memset对它进行初始化。
从键盘上接收一个字符串,保存到address中。
再从键盘上接收一个字符保存到字符变量findChar中。
要求从address中查找是否有字符findChar,输出找到的次数。例如:字符串为“ABCDEDS”,如果要查找

字符‘D’,则应该输出2;如果要查找字符‘X’,则需要输出没有找到。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
char address[100];
  char findChar[10];
  int i=0, num = 0;
  memset(address, 0, sizeof(address));
  printf("请输入一个字符串:\n");
  fflush(stdout);
  gets(address);
  printf("请再输入一个字符:\n");
  fflush(stdout);
  scanf("%c", &findChar);
  for (i = 0; i < strlen(address); i++) {
   if(address[i]==findChar){
  num++;
  }
  }

  printf("字符在前面字符串中出现的次数为:\n %d", num);

return EXIT_SUCCESS;
}

5.定义一个包含有5个元素的int数组,并且初始化为0;
从键盘上接收5个整数,依次保存到int数组中。
要求你想办法,把数组的元素值倒序过来存储。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int arr[5]={0,0,0,0,0};
  int i;
  printf("请输入五个整数:");
  fflush(stdout);

  for(i=0;i<5;i++){
  scanf("%d",&arr[i]);
  }
  printf("五个整数逆序输出为:\n");
  for(i=4;i>=0;i--){
  printf("%d ",arr[i]);
  }
return EXIT_SUCCESS;
}

6.从键盘输入一行字符串,再输入一个字符,判断后输入的字符在前面字符串中出现的次数,若没有则输

出此字符不存在。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int num = 0, i;
  char str[30];
  char c;
  printf("请输入一个字符串:\n");
  fflush(stdout);
  gets(str);
  printf("请再输入一个字符:\n");
  fflush(stdout);
  scanf("%c", &c);
  for (i = 0; i < strlen(str); i++){
  if (c == str[i]){
  num++;
  }

  }
  printf("字符在前面字符串中出现的次数为:\n %d", num);
return EXIT_SUCCESS;
}

7.输入一行字符,统计其中单词的个数,输入的单词之间用空格隔开。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int i, c, num = 0, word = 0;
  char str[40];
  printf("请输入一行字符:\n");
  fflush(stdout);
  gets(str);
  for (i = 0; (c = str[i]) != '\0'; i++)
  if (c == ' ') //c只能和字符比较,不能和字符串比较
  word = 0;
  else if (word == 0) {
  word = 1;
  num++;
  }
  printf("其中单词的个数为:%d\n", num);
return EXIT_SUCCESS;
}

8.编写一个程序,将字符数组上s2中的全部字符复制到字符数组s1中。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
//方法一:应用strcpy函数。
char s1[100];
  char s2[100];
  printf("请输入字符数组s2:\n");
  fflush(stdout);
  gets(s2);
  printf("\n");
  printf("s2中的全部字符复制到字符数组s1为:\n");
  strcpy(s1, s2);
  puts(s1);

//方法二:不应用strcpy函数。
 /*char s1[100];
  char s2[100];
  int a,i;
  printf("请输入字符数组s2:\n");
  fflush(stdout);
  gets(s2);
  a=strlen(s2);
  printf("\n");
  printf("s2中的全部字符复制到字符数组s1为:\n");
  for(i=0;i<a;i++){
  s1[i]=s2[i];
  printf("%c",s1[i]);
  }*/
return EXIT_SUCCESS;
}

9.编写一程序,将两个字符串连接起来,s1接在s2的后面。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
//方法一:应用strcat函数。
 /*char str1[100]="ghghgh";
  char str2[10]="yuyuyu";
  strcat(str1,str2);
  printf("连接之后的结果是:\n%s",str1);*/

//方法二:不应用strcat函数。
char str1[100]="ghghgh";
  char str2[10]="yuyuyu";
  int i=0,j=0;
  int num1=strlen(str1),num2=strlen(str2);
  for(i=num1;i<num1+num2;i++){


  str1[i]=str2[j++];
  }

  printf("连接之后的结果是:\n%s",str1);
return EXIT_SUCCESS;
}

10.应用二维数组数组输出棱形,(提示,*是字符)
       *
     ***
   *****
     ***
       *
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
int i, j, k;
 for (i = 1; i <= 9; i++) {
  if (i <= 5) {
   for (j = 1; j <= 6 - i; j++)
    printf(" ");
   for (k = 1; k <= 2 * i - 1; k++)
    printf("*");
   printf("\n");
  } else {
   for (j = 1; j <= i - 4; j++)
    printf(" ");
   for (k = 1; k <= 19 - 2 * i; k++)
    printf("*");
   printf("\n");
  }
 }
return EXIT_SUCCESS;
}