C语言系列 | 强教授课程编程题目练习

3. C语言预备知识

3.1 字符常量

题目:

熟悉 C 语言程序的字符常量输出的基本编写

源代码:

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
int main() {
   
	int a1 = 20, a2 = 345, a3 = 700, a4 = 22;
	int b1 = 56720, b2 = 9999, b3 = 20098, b4 = 2;
	int c1 = 233, c2 = 205, c3 = 1, c4 = 6666;
	int d1 = 34, d2 = 0, d3 = 23, d4 = 23006783;

	printf("%d %d %d %d\n", a1, a2, a3, a4);
	printf("%d %d %d %d\n", b1, b2, b3, b4);
	printf("%d %d %d %d\n", c1, c2, c3, c4);
	printf("%d %d %d %d\n", d1, d2, d3, d4);
	return 0;
}

运行结果:

3.2 字符常量输出(2

题目:

熟悉 C 语言程序的字符常量输出的基本编写

说明:

%-9d中,d 表示以十进制输出,9 表示最少占 9 个字符的宽度,宽度不足以空格补齐,-表示左对齐。
综合起来,%-9d表示以十进制输出,左对齐,宽度最小为 9 个字符。

源代码:

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>
int main() {
   
	int a1 = 20, a2 = 345, a3 = 700, a4 = 22;
	int b1 = 56720, b2 = 9999, b3 = 20098, b4 = 2;
	int c1 = 233, c2 = 205, c3 = 1, c4 = 6666;
	int d1 = 34, d2 = 0, d3 = 23, d4 = 23006783;

	printf("%-9d %-9d %-9d %-9d\n", a1, a2, a3, a4);
	printf("%-9d %-9d %-9d %-9d\n", b1, b2, b3, b4);
	printf("%-9d %-9d %-9d %-9d\n", c1, c2, c3, c4);
	printf("%-9d %-9d %-9d %-9d\n", d1, d2, d3, d4);
	return 0;
}

运行结果:
在这里插入图片描述

3.3 字符常量输出(3

题目:

熟悉 C 语言程序的字符常量输出的基本编写

说明:

n 的指定输出宽度为 10,234 的宽度为 3,所以前边要补上 7 个空格
f 的指定输出宽度为 12,9.800000 的宽度为 8,所以前边要补上 4 个空格
str 的指定输出宽度为 8,“http://c.biancheng.net” 的宽度为 22,超过了 8,所以指定输出 宽度不再起作用,而是按照 str 的实际宽度输出

源代码:

int main(){
   
    int n = 234;
    float f = 9.8;
    char c = '@';
    char *str = "http://c.biancheng.net";
    printf("%10d%12f%4c%8s", n, f, c, str);
    return 0;
}

运行结果:
在这里插入图片描述

3.4 字符常量输出(4

题目:

熟悉 C 语言程序的字符常量输出的基本编写

说明:

对于n,.precision 表示最小输出宽度。n 本身的宽度为 6,当 precision 为 9 时,大于 6, 要在 n 的前面补 3 个 0;当 precision 为 4 时,小于 6,不再起作用
对于f,.precision 表示输出精度。f 的小数部分有 6 位数字,当 precision 为 2 或者 4 时, 都小于 6,要按照四舍五入的原则截断小数;当 precision 为 10 时,大于 6,要在小数的 后面补四个 0
对于str,.precision 表示最大输出宽度。str 本身的宽度为 9,当 precision 为 5 时,小 于 9,要截取 str 的前 5 个字符;当 precision 为 15 时,大于 9,不再起作用

源代码:

int main() {
   
	int n = 123456;
	double f = 882.923672;
	char* str = "abcdefghi";
	printf("n: %.9d %.4d\n", n, n);
	printf("f: %.2lf %.4lf %.101f\n", f, f, f);
	printf("str: %.5s %.15s\n", str, str);
	return 0;
}

运行结果:
在这里插入图片描述

3.5 字符常量输出(5

题目:

熟悉 C 语言程序的字符常量输出的基本编写

说明:
当以%10d 输出 m 时,是右对齐,所以在 192 前面补七个空格;当以%-10d 输出 m 时, 是左对齐,所以在 192 后面补七个空格
m 是正数,以%+d 输出时要带上正号;n 是负数,以%+d 输出时要带上负号
m 是正数,以% d 输出时要在前面加空格;n 是负数,以% d 输出时要在前面加负号
%.0f 表示保留 0 位小数,也就是只输出整数部分,不输出小数部分
默认情况下,这种输 出形式是不带小数点的,但是如果有了#标志,那么就要在整数的后面“硬加上”一个小数点, 以和纯整数区分开

源代码:

int main() {
   
	int m = 192, n = -943;
	float f = 84.342;
	printf("m=%10d,m=%-10d\n", m, m);//演示 - 的用法
	printf("m=%+d,n=%+d\n", m, n);//演示 + 的用法
	printf("m = % d, n = % d\n", m, n);//演示空格的用法
	printf("f=%0.f,f=%#0.f\n", f, f);//演示#的用法
    return 0;
}

运行结果:
在这里插入图片描述

4. 顺序结构程序设计

4.1 scanf 函数的用法

题目:

熟悉 C 语言程序的scanf 函数的用法

说明:

从键盘输入 12,按下回车键,scanf() 就会读取输入数据并赋值给变量 a;本次输入结束,接着执行下一个 scanf() 函数,再从键盘输入 60,按下回车键,就会将 60 赋值 给变量 b,都是同样的道理。
第 8 行代码中,scanf() 有两个以空格分隔的%d,后面还跟 着两个变量,这要求我们一次性输入两个整数,并分别赋值给 c 和 d。
注意"%d %d"之间 是有空格的,所以输入数据时也要有空格。
对于 scanf(),输入数据的格式要和控制字符串 的格式保持一致。

源代码:

#include <stdio.h>
#include <stdlib.h>
//案例1
int main()
{
   
    int a = 0,b = 0,c = 0,d = 0;
    scanf("%d",&a);
    scanf("%d",&b);
    printf("a+b=%d\n",a+b);
    scanf("%d %d",&c,&d);
    printf("c*d=%d\n",c*d);
    return 0;
}

运行结果:
在这里插入图片描述

4.2 %p格式控制符

题目:

熟悉 C 语言程序的%P格式控制符用法

说明:

%p 是一个新的格式控制符,它表示以十六进制的形式(带小写的前缀)输出数据的地址。
如果写作%P,那么十六进制的前缀也将变成大写形式

源代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
   
    int a = 'F';
    int b = 12;
    int c = 452;
    printf("&a=%p,&b=%p,&c=%p\n",&a,&b,&c);
    return 0;
}

运行结果:
在这里插入图片描述

4.3 格式控制字符串的用法

题目:

熟悉 C 语言程序的格式控制字符串的用法

说明:

第一个 scanf() 的格式控制字符串为"%d %d",中间有一个空格,而我们却输入了 10 20, 中间有多个空格
第二个 scanf() 的格式控制字符串为"%d %d",中间有多个空格,而 我们却输入了 100 200,中间只有一个空格。这说明 scanf() 对输入数据之间的空格的处 理比较宽松,并不要求空格数严格对应,多几个少几个无所谓,只要有空格就行
第三个 scanf() 的控制字符串为"%d, %d, %d",中间以逗号分隔,所以输入的整数也要以逗号分 隔
第四个 scanf() 要求整数之间以 is bigger than 分隔。 用户每次按下回车键,程序就会认为完成了一次输入操作,scanf() 开始读取用户输入的内 容,并根据格式控制字符串从中提取有效数据,只要用户输入的内容和格式控制字符串匹配, 就能够正确提取。
本质上讲,用户输入的内容都是字符串,scanf() 完成的是从字符串中提取有效数据的过程

源代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
   
    int a,b,c;
    scanf("%d %d",&a,&b);
    printf("a+b=%d\n", a+b);

    scanf("%d %d",&a,&b);
    printf("a+b=%d\n",a+b);

    scanf("%d %d %d",&a,&b,&c);
    printf("a+b+c=%d\n",a+b+c);

    scanf("%d is bigger than %d",&a,&b);
    printf("a-b=%d\n",a-b);
    return 0;
}

运行结果:
在这里插入图片描述

4.4 变量赋值的用法

题目:

熟悉 C 语言程序的变量赋值的用法

说明:

前两个整数被正确读取后,剩下了 a10,而第三个 scanf() 要求输入两个十进制的整数,a10 无论如何也不符合要求,所以只能读取失败。

输出结果也证明了这一点,c 和 d 的值并没有被改变。

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int a = 1,b = 2,c = 3,d = 4; //修改处:给变量赋予不同的初始值
    scanf("%d",&a);
    scanf("%d",&a);
    printf("a=%d,b=%d\n",a,b);
    scanf("%d %d",&c,&d);
    printf("c=%d,d=%d\n",c,d);

    return 0;
}

运行结果:

在这里插入图片描述

4.5 scanf 函数的用法(2

题目:

熟悉 C 语言程序的变量赋值的用法

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    char letter;
    int age;
    char url[30];
    float price;

    scanf("%c",&letter);
    scanf("%d",&age);
    scanf("%s",url);
    scanf("%f",&price);

    printf("26个英文字母最后一个是 %c \n",letter);
    printf("我的网站已经成立%d年了,网站是%s,开通VIP会员的价格是 %g \n", age,url,price);

    return 0;
}

运行结果:
在这里插入图片描述

4.6 三个数找最大值

题目:

三个数找最大值

源代码:

#include <stdio.h>
#include <stdlib.h>
int max(int x,int y){
   
    int t;
    t=x>y?x:y;
    return t;
}
int main()
{
   
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    int maxs=max(a,max(b,c));
    printf("%d",maxs);
}

运行结果:
在这里插入图片描述

4.7 素数判断

题目:

素数判断

源代码:

#include <stdio.h>
int main() {
   
    int n;
    printf("请输入一个1-100之间的整数:\n");
    scanf("%d", &n);

    int m = 0;
    for (int i = 2; i < n; i++ ) {
   
        if(n % i  == 0) {
   
            m++;
        }
    }
    if (m == 0) {
   
        printf("%d是素数\n", n);
    } else {
   
        printf("%d不是素数\n", n);
    }
    return 0;
}

运行结果:
在这里插入图片描述

4.8 编程输出如图所示的三角形

题目:

编程输出如图所示的三角形

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int a,b;
    for(a=0;a<4;++a){
   
    for(b=0;b<=a;++b){
   
        printf("☆");
    }
        printf("\n");

    }
    return 0;
}

