C语言的题目,规定输入的字符只包含字母和*号。请编写函数fun,功能是:将字符串中的前导*全删除,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言的题目,规定输入的字符只包含字母和*号。请编写函数fun,功能是:将字符串中的前导*全删除,相关的知识,希望对你有一定的参考价值。

C语言的题目,规定输入的字符只包含字母和*号。请编写函数fun,功能是:将字符串中的前导*全删除,中间和尾部的*不删除。下面是答案,可我看不大懂,两个while?还有P++?谁能具体解释下过程?

1、其实头函数每个都需要用到的就是#include <stdio.h>.在这儿给大家说的就是这里需要添加一个字符串函数,因为程序里面涉及到了输出和输入字符串以及字符。#include <string.h>。

2、定义两个相同容量的字符串储存的变量 char a[100];  char b[100];。以及整数变量 int c;  int i=0,j=0; 其中a[100]是存字符串的,b【100】是存你删除对应字符的字符串的,整数C是你想删除第几位。j ,i 是后面for循坏中要使用到的变量。

3、 printf("请输入你的字符串");  scanf("%s",a);  printf("请输入你想要删除第几位字符");  scanf("%d",&c)。

4、 for(i=0;i<strlen(a);i++)         if(i+1!=c)               b[j]=a[i];        j++;                                   printf(" %s",b);            。

5、  这几行代码逻辑语句是:只要当i+1不等于c时把a【i】里面的字符赋给b【i】,那么这样当i+1=c时不把它赋给b【i】从而实现删除功能。

6、最后完整的看一下整体的一个代码流程。

参考技术A 第一个while(*p=='*')p++;
这个补全就是
while(*p=='*')

    p++;

就是从前面开始等于*的直接指针后移
把前面的*全部略过
while(*p)

    a[j++]= *p;
    p++;

然后从第一个不是*的开始逐位赋值给字符数组a
最后手工添加结束符

参考技术B 第一个while循环是当p指向的字符是*时进行循环,p++就是让指向字符数组的指针指向下个单元。类似对数组进行for循环遍历输出的控制循环变量i++。然后p指向下一个字符,最后让指针p指向字符数组a中第一个非*的字符。
比如a中的字符是“***a**bcd*”,那么第一个while循环后,p指向字符a中第四个字符中'a';如果a中字符是“e*bcd*”,那么第一个while循环后,p指向a中第一个字符'e'。
第一个while循环后,然后就把p位置的字符依次在往字符数组a中赋值。如果a中是“***a*bc*”,第一个while后p指向'a',所以此时就把'a'赋值给a【0】,取代了原本在a【0】中的*。然后一直循环到a中最后一个字符,最后循环完成后在末尾加上空字符'\0'。实现了去掉字符数组中首端*号的功能!本回答被提问者和网友采纳
参考技术C #include<stdio.h>
#include<string.h>
char *del(char *a)

while (*a == '*') a++; // a是指针 *a是当前字符 如果字符是‘*’ a++表示 a指向下一个字符 然后 // 做比较 至于答案的拷贝完全多余 只需要在原串的不同位置指向就好
// 因为只是 删前导 而不动中间 或者 尾部字符

return a;

int main()

char a[100]="*************skafjdlskjfla8********";
char *newstr;
newstr = del(a);
printf("%s\n",a);
printf("new string :\n%s\n",newstr);
return 0;
参考技术D #include<stdio.h>
#include<string.h>

void fun(char *str)

int len=(signed)strlen(str);
for(int i=0;i<len;i++)

if(*(str+i)=='*')

continue;

else

for(int j=0;j<len-i;j++)
*(str+j)=*(str+j+i);
*(str+j)='\0';
return;




void main()

char str[]="****132sfs**wefsf**";
fun(str);
printf("%s\n",str);

在JAVA中,键盘输入的字符串中包含的字母、数字和其他字符的个数如何制作?

参考技术A

import java.util.Scanner;/** * 统计字符串中数字,字母,空格,其他字符的个数 * 

@author Administrator * */public class Data01     public static void main(String[] args)         int englishCount = 0;// 英文字母个数   

int spaceCount = 0;// 空格个数        int numCount = 0;// 数字个数     

int otherCount = 0;// 其他字符个数      

Scanner sc = new Scanner(System.in);    

System.out.println("请您输入一行字符:");   

String str = sc.nextLine();// 取得控制台输入的一行字符   

char[] ch = str.toCharArray();// 把取道的字符串变成一个char数组        

or (int i = 0; i < ch.length; i++)     

if (Character.isLetter(ch[i]))                 // 判断是否为字母                englishCount++;             

else if (Character.isSpaceChar(ch[i]))         

// 判断是否为空格                spaceCount++;             

else if (Character.isDigit(ch[i]))                 // 判断是否为数字                numCount++;


 else                 // 以上都不是则认为是其他字符                otherCount++;                          

System.out.println("字母的个数:" + englishCount);      

System.out.println("数字的个数:" + numCount);  

System.out.println("空格的个数:" + spaceCount);       

System.out.println("其他字符的个数:" + otherCount);    


以上是关于C语言的题目,规定输入的字符只包含字母和*号。请编写函数fun,功能是:将字符串中的前导*全删除,的主要内容,如果未能解决你的问题,请参考以下文章

假定输入的字符串中只包含字母和*号。它的功能是:将字符串中的前导*号全部移到字符串的尾部。

C语言试题五十七之假定输入的字符串中只包含字母和*号。请编写函数function,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。

C语言试题五十七之假定输入的字符串中只包含字母和*号。请编写函数function,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。

C语言试题四十二之假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。

C语言试题四十二之假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。

C语言试题七之将函数字符串中的前导*号全部删除,中间和尾部的*号不删除。