IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 使用MarkDown编辑器修改后发布的C语言基础代码(部分) -> 正文阅读

[C++知识库]使用MarkDown编辑器修改后发布的C语言基础代码(部分)

前言

在vs2022的编译环境中不能调用scanf函数,只能调用scanf_s函数用于输入

For语句中的间隔用分号“;”例如for(i=1;i<=n;i++)

scanf_s后边对应的数值应该取址符“&”

一.初识C源程序及其数据类型

例1.1 编写一个程序,实现从键盘输入两个整数,计算并输出两者乘积。

#include <stdio.h>
int multiply(int a,int b ) 
//即用户自定义函数 multiply(int a,int b)
{ 
 //定义函数功能为 return (a*b)
return (a * b);
}
int main() //有且仅有一个main函数
{
int x, y, product;
printf("please input two integers:");           
scanf_s(" % d % d", &x, &y);            //将转换后的数据送到变量地址列表所对应的变量中
product = multiply(x , y);                     //调用用户自定义函数multiply
printf("The product is %d\n", product);
return 0;                                              //无返回值
}

可修改为

#include<stdio.h>
int main()
{
int x, y, product;
printf("please input two integers:");
scanf_s("%d%d", &x, &y);
product = x * y;
printf("The product is %d\n", product);
return 0;
}

img

例 1.2 日期格式转换

#include<stdio.h>
int main()
{
int year, month, day;
printf("请按标准格式输入一个日期(YYYY-MM-DD):");
scanf_s("%d-%d-%d", &year, &month, &day);
printf("中国日期格式:%d年%d月%d日\n",year,month,day);
printf("美国日期格式:%d/%d/%d\n", month, day, year);
printf("英国日期格式:%d/%d/%d\n", day, month, year);
return 0;
}

img

例1.3作业等级的输入和输出

#include <stdio.h>
int main()
{
char grade1, grade2;                    // <变量>=getchar()
grade1 = getchar();           //函数getchar用于从键盘读入一个用户输入的字符
getchar();                    //getchar()表示系统从输入缓冲区提取一个的字符但不赋给任何变量  grade2 = getchar();   
printf("The first grade is:");//函数putchar是将给定的参数以单个字符的形式输出到显示器
putchar(grade1);             //屏幕的当前位置上,其参数可以是字符常量、变量或表达式 
putchar('\n');
printf("The second grade is:");
putchar(grade2);
putchar('\n');
return 0;
}

img

例1.4计算圆的面积和周长

#include <stdio.h>
int main()
{
const double pi = 3.14159;           //const <数据类型><只读变量名>;   变量初始化
double r;                           //用const修饰符限定只读变量 增加了程序的可读性、
scanf_s("%lf", &r);                //方便了程序的维护、增强了程序的正确性并减少误操作
printf("area=%.2f\n", pi * r * r);            //计算圆的面积并输出
printf("permeter=%.2f\n", 2 * pi * r);        //计算圆的周长并输出
return 0;
}

img

二.运算符与表达式

例2.1计算抛物运动的射程

#include <stdio.h>
#include <math.h> 引用数学函数 #include<stdio.h>;
int main()
{
const double pi = 3.14159;                    // const <数据类型> <只读变量名>;
const double g = 9.80;                            // 用于定义只读变量
double v0;
int theta;
double R;                                        
printf("Please input v0 (m/s) and theta (degree):\n");
scanf_s("%lf%d", &v0, &theta);
R = v0 * v0 * sin(2 * theta / 180.0 * pi)/g;        //C语言中sin函数的参数是弧度制
printf("The range is:%.2f (m)\n", R);              // 需要用pi将theta从角度制转换
return 0;                                           //成弧度制。
}

img

例2.2验证丢番图的规则

#include <stdio.h>
#include <math.h>
int main()
{
int a, b;
int x, y, z;
int t;
printf("please input a and b:");
scanf_s("%d%d", &a, &b);
t = (int)sqrt(2 * a * b);
printf("a=%d,b=%d\n", a, b);
printf("2ab %s a perfect square number\n", t * t == 2 * a * b ? "is" : "is NOT");
x = a + t;
y = b + t;
z = a + b + t;
printf("x=%d,y=%d,z=%d\n", x, y, z);
printf("(%d,%d,%d) %s a solution of the Pythagorean Theorem equation\n", x, y, z, x * x + y * y == z * z ? "is" : "is NOT");
return 0;
}

img

img

三.程序流程控制

例3.1 求三角形面积。从键盘输入三角形3条边的边长,求三角形面积并输出至屏幕。

