#include"string.h"
int main()
{
int i,s = 0 /*请修改此处:int和i间有空格; 计算的和值s首先要清零 */
char str[80]
i=0
while ((str[i]=getchar())!='\n')
i++
str[i]='\0'
for(i=0i<80i++)
if (str[i]>='0' &&str[i]<='9') /*请修改此处:应该是同时满足这两个条件,如果是你写的条件的话,逻辑上刚好和这条语句相反,认真观察*/
s=s*10+str[i] - '0'/*请修改此处:str[i]表示ascll值,若使用相应整数应减去‘0’*/
printf("%d\n",s)
return 0
}
2.
#include "stdio.h"
#include"string.h"
int main()
{
int i
char str[80], str2[80], ch
printf("输入字符串:")
gets(str)
printf("输入要插入的字符:")
ch = getchar()
printf("输入要插入字符的位置:")
scanf("%d", &i)
strcpy(str2, str + i)
str[i] = ch
str[i + 1] = '\0'
strcat(str, str2)
printf("%s\n",str)
return 0
}
#include<stdio.h>#include <math.h>
#define N 10
int main()
{
float a[N],*p,min
int i=0,j=0
p=a
printf("请输入10个数组元素:")
for(i=0i<Ni++)
scanf("%f",&p[i])
min=*p
for (j=1,i=0j<Nj++)
if (min>=*(p+j))
{
min=*(p+j) //把最下的找出,并复制给min
i=j //把下标赋给i
}
printf("数组最小值下标为:%d\n",i)
printf("绝对值最小的数字为:%f\n",min)
}
这样就可以了
你的错误在: for (j=1,i=0j<Nj++)
if (min>*(p+j)) i++
如果第一个数位最大,你又把第一个数赋为最小,那么i++执行9次,所以你需要涮洗最小值,并且此时的最小值得下标赋给i,i也是在不断刷新,最后得到你想要的结果
况且你用void minfabs(),在主函数中且没有地址的传递,这里您看一下“数组元素做形参”,对你会有帮助