运行结果:
在这里插入图片描述

4.9 求圆面积和圆周长,给定圆半径值为5

题目:

编程求圆面积和圆周长 给定圆半径值为 5

(1)定义浮点型变量使用关键字 double

(2)浮点型数据输出的格式控制符是 %lf

(3)C 语言中没有∏这个符号,编写程序时直 接使用 3.14159

(4)C 语言中没有求次方的运算符,半径的平 方需用乘号(r*r)
在这里插入图片描述
源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    double radius;//半径
    double area;//面积
    double perimeter;//周长

    printf("圆半径: ");
    scanf("%lf",&radius);
    //printf("圆半径: %lf \n",&radius);
    area = 3.14159 *(radius*radius);
    printf("圆面积: %lf \n",area);
    perimeter = 2 * 3.14159 * radius;
    printf("圆周长: %lf \n",perimeter);
    return 0;
}

运行结果:
在这里插入图片描述

5. 顺序结构程序设计

5.1 printf( )函数的编程练习

题目:

编程输出如图所示的三角形

源代码:

#include <stdio.h>
#include <stdlib.h>
//printf实现五角星
int main()
{
   
    printf("*\n");
    printf("**\n");
    printf("***\n");
    printf("****\n");
    return 0;
}

运行结果:
在这里插入图片描述

