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中,键盘输入的字符串中包含的字母、数字和其他字符的个数如何制作?
参考技术Aimport 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,它的功能是:将字符串中的前导*号全部移到字符串的尾部。