好了,按要求做好了。
注意输入的时候可能要按两次回车。
///刚看到你给我的消息,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值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)