5.2 scanf( )函数编程练习、练习除号的使用规则(1

题目:

编写一个摄氏温度与华氏温度之间的转换程序, 转换公式是:F=9/5C+32

该公式中的“C”是一个从键盘输入的已知量; “F”是通过公式计算并打印出来的未知量。

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    float c,f;
    printf("请输入一个摄氏温度值:");
    scanf("%f",&c);
    f=(9.0/5.0*c)+32.0;
    printf("对应的华氏温度是:%f\n",f);
    return 0;
}

运行结果:
在这里插入图片描述

5.3 scanf( )函数编程练习、练习除号的使用规则(2

题目:

编写程序,从键盘上输入两个电阻值,求它们并联电阻值和串联电阻值,输 出结果保留两位小数

提示:

并联电阻 RP = R1*R2/R1+R2

串联电阻 RS = R1+R2

(1)scanf( )函数可以写成 scanf("%d,%d", &r1, &r2);

(2)结果保留两位小数的格式说明符是“%.2lf”。

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int r1,r2;
    double rp,rs;

    printf("请输入两个电阻值:");
    scanf("%d,%d",&r1,&r2);

    rp=1.0/(1.0/r1+1.0/r2);
    rs=r1+r2;

    printf("并联电阻值:%.2lf\n",rp);
    printf("串联电阻值:%.2lf",rs);
    return 0;
}

