C语言 整数逆序输出 正序分解整数 最大公约数 约分最简分式 以每行一个单词的形式打印其输出 warshall算法.
程序员文章站
2022-03-21 22:17:16
...
#include<stdio.h>
int main()
{
int num,di,d=0;
scanf("%d",&num);
while(num>0)
{
di = num%10; //取余得到个位数字
d = d*10+di; //个位数字乘10 相当于左移一位
num /= 10; //整除去掉末位
}
printf("%d\n",d);
return 0;
}
//正序分解整数
/*1234/1000=1 1234%1000=234 234/100=2 234%100=34*/
#include<stdio.h>
int main()
{
int x;
scanf("%d",&x);
int mask=1;
int t=x;
while(t>9)
{
t=t/10; //数出整数的位数,划掉个位
mask *= 10;
}
do{
int d = x/mask;
printf("%d",d);
if(mask>9)
printf(" ");
x %= mask;
mask /= 10;
}while(mask>0);
printf("\n");
return 0;
}
#include<stdio.h> //辗转相除法
int main()
{
int n,i,first=1,d,sum,j,p,t;
scanf("%d",&n);
for(i=1;i<n;i++)
{
first *= 10; //n=3,100~999
}
for(i=first;i<first*10;i++)
{
sum=0;
t=i;
while(t>0)
{
d=t%10;
t=t/10;
p=1;
for(j=1;j<=n;j++)
p *= d;
sum += p;
}
if(sum==i)
printf("%d\n",i);
}
return 0;
/*约分最简分式
要求用户输入一个分数,然后将其约分为最简分式。如6/12可以约分为1/2.
当分子大于分母时,不需要表达为整数,即11/8还是11/8,当分子分母相等时,仍然表达为1/1的分数形式。
输入格式:分子和分母都是正整数。提示;在scanf的格式字符串中加入"/",让scanf来处理这个斜杠
输入样例:60/120
输出样例:1/2 */
#include<stdio.h>
int main()
{
int a,b,t,a1,b1;
scanf("%d/%d",&a,&b);
a1=a;
b1=b;
while(b>0)
{
t=a%b;
a=b;
b=t;
}
printf("%d/%d\n",a1/a,b1/a);
return 0;
}
//以每行一个单词的形式打印其输出
#include <stdio.h>
#define IN 0 //在单词里面
#define OUT 1 //在单词外
int main()
{
char c;
int flag = OUT;
while((c = getchar())!=EOF)
{ if(c =='\n'|| c == ' '|| c == '\t')
{
if(flag == IN)
{
putchar('\n');
flag = OUT;
}
}
else
{
putchar(c);
flag = IN;
}
}
return 0;
}
#include<stdio.h>
#define M 4 //行数
#define N 4 //列数
int main()
{
int a[M][N],i,j,m,n,t;
for(i=0;i<M;i++) //矩阵输入
{
for(j=0;j<N;j++)
{
scanf("%d",&a[i][j]);
}
}
for(j=0;j<M;j++) //从矩阵的第一列开始
{
for(i=0;i<N;i++) //遍历每一行找非零的数
{
if(a[i][j]!=0)
{
m=i; //找到非零的数后记住这一行
n=j; //列数变行数
for(t=0;t<N;t++)
{
a[m][t]=a[m][t]+a[n][t]; //记住的这一行重新赋值为
} //这一行原来的数对应加上‘列变行’那一行的数
}
}
}
for(i=0;i<M;i++) //遍历矩阵,将非零数都变为 1
{
for(j=0;j<N;j++)
{
if(a[i][j]>1)
a[i][j]=1;
}
}
printf("\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
return 0;
}