c++初步探索
作者:互联网
输出 This is a C program.
//#include <stdio.h> //这是编译预处理指令
//int main() //定义主函数
//{ //函数开始的标志
// printf("This is a C program.\n"); //输出所指定的一行信息
// return 0; //函数执行完毕时返回函数值0
//} //函数结束的标志
//
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
// int a = 0;
// int b = 0;
// int sum = 0;
// printf("请输入a=");
// scanf("%d", &a); //&取上面定义的a
// printf("请输入b=");
// scanf("%d", &b);
// sum = a + b;
// printf("sum is %d\n", sum);
// return 0;
//
//}
//-----------------------------------------------------------------------------------------------------------------------------------------
dfine定义函数 ?是判断 :是选择
//#define max(x,y) ((x)>(y)?(x):(y))
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//
主函数
//int main()
//{
// int a,b,c;
// scanf("%d,%d", &a,&b); //scanf 中的输入格式应该严格按照字符顺序来,如有","则一定要加上"," (%d,%d)
// c = max(a,b);
// printf("max=%d\n", c);
// printf("%d\n", a);
// printf("%d", b);
// return 0;
//}
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
// int max(int x, int y);
// int a, b, c;
// printf("请输入a,b的值:");
// scanf("%d,%d", &a,&b);
// c = max(a, b);
// printf("max is %d\n", c);
// return 0;
//}
//int max(int x, int y) //用c++的方式自行定义max函数
//{
// int z=(0);
// if (x > y)z = x;
// else z = y;
// return (z); //将z的值作为max的函数值,返回到调用max函数的位置
//}
//#include<stdio.h>
//int main()
//{
// int sign = 1;
// double deno = 2.0, sum = 1.0, term;
// while (deno <= 100)
// {
// sign = -sign;
// term = sign / deno;
// sum = sum + term;
// deno = deno + 1;
// }
// printf("%f\n", sum);
// return 0;
//}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
//字符输入输出函数 putchar--输出一个字符 getchar---输入一个字符
//#include <stdio.h>
// int main()
//{
putchar 输出
//char a = 'B', b = 'O', c = 'Y'; //因为B的ASCII为66,O为79,C为89 故可以用 int a=66,b=79,c=89; 代替。
//putchar(a);
//putchar(b);
//putchar(c);
//putchar('\n');
//
//putchar('\'');
//putchar('\015'); //015八进制等于13十进制 ,13是“回车”在ASCII代码
//return 0;
getchar 输入
//char e, f, g;
//e = getchar();
//f = getchar();
//g = getchar(); //输入完后需要按Enter键
//putchar(e);
//putchar(f);
//putchar(g);
//putchar('\n');
//return 0;
// //getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量。
// putchar(getchar());
// putchar(getchar());
// putchar(getchar());
// putchar('\n');
// return 0; //输入完在按Enter键
//
//}
//#include<stdio.h>
//int main()
//{
// char c1, c2;
// printf("这是大写的字母:");
// c1 = getchar();
// c2 = c1 + 32; //在ASCII中大小写十进制表示:小写字符比大写的多32
// printf("这是小写的字母:");
// putchar(c2);
// putchar('\n');
// return 0;
//}
//-----------------------------------------------------------------------------------------------------------------------------------------
//求解二元一次方程组
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//#include<math.h>
//int main()
//{
// double a,b,c,disc,x1,x2,p,q;
// scanf("%f,%f,%f,",&a,&b,&c);
// disc =b*b-(4*a*c);
// if (disc < 0)
// printf("此方程无解\n");
// else
// {
// p = -b / (2.0 * a);
// q = sqrt(disc) / (2.0 * a);
// x1 = p + q;
// x2 = p - q;
// }
// printf("方程的两个根:\nx1=%7.2f\nx2=%7.2f\n", x1, x2);
// return 0;
//}
//-----------------------------------------------------------------------------------------------------------------------------------------
//求解三角形面积
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//#include<math.h>
//int main()
//{
// float a,b,c,d,S;
// printf("请输入三角形的三个边长a,b,c\n");
// scanf("%f,%f,%f", &a,&b,&c);
// if ((a >= b + c )|| (b >= a + c) || (c >= a + b))
// {
// printf("三角形不成立,故无解");
// }
// else
// {
// d = (a + b + c) / 2;
// S = sqrt(d * (d - a) * (d - b) * (d - c));
// printf("三角形的面积为%1f\n",S);
// }
// return 0;
//}
//-----------------------------------------------------------------------------------------------------------------------------------------
// 求解两个数的最大公约数
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//#include<math.h>
//int main()
//{
// int a, b, c,t;
// printf("请输入两个正整数");
// scanf("%d,%d", &a, &b);
// if (a < b)
// {
// t = b;
// b = a;
// a = t;
// }
// do
// {
// c = a % b;
// a = b;
// b = c;
// } while (c);
// printf("最大公约数:%d\n", a);
// return 0;
//}
//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//switch 的使用 (break)。
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
// char grade;
// printf("请输入你的成绩等级(例:A,B,C,D ):");
// scanf("%c", &grade); //char 字符变量
// printf("Your score:");
// switch (grade) //switch接连在printf下面 , 没有换行符。
// {
// case'A': printf("85-100\n"); break;
// case'B': printf("70-84\n"); break;
// case'C': printf("60-69\n"); break;
// case'D': printf("<60\n"); break;
// default:printf("enter data error!\n");
//
// }
// return 0;
//}
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
// void action1(int, int), action2(int, int); //viod定义函数时不需要返回值,int定义函数时需要返回值(即需要return 0;)
// char ch,sh;
// int a, b;
// printf("请输入两个值:");
// scanf("%d,%d", &a,&b);
// printf("请选择你需要运算的类型:(A,a为加法/B,b为乘法)\n");
// getchar(); //如果有换行符需要用gerchar吃掉,例如在scanf后面自动有一个换行符,在后面接getchar用来吃掉这个换行符。
// ch = getchar();
// printf("%c,%d,%d\n", ch,a,b);
//
// switch(ch)
// {
// case'a':
// case'A':action1(a, b); break;
// case'b':
// case'B':action2(a, b); break;
// default:putchar('\a');
// }
// return 0;
//}
// void action1(int x, int y) //int 与viod 函数定义对比 65行
// {
// printf("x+y=%d\n", x + y);
//
// }
// void action2(int x, int y)
// {
// printf("x*y=%d\n", x * y);
//
// }
//------------------------------------------------------------------------------------------------------------------------------
//for 语句的循环
/* for(i=1;i<=100;i++) i=1;
===== while(i<=100)
===== {
sum=sum +i sum=sum+i;
i++;
}
*/
// i=1;for(;i<=100;i++); 等效于 for(i=1;i<=100;i++)
/*for里面有三个解析表达式.
* 若有循环变量i,则:省略发生
表达式1可以被省略,但是没有对i循环变量赋值。
表达式2可以被省略,但是此时表达式将无限循环下去。
表达式3可以被省略,但是for循环可能无法停止。
在for循环前后可以对i循环变量进行定义
*/
//for(sum=0,i=1;i<=100;i++)sum=sum+i;
//表达式1和表达式2都可以是逗号表达式,即包含一个以上的简单表达式
//表达式2可以是关系表达式,逻辑表达式,数值表达式,字符表达式。其值为非零。
//#include<stdio.h>
//int main()
//{
//
// int i,c;
// for (i=0; (c = getchar())!='\n';i+=c ); //不断输入字符,将他们的ASCII码相加,直到输入一个“换行符”为止。
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int c;
// for (; (c = getchar())!='\n';)
// printf("%c", c);
// return 0;
//}
//------------------------------------------------------------------------------------------------------------------------------
//continue 的使用
//#include<stdio.h>
//int main()
//{
// int n;
// for (n = 100; n <= 200; n++)
// {
// if (n % 5 == 0)
// {
// printf("\n");
// }
// if (n % 5== 0)
// continue;
// //执行continue时会跳过printf 到右花括号}的前面 返回for循环
// printf("%d\t", n);
// }
// printf("\n");
// return 0;
//}
//
//--------------------------------------------------------------------------------------------------------------------------
//例子
//
//求Π,格雷戈里公式
//#include<stdio.h>
//#include<math.h>
//int main()
//{
// int sign = 1;
// double pi = 0.0, n = 1.0, term = 1.0; // fab()函数为取绝对值函数
// while (fabs(term) >= 1e-6) //检查当前项term的绝对值是否大于或等于10负六次方
// {
// pi = pi + term;
// n = n + 2;
// sign = -sign;
// term = sign / n;
// }
// pi = pi * 4;
// printf("pi=%10.8f\n", pi);
// return 0;
//
//}
//------------------------------------------------------------------------------------------------------------------------------------------
//算法题 斐波那契数列
//方案一
#include<stdio.h>
//int main()
//{
// int f1 = 1, f2 = 1,f3;
// int i;
// printf("%12d%12d", f1, f2);
// for (i = 3; i <= 40; i++)
// {
// f3 = f1 + f2;
// printf("%12d", f3);
// f1 = f2;
// f2 = f3;
// if (i % 5 == 0)printf("\n");
// }
// return 0;
//}
//方案二
//#include<stdio.h>
//int main()
//{
// int f1 = 1, f2 = 1;
// int i;
// for (i = 1; i <= 20; i++)
// {
// printf("%12d%12d", f1, f2);
// if (i % 2 == 0)printf("\n");
// f1 = f1 + f2;
// f2 = f2 + f1;
//
// }
// return 0;
//}
//-------------------------------------------------------------------------------------------------------------------------------------------------
//数组是一组有序数据的集合,数组中的每一个元素都属于同一种数据类型。
//方括号[]中的数字来表示下标,如s[15]表示s中第15个。
//定义一维数组
//#include<stdio.h>
//int main()
//{ // int a[n]; 是不合法的,数组的大小不作动态定义。
// int i, a[10]; //定义数组是由a[0]开始算第一个。
// for (i = 0; i <= 9; i++) //for循环中的表达式间隔用:分号!
// a[i] = i;
// for (i = 9; i >= 0;i--)
// printf("%d\t", a[i]);
// printf("\n");
// return 0;
//}
//用数组求解斐波那契数列
//#include<stdio.h>
//int main()
//{
// int i;
// int f[20] = { 1,1 }; //对最前面两个元素f[0]和f[1]赋初值1
// for (i = 2; i < 20; i++)
// f[i] = f[i - 2] + f[i - 1]; //先后求出f[2]-f[19]的值
// for (i = 0; i < 20; i++)
// {
// if (i % 5 == 0)printf("\n");
// printf("%12d", f[i]);
//
// }
// printf("\n");
// return 0;
//}
//起泡法排序实现数组大小排列
//#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
// int a[10];
// int i, j, t;
// printf("input 10 numbers:\n");
// for (i = 0; i < 10; i++)
// scanf_s("%d", &a[i]); //地址符&
// printf("\n"); //定义完成数组
// for(j=0;j<9;j++)
// for(i=0;i<9-j;i++)
// if (a[i] > a[i + 1])
// {
// t = a[i];
// a[i] = a[i + 1];
// a[i+1] = t;
// }
// printf("the sorted numbers;\n");
// for (i = 0; i < 10; i++)
// printf("%-2d", a[i]); //printf输出时 %d 默认为左最齐 ,%-d改成右对齐
// printf("\n");
// return 0;
//}
//#include<stdio.h>
//#include<math.h>
//int main()
//{
// float C, F;
// printf("请输入华氏温度:");
// scanf_s("%f", &F);
// C = (F - 32) * 5 / 9;
// printf("对应的摄氏温度为:%f", C);
// return 0;
//}
//pow函数的使用,是用来求x的y次方的
//#include <stdio.h>
//#include <math.h>
//void main()
//{
// int x, y;
// scanf_s("%d,%d",&x, &y);
// int data = pow(x, y);
// printf("%d", data);
//}
斐波那契数列求解
//#include <stdio.h>
//#include <math.h>
//
//int optimizeFibonacci(int first, int second, int n)
//{
// if (n > 0) {
// if (n == 1) { // 递归终止条件
// return first; // 简单情景
// }
// else if (n == 2) { // 递归终止条件
// return second; // 简单情景
// }
// else if (n == 3) { // 递归终止条件
// return first + second; // 简单情景
// }
// return optimizeFibonacci(second, first + second, n - 1); // 相同重复逻辑,缩小问题规模
// }
//
//
// return -1; //用返回-1来表示失败
//}
//int main()
//{
// int optimizeFibonacci( int first, int second, int n); //调用函数optimizeFibonacci( int first, int second, int n)
// int x,y,z,D;
// printf("请输入斐波那契数列前两个数字以及第X所需要的数:\n");
// scanf_s("%d,%d,%d", &x, &y, &z);
// D= optimizeFibonacci(x,y,z);
// printf("第X个数为:\n%d", D);
// return 0;
//}
//求出3X4矩阵中最大元素的值,以其所在的行号和列号
//#include<stdio.h>
//int main()
//{
// int i, j, row = 0, colum = 0, max;
// int a[3][4] = { {1,2,3,4 }, {9,8,7,6},{ -10,10,-5,2 } };
// max = a[0][0]; //先认为a[0][0]最大
// for(i=0;i<=2;i++)
// for(j=0;j<=3;j++)
// if (a[i][j] > max) //如果某元素大于max,就取代max的原值
// {
// max = a[i][j];
// row = i; //行号
// colum = j; //列号
// }
// printf("max=%d\nrwo=%d\ncolum=%d\n", max, row, colum);
// return 0;
//}
//-----------------------------------------------------------------------------------------------------------------------------------------
//字符数组
//#include<stdio.h>
//int main()
//{ //注意定义字符串的时候使用的是花括号{}
// char c[15]={'I', ' ', 'L', 'o', 'v', 'e', ' ', 'Y', 'o', 'u', '.'}; //只有11给字符,但是剩下的自动填充成空字符'\0'(代表结束符)
// int i,j;
// for (i = 0; i < 15; i++) //for循环后面若没有花括号{}就执行一个语句
// printf("%c", c[i]); //用格式符"%c"输入或输出一个字符
// printf("\n");
// printf("%s\n", c); //用格式符"%s"输入或输出一次字符串
// printf("\n");
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// char str1[6],str2[6],str3[6]; //需要的数组大小比输入的字符大小 多一 因为最后一个需要放"\0"终止符
// scanf_s("%s%s%s",str1,6,str2,6,str3,6); //此处不需要加地址符 & 其中str,6中的6是用来指定缓冲区大小的参数,表示最多读取n-1个字符(4)
// printf("%s%s%s\n", str1,str2,str3);
// printf("%s\n",str1);
// printf("%s\n",str2);
// printf("%s\n",str3); //注意数组的大小,过小会导致内存越界
// return 0;
//}
//#include<stdio.h>
//int main()
//{
// int a[10][10],i,j;
//
// for (i = 0; i < 10; i++)
// {
// a[i][i] = 1;
// a[i][0] = 1;
// }
// for (i = 2; i < 10; i++)
// for (j = 1; j <= i - 1; j++)
// a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
// for (i = 0; i < 10; i++)
// {
// for (j = 0; j <= i; j++)
// printf("%6d", a[i][j]);
// printf("\n");
// }
// printf("\n\t程序结束");
// return 0;
//
//}
#include<stdio.h>
void main()
{
int a[10][10];
int i, j, k, n, m;
for (i = 0; i < 10; i++) /*给备用的数组做初始化*/
{
for (j = 0; j < 10; j++)
a[i][j] = 0;
}
k = 0; /*限定输入的数必须满足要求*/
while (k == 0)
{
printf("Please input a number as the value of n:(必须是10以内的奇数)\n");
scanf("%d", &n);
if (n % 2 != 0 && n > 0 && n < 10)
k = 1;
else
k = 0;
}
i = 0;
j = n / 2;
a[i][j] = 1;
for (m = 2; m <= n * n; m++) /*因为1已经放好了,所以我们从2开始放*/
{
if ((i == 0) && (j != n - 1)) /*算法中的第3步*/
{
i = n - 1;
j = j + 1;
if (a[i][j] == 0) /*算法中的第7步*/
a[i][j] = m;
else
{
i = 1;
j = j - 1;
a[i][j] = m;
}
}
else if ((i != 0) && (j == n - 1)) /*算法中的第4步*/
{
i = i - 1;
j = 0;
if (a[i][j] == 0) /*算法中的第7步*/
a[i][j] = m;
else
{
i = i + 1;
j = n - 1;
a[i][j] = m;
}
}
else if ((i == 0) && (j == n - 1)) /*算法中的第5步*/
{
i = n - 1;
j = 0;
if (a[i][j] == 0) /*算法中的第7步*/
a[i][j] = m;
else
{
i = 1;
j = n - 1;
a[i][j] = m;
}
}
else /*算法中的第6步*/
{
i = i - 1;
j = j + 1;
if (a[i][j] == 0) /*算法中的第7步*/
a[i][j] = m;
else
{
i = i + 2;
j = j - 1;
a[i][j] = m;
}
}
}
printf("%d阶魔方阵:\n", n);
for (i = 0; i < n; i++) /*输出数组*/
{
for (j = 0; j < n; j++)
{
printf("%4d", a[i][j]);
}
printf("\n");
}
标签:main,return,探索,int,c++,初步,printf,putchar,include 来源: https://blog.csdn.net/weixin_59898812/article/details/123611483