运行结果:
在这里插入图片描述

5.4 scanf( )函数编程练习、练习除号的使用规则(3

题目:

从键盘输入两个两位的正整数,按照以下格式组装成一个四位的正整数。例如:输入12和34,组装成的四位数是1324。

提示:

(1)首先利用“除号”和“求余号”分别把两个两位正 整数的十位数、个位数分离开;再经过数学运算组装成一个四位数。

(2)scanf( )函数可以写成 scanf("%d%d", &a, &b);

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int a,b,c,d,e,f,j,h;
    printf("请输入两个两位的正整数:");
    scanf("%d%d",&a,&b);
    //个
    c=a%10;
    d=b%10;
    //十
    e=a/10;
    f=b/10;

    j=c*10+d;
    h=e*10+f;
    printf("组合成的四位正整数是:%d%d\n",h,j);
    return 0;
}

运行结果:
在这里插入图片描述

5.5 字符的输入和输出(1

题目:

使用以下指定的方法编写程序,打印如图所示图形。

提示:

使用 printf 函数的“%c”格式打印该图形。
用“%c”打印字符时,一个“%c”只能打印一个字符。

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    char a,b,c,d;
    a='a';
    b='b';
    c='c';
    d='d';

    printf("%c\n",a);
    printf("%c",b);
    printf("%c\n",b);
    printf("%c",c);
    printf("%c",c);
    printf("%c\n",c);
    printf("%c",d);
    printf("%c",d);
    printf("%c",d);
    printf("%c\n",d);

    return 0;
}

运行结果:
在这里插入图片描述

5.6 字符的输入和输出(2

题目:

从键盘输入3个数字字符,将它们分别转换为对应的整数值 (即字符’0’转换为整数0,字符’1’转换为整数1,依次类推),然后求3个整数的 平均值。

提示:

本题的变量定义可参考如下:

char a, b, c; //变量a,b,c保存输入的3个数字字符

int x, y, z; //变量x,y,z保存转换后的3个整数

double aver; //变量aver保存求出的平均值

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    char a,b,c;
    int x,y,z;
    double aver;
    printf("请输入3个数字字符:");
    scanf("%c%c%c",&a,&b,&c);

    x=a-48;
    y=b-48;
    z=c-48;

    aver=(x+y+z)/3.0;

    printf("平均值 = %2lf",aver);
    return 0;
}

运行结果:
在这里插入图片描述

5.7 数学函数的使用

题目:

输入三角形的三条边长,求三角形的面积。

提示:

(1)本题的变量定义可参考如下: int a, b, c; double x, s;

(2)scanf( )函数可以写成 scanf("%d,%d,%d", &a, &b, &c);

(3)计算三角形面积的公式是:
s = x ∗ ( x − a ) ∗ ( x − b ) ∗ ( x − c ) 其 中 x = 1 2 ∗ ( a + b + c ) s = \sqrt{x*(x - a)*(x - b)*(x - c)}其中 x = \frac{1}{2}*(a + b + c) s=x(xa)(xb)(xc) x=21(a+b+c)
(4)求 x 的开方值的库函数是 sqrt(x),使用时需包含头文件 math.h

