C
入门
- 我们从接触“Hello,world!”开始,学习标准输入输出。这应该是我们大多数人的第一节编程课。希望大家在编程的道路上越走越远的同时,也不要忘记那个当初懵懵懂懂却又满怀希望的自己!
#include<stdio.h>
int main(){
printf("Hello, world!");//注意“H”,“ ”。
return 0;
}
数据类型
在之后的学习里,我们认识了C语言的成员——数据类型。看下面:
类型 针对数据
int 整数
float 单精度浮点数(带小数点)
double 双精度浮点数(带小数点)
char 字符
struct(自定义数据类型的关键字) 针对一个对象需要存储多项信息
计算机的内存是有限的,定义数据类型可以最大程度的节约内存空间。
声明: 【数据类型 变量名 】 例:int a;
变量
变量是一个内存空间,通过语句对变量中的数据进行修改,就是说,变量是操作对象。需要声明变量是哪个数据类型的。
语句
对数据进行操作,实现处理问题的方式。
1.if else ,switch case语句(选择结构,条件判断)
2.for ,while, do while语句(循环结构)
http://noi.openjudge.cn/
- 简单计算器
总时间限制: 1000ms 内存限制: 65536kB
描述
一个最简单的计算器,支持+, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。
输入
输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。
输出
输出只有一行,一个整数,为运算结果。然而:
- 如果出现除数为0的情况,则输出:Divided by zero!
- 如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!
样例输入
1 2 +
样例输出
3
提示
可以考虑使用if和switch结构。
#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int a,b;char c;
cin>>a>>b>>c;
if(c=='+' )cout<<a+b;
else if(c=='-' )cout<<a-b;
else if(c=='*' )cout<<a*b;
else if(c=='/' ){
if(b!=0) cout<<a/b;
else cout<<"Divided by zero!";}
else cout<<"Invalid operator!";
}
2.金币
总时间限制: 1000ms 内存限制: 65536kB
描述
国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六天)里,每天收到三枚金币;之后四天(第七、八、九、十天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+1枚金币(N为任意正整数)。
你需要编写一个程序,确定从第一天开始的给定天数内,骑士一共获得了多少金币。
输入
一个整数(范围1到10000),表示天数。
输出
骑士获得的金币数。
样例输入
6
样例输出
14
#include<stdio.h>
int main(){int n;int sum=0,m=0;int k=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
if(k==m) {k=0;m++;}
k++;sum+=m;
}
printf("%d",sum);
return 0;}
数据结构
数组:数据类型 变量名[ n ],n是一个常数
针对需要批量处理的同类数据
- 大整数加法
总时间限制: 1000ms 内存限制: 65536kB
描述
求两个不超过200位的非负整数的和。
输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
22222222222222222222
33333333333333333333
样例输出
55555555555555555555
#include<stdio.h>
#include<string.h>
int main(){
char a[201],b[201];
int A [201]={0},B[201]={0};
for(int i=0;i<=200;i++){
a[i]=b[i]='\0';
}
scanf("%s",a);
int len=strlen(a);
scanf("%s",b);
int len_=strlen(b);
for(int j=0,i=len-1;j<len;j++,i--){
A[j]=a[i]-'0';
}
for(int j=0,i=len_-1;j<len_;j++,i--){
B[j]=b[i]-'0';
}
len=(len>len_)?len:len_;
for(int i=0;i<len+1;i++){
A[i]=A[i]+B[i];
if(A[i]>=10)
{ A[i]-=10; B[i+1]++;}
}
int k=200;
while(A[k]==0)
{k--;if(k==0) break;}
for(int i=k;i>=0;i--)
printf("%d",A[i]);
return 0;}
函数
对语句块,程序块进行封装,实现特定功能的代码为函数。
实现将一个复杂的问题分成多个简单的问题,分别处理进行解决,用函数分别解决每一个小问题。
指针
- 声明
【基本数据类型 * 变量名 】例:int *p; int a=5; p=a;
p是指向a(int型)的指针变量。
指针指的就是地址。
指针变量是一个内存空间,有它自己的内存地址。它的值用来存储地址。
到现在,我们学的什么东东有地址呢?
变量:int 型,char 型,float 型
数组:int [], float[] []
函数: 函数有自己的起始地址。
对了,指针变量自己也有地址哦。
上面陈述的都是指针变量可以指向的西西!
我们学的东西都在综合,理解知识点之间的关系,灵活运用。比如数据类型和数组,数据类型和指针,数据类型和指针和数组(指向一维数组的指针变量),函数和指针,结构体也可以和数组,指针结合。
谢谢大家观看!