- 1.打印九九乘法表
#include<iostream>
#include<time.h>
//打印九九乘法表
using namespace std;
int main(){
for (int i = 1; i <= 9; i++){
for (int j = 1; j <= i; j++){
cout << j << "*" << i << "=" << j*i << " ";
if (j % i == 0){
cout << endl;
}
}
}
}
2.猜数游戏(等等 一会我一定带着我的代码凯旋而归)
#include<iostream>
#include<time.h>
using namespace std;
//猜数游戏
int main(){
int a,b;
srand(time(NULL));
a = rand() % 100 + 1;
cout << a << endl;
int tag=true;
while (tag){
cin >> b;
if (b == a){
cout << "刚刚好,你真聪明!" << endl;
tag = false;
}
else {
if (b > a){
cout << "太大了!" << endl;
}
else if (b < a){
cout << "太小了!" << endl;
}
tag = true;
}
}
}
2.goto语句
#include "stdafx.h"
#include<iostream>
using namespace std;
int main(){
for (int i = 0; i < 5; i++){
if (i == 2){
goto smart;
}
}
smart:
cout << "宝贝!" << endl;
}
有两点需要注意:
1.不能向上跳转
2.不能跨越函数
3.
#include "stdafx.h"
#include<iostream>
using namespace std;
//a 共经历多少米 b 第n此反弹的高度
int main(){
double sum=0, height=0;
int n;
cin >> n;
double h = 100;
if (n == 1)
{
sum = 100;
h = h / 2;
cout << "第" << n << "次落地" << "共经历" << sum << "米" <<","<<"反弹的高度为"<<h<<"米"<< endl;
}
else{
for (int i = 1; i < n; i++){
h = h / 2;
sum = sum + 2 * h + 100;
}
cout << "第" << n << "次落地" << "共经历" << sum << "米" << "," << "反弹的高度为" << h/2<< "米" << endl;
}
return 0;
}
?兔子问题是斐波那契数列
#include "stdafx.h"
#include<iostream>
using namespace std;
int Fib(int n){
if (n == 1 || n == 2){
return 1;
}
else{
return Fib(n - 1) + Fib(n - 2);
}
}
int main(){
int n;
cin >> n;
int c = Fib(n);
cout << c << endl;
return 0;
}
3
?2.编写程序,找出用户输入的一串数中的最大数。输入小于等于0的数停止比较。
#include "stdafx.h"
#include<iostream>
using namespace std;
//编写程序,找出用户输入的一串数中的最大数。输入小于等于0的数停止比较。
int main(){
int max = 0,tag= 1;
while (tag){
int n;
cin >> n;
if (n > 0){
if (n > max){
max = n;
}
}
else {
tag = n;
}
}
cout << max << endl;
return 0;
}
1.打印日历
#include "stdafx.h"
#include<iostream>
using namespace std;
int main(){
int sum, n;
cout << "请输入起始天数和一个月总天数!" << endl;
cin >> n >> sum;
cout << "星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期天" << endl;
for (int i = 1; i <= sum + n - 1; i++){
if (i < n){
cout << "\t";
}
else{
cout << i - n + 1 << "\t";
if (i % 7 == 0){
puts("");
}
}
}
return 0;
}
?哇塞塞 布丁真棒!
2.这是我第无数次打印九九乘法表了
#include "stdafx.h"
#include<iostream>
using namespace std;
int main(){
int i, j;
for (i = 1; i <= 9; i++){
for (j= 1; j <= i; j++){
cout << j << "*" << i << "=" << j*i<<"\t";
if (i==j){
cout << endl;
}
}
}
}
3.求1000以内的所有完数
#include "stdafx.h"
#include<iostream>
using namespace std;
int main(){
int i, j;
cout << "1000以内所有的完数为:" << endl;
for (i = 1; i <= 1000; i++){
int sum = 0;
for (j = 1; j < i; j++){
if (i%j == 0){
sum = sum + j;
}
}
if (sum == i){
cout << i << " ";
}
}
return 0;
}
double型输入输出时都采用lf
如:scanf("%lf",&x);
3.编程判断哪一年的年份小
#include "stdafx.h"
#include<iostream>
using namespace std;
void Min_Year(int year, int month, int day){
int my = year, mm = month, md = day;
while (year != 0 && month != 0 && day != 0)
{
if (year < my){
my = year;
mm = month;
md = day;
}
else if (year == my){
if (month <mm){
mm = month;
md = day;
}
else if (month == md){
if (day < md){
md = day;
}
}
}
cin >> year >> month >> day;
}
cout << my << "/" << mm << "/" << md;
}
int main(){
int year, month, day;
cout << "Enter(yyyy/mm/dd) ";
cin >> year>> month>> day;
Min_Year(year, month, day);
}
1.打印全年日历
呜呜呜也算个大工程啦 弄了好久
#include "stdafx.h"
#include<iostream>
using namespace std;
int Weekday(int year, int month){
if (month == 1 || month == 2){
month =month+ 12;
year--;
}
int dayweek = (2+ 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
switch (dayweek){
case 0:
return 7;
break;
case 1:
return 1;
break;
case 2:
return 2;
break;
case 3:
return 3;
break;
case 4:
return 4;
break;
case 5:
return 5;
break;
case 6:
return 6;
break;
default:
return NULL;
}
}
bool isleap(int year){
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){
return true;
}
else return false;
}
int day_sum(int year, int month)
{
int day;
switch (month){
case 1:case 3: case 5: case 7: case 8: case 10: case 12:
day = 31;
break;
case 4:case 6:case 9:case 11:
day = 30;
break;
case 2:
day = isleap(year) ? 29 : 28;
break;
}
return day;
}
void print_calendar(int year){
for (int i = 1; i <= 12; i++){
int w = Weekday(year, i);
cout << endl << year << "年" << i << "月的日历为:" << endl;
cout << "星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日\t" << endl;
for (int j = 1; j <= day_sum(year, i)+w-1; j++){
if (j < w){
cout << "\t";
}
else{
cout << j - w + 1 << "\t";
if (j % 7 == 0){
puts("");
}
}
}
}
}
int main(){
int year, month, w;
cout << "请输入你要打印的年份月份 " << endl;
cin >> year ;
print_calendar(year);
return 0;
}
2.
#include "stdafx.h"
#include<iostream>
using namespace std;
int main(){
char arr[] = { "xiaobuding"};//10
int brr[] = { 5, 32, 2 };
int a = sizeof(arr) / sizeof(arr[0]);
cout << a << endl;
int b = sizeof(brr) / sizeof(brr[0]);
cout << b << endl;
int c = strlen(arr);
cout << c << endl;
}
int a这个需要给后面加"\0",所以又11个,但是strlen不加"\0",后面只有十个。
1.输入整数1到7,输出所对应的星期,使用查表法。
#include "stdafx.h"
#include<iostream>
#include<time.h>
#include<stdlib.h>
using namespace std;
//定义大小为100的整型数组,使用随机函数给数组元素赋值.
//数值的范围是1-100,并且不容许重复。
int main(){
char *a = "星期一" ;
char *b = "星期二" ;
char *c = "星期三" ;
char *d = "星期四" ;
char *e = "星期五" ;
char *f = "星期六";
char *g = "星期日" ;
char* arr[7] = { a,b,c,d,e,f,g };
int i;
cin >> i;
cout << arr[i-1] << endl;
return 0;
}
?指针数组给老子整出来啦? 呜呜呜浪费了我好长时间 也算是对指针有一个更深切的认知
1.判断字符串中英文字符的个数
#include "stdafx.h"
#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<ctype.h>
using namespace std;
//统计字符串中每个英文字符出现的次数
//不区分大小写,只统计英文字符isalpha()
int main(){
int sum = 0;
char str[] = { "wangbuDing123!" };
for (int i = 0; str[i] != '\0'; i++){
if (isalpha(str[i])){
sum++;
}
}
cout << sum;
return 0;
}
4.统计字符串中每个英文字符出现的次数,区分大小写,只统计英文字符。
#include "stdafx.h"
#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<ctype.h>
using namespace std;
int main(){
int sum = 0, total = 0;
char str[] = { "wangbuDing123!" };
for (int i = 0; str[i] != '\0'; i++){
if (islower(str[i])){
sum++;
}
else if (isupper(str[i])){
total++;
}
}
cout << "小写字母个数:" << sum << endl << "大写字母个数:" << total << endl;
return 0;
}
1.冒泡排序、
0---》n-1
0—>n-i-1
5.题目:定义大小为100的整型数组,使用随机函数给数组元素赋值。数值的范围是1100,并且不容许重复。
#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
using namespace std;
int main(){
const int n = 100;
int arr[n];
cout << "乱序数组:" << endl;
for (int i = 0; i < n; i++){
arr[i] = 1 + rand() % 100;
}
for (int i = 0; i < n; i++){
cout << arr[i] << "\t";
if ((i + 1) % 10 == 0)
{
puts("");
}
}
for (int i = 0; i < 100; i++){
int t = 1 + rand() % 100;
for (int j = 0; j <= n; j++)
{
if (t != arr[j]){
continue;
}
else{
t = 1 + rand() % 100;
j = 0;
}
}
arr[i] = t;
}
for (int i = 0; i < n - 1; i++){
for (int j = i + 1; j < n; j++){
if (arr[i]>arr[j]){
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
}
cout << "排序后的数组为:" << endl;
for (int i = 0; i < n; i++){
cout << arr[i] << "\t";
if ((i + 1) % 10 == 0)
{
puts("");
}
}
return 0;
}
?嘤嘤嘤? 这个zh
?有一个整型数组int ar[101]存储的数值的范围是0到99 ?其中有两个数值重复。 1)请查找重复的数值 ? ?2)重数值的下标输出。
#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
using namespace std;
//有一个整型数组int ar[101]存储的数值的范围是0到99 其中有两个数值重复。
//1)请查找重复的数值 2)重数值的下标输出。
int main(){
int arr[101 ];
int temp;
for (int n = 0; n < 101; n++) {
int tmp = rand() % 100;
for (int i = 0; i <= n; i++) {
if (tmp != arr[i]) continue;
else {
tmp = rand() % 100;
i = 0;
}
}
arr[n] = tmp;
}
//
for (int n = 0; n < 101; n++){
cout << arr[n] << "\t";
if ((n + 1) % 10 == 0)
puts("");
}
//
int i, j;
for ( i = 0; i < 101-1; i++){
for ( j = i+1; j < 101; j++)
{
if (arr[i] == arr[j]){
goto el;
}
}
}
el:{
cout << endl<<"相等的元素为:" << arr[i] << endl;
cout << "相等的元素的下标为:" << i << " 和 " << j << endl;
}
return 0;
}
耶耶耶? 弄出来啦!
?
?冒泡排序终于明白啦!
很光荣了啦? 小布丁也可以打印出杨辉三角啦!
#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
using namespace std;
int main(){
int n = 20;
int a[20][20];
for (int i = 1; i <= 20; i++)
{
for (int j = 1; j <= 20; j++){
if (j > i) a[i][j] = 0;
else if (j == 1)
{
a[i][j] = 1;
}
else{
a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
}
}
}
for (int i = 1; i <=20; i++)
{
for (int j = 1; j <=20; j++){
if (a[i][j] != 0)
{
cout << a[i][j] << " ";
}
else {
cout << " ";
}
if (j % 20 == 0)
{
cout << endl;
}
}
}
return 0;
}
?2.冒泡排序的优化
优化没写出来 改日再写
#include "stdafx.h"
#include<iostream>
#include<stdlib.h>
using namespace std;
//冒泡排序优化
int main(){
int sum = 0;
int arr[] = { 4, 2, 7, 5, 3, 9, 3, 0 };
int len = sizeof(arr) / sizeof(arr[0]);
for (int i = 1; i < len; i++){
int tag = true;
for (int j = 0; j < len - i; j++){
if (arr[j]>arr[j + 1]){
int t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
for (int i = 0; i < len; i++){
cout << arr[i] << " ";
}
return 0;
}
3.野指针:没有进行初始化的指针
如:int * p;
*p=100;
如何杜绝空指针:int *p=NULL;
在使用时应该对其进行判空。
1.staic int a;
静态数据在数据区存放? 即使不是主函数中的数据也会存储在.data区中。因此在返回地址时生存期不会受到影响。
2.指针+1或者加n
例如:arr[6]={23,5,3,1,67,7};
int *p=arr[0];
p=p+n;
p=p+sizeof(int)*n;
+:从低地址向高地址
-:从高地址向低地址
?3.这个题真的坑中有坑
(1)int? *p=ar;//p=&ar[0]
(2)x=*p++? 运算符结合方向是从右至左,*(p++)后置++先把p的值取出来? 与*结合,赋值给x,然后p=p+4*1;p=&ar[1]。
y=*p;*p=ar[1]。
x=++*p;*p=23,23先+1赋值给x,x=24。
y=24;
x=*++p;? *(++p) p=&ar[2]赋值给p,再把p与*结合赋值给x,x=34。
y=34。
富贵险中求!
5.a=20;
const int *p=a;
const 修饰*p,即*p=200会出现错误? 但是p=&b不会出现错误
指针有两个值 一个是指向的值? 一个是自身的值? const使得指向的值不发生改变? 只可读不可写? 但是自身的值可读可写。
?6.在sizeof(arr)数组名代表的是(类型字节*数组元素个数)如int arr[5]--->4*5
除此之外,都代表首元素的地址!!!地址地址
7.arr代表首元素的地址,即&arr[0]=arr
arr[0]=*arr
arr[1]=*(arr+1)? ?---->地址++代表下一个元素arr[n]=*(arr+n)
好啦 2022年2、06号的努力就到此为止啦!
|