源代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
   
    int a,b,c;
    double x,s;
    printf("请输入三角形的三边:");
    scanf("%d,%d,%d",&a,&b,&c);

    x=1.0/2.0*(a+b+c);
    s=sqrt(x*(x-a)*(x-b)*(x-c));
    printf("三角形面积为:%lf",s);
    return 0;
}

运行结果:
在这里插入图片描述

6. 选择结构程序设计

6.1 单分支 if 语句编程练习

题目:

从键盘任意输入 3 个整数,选出其中的最大数并打印。

提示:

(1) 要判断最大数,需对每两个数作两两比较。

(2) 可以使用 3 个单分支 if 语句编写程序。

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int a,b,c;
    printf("请输入3个整数:");
    scanf("%d,%d,%d",&a,&b,&c);
    if(a>b&&c<a)
        printf("最大数是:%d",a);
    if(b>c&&b>a)
        printf("最大数是:%d",b);
    if(c>a&&c>b)
        printf("最大数是:%d",c);
    return 0;
}

运行结果:
在这里插入图片描述

6.2 双分支 if 语句编程练习

题目:

从键盘输入三个正整数,判断否能构成三角形的三边?

如果能,就按照以下 提示的数学公式计算三角形的面积;如果不能,就输出“不能构成三角形”的 提示信息。

提示:

(1) 该题属于“双分支 if-else 语句”结构。

(2) 能构成三角形的逻辑条件是:任意的两边之和均要大于第三边。

(3) 计算三角形面积的公式是:
s = x ∗ ( x − a ) ∗ ( x − b ) ∗ ( x − c ) 其 中 x = 1 2 ∗ ( a + b + c ) s = \sqrt{x*(x - a)*(x - b)*(x - c)}其中 x = \frac{1}{2}*(a + b + c) s=x(xa)(xb)(xc) x=21(a+b+c)
(4)本题的变量定义可参考如下:int a, b, c; double x, s;

(5)本题要用到求开方值的数学库函数 sqrt( ),需包含头文件 math.h

​ 例如:写成 sqrt(x) 即能够求出 x 的开方值。

源代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
   
    int a,b,c;
    double x,s;
    printf("请输入三个整数:");
    scanf("%d,%d,%d",&a,&b,&c);
    if(a+b>c&&a+c>b&&b+c>a){
   
    x=1.0/2.0*(a+b+c);
    s=sqrt(x*(x-a)*(x-b)*(x-c));
    printf("三角形面积为:%lf",s);
    }else{
   
    printf("不能构成三角形");
}
    return 0;
}

运行结果:
在这里插入图片描述

6.3 多分支 if 语句编程练习

题目:

从键盘输入一个合法的算术运算符(+、-、*、/)及两个实数,使用 if 语句 编写程序,根据输入的运算符判断对这两个实数进行何种运算,并打印运算结果(要求结果保留两位小数)。

提示:

(1)该题属于“多分支 if 语句”结构。

(2)运算符是字符,存放运算符的变量是 char 型,scanf( )输入时应使用%c。

(3)本题的变量定义可参考如下:char fu; double x, y, z;

(4)但是不允许使用 switch 语句编写该题程序。

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    char fu;
    double x,y,z;

    printf("请输入1个算术运算符和2个浮点数:");
    scanf("%c,%lf,%lf",&fu,&x,&y);
    if(fu=='+'){
   
        z=x+y;
        printf("%lf + %lf = %lf",x,y,z);
    }else if(fu=='-'){
   
        z=x-y;
        printf("%lf - %lf = %lf",x,y,z);
    }else if(fu=='*'){
   
        z=x*y;
        printf("%lf * %lf = %lf",x,y,z);
    }
    else if(fu=='/'){
   
        z=x/y;
        printf("%lf / %lf = %lf",x,y,z);
    }else{
   
        printf("运算符非法,无法参与运算");
    }
    //printf("%c\n",fu);
    //printf("%lf和%lf",x,y);
    return 0;
}

