的做法是, 将该数字字符减去'0' 字符, 在转换时需要逐个字符判断为数字字符才转换,不是不转换。为了保证转换的数字为一个原顺序的整数, 则把 s*10 后再把转换后的数字累加入 s中。最后再对字符串中的第一个字符进行判断看是否是‘-’; 如果是,则把 s 置成-s 即可参考答案: #include<stdio.h> void main() { char str[100]; int i,s=0; printf(" 请输入一个字符串: "); gets(str); for(i=0;str[i]!='\0';i++) // 逐一把每个数字字符转换累加到数 s中 if(str[i]>='0'&&str[i]<='9') s=s*10+str[i]-'0'; if(str[0]=='-') s=-s; // 判断符号位 printf("result=%d\n",s); } 运行结果: (5) 设计程序 sy6-6.c , 将放在字符串数组中的 M 个字符串( 每串的长度不超过 N) ,按顺序合并组成一个新的字符串。例如, 字符串数组中的 M 个字符串为: AAAA 则合并后的字符串的内容应是: 。算法分析: 首先对 p 串初始化为'\0' 再将 s 中的每个字符串连接在 p 串的后边。但要注意将 string. h 包含在程序中参考答案: #include <stdio.h> #include <string.h> #define M3 #define N 80 main() { char s[M][N]={"AAAA","BBBBBBB","CC"},p[100]={'\0'}; //p 用来存放合并后的新串 int i; for(i=0;i<M;i++) strcat(p,s[i]); // 字符串连接 printf("\n 结果是: \n%s\n",p); } 运行结果: