逆序输出数字,
输入-890 输出为-98
输入0 输出为0
输入75 输出为57
代码运行出现如下问题,是什么原因?
#include<stdio.h>
int main()
{
int number[11],i=10,j;
scanf("%d",number);
while(number[i]=='\0'||number[i]=='0')
i--;
if(i<0)
printf("0");
else
{
if(number[0]=='-')
{
printf("-");
for(j=i;j>0;j--)
printf("%d",number[j]);
}
else
{
for(j=i;j>=0;j--)
printf("%d",number[j]);
}
}
return 0;
}
供参考:
#include<stdio.h>
int main()
{
int n = 0, number;
scanf("%d", &number);
while (number){
n = n * 10 + number % 10;
number /= 10;
}
printf("%d", n);
return 0;
}
scanf不会把输入字符分别放到数组各元素中。你可以用整除、取模的方式取每一位,然后逆序输出
系统不会按你的想法把你输入的数字拆开每一位存入数组number中,而且把整个数字存入number[0]中。建议用循环求模的方法处理你的问题。如果再要求顺序输出,那可能就要用到函数递归了。希望能帮到你。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
FILE*fp = NULL;
char str[100];
printf("输入一个字符串:");
gets(str);
int len = strlen(str);
for (int i = 0; i < len; i++) {
if(str[i] <= 'z' && str[i] >= 'a') {
str[i] -= 32; // 小写转大写
}
}
if ((fp = fopen("test", "w")) == NULL) {
printf("文件打开失败\n");
exit(0);
}
fprintf(fp, "%s", str);
fclose(fp);
return 0;
}