运行结果:
在这里插入图片描述

6.4 if 语句的嵌套结构编程练习

题目:

从键盘输入3个正整数,判断否能构成三角形的三边?

如果能,判断是构成 哪一种三角形(正三角形,还是等腰三角形,还是直角三角形,还是普通三角形);

如果不能,就输出“不能构成三角形”的提示信息。

提示:

(1)该题属于“if 语句的嵌套”结构。

(2)外层 if 语句是双分支结构,判断能否构成三角形(能构成三角形的逻辑条 件是:任意两边之和均要大于第三边)。

(3)内层 if 语句是多分支结构,第一步判断等边三角形,第二步判断等腰三角形,第三步判断直角三角形,最后是普通三角形。

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int a,b,c;
    printf("请输入三个整数:");
    scanf("%d,%d,%d",&a,&b,&c);

    if(a+b>c&&a+c>b&&b+c>a){
   
    if(a==b&&b==c){
   
    printf("能构成等边三角形");
    }else if(a==b&&b!=c){
   
    printf("能构成等腰三角形");
    }else if(a<b&&b<c){
   
    printf("能构成直角三角形");
    }else{
   
    printf("能构成普通三角形");
    }
    }else{
   
    printf("不能构成三角形");
}
    return 0;
}

运行结果:
在这里插入图片描述

6.5 switch 语句编程练习

题目:

输入一个年份和一个月份,使用 switch 语句编程判断并打印该月的天数。

提示:

(1)本题先使用if语句判断输入月份的有效性,如果月份有效,再使用switch 语句判断月份对应的天数。

(2)为简化题目难度,本题不对年份作有效性判断,默认输入的是一个有效年 份。只对月份作有效性判断,当输入月份无效时,要给出提示信息。 (3)对于2月份的处理需要判断闰年,闰年的判断参考教材P62例3.8。

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int year,month;
    printf("请输入一个年份和一个月份:");
    scanf("%d,%d",&year,&month);
    if(month<13){
   
        switch(month){
   
        case 1:
            printf("%d年%月有31天",year,month);break;
        case 2:
            if((year%4==0&&year%100!=0)||(year%400==0)){
   
            printf("%d年%月有29天",year,month);
            }else{
   
            printf("%d年%月有28天",year,month);break;
            }
        case 3:
            printf("%d年%月有31天",year,month);break;
        case 4:
            printf("%d年%月有30天",year,month);break;
        case 5:
            printf("%d年%月有31天",year,month);break;
        case 6:
            printf("%d年%月有30天",year,month);break;
        case 7:
            printf("%d年%月有31天",year,month);break;
        case 8:
            printf("%d年%月有31天",year,month);break;
        case 9:
            printf("%d年%月有30天",year,month);break;
        case 10:
            printf("%d年%月有31天",year,month);break;
        case 11:
            printf("%d年%月有30天",year,month);break;
        case 12:
            printf("%d年%月有31天",year,month);break;
        }

    }else{
   
    printf("输入的月份为非法值\n");
    }
    return 0;
}

运行结果:
在这里插入图片描述

7. 循环结构程序设计

7.1 while语句编程练习

题目:

使用 while 语句编程计算 “1+2+3+4+ … +100 ”

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int i = 1,sum = 0;
    while(i<=100)
{
   
    sum=sum + i;
    i++;
}
    printf("1+2+3+4...+100=%d\n",sum);
    return 0;
}

运行结果:

在这里插入图片描述

7.2 while语句编程练习(2

题目:

从键盘输入一行字符(以回车作为输入结束标志),统计输入字符 的个数。(使用 while 语句)

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int i;
    char c;
    i=0;
    printf("键盘输入一行字符:");
    c=getchar();
    while(c!='\n'){
   
        c=getchar();
        i++;
    }
    printf("%d",i);
    return 0;
}

运行结果:
在这里插入图片描述

7.3 do-while语句编程练习(1

题目:

使用 do-while 语句编程计算 “1+2+3+4+ … +100 ”

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int i=1,sum=0;
    do{
   
        sum = sum+i;
        i++;
    }while(i<=100);
    printf("1+2+3+4...+100=%d\n",sum);
    return 0;
}

