1.3编程题

1.试参考本章例题编写计算梯形面积的C语言程序,梯形的上底、下底和高分别用a、b、h表示,并用a=10,b=20,h=5测试所编写的程序。

#include <stdio.h>
int main(void) {     int a = 10, b = 20, h = 5;     printf("梯形的面积是:%d\n", (a + b) * h / 2);return 0;
}

2.编写程序显示如图所示的信息

3.4 编程题

1.编写程序实现从键盘输入两个十进制整型数据10和8给变量x和y,并按下列格式输出。
                                        x       y
                    十进制数        10      8
                    八进制数        12      10
                    十六进制数      A       8

#include <stdio.h>
int main()
{int x, y;scanf("%d%d", &x, &y);printf("\t\tx\ty\n");printf("十进制数\t%d\t%d\n", x, y);printf("八进制数\t%o\t%o\n", x, y);printf("十六进制数\t%X\t%X\n", x, y);return 0;
}

2.编写一个程序,输入一个大写英文字符(‘B’~‘Y’),输出它的前导字符、该字符本身及其后续字符。

 #include <stdio.h>int main(){char ch;printf("请输入一个大写英文字母");scanf("%c", &ch);printf("大写英文字母是%c\n", ch);printf("它的前导字符是%c\n", ch-1);printf("它的后导字符是%c\n", ch+1);return 0;
}

3.编写一个程序,输入一个3位正整数,要求反向输出对应的整数,如输入123,则输出321。编写程序并给出相应的程序流程图

#include <stdio.h>
int main()
{int n, a, b, c, ans;printf("请输入一个三位整数:\n");scanf("%d", &n);a = n / 100;b = (n - a * 100) / 10;c = n % 10;ans = c * 100 + b * 10 + a;printf("反向输出该整数:\n%d\n", ans);return 0;
}

4.某工种按小时计算工资,每月的劳动时间乘上每小时工资,再从总工资中扣除10%公积金,剩余的为应发工资。编写一个程序从键盘输入劳动时间和每小时工资,打印出应发工资数额。

#include <stdio.h>
int main()
{int m;double t, sum;scanf("%d%lf", &m, &t);sum = 0.9 * m * t;printf("%lf\n", sum);return 0;
}

5.编写程序,读入3个整数给变量a, b, c,然后交换它们的值,把a原来的值给b,把b原来的值给c,把c原来的值给a。

#include <stdio.h>
int main()
{int a, b, c, t;printf("请输入三个整数:\n");scanf("%d%d%d", &a, &b, &c);printf("交换前a=%d,b=%d,c=%d\n", a, b, c);t = a;a = c;c = b;b = t;printf("交换后a=%d,b=%d,c=%d\n", a, b, c);return 0;
}

4.4 编程题

1.输入3个实型数值a、b、c,如果能用它们作为三角形的3条边形成一个三角形,则输出三角形的面积,并画出实现该算法的N-S流程图并编程实现

#include <stdio.h>
#include <math.h>
int main()
{float a, b, c, area;scanf("%f,%f,%f", &a, &b, &c);if (a+b>c && a+c>b && b+c>a){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("%f", area);}return 0;
}

2.输入整数x、y,若x2+y2>1000,则输出x2+y2百位以上的数字,否则输出两数之和。

#include <stdio.h>
int main()
{int x, y;scanf("%d,%d", &x, &y);if (x*x + y*y > 1000)printf("%d\n", (x*x + y*y)/100);else printf("%d\n", x+y);return 0;
}

3.对任意输入的x,用下式计算并输出y的值。

#include <stdio.h>
#include <math.h>
int main()
{float x, y;scanf("%f", &x);if (x < 2)y= x * x - sin(x);else if (x <= 2)y = pow(2, x) + 1;else y = sqrt(x * x + x + 1);printf("%f\n", y);return 0;
}

