C语言高分 输入任意字符串,取其中数字及正负号输出

C语言高分 输入任意字符串,取其中数字及正负号输出,第1张

好了,按要求做好了。

注意输入的时候可能要按两次回车。

///刚看到你给我的消息,C语言的话你把那个字符串转换到char吧,另外注意传入数组的大小就是了。还有打印的话就是用printf了。

#include<iostream>

#include<string>

using namespace std;

bool isCharInrange(char c){ if(c>'9') return false;

else if(c<'0'){

if(c=='+'||c==' '||c=='-')

return true;

else return false;

}

else return true;

}

string trim(string s){

string result="";

for(int i=0;i<slength();i++)

if(sat(i)!=' ')

result+=sat(i);

return result;

}

bool check(string s){ int i;

for(i=0;i<slength();i++){

if(!isCharInrange(sat(i)))

return false;

} //检查字符是否都在范围内

bool has=false;//检查是否有两个正负号

for(i=0;i<slength();i++){

if(sat(i)=='+'||sat(i)=='-'){

if(!has) has=true;

else return false;

}

if(has){

s=trim(s);

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

if(sat(i)=='+'||sat(i)=='-')

if(i!=0) return false;

}

}//检查正负号的问题

int lastSpace=-1;//上一个空格的位置

bool isLastCharOpe=false;//上一个字符是不是正号或者负号

for(i=0;i<slength();i++){

if(sat(i)=='+'||sat(i)=='-') isLastCharOpe=true;

else isLastCharOpe=false;

if(sat(i)==' ') {

lastSpace=i; //空格是连续的,或者从某一个空格开始后面全是空格了。

if(!isLastCharOpe&&trim(ssubstr(i,slength()))length()==0) return true;//或者空格前一个字符不是正负号,空格后面没有数字了。

if(isLastCharOpe) continue;

if(!has) continue;

else return false;

}

}

return true;

}

void main(){

string input;

cout<<"input a string"<<endl;

getline(cin,input);

if(check(input))

cout<<"输入正确"<<trim(input)<<endl;

else cout<<"非法输入"<<endl;

}

getchar()从stdio流中读字符,相当于getc(stdin),它从标准输入里读取下一个字符。

c = getchar(); c获得输入的字符或数字。 如果输入的是数字,它会以ASCII为准,转换成相应的字符。printf("字符%c = 数字 %d",c,c);

下面是将数字转换为字符串(你不一定用的上):

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。以下是用itoa()函数将整数转换为字符串的一个例子:

# include <stdio h>

# include <stdlib h>

void main (void);

void main (void)

{

int num = 100;

char str[25];

itoa(num, str, 10);

printf("The number 'num' is %d and the string 'str' is %s \n" ,

num, str);

}

#include

//为了方便返回,使用结构体存储最大值和最小值

typedef struct {

int Max;

int Min;

}MaxMin;

//函数参数array:数组,length:数组长度。

//这里其实可以把最大值最小值作为指针传进去的。

MaxMin GetMaxMin(int array, int length)

{

int i;

MaxMin maxMin;

if (length <= 0)

return maxMin;

//初始化最大值和最小值为数组第一个数

maxMinMax = array[0];

maxMinMin = array[0];

for (i = 0; i < length; i++) {

if (array[i] >= maxMinMax)

maxMinMax = array[i]; //比当前最大值大,修改最大值

if (array[i] <= maxMinMin)

maxMinMin = array[i]; //比当前最小值小,修改最小值

}

return maxMin;

}

//主函数测试

int main() {

int length;

int i;

int array;

printf("input length of array:");

scanf("%d", &length);

array = (int )malloc(sizeof(int)length);

for (i = 0; i < length; i++) {

printf("input data of array(index %d):", i + 1);

scanf("%d", array + i);

}

MaxMin maxMin = GetMaxMin(array, length);

printf("Max:%d,Min:%d", maxMinMax, maxMinMin);

return 0;

}

#include

#include

int

main()

{

char

a[100]="abc",b[50]="def";

char

c;

int

i,n;

n=strlen(a);

for(i=0;b[i]!='\0';i++)//这里多了一个分号

{

a[n+i]=b[i];

}

a[n+i]='\0';//这里应该是a[n+i]='\0'是对添加后的字符串结尾标志

printf("%s",a);

return

0;

}

假设输入的整数放到变量x中,则语句x/10%10即是十位上的数字,代码如下:

#include <stdioh>

int main(void)

{

int x;

printf("输入一个整数:");

scanf("%d",&x);

printf("%d的十位上的数字是:%d\n",x,x/10%10);

return 0;

}

依次接收字符,直到输入回车为止,判断是否是数字,如果是则数字个数递增。

#include<stdioh>

int main() 

{

    int x=0,z=0; 

    char ch; 

    ch=getchar(); //接收字符

    while(ch!='\n') 

    {

        if(ch>=48&&ch<=57) //依据字符ASCII值判断是否是数字

            x++;//是数字,数字个数递增

        else 

            z++; //否则,其他字符个数递增

        ch=getchar(); 

    } 

    printf("数字字符有:%d个,其它字符有:%d个",x,z); 

    return 0;

}

#include<stdioh>

#include<stdlibh>

int main()

{ char s[100];int i,j;

gets(s);

for(i=0;s[i]!='\0';i++)

{if(s[i]>='0'&&s[i]<='9')printf("%c",s[i]);

if(s[i]==',')printf(" ",s[i]);

if(s[i]==';')printf("\n",s[i]);

}

system("pause");

}

程序简短,处理简单的还没错。给分啊。

以上就是关于C语言高分 输入任意字符串,取其中数字及正负号输出全部的内容,包括:C语言高分 输入任意字符串,取其中数字及正负号输出、设一个变量c,需要用getchar()获取数字或符号,数字得到也是字符怎么解,只用一个变量可以实、用C语言编写程序找出输入的n个数字中的最大值和最小值。要求程序运行时先获取n值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9520819.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存