C语言简单例题
题目一:将一个正整数分解质因数。例如:输入90,打印出90=2 * 3 * 3 * 5。
#include<stdio.h>
void main()
{
int i, n;
printf("输入需要分解的整数:");
scanf("%d", &n);
for (i = 2; i <= n; i++) {
while (n%i==0){
printf("%d", i);
n /= i;
if (n != 1)printf("*");
}
}
}
题目二:输出9*9乘法口诀。
解析:
#include<stdio.h>
void main()
{
int i, n;
printf("输入需要分解的整数:");
scanf("%d", &n);
for (i = 2; i <= n; i++) {
while (n%i==0){
printf("%d", i);
n /= i;
if (n != 1)printf("*");
}
}
}
#include<stdio.h>
void main()
{
int a=1,b=1;
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
printf(“%d*%d=%d\t”,a,b,a*b);
printf(“\n”);
}
}
题目三:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
#include<stdio.h>
int main()
{
//有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
int i,j,k;
printf("\n");
for(i=1;i<5;i++) { // 以下为三重循环,百位
for(j=1;j<5;j++) {//十位
for (k=1;k<5;k++) { // 个位
if (i!=k&&i!=j&&j!=k) {//确保i、j、k三位互不相同
printf("%d%d%d ",i,j,k);
}
}
}
}
printf("\n");
}
题目四:三种循环方法计算1-2+3-4+5-6+…-100的值
方法一:while循环
#include <stdio.h>
int main(){
int sum = 0;//定义计算结果变量sum
int i = 1;//定义循环数字变量i
int flag = 1;//定义符号状态变量flag
while(i<=100){
i++;
sum+=i*flag;
flag=-flag;
}
printf("sum=%d/n",sum);
}
方法二:do-while循环
#include <stdio.h>
int main(){
int sum = 0;//定义计算结果变量sum
int i = 1;//定义循环数字变量i
int flag = 1;//定义符号状态变量flag
do{
sum+=i*flag;
i++;
flag=-flag;
}while(i<=100);
printf("sum=%d/n",sum);
}
方法三:for循环
#include <stdio.h>
int main(){
int sum = 0;//定义计算结果变量sum
int i = 1;//定义循环数字变量i
int flag = 1;//定义符号状态变量flag
for(i=1,flag=2;i<=100,flag<=100;i+2,flag+=2){
sum+=(i-flag);
}
printf("sum=%d/n",sum);
return 0;
}
题五:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
方法一:暴力法
#include <stdio.h>
int main()
{
int i;
int j;
int k;
for(i = 0; i < 1000; i++)//我们要判断的数
{
for(j = 0; j < 1000; j++)//判断i+100是否是j的平方数
{
if(i + 100 == j * j)
{
for(k = j; k < 1000; k++)//判断i+168是否是k的平方
{
if(i + 100 + 168 == k * k)
{
printf("%d\n",i);
}
}
}
}
}
return 0;
}
方法二:利用平方差公式分析取值范围
#include <stdio.h>
int main (void)
{
int i, j, m, n, x;
for (i = 1; i < 168 / 2 + 1; i++)
{
if (168 % i == 0)
{
j = 168 / i;
if ( i > j && (i + j) % 2 == 0 && (i - j) % 2 == 0)
{
m = (i + j) / 2;
n = (i - j) / 2;
x = n * n - 100;
printf ("%d + 100 = %d * %d\n", x, n, n);
printf ("%d + 268 = %d * %d\n", x, m, m);
}
}
}
return 0;
}
方法三:极限法判断范围
#include<stdio.h>
#include<math.h>
// 判断该数值是否符合: x+100=m^2
double testDataM(double data) {
// 求得: m^2
double mPow = data*data;
// 获取x的值
double value = mPow - 100;
return value;
}
// 判断该数值是否符合:x+100+186=n^2
int testDataN(double data) {
// 获取:n^2
double mPow = data + 100 + 168;
// 对n 开方
double value = sqrt(mPow);
// 判断 n开方后是否是整数
if (value == (int) value) {
return 1;
}
return 0;
}
int main(){
// 确定 m的值范围
for (int i = 11; i <= 83; i++) {
// 得到 x的值
double x = testDataM(i);
// 判断 n是否为整数
if (testDataN(x)) {
printf("这个数是:%.2f\n" , x);
}
}
}