运行结果:
在这里插入图片描述

7.5 while语句编程练习(3

题目:

根据以下公式求∏ 的值,当某项小于 0.0005 时停止迭代。
在这里插入图片描述
源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    double s=1;
    float pi,sum=0,t=1,n=1;
    while(fabs(s)>=1e-6){
   
        pi+=s;
        t=n/(2*n+1);
        s*=t;
        n++;
    }
    pi=pi*2;
    printf("pi=%lf",pi);
    return 0;
}

运行结果:
在这里插入图片描述

7.6 for语句编程练习(1

题目:

编程求斐波拉契数列的前 20 项。

(斐波拉契数列的第 1、2 项分别 为 0、1,以后各项的值都是前两项之和)

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int f1=0,f2=1,f3;
    int i;
    printf("%d\t%d",f1,f2);
    for(i=3;i<=20;i++){
   
        f3=f1+f2;
        printf("%d\t",f3);
        f1=f2;
        f2=f3;
    }
    return 0;
}

运行结果:
在这里插入图片描述

7.7 for语句编程练习(2

题目:

编程求所有的水仙花数。(所谓水仙花数是指一个三位数,其各位 数字的立法和等于该数本身。例如:153 是水仙花数,因为 153=13+53+33)

源代码:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
   
    int ge,shi,bai,i,sum;
    for(i=100;i<1000;i++){
   
        ge=i%10;
        shi=i%100/10;
        bai=i/100;
        sum=pow(ge,3)+pow(shi,3)+pow(bai,3);
        if(i==sum){
   
            printf("%d\t",i);

        }
    }
    return 0;
}

运行结果:
在这里插入图片描述

7.8 while语句编程练习(4

题目:

使用 while 语句编程求 100 以内能被 5 整除但不能同时被 7 整除的数,并统 计找到的数的个数。

提示:

(1)该题变量可定义为:int i, sum=0;

(2)整除问题使用求余号“%”。

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    int i,sum=0;
    printf("100以内能被5整除但不能同时被7整除的数是:\n");
    i=1;
    while(i<101){
   
        if(i%5==0&&i%7!=0){
   
            printf("%d\t",i);
            sum++;
        }

        i++;
    }
    printf("\n符合条件的数有%d个",sum);
    return 0;
}

运行结果:
在这里插入图片描述

7.9 while语句编程练习(5

题目:

使用 while 语句编程计算π的近似值,公式如下,直到最后一项的绝对值小 于
E = 1 0 − 6 E=10^-6 E=106
为止。
π 4 ≈ 1 − 1 3 + 1 5 − 1 7 + . . . . . \frac {π}{4}≈1-\frac {1}{3}+\frac {1}{5}-\frac {1}{7}+..... 4π131+5171+.....
提示:

(1) 本题变量可定义为 double zi, mu, t, sum; // zi, mu, t 分别用来保存分子、分母、当前项 请同学自己思考这些变量的初值各为多少?

(2) 本题需用到求绝对值的库函数 fabs( ),并包含头文件 math.h

(3) 本题的循环体里有 4 个通式:

①分子的通式、②分母的通式、③当前项 的通式、④求和的通式

(4)可以将 +1、-1、+1、-1 …… 依次看作每一项的分子。

源代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   
    float pi,sum=0,t=1,n=1;
    int sign=1;
    while(fabs(t)>=1e-6){
   
       sum+=t;
       n+=2;
       sign*=-1;
       t=sign/n;
    }
    pi=sum*4;
    printf("pai的近似值=%lf",pi);
    return 0;
}

运行结果:
在这里插入图片描述

7.10 while语句编程练习(6

题目:

使用 while 语句编程求以下表达式的值,直到某一项的值小于 10 -6就结束循环,即
E = 1 0 − 6 E=10^-6 E=106
若 x=2.5,函数值 f(x)为:12.182493。
f ( x ) = 1 + x + x 2 2 ! + . . . . . + x n n ! f(x)=1+x+\frac {x^2}{2!}+.....+\frac {x^n}{n!} f(x)=1+x+2x2+....

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值