最近要复习一下C和C++的基础知识,于是计划把之前学过的谭浩强的《C程序设计》和《C++程序设计》习题重新做一遍。
编译环境为:操作系统32位Win7,编译工具VC++6.0
第一章:C程序概述
1.5)输出一段文字
输出一段给定的文字,做法很简单,用printf函数即可
#include<stdio.h>
void main()
{
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf(" Very Good!\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
}
另一种方法是用循环输入星号和空格,不过看上去比上段代码麻烦很多
#include<stdio.h>
void main()
{
int i;
//打印第一行的星号
for(i = 0; i < 30; i++)
{
printf("*");
if(i != 29)
{
printf(" ");
}
else
{
printf("\n");
}
}
//打印第二行前方空格
for(i = 0; i < 24; i++)
{
printf(" ");
}
//打印第二行文字
printf("Very Good!\n");
//打印第三行的星号
for(i = 0; i < 30; i++)
{
printf("*");
if(i != 29)
{
printf(" ");
}
else
{
printf("\n");
}
}
}
1.6)输入三个数a、b、c,输出它们的最大值
#include<stdio.h>
void main()
{
int a, b, c, max;
//输入三个数
printf("Please Enter a, b, c: ");
scanf("%d%d%d", &a, &b, &c);
//输出其中最大者
max = a > b ? a : b;
max = max > c ? max : c;
printf("Max: %d\n", max);
}
第二章:算法
本章没有编程题,故略。
第三章:数据类型、运算符与表达式
3.6)写出下列程序的运行结果
#include<stdio.h>
void main()
{
char c1 = 'a', c2 = 'b', c3 = 'c', c4 = '\101', c5 = '\116';
printf("a%c b%c\tc%c\tabc\n", c1, c2, c3);
printf("\t \b%c %c\n", c4, c5);
}
本题主要考察了对各个转义字符的理解
C语言中的各类转义字符如下表:
字符形式 | 字符含义 | ASCII代码 |
\n | 换行,将当前位置移动到下一行开头 | 10 |
\t | 水平制表,将当前位置移动到下一个Tab位置 | 9 |
\b | 退格,将当前位置移动到前一列 | 8 |
\r | 回车,将当前位置移动到本行开头 | 13 |
\f | 换页,将当前位置移动到下页开头 | 12 |
\\ | 反斜杠\ | 92 |
\' | 单引号' | 39 |
\" | 双引号" | 34 |
\ddd | 1到3位八进制数所代表的字符 | |
\xhh | 1到2位16进制数所代表的字符 |
3.9)求算术表达式的值
#include<stdio.h>
void main()
{
int a, b;
double x, y;
//情景一
x = 2.5, a = 7, y = 4.7;
printf("Scene 1: %f\n", x + a % 3 * (int)(x + y) % 2 / 4);
//情景二
a = 2, b = 3, x = 3.5, y = 2.5;
printf("Scene 2: %f\n", (float)(a + b) / 2 + (int)x % (int)y);
}
本题主要考察了对各运算符运算优先级的理解
括号>强制类型转换>乘以、除以、模除运算>加法、减法运算
第四章:顺序程序设计
4.5)写出程序的输出结果
#include<stdio.h>
void main()
{
int a = 5, b = 7;
float x = 67.8564, y = -789.124;
char c = 'A';
long n = 1234567;
unsigned u = 65535;
printf("%d%d\n", a, b);
printf("%3d%3d\n", a, b);
printf("%f,%f\n", x, y);
printf("%-10f,%-10f\n", x, y);
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n", x, y, x, y, x, y);
printf("%e,%10.2e\n", x, y);
printf("%c,%d,%o,%x\n", c, c, c, c);
printf("%ld,%lo,%x\n", n, n, n);
printf("%u,%o,%x,%d\n", u, u, u, u);
printf("%s,%5.3s\n", "COMPUTER", "COMPUTER");
}
4.8)给出半径r和圆柱高h,求圆周长、原面积、圆球表面积、圆球体积、圆柱体积(取2位小数)
#include<stdio.h>
#define Pai 3.1416
void main()
{
double r = 1, h = 5;
printf("Please enter r and h: ");
scanf("%lf%lf", &r, &h);
printf("半径:%.2f,\t柱高:%.2f\n", r, h);
printf("圆周长:%.2f", 2.0 * Pai * r);
printf("圆面积:%.2f", Pai * r * r);
printf("圆球表面积:%.2f", 4.0 * Pai * r* r);
printf("圆球体积:%.2f", 4.0 / 3.0 * Pai * r * r* r);
printf("圆柱提及:%.2f", Pai * r * r * h);
}
4.9)给出华氏温度求摄氏温度(取2位小数)
#include<stdio.h>
void main()
{
float F;
scanf("%f",&F);
printf("c = %f\n", 5.0 / 9.0 * (F - 32));
}
END