您的位置:首页 > 编程语言 > C语言/C++

算法 — 最基础のc语言算法

2016-02-19 14:05 337 查看

1、斐波拉契数列

#include <iostream>

using namespace std;

int main()
{
int n1 = 1, n2 = 1, display;
int count;
cin>>count;
cout<<n1<<endl<<n2<<endl;
while(count--) {
/* display = n1 + n2;
n1 = n2;
n2 = display;
*/
n1 = (n2 = n2 + n1) - n1;
cout<<n2<<endl;
}
return 0;

}



2、回文数判断

#include <iostream>

using namespace std;

int main()
{
int num, rem, reserve = 0, tmp;
cin>>num;
tmp = num;
while(tmp != 0) {
reserve = reserve*10 + (rem = tmp%10);
tmp = tmp/10;
}
if(num == reserve) {
cout<<"yes"<<endl;
} else {
cout<<"no"<<endl;
}

}


3、判读质数

#include <iostream>

using namespace std;

int main()
{
/*
2\3\5\7\11
*/
int num;
bool flag = false;
cin>>num;
if(num == 1) cout<<"1既不是质数也不是合数!"<<endl;
for(int i = 2; i <= num/2; i++) {
if(num%i == 0) {
flag = true;
break;
}
}
if(!flag) cout<<"yes"<<endl;
else cout<<"no"<<endl;
return 0;
}


4、打印三角形

#include<stdio.h>
/*
* 三角型
*/
int main(){
int rows,i,j,space;
printf("Enter number of rows: ");
scanf("%d",&rows);
//i = rows
for(i=rows;i>=1;--i){
//rows - i
for(space=0;space<rows-i;++space)
printf("  ");
//i
for(j=1;j<=2*i-1;++j)
printf("* ");
printf("\n");
}
/*
for(i=1;i<=rows;++i){
for(space=1;space<=rows-i;++space){
printf("  ");
}
for(int j = 0; j<2*i-1; j++) {
printf("* ");
}
printf("\n");
}
*/
return 0;
}


5、简单计算器

# include <stdio.h>
int main(){
char o;
float num1,num2;
printf("Enter operator either + or - or * or divide : ");
scanf("%c",&o);
printf("Enter two operands: ");
scanf("%f%f",&num1,&num2);
switch(o) {
case '+':
printf("%.1f + %.1f = %.1f",num1, num2, num1+num2);
break;
case '-':
printf("%.1f - %.1f = %.1f",num1, num2, num1-num2);
break;
case '*':
printf("%.1f * %.1f = %.1f",num1, num2, num1*num2);
break;
case '/':
printf("%.1f / %.1f = %.1f",num1, num2, num1/num2);
break;
default:
/* If operator is other than +, -, * or /, error message is shown */
printf("Error! operator is not correct");
break;
}
return 0;
}


6、判断一个数能不能表示成两哥质数的和

#include <stdio.h>
int prime(int n);
int main()
{
int n, i, flag=0;
printf("Enter a positive integer: ");
scanf("%d",&n);
for(i=2; i<=n/2; ++i)
{
if (prime(i)!=0)
{
if ( prime(n-i)!=0)
{
printf("%d = %d + %d\n", n, i, n-i);
flag=1;
}
}
}
if (flag==0)
printf("%d can't be expressed as sum of two prime numbers.",n);
return 0;
}
int prime(int n)      /* Function to check prime number */
{
int i, flag=1;
for(i=2; i<=n/2; ++i)
if(n%i==0)
flag=0;
return flag;
}


7、递归的方式颠倒字符串

#include <stdio.h>
void Reverse();
int main()
{
printf("Enter a sentence: ");
Reverse();
return 0;
}
void Reverse()
{
char c;
scanf("%c",&c);
if( c != '\n')
{
Reverse();
printf("%c",c);
}
}


8、十进制 与 二进制的转换

#include <stdio.h>
#include <math.h>
int binary_decimal(int n);
int decimal_binary(int n);
int main()
{
int n;
char c;
printf("Instructions:\n");
printf("1. Enter alphabet 'd' to convert binary to decimal.\n");
printf("2. Enter alphabet 'b' to convert decimal to binary.\n");
scanf("%c",&c);
if (c =='d' || c == 'D')
{
printf("Enter a binary number: ");
scanf("%d", &n);
printf("%d in binary = %d in decimal", n, binary_decimal(n));
}
if (c =='b' || c == 'B')
{
printf("Enter a decimal number: ");
scanf("%d", &n);
printf("%d in decimal = %d in binary", n, decimal_binary(n));
}
return 0;
}

int decimal_binary(int n)  /* Function to convert decimal to binary.*/
{
int rem, i=1, binary=0;
while (n!=0)
{
rem=n%2;
n/=2;
//进位
binary+=rem*i;
i*=10;
}
return binary;
}
int binary_decimal(int n) /* Function to convert binary to decimal.*/
{
int decimal=0, i=0, rem;
while (n!=0)
{
rem = n%10;
n/=10;
decimal += rem*pow(2,i);
++i;
}
return decimal;
}


9、数组转置

#include <stdio.h>
int main()
{
int a[10][10], trans[10][10], r, c, i, j;
printf("Enter rows and column of matrix: ");
scanf("%d %d", &r, &c);
/* Storing element of matrix entered by user in array a[][]. */
printf("\nEnter elements of matrix:\n");
for(i=0; i<r; ++i)
for(j=0; j<c; ++j)
{
printf("Enter elements a%d%d: ",i+1,j+1);
scanf("%d",&a[i][j]);
}
/* Displaying the matrix a[][] */
printf("\nEntered Matrix: \n");
for(i=0; i<r; ++i)
for(j=0; j<c; ++j)
{
printf("%d  ",a[i][j]);
if(j==c-1)
printf("\n\n");
}
/* Finding transpose of matrix a[][] and storing it in array trans[][]. */
for(i=0; i<r; ++i)
for(j=0; j<c; ++j)
{
trans[j][i]=a[i][j];
}
/* Displaying the transpose,i.e, Displaying array trans[][]. */
printf("\nTranspose of Matrix:\n");
for(i=0; i<c; ++i)
for(j=0; j<r; ++j)
{
printf("%d  ",trans[i][j]);
if(j==r-1)
printf("\n\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: