编写一个标准C语言程序:输入一个整数,按如下方式输出:第一行输出所有数字,第二行输出……

第一行输出所有数字,
第二行输出除第一个数字的所有数字,
第三行输出出头两个数字的所有数字……
最后一行输出最后一个数字。
例如:输入整数 654321 ,
输出 第一行:654321
第二行:54321
第三行:4321
第四行:321
第五行:21
第六行:1

#include <stdio.h>
#include <string.h>

int main() {
int n,i,j,len;
char s[20];
while(scanf("%d",&n) == 1) {
sprintf(s,"%d",n);
len = strlen(s);
for(i = 0; i < len; ++i) {
for(j = i; j < len; ++j)
printf("%c",s[j]);
printf("\n");
}
}
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-19

将整数存储到字符串,再按字符串进行输出就可以了。

我当时理解偏了,想成整型数组了,如果是整型数组,则没有字符串这样的方便输出了。

#include <stdio.h>
 
int main()
{
    char str[256];
    int i;
    scanf("%d", &i );//输入一个整数
    sprintf( str, "%d", i ); //将整数存储成一个字符串
    for( i=0;str[i];i++ )
        printf( "%s\n", &str[i] ); //这是采用字符串方式 进行数据输出,若是整型数组,就需要一个一个的输出了。
    return 0;
}

追问

那整型数组是怎样输出呢?其实书上的例如是每个数字之间有空格,不知道是不是一个一个输出的意思,因为这一个练习题出现在前几章,还没有提到数组概念和转存为字符串的操作,应该有最原始的解决方法吧,当然也不是非要写出来,就想知道不用数组和转成字符串能不能做出来,就这麼个疑问。

追答
#include <stdio.h>
#include <math.h>
int main()
{
int i,len=0,j;
scanf("%d", &i );

j=i;
while( j ) 
{
len++;
j/=10 ;
} //计算出位数
do {
j=(int)pow(10,len) ; //计算10的N次方
printf( "%d\n", i%j ) ; //输出当前的数
i%=j; //缩小数据
len--;
} while( len );
return 0;
}

追问

哦了。理解了。一开始就想这样做的,但是思维很混乱,想不出怎麼算位数,现在脑洞又开始开了一点了。如果不介意的话,可以再问一下怎麼从0~100中找出满足勾股定理的组合吗?这个问题到此算完结了,thank you very much!

追答

怎麼从0~100中找出满足勾股定理的组合

这个应该是用三个循环就可以了,具体情况需要看你的要求了。抽空我试试

来自:求助得到的回答本回答被提问者采纳
第1个回答  推荐于2017-09-19
#include<stdio.h>
#include<string.h>

int main()
{
int num;
int i,j;
char str[100];
int len;
scanf("%d",&num); //输入一个数字
sprintf(str,"%d",num); //把数字转为字符串来处理
len = strlen(str);  //得到字符串的长度
for(i=0;i<len;i++)
{
for(j=i;j<len;j++) //内循环,输出每行数字
{
printf("%c",str[j]);
}
printf("\n"); //换行
}

return 0;
}

第2个回答  2014-08-21
#include<stdio.h>
int main(int argc,char **argv)
{
int n;
printf("请输入最大数\n");
scanf("%d",&n);

for(int i = n; i > 0;--i)
{
for(int j = n; j > 0; --j)
printf("%d",j);
printf("\n");

}

return 0;

}本回答被网友采纳
第3个回答  2014-08-21
main()
{
int num = 6;
int i,j;
for(i=1;i<=num;i++){
for(j=1;j<=num-i+1;j++)
{
printf("%f",j);
}
printf("\n");
}
}追问

你没有看清题目,是给定不定位数的整数

编写一个标准C语言程序:输入一个整数,按如下方式输出:第一行输出所有数...
include <stdio.h>#include <string.h>int main() {int n,i,j,len;char s[20];while(scanf("%d",&n) == 1) {sprintf(s,"%d",n);len = strlen(s);for(i = 0; i < len; ++i) {for(j = i; j < len; ++j)printf("%c",s[j]);printf("\\n");}}return 0;} ...

编写一个标准C语言程序:输入一个整数,按如下方式输出:第一行输出所有数...
程序很简单 你将数字存到字符串中 然后输出时,指针每次向前移动一位就可以了!include <stdio.h>int main(){char str[256];int i;scanf("%s", str );for( i=0;str[i];i++ )printf( "%s\\n", &str[i] );return 0;}

用C语言设计一个简单计算器程序,能根据键盘输入的运算指令和数据,做...
回答:可以 去做吧

c语言编程,第一行输入数据个数,第二行输入数据,输出数据中最大值与最...
int main(){ int i,max,min,n,a[105];scanf("%d",&n);scanf("%d",&a[1]);max=a[1]; min=a[1];for (i=2;i<=n;i++){ scanf("%d",&a[i]);if (a[i]>max) max=a[i];if (a[i]<min) min=a[i];} printf("max=%d min=%d\\n",max,min);} ...

求,用C语言编写一个程序第一行*第二行***第三行***第四行***
include <stdio.h> main(){ printf("*");printf("***");printf("***");printf("***");} 如果希望用到循环,就是 include<stdio.h> main(){ int i,a;a=0;for (a=0;a<10;a++){ if (a%2){ for (i=0;i

用C语言输出数字 第一行是12345 第二行是11234 第三行是11123第四行是...
include <stdio.h> int main(void){ int i1=12345;int i2=11234;int i3=11123;int i4=11112;printf("%d \\n",i1);printf("%d \\n",i2);printf("%d \\n",i3);printf("%d \\n",i4);return 0;}

C语言 求一C语言程序 例如:第一行1 第二行121第三行12321第四行1234321...
include<math.h> int main(){ int n,i,j;printf("输入一个正整数n:\\n");scanf("%d",&n);while(n<1){ printf("输入错误,重新输入");scanf("%d",&n);} for(i=1;i<=n;i++){ for(j=1;j<=2*i-1;j++)printf("%d",i-abs(i-j));printf("\\n");} return 0;} ...

C语言第一行输入一个正整数,第二行输入n个正整数,输出n个整数中没有...
int a[111];int n;int min=0;scanf("%d",&n);\/\/数组长度 for(int i=0;i<n;i++)scanf("%d",&a[i]);\/\/输入n个数 min=a[0];for(int i=0;i<n;i++)if(min>a[i])min=a[i];\/\/找出数组中最小的数;printf("%d",min-1);\/\/未出现的最小整数就是n个整数中最小的整数...

c语言打印1到100,第一行打一个数,第二行打印两个数
假设x=2569 printf("%ld\\t",a);就是打印x的个位9 然后x除以10,x=256 原来的十位变成了个位 再调用pin()时,a=x%10得到的a=6 是打印原来x的十位 再除以10再调用pin(),得到打印原来x的百位 这样一直下去直到全部打印完,递归结束 printf("%ld\\n",x);应该是调试用的,影响显示的输出结果...

用C语言输出第一行1,第二行21,第三行321,总共9行
额 有特殊要求没有 没有的话直接9个输出撒 嘿嘿 或者双重循环 for(i=1;i<=9;i++) {for(j=i,j>=1,j--) {printf("%d",j);} printf("\\n");}

相似回答