文章目录
20201015-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises02
程序设计:根据要求设计出相应的程序并将程序上传至服务器,系统将在约定的时间内对考生上传的程序进行自动评分。单击此处下载系统提供的专用检查程序,以在需要时辅助考生检查程序的编制是否符合要求——某些题已提供部分代码并禁止用户修改已有内容,并对考生新加代码的行数及行长有限制。
成信大-C语言程序设计上机作业-参考
20201学期《C语言程序设计B》C-trainingExercises02
P134
题解和分析
/*
编写一程序P134.C实现以下功能
通过键盘输入一串(约定为10个字符),输出每个字符对应的ASCII码值(十进制)。
编程可用素材:printf("\n请输入10个字符:")、printf("\n加密结果为:…。
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
请输入10个字符:Very Good!
加密结果为:86, 101, 114, 121, 32, 71, 111, 111, 100, 33
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
char ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10;
printf("请输入10个字符:");
scanf("%c%c%c%c%c%c%c%c%c%c", &ch1, &ch2, &ch3, &ch4, &ch5, &ch6, &ch7, &ch8, &ch9, &ch10);
// 未加密,直接输出,也就是原样输出
// printf("\n加密结果为:%c, %c, %c, %c, %c, %c, %c, %c, %c, %c\n",
// ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10);
// 加密,用数值,也就是ASCII码值输出【人看不懂时,就是加密】
printf("\n加密结果为:%d, %d, %d, %d, %d, %d, %d, %d, %d, %d\n",
ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10);
return 0;
}
/*
分析:
1. 由于是初学,建议直接使用多个变量来解决问题,而实际到了后面,学习了数组以后,我们会用数组的方式来组织多个同类型的数据;
2. 加密和解密是相对人的认知而言的,人能直接识别的信息,可以称为明文,不能直接识别的,就是密文,把明文变成密文的过程,就是加密;先可以这么理解。这里的所谓加密,本质上就是用另一种解码格式来输出。即
字符----ASCII值【也就是整数形式,但理解上是编码】
对机器而言,都一样,最终都是二进制0101的数据
3. 反复强调,scanf是从键盘扫入数据,存到内存中,而这里的内存的位置,就是使用“取地址符&"来完成的
4. 输出时,就只是把内存的数据读出来输出,用某种格式输出即可
*/
P710
题解和分析
/*
编写一程序P710.C实现以下功能
输入一个小写英文字母,首先输出它及其ASCII码,然后输出其对应的大写字母及其ASCII码。
编程可用素材:printf("Input a lowercase letter: ")、printf("\n…(…)…。
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
Input a lowercase letter: y
y(121)
Y(89)
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
char ch;
printf("Input a lowercase letter: ");
scanf("%c", &ch);
printf("\n%c(%d)", ch, ch);
printf("\n%c(%d)", ch - 32, ch - 32);
return 0;
}
/*
分析:
知识点1:学习者对ASCII码表的熟悉程序,大小写之间相差32,编码时,小写在后,大写在前,所以
小写转大写:-32 即可
大写转小写:+32 即可
知识点2:
printf输出格式串里,有普通字符,原样输出;有格式字符,即%d,%c等,这个相当于是占位,供这后的相应的对位参数在此输出
最终的输出接果,是一个代入并拼接完成的结果,仍然是一个大的字符串
*/
P733
题解和分析
/*
编写一程序P733.C实现以下功能
从键盘读入一个任意字符,输出该字符ASCII的十六进制值。
编程可用素材:printf("Input a character: ")、printf("\nAscii('…') = 0x…\n"…。
程序的运行效果应类似地如图1所示,图中的红色部分是从键盘输入的内容。
Input a character: b
Ascii('b') = 0x62
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
char ch;
printf("Input a character: ");
scanf("%c", &ch);
printf("\nAscii('%c') = 0x%x\n", ch, ch);
return 0;
}
/*
分析:
知识点:
1. 十六进制数,一般以0x打头,注意这个格式,在输出中先拼接上
2. C语言中,任意整数,都可以以三种形式输出
%i 或 %d 即十进制
%o 即八进制
%x 即十六进制
3. 字符的本质是ASCII码值,这个值就是一个整数,取值范围是0-127
输入和输出字符时,使用%c占位
*/
P259
题解和分析
/*
编写一程序P259.C实现以下功能
先从键盘读入7个数据(依次为3整数、2字符、2实数),然后按示例格式倒序输出这7个数据。
编程可用素材:printf("请输入7个数据(依次为3整数、2字符、2实数): ")、printf("\n这7个数据倒序为: ")。
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
请输入7个数据(依次为3整数、2字符、2实数): 81 192 35 x m 6127.123763 152.351192
这7个数据倒序为: 7-152.35119 6-6127.12376 5-m 4-x 3-35 2-192 1-81
注意事项:
1.输入scanf里,有空间间隔,否则,键盘缓冲会让字符部分输入不正确
2.正常情况下,默认输入的实数数据被认为是double实数
所以,编程时,一般不用float型,直接使用double型
*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int data1, data2, data3;
char ch1, ch2;
double fdata1, fdata2;
printf("请输入7个数据(依次为3整数、2字符、2实数): ");
scanf("%d %d %d %c %c %lf %lf",
&data1, &data2, &data3, &ch1, &ch2, &fdata1, &fdata2);
printf("\n这7个数据倒序为: 7-%.5lf 6-%.5lf 5-%c 4-%c 3-%d 2-%d 1-%d\n",
fdata2, fdata1, ch2, ch1, data3, data2, data1);
return 0;
}
/*
分析
1. 常见的数据输入格式
%c 字符
%d 整数
%ld 长整数
%f float浮点数
%lf double浮点数
2. 要求慢慢熟悉输入和输出,即
printf("格式化串",参数列表);
scanf("格式化串",参数列表);
*/
P711
题解和分析
/*
编写一程序P711.C实现以下功能
用scanf输入圆半径r,圆柱高h,求圆周长C1(=2πr)、圆面积S(=πr2)、圆柱体积V(=πr2h)。
(注意:本题中规定圆周率取值为3.14)
编程可用素材:printf("Input: ")、printf("\nC1 = … S = … V =…。
程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。
Input: r=1.3, h=5
C1 = 8.16
S = 5.31
V = 26.53
知识点:
1. 变量名定义:见名知意
2. 使用float类型,因数一定有小数
3. 自定义常量,使用宏定义替换
4. 输出时,两位小数【自动有四舍五入的精度保留】
5. 输出节细,注意空行空格
*/
#include <stdio.h>
#define PI 3.14
int main(int argc, char *argv[])
{
double radius, height;
double circle, area, cube;
printf("Input: ");
scanf("r=%lf, h=%lf", &radius, &height);
// 圆周长C1(=2πr)、圆面积S(=πr2)、圆柱体积V(=πr2h)
circle = 2.0 * PI * radius;
area = PI * radius * radius;
cube = area * height;
printf("\nC1 = %.2lf", circle);
printf("\n S = %.2lf", area);
printf("\n V = %.2lf", cube);
return 0;
}
/**
分析
1. 本程序已经明确地看到了一个典型的顺序结构:输入,处理,输出,即IPO(input,process,output),以后的学习,很多时候需要自己来写这串完整的顺序结构
2. 常用的典型算法,要能用C的表达式来表达出来
强调:
数学上的表达式,和这里C的表达式不一样。
数学上为了美,为了简洁,会省略一些符号,同学们不能先入主为地也跟着省略
这些符号,在C中,其实是操作符,编译过后是有代码的,不能省略,省略了就会有语法错误
*/