在c语言中,如何从键盘输入一串包含数字和字母的字符串,以连续的数字构成一个整数,超过六个则另外组成
发布网友
发布时间:2022-04-30 02:55
我来回答
共2个回答
热心网友
时间:2023-10-09 02:29
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define INI20
#define INC 10
char* input;//指向动态数组
int get_input();//用于接收输入值的函数,使用动态数组可以任意输入,无大小*
void ini();//系统初始化
bool is_exit();//检测是否退出
int split();//将字符串分解出6位的数字
bool is_number(char number); //判断一个char类型的元素是否为数字
void delete_all();//删除动态数组
int main(){
ini();
while (1){
get_input();
if (is_exit())
break;
split();
delete_all();
}
delete_all();
return 0;
}
int get_input(){
int limit = INI,cnt = 0;
char ch;
input = (char *)malloc(sizeof(char)*INI);
while ((ch = getchar())!='\n'){
if (cnt + 1 >= limit){//如果数组大小不够,那么重新申请更大的空间
char* tmp = input;
limit += INC;
input = (char *)malloc(sizeof(char)*limit);
for (int i = 0; i < cnt; ++i)
input[i] = tmp[i];
}
input[cnt++] = ch;
}
input[cnt] = '\0';
return 0;
}
int split(){
int number = 0;
int index = 0;
int tag = 0,cnt = 1,is_six = 0;
while (input[index]!='\0'){
if (is_number(input[index])&&is_six!=6){//如果是数字,同时数字位数没有达到6
tag = 1;//标志经过了数字元素
number = number * 10 + input[index] - '0'; //计算值的大小
is_six++;
}
else{//如果是非数字那么打印之前的数字
if (tag == 1){
printf("#%d:\t\t%d\n", cnt++, number);
tag = number = 0;
if (is_six == 6){//将数字位数的标记置为0
is_six = 0;
continue;
}
is_six = 0;
}
}
index++;
}
if (tag == 1){//打印以数字结尾的最后一个数字
printf("#%d:\t\t%d\n", cnt++, number);
tag = number = 0;
}
return 0;
}
bool is_number(char number){
if (number <= '9' && number >= '0')
return true;
return false;
}
bool is_exit(){
if (strcmp(input, "exit") == 0)
return true;
return false;
}
void ini(){
printf("请输入字符串:(exit退出)\n");
}
void delete_all(){
free(input);
input = NULL;
}
热心网友
时间:2023-10-09 02:30
先将这一串字符放入数组中,然后自己写一个函数(注意这个函数一定要接收刚才的数组),在函数中创建无符号变量l来保存字符串中数字的个数.再建立一个(长度为7的字符数组)的数组(这个数组的长度可以视数据总长而定).之后就可以使用嵌套for循环(内层循环变量l,外层只需判断字符串是否结束并操控第二维),if判断(要判断的是ASCII 30h~39h).
在c语言中,如何从键盘输入一串包含数字和字母的字符串,以连续的数字构...
使用动态数组可以任意输入,无大小限制void ini();//系统初始化bool is_exit();//检测是否退出int split();//将字符串分解出6位的数字bool is_number(char number);
在c语言中,如何从键盘输入一串包含数字和字母的字符串,以连续的数字构...
int a = 0,b = 0 ,c = 0;scanf("%s",ch);count(ch,&a,&b,&c);printf("数字的个数是:%d 字母个数是:%d 符号个数是:%d\n",a,b,c);}
C语言 从键盘输入一个字符串内有小写字母和数字字符编程将其中每个由连...
include<stdio.h>int main(void){ char c='N',s[300],*p; gets(s); for(p=s; *p; p++) { while(*p>='a'&&*p<='z') { putchar(*p++); c='Y'; }; if(c=='Y') { putchar('\n'); c='N'; } } return 0;} ...
C语言:键入不长于80的含有数字字符的字符串,把连续的数字转换成int型数 ...
include "stdio.h"int main(int argc,char *argv[]){ char s[81],f,i,k;int num;printf("Please enter a string...\ns=");scanf("%80s",s);for(i=0;s[i];i++)if(s[i]>='0' && s[i]<='9'){ f = i && s[i-1]=='-' ? -1 : 1;while(1){ for(num=s[i+...
C语言中怎么输入数字和字母?
一、输入数字可以用scanf输入。如果输入的是整型数据,可以用 int a;scanf("%d",&a);实现把输入的数字赋值给a的效果。类似的,如果是float, double,short,long等类型的数据,那么就要把变量定义成对应的类型,然后使用各自的格式字符%f,%lf,%hd,%ld等进行输入。二、输入单个字符。输入单个字符可以用...
c语言中实现输入一个数字字符,然后转换成整数数字输出.怎么做?_百度...
字符串转整数可以有两种方法:1.使用c语言自带的库函数:atoi。函数原型:int atoi(const char *nptr);功能:把字符串转成整型数。例如:include <stdlib.h>#include <stdio.h> int main(void){ int n; char *str = "12345"; n = atoi(str); printf("int=%d\n",n); r...
C语言:从键盘输入一个不超过100个字符的字符串,其中字符串只包括字母...
1、首先需要打开编程软件。2、输入以下程序:#include <stdio.h>int main(){ char str[40]; scanf("%s",&str); printf("%s",str); return 0;}。3、然后按F5运行程序。4、然后输入想要输入的字符串。5、按回车键,就会弹出你输入的字符串。6、注意字符串的大小,改变中括号中的数字改变输入...
c语言 从键盘输入一行字符,分别统计其中数字字符,字母字符和其他字符...
intmain(){ inta,b,c,ch;a=b=c=0;//计数器初始化为0.while((ch=getchar())!='\n')//循环读取字符,到换行结束。{ if(ch>='0' && ch<='9')//数字 a++;else if((ch>='a' && ch<='z')||(ch>='A' && ch<='Z'))//字母 b++;else//其它 c++;} printf("%d%d%d...
c语言怎样才能输入一行字符,以回车作为结束标志,分别统计出大写字母,小 ...
因为字符串中有空格所以不能使用scanf函数来接收键盘输入的字符串,因为scanf遇到空格和回车结束输入,所以需要使用gets来接收键盘输出的字符串,接着依次判断并累加,最后输出即可。参考代码:include <stdio.h>int main() {int a=0,b=0,c=0,d=0,f=0,i;char ch[100];gets(ch); for(i=0;ch...
c语言问题 输入一个含若干字符的字符串,分别搜索出其中的数字和字母...
include<stdio.h>int main(){ char str[100]; char s[100],num[100]; int index=0,index1=0,index2=0; gets(str);//输入字符串 while(str[index]!='\0') { if((str[index]>='a' && str[index]<='z')||(str[index]>='A' && str[index]<='Z'))...