#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c, p, s;
printf("Please input three edges:");
scanf_s("%lf%lf%lf", &a, &b, &c);
p = (a + b + c) / 2;
s = sqrt(p * (p - a) * (p - b) * (p - c));     //调用数学函数   该例子我进行了修改
printf("s=%lf\n", s);
return 0;
}

img

例3.2 年龄比较。从键盘读入两个人的年龄,比较并输出年长者的年龄。

#include <stdio.h>
int main()
{
int age1, age2;
printf("Enter age of two persons:");
scanf_s("%d%d", &age1, &age2);
if (age1 >= age2)
{
     printf("The older age is %d\n:", age1);
}                                                     //if...else语句的使用

Else                                             
{
     printf("The older age is %d\n:", age2);
}
return 0;
}

img

例3.3 求三角形面积的改善

#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, p, s;
printf("Enter three edges of a triangle:");
scanf_s("%f%f%f", &a, &b, &c);
if(a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a)
{
     p = (a + b + c) / 2;
     s = sqrt(p * (p - a) * (p - b) * (p - c));
     printf("s=%f", s);
}
else
{
     printf("error input!\n");
}
return 0;
}

img

例3.4 直角三角形的判别

#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c;
printf("Enter three edges of triangle:");
scanf_s("%f%f%f", &a, &b, &c);
if (a <= 0 || b <= 0 || c <= 0)
{
     printf("error input!\n");
}
else
{
     if (a + b > c && a + c > b && b + c > a)
     {
         if (fabs(a * a + b * b - c * c) < 1E-2 || fabs(a * a + c * c - b * b) < 1E-2 || fabs(b * b + c * c - a * a) < 1E-2)
         {
              printf("%f,%f,%f is a right triangle\n",a,b,c);
         }
         else
         {
              printf("%f,%f,%f is a ordinary triangle\n",a,b,c);
         }
     }
     else
     {
         printf("%f,%f,%f is not a triangle\n",a,b,c);
     }
    }

return 0;
}

imgimg

例3.5 月份天数计算。从键盘输入年份和月份,计算该月份的天数并输出。

#include <stdio.h>
int main()
{
int year, month, daysum;
printf("Enter the year and the month:");
scanf_s("%d%d", &year, &month);
switch (month)
{
case 1:
case 3:                                   //    switch(表达式)
case 5:                                   //  {
case 7:                                   //    case 常数表达式1: 语句系列1
case 8:                                   //    case 常数表达式2: 语句系列2
case 10:                                  //    ...
case 12:                                  //    case 常数表达式n: 语句系列n    
     daysum = 31;                         //  }
     break;                               // 首先计算switch后面表达式的值,然后与各

case 4:                                   // case分支的常量进行匹配,与哪个常量相等

case 6:                                   //就该从该分支的语句序列开始执行,直至遇

case 9:                                   // 到break或者switch语句块的右大括号。

case 11:

     daysum = 30;

     break;

case 2:

     if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))

     {

         daysum = 29;

     }

     else

     {

         daysum = 28;

     }

}

     printf("%d.%d has %d days\n", year, month, daysum);

     return 0;
}

img

例3.6 求累加和。从键盘读入int型正整数n,计算累加和的值并输出。

#include <stdio.h>
int main()
{
int n, i, sum;
printf("Enter a positive integer:");        // while语句的利用
scanf_s("%d", &n);
i = 1;                                      // while(表达式)
sum = 0;                                    // {
while (i <= n)                              //        语句块
{                                           // {
     sum += i;                              //  1.计算表达式的值。若为真,则转步骤二
     i++;                                   //  否则退出循环,执行while的下一条语句
}                                           //  2.执行语句块,并返回步骤一
printf("累加和%d=%d", n, sum);
return 0;
}

例3.7 求阶乘。从键盘读入正整数n,计算n!并输出。

#include <stdio.h>
int main()
{
int n, i;
double fac;
printf("Enter a positive integer:");  //do   while语句的利用
scanf_s("%d", &n);
i= 1;
fac = 1;                             //  do
Do                                   //  { 
{                                    //         语句块

     fac *= i;                       //  }while(表达式);

     i++;                            //  1.执行语句块,即循环体

} while (i <= n);                    //  2.计算表达式。若为真,则转步骤一;

printf("%d!=%lf", n, fac);           //  否则否则退出循环,执行下一语句。

return 0;
}

img

例3.8 数列求和已知一个数列如下,求该数列前1000项的和,并输出。

#include <stdio.h>
int main()
{
int sign, i;
double item, sum;
sum=0;
sign = 1;
for (i = 1; i <= 1000; i++)
{
     item = sign / (2.0*i - 1);            //  * 2.0 重点   double型 must 以小数形式
     sum += item;                             
     sign = -sign;
}
printf("sum=%lf", sum);
}

img