4. 编写程序输入一个5位整数,判断它是不是回文数。回文数是指一个数从右到左和从左到右的对应数码相同,如12321是回文数,个位与万位相同,十位与千位相同。

#include <stdio.h>
int main()
{long ge, shi, qian, wan, x;scanf("%ld", &x);wan = x / 10000;qian = x % 10000 / 1000;shi = x % 100 / 10;ge = x % 10;if (ge == wan && shi == qian) // 个位等于万位并且十位等于千位printf("这个数是回文数\n")else printf("这个数不是回文数\n");return 0;
}

5.编写程序用于计算某运输公司的运费。设每公里每吨货物的基本运费为p,货物重量为w,路程为s(单位为km),折扣为d,总费用计算公式为:f=p*w*s*(1-d)。
运费计算标准见表4.5。
表4.5  某运输公司运费计算标准

s<250

不  打  折

250<=s<500

折扣2%

500<=s<1000

折扣5%

1000<=s<2000

折扣8%

2000<=s<3000

折扣10%

s>3000

折扣15%

#include <stdio.h>
int main()
{float p, w, s, d, f;scanf("%f,%f,%f", p, s, w);if (s > 3000)d = 0.15;else if (s >= 2000)d = 0.1;else if (s >= 1000)d = 0.08;else if (s >= 500)d = 0.05;else if (s >= 250)d = 0.02;else d = 0;f = p * w * s * (1-d);printf("%f", f);return 0;
}

6.编写程序实现产品保修额的计算。如果本公司的产品,则使用期在1年(含1年)以内,免收保修额;使用期在1年以上并且在8年以下(含8年),收取保修额50元;使用期在8年以上,收取保修额10元。如果不是本公司的产品,则一律收取保修额200元。根据用户输入的信息,计算保修额。
编程提示:是否是本公司产品的选项值(字符型)和使用年数(整型)由用户从键盘输入,然后系统开始判断。
输入输出样例:
是否是本公司产品(y/n):y
产品使用的年限:6
产品保修额是:50元

#include <stdio.h>
int main()
{int year, money;char x;printf("是否是本公司产品(y/n):");scanf("%c", &x);if (x == 'y' || 'Y');{printf("产品使用的年限:");scanf("%d", &year);if (year <= 1)money = 0;else if (year < 8)money = 50;else money = 100;printf("产品保修额是:%d\n", money);}return 0;
}

7.编写程序实现银行ATM自动取款机的功能,取款机内只有100元和50元两种面值,要求支取金额都在2000(包含2000)元以内。该取款机将用户输入的金额按照人民币从大到小的面值进行折合计算。先算出最大可以出多少100元,剩下的再计算最多可以出多少50元。例如,用户要取款650元,则取款机应付出的钱的种类及个数为:6个100元、1个50元。如果用户输入的钱数不是50的倍数,显示“输入钱数必须是50的倍数”。
输入输出样例:
请输入取款额(≤2000):750
需支付100元:7张
需支付50元:1张
请输入取款额(≤2000):530
输入钱数必须是50的倍数!

#include <stdio.h>
int main()
{int money, num1, num2;printf("请输入取款额(≤2000):");scanf("%d", &money);if (money > 2000)printf("请输入取款额数≤2000!\n");else if (money % 50 == 0){num1 = money / 100;num2 = (money - num1*100) / 50;printf("需支付100元:%d张\n", num1);printf("需支付50元:%d张\n", num2);}else pritnf("输入钱数必须是50的倍数!\n");return 0;
}

5.4 编程题

1.用3种循环语句编写程序实现下列算式:
(1)1+2x2+3x3+…+100x100
(2)e=1/1!+1/2!+...+1/n!+...,当最后一项的值小于10-6时为止。

(1)
#include <stdio.h>
int main()
{int i;long s = 0;for (i = 1; i <= 100; i++)s += i*i;printf("%ld", s);
}(2)
#include <stdio.h>
int main()
{int i = 1; long p = 1;float s = 0;do{s += 1.0/p;p *= ++i;} while (1.0 / p > 1e-6)printf("%f", s);return 0;
}

