c语言编程求助

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编程求助相关的知识,希望对你有一定的参考价值。

C语言编程问题,请朋友帮忙!!!
输入一个字符串,内含数字和非数字符,将其中连在一起的数字作为一个整数,依次存放到数组中,
问:(1)统计并输出该字符串中共有多少个整数;(2)输出原始字符串及统计出来的整数.
谢谢二位的回答,可是我不知道用哪一个好了!
望再指点小弟一下,最好帮我把算法和流程图都写(画)出来!
非常感谢!!!

楼上的还是错的。
编了下,您看看吧,慢慢学习,多练些就没什么了。
/*
算法描述:
1。输入一个字符串,用指针p指向这一字符串首字母;
2。遍历这个字符串,分两步处理:
2.1 如果遇到数字,则检验下一个数字是否也是数字,进行适当的数据处理,同时指针移动到不是数字的位;
2.2 如果不是,则指针向前移动;
3。输出存入的数组及字符串。
*/
#include "stdio.h"
#include "conio.h"
#include "math.h"
#include "ctype.h"
main()

char str[100];
char *p=str;
int num[30],i=0,j,flag=0,data=0;
puts("Enter a string:");
gets(str);
while(*p)


if(isdigit(*p))

while(isdigit(*p)) /*下面几句算是本程序的难点*/

data*=pow(10,flag++);
data+=*p-48;
p++;

num[i++]=data;
data=flag=0;

else p++;

puts(str);
printf("The total number is %d\\n",i);
for(j=0;j<i;j++)
printf("%d ",num[j]);
getch();
参考技术A 哦,看到了,己改正

#include <stdio.h>

#define MAX_SIZE 100

int main( int argc, char *argv[] )

char str[MAX_SIZE];
int i, j, num[MAX_SIZE] = 0 ;

/* get a string */
printf( "Input a string:\n" );
scanf( "%s", str );

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

/* scan when touch a number */
for ( j = i; str[j] != '\0' && ( str[j] < '0' || str[j] > '9' ); j++ );

/* end of string */
if ( str[j] == '\0' )

break;


sscanf( &str[j], "%d", &num[++num[0]] );

/* scan when touch a char */
for ( i = j; str[i] >= '0' && str[i] <= '9'; i++ );


/* print string*/
printf( "string:\n"
"%s\n", str );

/* print number */
printf( "%d number:\n", num[0] );
for ( i = 0; i < num[0]; i++ )

printf( "%d ", num[i+1] );


printf( "\n" );

return 0;

C语言编程,求助高手

我定义了一个结构体
struct User

char name[10];
int score
;
并创建了一个结构体数组
User*array,里面有n个元素,下标分别为0~n-1;
现在我有两个常量user_name和user_score,想在结构体数组中添加元素array(n)
于是我尝试了各种初始化方法,但都无法解决,求大神帮忙

你的动态数组只有n个元素,已经装满了的话,就需要扩容。

具体看例子。

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

struct User

char name[10];

int score;

;

int main()

const char user_name[]="wonder";

const int user_score=99;

//c表示容量,n表示元素数量,incr表示每次扩容时的增量

int c=1,n=0,incr=10;

int i;

struct User *array=(struct User*)calloc(c,sizeof(struct User));

strcpy(array[0].name,"name1");

array[0].score=1;

n++;

printf("追加用户前:\\n");

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

printf(n-1!=i ? "%s %d," : "%s %d\\n",

array[i].name,array[i].score);

//n>=c说明动态数组array已装满,需扩容

if(n>=c)

printf("对动态数组array进行扩容\\n");

c+=incr;

array=(struct User*)realloc(array,sizeof(struct User)*c);

//追加

strcpy(array[n].name,user_name);

array[n].score=user_score;

n++;

printf("追加用户后:\\n");

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

printf(n-1!=i ? "%s %d," : "%s %d\\n",

array[i].name,array[i].score);

free(array);

return 0;

参考技术A 初始化的类型不能直接用User,必须加上struct。而且数组初始化时元素个数必须是定值,初始化以后元素个数是不可以改变的。
比如初始化数组,元素有10个:
struct User array[10];
如果想增加元素,必须用链表的形式:
struct User *array;
然后用malloc动态分配内存。追问

malloc分配内存的那一步怎么写呀
是array[n]=(User*)malloc(sizeof(User))吗

追答

array=(struct User*)malloc(10*sizeof(struct User));

以上是关于c语言编程求助的主要内容,如果未能解决你的问题,请参考以下文章

求助一道C语言设计题目

C语言编程,求助高手

c语言作业,求助!

跪求,C语言程序求助啊。

c语言编程求助

C语言求助。急急