出于需要,最近研究C/C++.简单熟悉一下这个让我遗忘多年的语言。作为学习,在这里记录。同时对比C与C++的差别。
C的代码:
#include <stdio.h>
#include <stdlib.h>
/**
* 定义一个结构体
*/
struct Location {
int x; // 横坐标
int y; // 纵坐标
} location;
int main(void) {
printf("输入X坐标:\t\n");
int x;
scanf("%d", &x);
location.x = x;
printf("输入Y坐标:\t\n");
int y;
scanf("%d", &y);
location.y = y;
printf("X坐标是:\t%d\n", location.x);
printf("Y坐标是:\t%d\n", location.y);
// 做倒三角打印
int i;
for (i = 0; i < y; i++) {
printf("%d\t", i + 1);
int j;
for (j = i; j < x; j++) {
printf("* ");
}
printf("\n");
}
return EXIT_SUCCESS;
}
这里使用了结构体Location,并生成了一个实例location.通过scanf向x、y输入数字。以location.x = x;方式将数值赋值给结构体location的变量x.由此可以看出结构体就是现在面向对象的基础,尤其是数据对象的前身。
我们希望打印操作能够独立出来,成为一个函数,可以这么写:
// 声明函数
void print(int x, int y);
c是面向过程的计算机语言,要在主函数内调用其他函数,必须要在主函数前声明函数,要么就直接把函数按照调用次序逆次由上到下排序。即便是面向对象的C++,也是如此。
/**
* 倒三角打印
*/
void print(int x, int y) {
int i;
for (i = 0; i < y; i++) {
printf("%d\t", i + 1);
int j;
for (j = i; j < x; j++) {
printf("* ");
}
printf("\n");
}
/**
* 倒三角打印
*/
void print(int x, int y) {
int i;
for (i = 0; i < y; i++) {
printf("%d\t", i + 1);
int j;
for (j = i; j < x; j++) {
printf("* ");
}
printf("\n");
}
整体代码如下:
#include <stdio.h>
#include <stdlib.h>
/**
* 定义一个结构体
*/
struct Location {
int x; // 横坐标
int y; // 纵坐标
} location;
// 声明函数
void print(int x, int y);
int main(void) {
printf("输入X坐标:\t\n");
int x;
scanf("%d", &x);
location.x = x;
printf("输入Y坐标:\t\n");
int y;
scanf("%d", &y);
location.y = y;
printf("X坐标是:\t%d\n", location.x);
printf("Y坐标是:\t%d\n", location.y);
// 做倒三角打印
print(x, y);
return EXIT_SUCCESS;
}
/**
* 倒三角打印
*/
void print(int x, int y) {
int i;
for (i = 0; i < y; i++) {
printf("%d\t", i + 1);
int j;
for (j = i; j < x; j++) {
printf("* ");
}
printf("\n");
}
}
|