例:输入’3’,输出整型数值3。
代码:
#include<stdio.h>
intmain()
{
charchdigit;
intintdigit;
printf("Pleaseinputandigitalcharacter:");
scanf("%c",&chdigit);
intdigit=chdigit-48;//将数字字符变为数值数字
printf("intdigitis%d\n",intdigit);
return0;
}
return表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。
return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况。
我写了一段程序,可以处理正整数,不能处理负号和小数点
#include
#include
int main()
{
char mystring[20];
int number[20];
int i,j,k,x,sum;
memset(mystring,0,sizeof(char)*20);
memset(number,0,sizeof(int)*20);
fflush(stdin);
fgets(mystring,20,stdin);
for(i=0,j=0;i<20;i++)
{
if(isdigit(mystring[i]))
{
number[j]=mystring[i]-0x30;
j++;
}
}
printf("字符串中共有%d个数字字符。\n",j);
for(i=0,sum=0;i{
printf("%d\t",number[i]);
sum=sum+number[i];
}
x=0;
k=1;
while(j>0)
{
x=x+number[j-1]*k;
k=k*10;
j--;
}
printf("\n该数字为:%d\n",x);
printf("各位数字之和为%d\n",sum);
return 0;
}
#include
#include
int _atoi(char[]);
int main()
{
char n[10];
int total;
gets(n);
total=_atoi(n);
printf("%d\n",total);
return 0;
}
int _atoi(char n[10])
{
int i,total=0;
for(i=0;isspace(n[i]);i++);
if(n[i]=='+'||n[i]=='-')
i++;
for( ;isdigit(n[i]);i++)
total=total+(n[i]-'0');
return total;
}
结果输出如下:
部分代码来自: http://www.cnblogs.com/bluestorm/p/3168719.html
其中有些修改,atoi(), isspace(), isdigit()都是c语言中已有的函数(在标准库文件stdlib.h中),而_atoi()函数是我自己写的。望采纳,谢谢。
不懂可问
C语言程序:
#include
#include
#define MAX 1000
void main()
{
char arr[MAX];
int sum = 0;
int i, start, end;
int num = 0;
printf("请输入字符串:");
gets(arr);
printf("其中数字:");
for(i=0; i{
if(arr[i] < '0' || arr[i] > '9')
{
if(num != 0)
{
sum += num;
printf("%d ", num);
}
num = 0;
continue;
}
num = 10 * num + (arr[i] - '0');
}
if(arr[i-1] >= '0' && arr[i-1] <= '9')
{
sum += num;
printf("%d ", num);
}
printf("\n数字之和:%d\n", sum);
}
运行测试:
实例:
#include
void main()
{
char s[50];
int n = 0,i=0;
gets(s);
while(1)
{
if(s[i]==0) break;
if((s[i]>='0')&&(s[i]<='9'))
{
n = n + (s[i]-'0');
}
i++;
}
printf("和=%d\r\n",n);
}