博客
关于我
【20170929】C语言每日一练
阅读量:340 次
发布时间:2019-03-04

本文共 2131 字,大约阅读时间需要 7 分钟。

【程序16】

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
分析:首先介绍一种方法叫辗转相除法(欧几里得算法);

这里写图片描述

从原理可以看出,有两个循环:

1.最后的余数要等于0;——>对应一个while(r !=0)的循环
2.除数和余数的辗转相除。——>替换变量反复相除的循环

因为最后有用的只有b和r的值,所以可以将b的值赋给a,再将r的值赋给b。

#include 
int main(int argc, char* argv[]){ int m,n,i; int num1,num2; printf("请输入第一个正整数m:"); scanf("%d",&m); printf("请输入第二个正整数n:"); scanf("%d",&n); num1 = m; num2 = n; //注意这里要换一个变量,以便于之后用到原来的m和n的值; if(num1 > num2) { i = num1; num1 = num2; num2 = i; }//这样就保证了被除数num2 比 除数num1 大 while(num1 !=0) { i = num2 % num1; num2 = num1; num1 = i; } printf("两个数的最大公约数是:%d",num2); //最大公约数*最小公倍数 = 两个数的乘积; printf("两个数的最小公倍数是:%d",(m*n) / num2); printf("\n");}

运行结果:

【程序17】

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

#include 
int main(int argc, char* argv[]){ printf("请输入一串字符,输入回车符即止:"); int letters =0; int digits = 0; int spaces =0; int others = 0; char c; while((c=getchar()) != '\n') { if(((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z'))) { letters++; } else if((c >'0') && (c < '9')) { digits ++; } else if(c ==' ') { spaces++; } else others ++; } printf("字母有:%d,数字有:%d,空格有:%d,其他字符有:%d",letters,digits,spaces,others);}

注意:是单引号不是双引号!还有字母判断要加上等于号!

运行结果:

这里写图片描述

【程序18】

题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

#include 
#include
int main(int argc, char* argv[]){ int a; int n; int i; int sum = 0; int b = 0; printf("请输入a的值:"); scanf("%d",&a); printf("请输入相加的个数:"); scanf("%d",&n); b = a; for(i = 0; i < n; i++) { if(i == 0) { sum = a; } else { a = b + a * 10 ; sum = sum +a ; } } printf("The total is %d",sum);}

作为一个小白,这个题目真是纠结了好久,每次都是输出相加的最后一个数。纠结了好久要怎样才能把前面的数给加上放到sum里面,不过终于在我仔细的分析之下给编出来了。之前写的是:

for(i = 0;i < n; i++)//其中n为相加的个数{    sum = sum + a * math.pow(10,i);//这里a是用户输入的数字}

错误在于,没有把前面的数给加进去。(其实除了这个方法,我觉得创一个数组储存每次的数,然后再加起来也行。)

运行结果:

这里写图片描述

你可能感兴趣的文章
mysql replace first,MySQL中处理各种重复的一些方法
查看>>
MySQL replace函数替换字符串语句的用法(mysql字符串替换)
查看>>
Mysql Row_Format 参数讲解
查看>>
mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
查看>>
MySQL Server 5.5安装记录
查看>>
mysql slave 停了_slave 停止。求解决方法
查看>>
MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
查看>>
mysql sum 没返回,如果没有找到任何值,我如何在MySQL中获得SUM函数以返回'0'?
查看>>
mysql Timestamp时间隔了8小时
查看>>
Mysql tinyint(1)与tinyint(4)的区别
查看>>
mysql union orderby 无效
查看>>
mysql where中如何判断不为空
查看>>
mysql workbench6.3.5_MySQL Workbench
查看>>
MySQL Workbench安装教程以及菜单汉化
查看>>
MySQL Xtrabackup 安装、备份、恢复
查看>>
mysql [Err] 1436 - Thread stack overrun: 129464 bytes used of a 286720 byte stack, and 160000 bytes
查看>>
MySQL _ MySQL常用操作
查看>>
MySQL – 导出数据成csv
查看>>
MySQL —— 在CentOS9下安装MySQL
查看>>
mysql 不区分大小写
查看>>