例3.9 break与continue的使用比较。

//代码一 break的使用
#include <stdio.h>
int main()
{
int i, n;
for (i = 1; i <= 5; i++)
{
     printf("Enter n:");
     scanf_s("%d", &n);
     if (n < 0)
         break;                    //break是结束本层循环体的的运行,并退出本层循环
     printf("n=%d\n", n);
}
printf("The end!\n");
return 0;
}

img
代码二 continue的用法img

例3.10 加法表打印。要求打印如下

#include <stdio.h>
int main()
{
int i, j;
for (i = 1; i <= 9; i++)
{
     for (j = 1; j <= i; j++)
     {
         printf("%d+%d=%2d ", i, j, i + j);
     }
     printf("\n");
}
return 0;
}

img

例3.11 梯形打印。要求打印如下所示的等腰梯形

img

#include <stdio.h>
int main()
{
int i, j;
for (i = 1; i <= 4; i++)
{
     for (j = 1; j <= 4 - i; j++)
     {
         printf(" ");                            // 两个内循环的嵌套和使用
     }
         for (j = 1; j <= 2 * i + 1; j++)
         {
              printf("*");
         }
         printf("\n");
}
return 0;
}

img

例3.12 质数(素数)判断。从键盘输入一个正整数n,判断n是否为质数。

#include <stdio.h>
#include <math.h>
int main()
{
int n, i, k;
     do
     {
         printf("Enter a positive integer:");
         scanf_s("%d", &n);
     } while (n <= 0);
         if (n == 1)
         {
              printf("%d is not a prime\n", n);      //无语子,反复嵌套容易混乱。
         }
         else
         {
              k = (int)sqrt(n);                      //使用到了(int)强制类型转换
              for (i = 2; i <= k; i++)               //和数学函数sqrt(n)
              {
                  if (n % i == 0)
                  {
                      break;                        // break的使用
                  }
              }
              if (i > k)
              {
                  printf("%d is a prime", n);
              }
              else
              {
                  printf(" % d is not a prime", n);
              }
         }
         return 0;
         }

img
imgimg

例3.13 穷举法:百钱百鸡问题。公鸡5钱1只,母鸡3钱1只,小鸡1钱3只。100钱买100只鸡。

    问公鸡、母鸡、小鸡各几只?
#include <stdio.h>
int main()
{
int a, b, c;
for (a = 0; a <= 20; a++)
{
     for (b = 0; b <= 33; b++)
     {
         c = 100 - a - b;
         if (15 * a + 9 * b + c == 300)
         {
              printf("%d,%d,%d\n", a, b, c);
         }
     }
}return 0;
}

img

四.函数的基本知识

例4.1定义函数totalCost,计算购买商品的总金额,其中买多个商品有一定的折扣。

#include <stdio.h>
double totalCost (int n, double p);
int main()
{
double price, bill;
int number;
printf("Enter the number of items purchased:");
scanf_s("%d", &number);
printf("Enter the price per item (RMB):");
scanf_s("%lf", &price);
bill = totalCost(number, price);
printf("The totalCost of the items purchased is:%.lf RMB.\n", bill);
return 0;
}
double totalCost(int n, double p)
{
    const double DISCOUNT = 0.2;
double total;
if (n > 1)
     total = n * p * (1 - DISCOUNT);
else
     total = n * p;
return total;
}

img

例4.2 judgeprime函数定义的代码

int judgeprime(int n)
{
int i, k;
int judge = 1;
if (n == 1)
     judge = 0;
k = (int)sqrt(n);
for (i = 2; judge && i <= k; i++)
     if (n % i == 0)
         judge = 0;
return judge;
}

例4.3 定义函数drawline,用于画一条由n个减号组成的横线。

void drawline()
{
const int n = 30;
int i;
for (i = 1; i <= n; i++)
     printf("-");
printf("\n");
return;
}

例4.4从键盘上读入一个整数m,如果m<=0,则给出相应的提示信息:如果m>0,则调用judge prime函数判断它是不是质数。

#include <stdio.h>
#include <math.h>
int judgeprime(int n);
int judgeprime(int n)
{
int i, k;
int judge = 1;
if (n == 1)
     judge = 0;
k = (int)sqrt(n);
for (i = 2; judge && i <= k; i++)
     if (n % i == 0)
         judge = 0;
return judge;
}
int main()
{
int m, prime;
scanf_s("%d", &m);
if (m <= 0)
{
     printf("error input!\n");
     return 0;
}
prime = judgeprime(m);
if (prime)
     printf("%d is a prime!\n", m);
else
     printf("%d is not a prime!\n", m);
return 0;
}

img

例4.5调用drawline函数实现划线功能。