2.编写程序求两个正整数的最大公约数。

#include <stdio.h>
int main()
{int a, b, m, n, t;scanf("%d,%d", &m, &n);if (m < n){t = m;m = n;n = t;}a = m;b = n;t = m % n;while (t){m = n;n = t;t = m % n;}printf("%d,%d", n, a*b/n);return 0;
}

3.编写程序求一个整数的任意次方的最后3位数,即求xy的最后3位数。

#include <stdio.h>
int main()
{int x, y, s = 1;scanf("%d,%d", &x, &y);for ( ; y > 0; y--)s *= x;printf("%d,%d,%d\n", s%10, s/10%10, s/100%10);return 0;
}

4.百鸡问题。用100元钱买100只鸡,其中,公鸡每只5元,母鸡每只3元,小鸡每3只1元。编写程序输出各种买法。

#include <stdio.h>
int main()
{int x, y, z;for (x = 1; x < 20; x++)for (y = 1; y < 33; y++){z = 100 - x - y;if (z >= 0 && (5 * x + 3 * y + z /3) - 100 < 1e -5)printf("x=%d,y=%d,z=%d\n", x, y, z);}return 0;
}

5.编写程序分别打印如下图形:

(a)
#include <stdio.h>
int main()
{int j, k;for (j = 1; j <= 4; j++){for (k = 1; k <= 4-j; j++)printf(" ");printf("****");printf("\n");}return 0;
}(b)
#include <stdio.h>
int main()
{itn j, k;for (j = 1; j <= 4; j++){for (k = 1; k <= 2*j-1; k++)printf("*");printf("\n");}return 0;
}

6.请编写程序求100~999之间所有的水仙花数。水仙花数的含义是指这样的一个3位数,其各位数字的立方和等于该数本身。例如,371=33+73+13,所以371是一个水仙花数。

