判断一个数是否为水仙花数
#include
main()
{
int i,j,k,n;
scanf(“%d”,&n);
i=n/100%10;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(n==i*i*i+j*j*j+k*k*k)
printf(“%d是水仙花数",n);
else printf(“该数不是水仙花数”);
}
求两个数的最小公倍数:
解题思路:当一个数a是另一个数b的整数倍的时候,则说明a是b的最小公倍数。
main()
{
int a,b,i=1;
scanf(“%d%d”,&a,&b);
while(i*a%b!=0)
i++;
Printf(“两个数的最小倍数为%d”,i*a);
}
求着两个整数的最大公约数。
解题思路:
从键盘输入两个数,通过以下的三个方法实现求两个数的最大公约数:
辗转相除法:取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数,如果余数不为0,用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大公约数为上一步的余数。
辗转相减法:取两个数中的最大的数做减数,较小的数做被减数,用最大的数减去小数,如果结果为0,则被减数就是这两个数的最大公约数,如果结果不为0,则继续用这两个数中最大的数减较小的数,直到结果为0,则最大公约数为被减数。
穷举法:将两个数作比较,取较小的数,以这个数为被除数分别和输入的两个数做除法运算,被除数每做一次除法运算,值减少1,直到两个运算的余数都为0,则该被除数为这两个数的最大公约数。辗转相除法:
main()
{
printf("请输入两个数(a,b):\n");
scanf("%d,%d",&a,&b);
if(a < b){temp = a;a = b;b = temp;}
while(a%b != 0){temp = a%b;a = b;b = temp;}
printf("最大公约数为:%d\n",b);
return 0;}
//相减法实现
main ()
{ int a,b,temp;
printf("请输入两个数(a,b):\n");
scanf("%d,%d",&a,&b);
if(a < b){
temp = a;
a = b;
b = temp;
}
while(a-b != 0){
temp = a-b;
a = b;
b = temp;
if(a < b){
temp = a;
a = b;
b = temp;
}
}
printf("最大公约数为:%d\n",b);
system("pause");
return 0;
}
//穷举法实现
main()
{
printf("请输入两个数(a,b):\n");
scanf("%d,%d",&a,&b);
if(a < b) {
temp = a;
a = b;
b = temp;}
for(temp = b; a%temp || b%temp; temp--);
printf("最大公约数为:%d\n",temp);
return 0;}
判断一个数是否为素数
#include
#include <math.h>
main()
{
int num,j,tag=1,m;
printf("请输入一个自然数:\n");
scanf("%d",&num);
m=sqrt(num); //此步骤用于减少运算
for(j=2;j<=m;j++)
if(num%j==0)
{
tag=0;
break;
}
if(tag==1)
printf("%d是素数\n",num);
else
printf("%d不是素数\n",num);
}
}
for循环图形输出
1、 打印“旗帜星形”
*
**
***
****
*****
#include
#define ROW 5//”*”形的行数int main(void)
{
int i,j;//i 控制行数,j 控制”*”个数
for(i=1; i<=ROW; i++)
{
for(j=1; j<=i; j++)//行数和”*”数成正比,即第 i 行的”*”个数为 i 个
printf("*");
printf("\n");//每行输出完,进行换行
}
return 0;
}
2、 打印“倒旗帜星形”
#include
#define ROW 5//”*”形的行数
main(void)
{
int i,j; //i 控制行数,j 控制”*”个数
for(i=1; i<=ROW; i++)
{
for(j=1; j<=ROW-i+1; j++)//行数和”*”关系,即第 i 行的”*”个数为 ROW-i+1
printf("*");
printf("\n");//每行输出完,进行换行
}
}
2、 打印“三角星形”
#include
#define ROW 5//”*”形的行数
main(void)
{
int i,j; //i 控制行数,j 控制”*”个数
for(i=1; i<=ROW; i++)
{
for(j=1; j<=ROW-i+1; j++)//行数和” ”(空格符)关系,即第 i 行的空格数为ROW-i+1
printf(" ");
for(j=1; j<=2*i-1; j++)//行数和”*”关系,即第 i 行的”*”个数为 2*i-1 个
printf("*");
printf("\n");//每行输出完,进行换行
}
}
3、 打印“倒三角星形”
#include
#define ROW 5//”*”形的行数int main(void)
{
int i,j; //i 控制行数,j 控制”*”个数
for(i=1; i<=ROW; i++)
{
for(j=1; j行数和” ”(空格符)关系,即第 i 行的空格个数为 i-1
printf(" ");
for(j=1; j<=2*(ROW-i)+1; j++)//行数和”*”关系,即第 i 行的”*”为 2*(ROW-i)+1 个
printf("*");
printf("\n");//每行输出完,进行换行
}
return 0;
}
以上 C 语言”*”形的打印,重点是找出行数与”*”个数的关系,理清即可掌握其打印方法。
输出九九乘法表:
#include
int main()
{
int i,j,n;
for(i=1;i<=9;i++){
for(j=1;j<=i;j++)
printf("%d*%d=%2d ",i,j,i*j);
printf("\n");
}
}
累计求和问题
#includeint
main(){
int i,sum=0;
for(i=1;i<=100;i++){
sum+=i;}printf("%d",sum);}
正负交替问题
1-2+3-4+5-6-----100
#include
int main(){
int i,sum=0,t=1;
for(i=1;i<=100;i++){
sum=sum+i*t;
T=-t;}printf("%d",sum);return 0;}
求序列2/1+3/2+5/3+8/5+13/8+........前20项和
#include
main ()
{
double a = 1.0,b= 2.0,c,sum = 0.0;
int n;
for(n=1; n<=20; n++)
{c=a+b;
sum=sum+b/a;
a=b;
b=c;
}
printf("the sum is %f\n",sum);}
思考:该题如果说是正负交替呢,那么改哪里就可以了?
从键盘输入一个数,求出这个数的阶乘,即 n!。
#include
main()
{
int i,n;
double sum=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
sum=sum*i;
printf("%d!=%lf",n,sum);
}
输入一行字符,统计其中字母的个数:
#include
main()
{
printf("输入一行字符:\n");
char ch;
int i,count=0;
while((ch=getchar())!='\n') if((ch>=65&&ch<=90)||(ch>=95&&ch<=120))
count++;
printf("总共有 %d 个字母\n",count);
return 0;
}
数组:用选择法对10个数进行从小到大排(冒泡排序法)
#include
#define SIZE 10
main()
{
int a[SIZE],i,j,t;
for(i=0;i<=9;i++)//对数组进行赋值
scanf("%d",&a[i]);
for(i=0;i<9;i++)//
{
for(j=i+1;j<10;j++)
if(a[j]后一位数比前一位数小的话,就交换两个数的位置(升序)
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
printf("排列好的数列是:\n");
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
return 0;
}
判定一个数是否为回文数(abcdcba这样的数是回文数,例如123454321)
#include
main(){
int num,s,y=0;
printf("Please input numbers: ");
scanf("%d", &num);
s=num;
while(s>0){
y=y*10+s%10;
s=s/10;
}
if(y==num){
printf("%d是一个回文数!\n", num);
}else{
printf("%d不是一个回文数!\n", num);
}
}
回文塔
#include
main(){
int m,n,i,j;
printf("请输入行数");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(m=1;m<=n-i;m++)
printf(" ");
for(j=1;j<=2*i-1;j++)
{
if(j<=i) printf("%d",j);
else printf("%d",2*i-j);
}
printf("\n");
}
}
春考有约,你与大学的约定
关注公众号,离大学更进一步