#include <stdio.h>
void drawline();
void drawline()
{
const int n = 30;
int i;
for (i = 1; i <= n; i++)
     printf("-");
printf("\n");
return;
}
int main()
{
drawline();
printf("C is a beautiful language!\n");
drawline();
return 0;
}

例4.6 定义一个递归函数计算n!。主函数中读入任一非负整数,然后调用该函数。

#include <stdio.h>
double Fact(int n);
int main()
{
int n;
double t;
printf("Plese input n:\n");
scanf_s("%d", &n);
if (n < 0)
     n = -n;
t = Fact(n);
printf("%d!=%lf", n, t);
return 0;
}
double Fact(int n)
{
if (!n)
     return 1.0;
return n * Fact(n - 1);
}

修改后

#include <stdio.h>
double Fact(int n);
int main()
{
int n;
double t;
printf("Plese input n:\n");
scanf_s("%d", &n);
if (n < 0)
     n = -n;
t = Fact(n);
printf("%d!=%lf", n, t);
return 0;
}
double Fact(int n)
{
if (n==0)
{
     return 1.0;
}
else
{
     return n * Fact(n - 1);
}
}

例4.7 数制转换问题,将一个十进制整数转化成指定的的B(2<=B<=16)进制数。

#include <stdio.h>
void multibase(int n, int B);
void multibase(int n, int B)
{
int m;
if (n)
{
     multibase(n / B, B);
     m = n % B;
     if (m < 10)
         printf("%d", m);
     else
         printf("%c", m + 55);
}
}
int main()
{
int n, B;
do
{
    scanf_s("%d%d", &n, &B);
} while (n <= 0 || B <= 1 || B >16);
printf("change result:\n");
multibase(n, B);
printf("\n");
return 0;
}

例4.8找出2—100所有的质数,并统计个数

#include <stdio.h>
#include <math.h>
int count;
int judgeprime(int n);
int main()
{
int i;
printf("The primes between 2 to 100:\n");
     for(i=2;i<100;i++)
         if (judgeprime(i))
         {
              printf("%d ", i);
              count++;
         }
     printf("The total number of primes:%d\n", count);
     return 0;
     int judgeprime(int n)

{
     }
     int i;

int judge = 1;

if (n == 1)

     judge = 0;

{

     int k = (int)sqrt(n);

     for (i = 2; judge && i <= k; i++)

         if (n % i == 0)

              judge = 0;

}

return judge;
}

img

例4.9利用静态局部变量求解1到5的阶乘。

#include <stdio.h>
int fun(int n);
int fun(int n)
{
static int f = 1;
f = f * n;
return f;
}
int main()
{
int i;
for (i = 1; i <= 5; i++)
{
     printf("%d!=%d ", i, fun(i));
}return 0;
}

img

例4.10求给定半径的圆形面积、给定半径的球形体积以及给定半径和高的圆柱体积。(有修改)

#include <stdio.h>
#include <math.h>
#define pi 3.14159
double getarea(double r);
double getvolumes(double r);
double getvolumec(double r, double h);
int main()
{
double r, h, s, v1, v2;
printf("请输入所需半径 :");
     scanf_s("%lf", &r);
     printf("请输入所需高:");
     scanf_s("%lf", &h);
     s = getarea(r);
     v1 = getvolumes(r);
     v2 = getvolumec(r, h);
     printf("s=%lf\n", s);
     printf("v1=%lf\n", v1);
     printf("v2=%lf\n", v2);
     return 0;
     }
double getarea(double r)
{
return (pi * pow(r, 2));
}
double getvolumes(double r)
{
return (pi * pow(r, 3) * 3 / 4);
}
double getvolumec(double r, double h
{
return (pi * h * pow(r, 2));
}

img

数组

例子 5.1 使用一维数组存放不多于50个学生的成绩,并计算平均值。

#include <stdio.h>
int main()
{
float score[50] = { 0 };
int num;
float sum = 0, average;
int i;
do
{
     printf("Input the number of students:");
     scanf_s("%d", &num);
} while (num <= 0 || num > 50);
printf("Input the score :");
for (i = 0; i < num; i++)
{
     scanf_s("%f", &score[i]);
     sum += score[i];
}
average = sum / num;
printf("The average is :%5.2f\n", average);
return 0;
}

img
例5.2 Fibonacci数列。有一对小兔子(一公一母),第2个月长大成大兔子,长到第3个月开始每个月就生一对小兔子(一公一母)。等这对兔子长到第3个月又开始生小兔子。假设所有的兔子都不会死,求出n个月后兔子的数目。

时间小兔子大兔子兔子总数
1101
2011
3112
4123
5235
881321
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:33:07  更:2022-09-30 00:37:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 4:01:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码