#include <stdio.h>
int main()
{int i, j, k, n;printf("'water flower' number is:");for (n = 100; n < 1000; n++){i = n/100; //分解出百位j = n/10%0; //分解出十位k = n%10; //分解出个位if (i*100 + j*10 + k == i*i*i + j*j*j + k*k*k)printf("%-5d", n);}pritnf("\n");return 0;
}

7.学校有近千名学生,在操场上排队,5人一行余2人,7人一行3人,3人一行余1人,编写一个程序求该校的学生人数。

#include <stdio.h>
int main()
{int x;for (x = 1000; x >= 3; x--)if (x % 3 == 1 && x % 5 == 2 && x % 7 == 3){printf("该校的学生人数是:%d人\n", x);break;}return 0;
}

8.小明今年12岁,他的母亲比他大20岁,他母亲在几年后将比他的年龄大一倍,编写一个程序计算出那时他们的年龄各多少?

#include <stdio.h>
int main()
{int x = 12, i = 1;while (1){if ((x + 20 + i) == 2 * (x + i))break;i++;}printf("小明母亲在%d年后比小明的年龄大一倍\n", i)printf("那时小明年龄是:%d岁,小明母亲年龄是:%d岁\n", x+i, x+20+i);return 0;
}

6.3 编程题

1.编写程序计算下列公式中的f值,使用带参数的宏来实现

#include <stdio.h>
#define F(a) a*a+sqrt(3*a*a+2*a+1)
int main()
{float x, f;scanf("%f", &x);f = 4.5/F(exp(x))+F(cos(x))+F(sqrt(x))/F(x*x);printf("%f\n", f);return 0;
}

7.4 编程题

1.设数组a中的元素都为正整数,编程求其中偶数的和及奇数的和。

#include <stdio.h>
#define N 10
int main()
{int a[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, osum = 0, qsum = 0, j;for (j = 0; j < 10; j++)if ((j%2))qsum += a[j];elseosum += a[j];printf("osum=%d, qsum=%d\n", osum, qsum);return 0;
}

2.有一个已排好序的数组,输入一个数,要求按原来排序的规律将它插入数组中,插入后数组仍然有序,请编程实现。

#include <stdio.h>
#define N 10
int main()
{int a[N] = {10, 20, 30, 40, 50, 60, 70, 80, 90}, j, k, x;scanf("%d", &x);for (j = 0; j < N; j++)if (x < a[j])break;for (k = N-1; k > j; k--)a[k] = a[k-1];a[j] = x;for (j = 0; j < N; j++)printf("%d ", a[j]);return 0;
}

3.编一个程序检查二维数组是否对称(即对所有的i和j,都有a[i][j]=a[j][i])。

#include <stdio.h>
#define M 3
int main()
{int a[M][M] = {{1,2,3},{2,4,5},{3,5,6}}, j, k, flag = 1;for (j = 0; j < M; j++)for (k = 0; k < M; k++)if (a[j][k] != a[k][j]){flag = 0;break;}if (flag)printf("ok");elseprintf("no");return 0;
}

4.编程比较两个字符串的大小(不用strcmp( )函数)。

#include <stdio.h>
#include <string.h>
int main()
{char c1[100], c2[100], j;gets(c1);gets(c2);for (j = 0; (c1[j]==c2[j])&&c1[j]&&c2[j]; j++);if (c1[j] > c2[j])printf("1\n");if (c1[j] < c2[j])printf("-1\n");if (c1[j] == c2[j])printf("0\n");return 0;
}

5.有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格及其他字符的个数。

8.4 编程题

1.按以下要求编写一个程序。定义3个变量用于存放输入的3个整数,另定义3个指向整型变量的指针变量,并利用它们实现将输入的3个整数按由小到大的顺序输出。

#include <stdio.h>
int main()
{  int n1, n2, n3, t;int *p1, *p2, *p3;printf("please input 3 number: n1, n2, n3:\n");scanf("%d%d%d", &n1, &n2, &n3);p1 = &n1;p2 = &n2;p3 = &n3;if(*p1 > *p2) { t = *p1; *p1 = *p2; *p2 = t; }if(*p1 > *p3) { t = *p1; *p1 = *p3; *p3 = t; }if(*p2 > *p3) { t = *p2; *p2 = *p3; *p3 = t; }printf("the sorted numbers are: %d %d %d\n", n1, n2, n3);return 0;
}

2.编程用指针实现将从键盘输入的N个数逆序输出。

 #include <stdio.h>#define N 3int main(){int a[N], *p = a;for( ; p-a<N; p++)scanf("%d", p);p = a + N - 1;for( ; p - a >= 0; p--)printf("%d ", *p);return 0;
}

3.编程用指针实现输入10个整数,将其中最小的数与第1个数对换,把最大的数与最后一个数对换。

#include <stdio.h>
int main()
{void input(int *);void output(int *);void chuli(int *);int a[10];input(a);chuli(a);output(a);return 0;
}
void input(int *a)
{int j;for (j = 0; j < 10; j++)scanf("%d", a + j);}
void chuli(int *a)
{int j, minl = 0, maxl = 0;for (j = 0; j < 10; j++){if (a[maxl] < *(a+j))  maxl = j;if (a[minl] > *(a+j))  minl = j;}j = a[0];a[0] = a[minl];a[minl] = j;j = a[9];a[9] = a[maxl];a[maxl] = j;
}
void output(int *a)
{int j;for (j = 0; j < 10; j++)printf("%4d\n", *(a + j));
}

4.按下列要求输入和输出下列数据阵列,编程用指针实现。

输入阵列如下:1   2   3   4

 5   6   7   8

9   10  11  12

输出阵列如下:12  11  10  9

8   7   6   5

4   3   2   1

#include <stdio.h>
#define M 3
#define N 4
int main()
{int a[M][N] = {1,2,3,4,5,6,7,8,9,10,11,12}, k, j, *p = *a, t;for (k = 0, j = M*N-1; k < j; k++, j--){t = *(p+k);*(p+k) = *(p+j);*(p+j) = t;}for (k = 0; k < M ;k++){for (j = 0; j < N; j++)printf("%4d ", a[k][j]);printf("\n");}return 0;
}

5.编程用指针实现求一个字符串的长度(相当于strlen函数的功能)。

#include <stdio.h>
int main()
{int len, length(p);char *str[20];printf("please input a string:\n");scanf("%s", str);len = length(str);printf("the string has %d characters.\n",len);
}
int length(p)
char *p;
{int n = 0;while (*p != '\0'){n++;p++;}return n;
}

6.用指针数组操作将输入的5个字符串按由小到大的顺序输出。

#include "string.h"
#include "stdio.h"
int main()
{char *str1[5], ch[5][20], k, t, j, *c;void sort(char **);for (k = 0; k < 5; k++){str1[k] = ch[k];gets(str1[k]);}for (k = 0; k < 7; k++){t = k;for (j = k + 1; j < 5; j++)if (strcmp(*(str1+t), *(str1+j))>0)t = j;c = *(str1+t);*(str1+t) = *(str1+k);*(str1+k) = c;}for (k = 0; k < 5; k++)puts(str1[k]);return 0;
}

9.4编程题

1.编写一个函数把字符串的小写字母转成大写字母,其他字符不变。

void exchange() {char ch;while (!(ch = getchar()) != \n) {if (ch >= 'a' && ch <= 'z') {ch = ch -32;putchar(ch); }}
}

2.编写一个函数求e=1+1/1!+1/2!+1/3!+...+1/n!+...。

double expp(int n) {int fac = 1;double sum = 1;for (int k = 1; k <= n; k++) {fac *= k;sum += 1.0/fac;}return sum;
}

3.编写一个函数求一个整数的任意次方的最后3位数,即求x的y次方的最后3位数。

int xy3(int x, int y) {int k, num = 1;for (int k = 1; k <= y; k++) {num *= x;}num %= 1000;return num;
}

4.有5个人坐在一起,第5个人说他比第4个人大10岁,请编程求出第5个人多大。

int age(int n) {int c;if (n == 1) {c = 10;} else {c = age(n - 1) + 2;}return c;
}

5.编写函数,得到两个整数相除的商和余数。要求通过指针在函数间传递商和余数这两个数据。

#include <stdio.h>
void fun(int a, int b, int *c, int *d) {if (b) {*c = a / b;*d = a % b;}
}
int main(void) {int a, b, c, d;scanf("%d%d", &a, &b);fun(a, b, &c, &d);printf("%d %d", c, d);return 0;
}

6.编写一个程序,运行时输出命令行参数的个数及参数名。

#include <stdio.h>
int main(int argc, char *argv[]) {printf("argc = %d\n", argc);for (int k = 1; k < argc; k++) {printf("%s\n", argv[k]);}
}

《C语言程序教程》课后编程题相关推荐

  1. c语言程序填空改错题,C语言模拟改错填空编程题.doc

    C语言模拟改错填空编程题.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...

  2. c语言程序设计教程课后选择题答案,C语言程序设计教程课后习题包括答案.docx...

    C + + 语言程序设计教程课后习题答案 ( 2 0 1 1 - 0 3 - 0 9 1 7 : 2 4 : 2 2 ) 标签:杂谈分类:学习 第1 章 C++ 语言概述 练习题 1 判断题 ×1. ...

  3. 国二c语言改错题答案,c语言国二考试编程题答案

    <c语言国二考试编程题答案>由会员分享,可在线阅读,更多相关<c语言国二考试编程题答案(65页珍藏版)>请在人人文库网上搜索. 1.1m个人的成绩存放在score数组中,请编写 ...

  4. Python快速编程入门 第2版 实训案例及课后编程题

    目录 本文档仅供参考,更新了 第2章 第3章 第4章 第5章 第6章 第7章 本文档仅供参考,更新了6.7章 第2章 2.4.1打印购物小票 蚂蚁森林是支付宝客户端发起"碳账户"的 ...

  5. c语言输入若干数输出最小值循环结构,C语言循环结构程序设计编程题

    <C语言循环结构程序设计编程题>由会员分享,可在线阅读,更多相关<C语言循环结构程序设计编程题(3页珍藏版)>请在人人文库网上搜索. 1.实验3循环结构程序设计.实验目的:1 ...

  6. c语言程序处理数据的基本步骤是,c语言程序教程.doc

    c语言程序教程 c语言程序教程 本文由tyr1235831贡献 ppt文档可能在WAP端浏览体验不佳.建议您优先选择TXT,或下载源文件到本机查看. C语言程序设计 语言程序设计 2008版 版 1 ...

  7. 面向对象程序设计——Java语言 第3周编程题 查找里程(10分)

    面向对象程序设计--Java语言 第3周编程题 查找里程(10分) 题目内容 下图为国内主要城市之间的公路里程: 你的程序要读入这样的一张表,然后,根据输入的两个城市的名称,给出这两个城市之间的里程. ...

  8. python语言程序设计2019版第二章课后答案-python语言程序设计基础课后答案第二章...

    python语言程序设计基础课后答案第二章 以下合法的用户自定义标识符是____________. 导入模块或者模块中的元素要使用关键字________ . 下列哪个函数是用来控制画笔的尺寸的____ ...

  9. 【C Primer Plus第二章课后编程题】

    [C Primer Plus第二章课后编程题] 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.1 #include <stdio.h> int main (void) ...

最新文章

  1. ICLR 2020 | 如何解决图像分类中的类别不均衡问题?不妨试试分开学习表征和分类器...
  2. DataGrid中选择列文本根据绑定数据不同显示为不同颜色的处理办法
  3. 计算机专硕没有宿舍,没有补贴,不提供宿舍,读研究生还要家里支持,应届生读非全太难...
  4. 中国大学MOOC 人工智能导论第七章测试
  5. cin函数的一点理解
  6. ios中base64编码
  7. Linux-Android 修改屏蔽长按键功能
  8. AWS Messaging Services:选择合适的服务
  9. python多重赋值技巧_python教程12课:多元赋值、多重赋值、运算符以及判断字符串类型...
  10. Java命令:jstat — 查看JVM的GC信息
  11. LVS学习笔记之三种模式的特点概括
  12. leetcode —— 979. 在二叉树中分配硬币
  13. sql 拼接同列的值
  14. Vmware+Virtualbox+Ubuntu+debian+USB转串口+kermit
  15. Linux从入门到入土①(Linux概述、文件系统、VIM编辑器)
  16. 通俗易懂——5G调制方式全面解读
  17. Ubuntu配置显卡驱动
  18. termux内网穿透-ngrok
  19. 显卡+cuda+cudnn+tensorflow安装教程
  20. 【Latex】高级插入图片技巧: 双栏中如何正确插入图片 + 如何多图

热门文章

  1. 详解BlockingQueue
  2. mysql to_days() 逆向函数_mysql的 TO_DAYS() 函数应用实例
  3. ntoskrnl.exe损坏或丢失的解决方案
  4. (一)走进Linux世界(安装Centos8,初始化生产环境,GNU bash)
  5. vim autoformat php,vim - 如何在VI中整理HTML文件的缩进?
  6. zjs-my-diary-0220118
  7. 互联网的金门大桥:Cisco
  8. 如何快速制作微信朋友圈方图?
  9. RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling `cublas‘
  10. 我的名字居然是我爸爸用代码算出来的?