C Primer Plus 第6版 第7章 编程练习

简介: C Primer Plus 第6版 第7章 编程练习

1.读写输入,读到#停止,然后报告读到的 空格 、换行、其他字符数量。

#include<stdio.h>
int main()
{
  char ch = 0;
  int space = 0;
  int line_change = 0;
  int other = 0;
  printf("输入一串字符,#结束\n");
  while ((ch = getchar()) != '#')
  {
    if (ch == ' ')
      space++;
    else if (ch == '\n')
      line_change++;
    else
      other++;
  }
  printf("空格:%d个, 换行:%d个 其他字符:%d个 ", space, line_change, other);
  getchar(); getchar();
  return 0;
}

2.读写输入,读到#停止。 然后打印字符 及其对应的ASCII码(8个一行)

#include<stdio.h>
int main()
{
  char ch = 0;
  int i = 0;
  printf("输入一串字符,#结束\n");
  while ((ch = getchar()) != '#')
  {
 
    printf("%c:%d ", ch, ch);
    i++;
    if (i % 8 == 0)
      printf("\n");
  }
  
  getchar(); getchar();
  return 0;
}

3.读取整数直至0.报告偶数的个数,平均值,奇数的个数,平均值。

#include<stdio.h>
int main()
{
 
  int num;
  int o = 0;
  int sum_o = 0;
  int j = 0;
  int sum_j = 0;
  while (scanf_s("%d", &num) && num != 0)
  {
    if (num % 2 == 0)
    {
      o++;
      sum_o += num;
    }
    else
    {
      j++;
      sum_j += num;
    }
  }
  printf("偶数共%d个,平均值%lf\n", o, 1.0*sum_o / o);
  printf("奇数共%d个,平均值%lf\n", j, 1.0*sum_j / j);
  getchar(); getchar();
  return 0;
}

4.读取直至#,用!替代。 !! 替代!

然后报告替代的次数。

#include<stdio.h>
int main()
{
  char ch;
  int i = 0, j = 0;
 
  while ((ch = getchar()) != '#')
  {
    if (ch == '.')
    {
      putchar('!');
      i++;
    }
    else if (ch == '!')
    {
      putchar('!');
      putchar('!');
      j++;
    }
    else
      putchar(ch);
  }
 
  printf("\n.替换成!:%d次",i);
  printf("\n!替换成!!:%d次",j);
  getchar(); getchar();
  return 0;
}

5. 使用switch 改写4. 略。

6.读取输入直到#,报告ei出现的次数

#include<stdio.h>
int main()
{
  char ch1 = 0, ch2=0;
  int time_ei = 0;
  ch1 = getchar();
  while (ch1 != '#')
  {
    ch2 = ch1;
    ch1 = getchar();
    if (ch1 == 'i')
    {
      if (ch2 == 'e')
        time_ei++;
    }
  }
 
  printf("ei出现了%d次", time_ei);
  getchar(); getchar();
  return 0;
}

7,8 略

9.输入正整数,显示小于等于它的素数。

#include<stdio.h>
#include<math.h>
int judge_prime(int n)
{
  int i;
  double k;
  k = sqrt(n);
  for (i = 2; i <= k; i++)
  {
  if (n%i == 0) break;
  }
   if (i <= k) 
     return 0;
  else 
     return 1;
}
int main()
{
 
  int num;
  while (scanf_s("%d", &num) && num > 0)
  {
    printf("<= %d的素数有:", num);
    for (int i = 2; i <= num; i++)
      if (judge_prime(i))
        printf("%d ", i);
    printf("\n");
  }
  getchar(); getchar();
  return 0;
}
相关文章
sublime和vscode 推荐安装的插件
sublime和vscode 推荐安装的插件
498 0
|
JSON JavaScript 搜索推荐
Github 精选 #4 | 让 Github 帮你自动压缩图片!
Github 精选 #4 | 让 Github 帮你自动压缩图片!
Github 精选 #4 | 让 Github 帮你自动压缩图片!
|
自然语言处理 JavaScript 前端开发
Vue3 + Vite + TypeScript + Element-Plus:从零到一构建企业级后台管理系统(前后端开源)(1)
Vue3 + Vite + TypeScript + Element-Plus:从零到一构建企业级后台管理系统(前后端开源)(1)
|
机器学习/深度学习 人工智能 分布式计算
人工智能与大数据的融合应用##
随着科技的快速发展,人工智能(AI)和大数据技术已经深刻地改变了我们的生活。本文将探讨人工智能与大数据的基本概念、发展历程及其在多个领域的融合应用。同时,还将讨论这些技术所带来的优势与挑战,并展望未来的发展趋势。希望通过这篇文章,读者能够对人工智能与大数据有更深入的理解,并思考其对未来社会的影响。 ##
|
存储 关系型数据库 MySQL
MySQL存储引擎详述:InnoDB为何胜出?
MySQL 是最流行的开源关系型数据库之一,其存储引擎设计是其高效灵活的关键。InnoDB 作为默认存储引擎,支持事务、行级锁和外键约束,适用于高并发读写和数据完整性要求高的场景;而 MyISAM 不支持事务,适合读密集且对事务要求不高的应用。根据不同需求选择合适的存储引擎至关重要,官方推荐大多数场景使用 InnoDB。
828 7
|
监控
观察者效应
观察者效应
1823 2
|
Android开发
ImageView设置tint ,修改图标颜色
ImageView设置tint ,修改图标颜色
|
运维 Linux 网络安全
利用群晖NAS+shell脚本实现运维命令执行结果文件自动上传
利用群晖NAS+shell脚本实现运维命令执行结果文件自动上传
1405 0
|
芯片
深入理解AMBA总线(一)APB总线入门(上)
深入理解AMBA总线(一)APB总线入门
1989 0
|
SQL 数据库 Perl
PL/SQL中执行按钮变为灰色后如何恢复【已解决】
PL/SQL中执行按钮变为灰色后如何恢复【已解决】
1387 0