c语言键盘输入一个长度不超过50的字符串,统计其中数字的个数,并计算字符串中所有数字之和。感觉c语

c语言键盘输入一个长度不超过50的字符串,统计其中数字的个数,并计算字符串中所有数字之和。感觉c语言要没救了,求大神。。。。

数字怎么理解?

理解一:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    char a[51];
    int i,sum;
    printf("Input a string...\n");
    gets(a);
    for(sum=i=0;a[i];i++)
        if(a[i]>='0' && a[i]<='9')
            sum+=a[i]-'0';
    printf("The result is %d\n",sum);
    return 0;
}

理解二:

//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int main(void){
    char a[51];
    int i,sum,j,n;
    printf("Input a string...\n");
    gets(a);
    for(sum=i=0;a[i];i++)
        if(a[i]>='0' && a[i]<='9'){
            sscanf(a+i,"%d%n",&n,&j);//把连续数字视为整数
            sum+=n;
            i+=j;
        }
    printf("The result is %d\n",sum);
    return 0;
}

你按要求选一个。

追问

。。。我们学的是c语言。。

不是c++😂

大神,那个指针的什么时候加*,什么时候不加*

追答

你看清楚了,我这是典型的C,没有任何C++的痕迹!这代码里也没有使用指针。指针什么时候都不加*,任何变量标识符都必须以字母或下划线开头,怎么会加个*?声明语句中指针标识符前的*不是指针标识符的组成部分,那是类型符的部分,如char *p;是char *型指针p而不是char型指针*p!表达式中的指针变量前的*是个操作符,表示取后面的指针变量所指目标的值。如int x=3;int *p=&x;,则*p表示取出了p指向的x的值,是3。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-05
#include <stdio.h>
int main(void)
{
char c[50];
int i;
int sum = 0,count = 0;
gets(c);
for(i = 0; c[i] != '\0';i++)
if(c[i] >= '0' && c[i] <= '9')
{
count ++;
sum = sum + c[i] - '0';
}
printf("数字 的个数%d,所有数子之和为%d\n",count,sum);

}

追问

大神,还有一道,从键盘输入十个整数,用选择排序法对十个整数从小到大排序。拜托了!!!

追答#include <stdio.h>
#include <stdlib.h>
void SelectionSort(int a[], int n)//选择排序
{
 int i,j;
 int min;
 int t;
 for(i = 0; i < n-1; i ++)
 {
   min = i;
    for(j = i+1; j < n; j ++)
     if(a[min] > a[j])
     {
       min = j;
     }
     t = a[min];
     a[min] = a[i];
     a[i] = t;
     
     
 }
}
int main(void)
{
  int i;
 int a[10];
 for(i = 0; i < 10; i++)
 scanf("%d",&a[i]);//输入十个数
 SelectionSort(a,10);//调用选择排序
    for(i = 0; i < 10; i ++)
 printf("%-3d",a[i]);
  return 0;
}

追问

大神,能不能换一个,我们没学过SelectionSort😂

追答#include <stdio.h>

int main(void)
{
  int i,j,min,t;
 int a[10];
 for(i = 0; i < 10; i++)
 scanf("%d",&a[i]);//输入十个数
 for(i = 0; i < 9; i ++)
 {
   min = i;
    for(j = i+1; j < 10; j ++)
     if(a[min] > a[j])
     {
       min = j;
     }
     t = a[min];
     a[min] = a[i];
     a[i] = t;
 }
    for(i = 0; i < 10; i ++)
 printf("%-3d",a[i]);
  return 0;
}

追问

大神,能不能帮我看看6.7题😂

好厉害啊⊙▽⊙

本回答被提问者采纳
相似回答