c语言答案(6)

2019-08-03 12:39

blank = digit = letter = other = 0;

while(c != '\\n'){

if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') letter++;

else if(c >= '0' && c <= '9') digit++;

else if(c == ' ') blank++; else

other++;

c = getchar();

}

printf(\lank, digit, other); return 0; }

第55/106页

2. 输入一行字符,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。 解答: #include int main(void) {

char c;

int count, word; c = getchar(); count = word = 0; while(c != '\\n'){ if(c == ' ') word=0;

else if(word == 0){

count++; word = 1; }

c = getchar(); }

printf(\return 0; }

3. 程序模拟简单运算器的工作:输入一个算式(没有空格),遇等号\说明输入结束,输出结果。假设计算器只能进行加、减、乘、除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。例如,输入“1+2*10-10/2=”后,输出10。 解答: #include int main(void) {

char op;

int operand1, operand2, res; scanf(\op = getchar();

while(op != '='){

scanf(\switch(op){

case '+': res = operand1 + operand2; break; case '-': res = operand1 - operand2; break; case '*': res = operand1 * operand2; break; case '/': res = operand1 / operand2; break; default: res = 0; }

operand1 = res;

第56/106页

op = getchar(); }

printf(\return 0; }

4. 验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。例如6=3+3,8=3+5,?,18=5+13。将6~100之间的偶数都表示成两个素数之和,打印时一行打印5组。 解答:

#include \#include \int main(void) {

int count, i, number; int prime(int m); count = 0;

for(number =6; number <= 100; number = number + 2){

for(i = 3; i <= number/2; i = i + 2) if(prime(i) && prime(number - i)){

printf(\count++;

if(count % 5 == 0) printf(\break; } }

return 0; }

int prime(int m) {

int k, i;

if(m == 1) return 0; k = sqrt(m);

for(i = 2; i <= k; i++) if(m % i == 0) return 0; return 1; }

6.4实验指导教材参考答案

一、调试示例

改正下列程序中的错误。根据下式求?的值,直到某一项小于10-6。(源程序error06_1.cpp)

第57/106页

7.3练习与习题参考答案 7.3.1练习参考答案

练习7-1 编写程序,输入一个正整数n (1<n≤10),再输入n个整数,输出平均值(保留2位小数)。 解答:

#include int main(void) {

int i, n, sum; float aver; int a[10];

printf(\

scanf(\

printf(\for(i=0; i

for(i=0; i

printf(\return 0;

}

练习7-2 编写程序,输入一个正整数n (1<n≤10) ,再输入n个整数,按逆序输出这些数。 解答: #include int main(void) {

第58/106页

int i, n, temp; int a[10];

printf(\scanf(\

printf(\for(i=0; i

a[i]=a[n-1-i]; a[n-1-i]=temp; }

printf(\for(i=0; i

练习7-3 将例7-3程序中的break语句去掉,输出结果有变化吗?假设输入数据不变,输出什么?

解答:

当去掉break语句后,一旦找到数据将不跳出循环,而是继续往下找值为x的元素,因此程序输出会有变化。当输入数据仍为2 9 8 1 9时,输出将是index is 4。

练习7-4 编写程序,输入一个正整数n (1<n≤10),再输入n个整数,先输出最大值及其下标(设最大值唯一,下标从0开始),再将最大值与最后一个数交换,并输出交换后的n个数。 解答:

#include int main(void) {

int i, index, n, t; int a[10];

scanf(\for(i=0; i

for(i=1; i a[index]) index=i;

printf(“Max is %d , index is %d \\n”,a[index],index); t=a[n-1];

a[n-1]=a[index]; a[index]=t;

printf(\printf(\

练习7-5 给二维数组赋值时,如果把列下标作为外循环的循环变量,行下标作为内循环的循环变量,输入的数据在二维数组中如何存放?用下列for语句替换例7-7中的对应语句,将输入的6个数存入二维数组中,假设输入数据不变,输出什么?与例7-7中的输出结果一样吗?为什么?

for( j=0;j<2;j++) for( i=0;i<3;i++) scanf(“%d”,&a[i][j]); 解答: 当把列下标作为外循环的循环变量,行下标作为内循环的循环变量时,输入的数据将以列优先的方式存放。当用上述for循环方式时,输出结果为:max=a[2][0]=10,与原例7-7不一样,因为当用上述方式输入是,二维数组中存放值如下: 3 -9 2 6 10 -1

练习7-6 在例7-9的程序中,如果将遍历上三角矩阵改为遍历下三角矩阵,需要怎样修改程序?运行结果有变化吗?如果改为遍历整个矩阵,需要怎样修改程序?输出是什么?为什么? 解答:


c语言答案(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011华师汉硕语言学基础

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: