00342第四章 结构化程序设计 思考题和练习题(C语言)

本文主要是介绍00342第四章 结构化程序设计 思考题和练习题(C语言),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、单项选择题

1. 若从键盘输入字符串"HOW ARE YOU?",可以直接使用库函数【】。

        A. scanf        B. getstr        C. gets        D. 都不能直接使用

2. C语言的库函数中,可以输出double型变量值的是【】。

        A. getchar        B. scanf        C. putchar        D. printf

3. 设 int a; ,语句 for(a=0;a==0;a++); 和语句 for(a=0;a=0;a++); 执行的循环次数分别是【】。

        A. 0,0        B. 0,1        C. 1,0        D. 1,1

4. if(表达式) 和 while(表达式)中的“表达式”是【】。

        A. 只能是逻辑的        B. 只能是关系的       

        C. 只能是算术的        D. 以上三种都可以

5. continue 语句不能用于的语句是【】。

        A. switch        B. for        C. do-while        D. while

6. 下列关于 for 语句说法不正确的是【】。

        A. 可以省略“表达式1”和“表达式3”,而只有“表达式2”不能省略        

        B. 可以省略全部的3个表达式       

        C. 若“表达式2”省略,则循环将会无终止地进行        

        D. 全部的3个表达式必须是与循环控制变量有关的表达式

7. 以下程序段中执行循环的次数是【】。

x=-2;
do
{ x=x*x; }
while(!x);

        A. 无限次        B. 4        C. 1        D. 0

8. 设 char x,y;  ,scanf("x=%c,y=%c",x,y); 后使 x 为 'X', y为 'Y',则键盘上的正确输入是【】。

        A. x='X'y='Y'        B. x='X',y='Y'        C. x=X,y=Y        D. x=X y=Y

9. 下列关于do-while 循环的说法不正确的是【】。

        A. do-while 的循环体至少执行一次        

        B. do-while循环由 do 开始,用 while 结束,在 while(表达式)后面不能加分号        

        C. 在 do-while 循环体中,一定要有能使 while 后面表达式的值变为零(假)的操作        

        D. do-while 的循环体可以是复合语句

10. 为了避免二义性,C语言规定 else 子句总是与【】匹配。

        A. 同一行上的if        B. 缩进位置相同的if        

        C. 其之前最近的if        D. 其之后最近的if

11. 语句 while(!a); 中的表达式 !a 可以替换为【】。

        A. a!=1        B. a!=0        C. a==0        D. a==1

二、填空题

1. C语言中,语句的最后一定要有的一个符号是___。

2. 格式输入函数中,“%f”用于输入___型的数据,“%lf”用于输入___型的数据;格式输出函数中,“%f”用于输出___型和___型的数据。

3. 格式输入/输出函数中,用于输入/输出单个字符的格式字符是___,用于输入/输出字符串的格式字符的格式字符是___。

4. 设 double a=3.1415926; ,则执行语句printf("%.4f\n",a); 后的输出结果是___。

5. C语言中,实现单分支选择结构的是___语句,实现双分支选择结构的是___语句,实现多分支选择结构的是___语句或___语句。

6. 循环结构通常分为___循环结构、___循环结构和___循环结构三种。

7. C语言中,break 语句的功能是___,continue 语句的功能是___。

8. while 和 do-while 循环的主要区别是___。

9.设 int i; ,则执行语句 for(i=0;i++<4;);  后变量 i 的值是___。

10. 设 int x,y; ,则执行以下 for 循环中的 scanf 语句最多可执行的次数是___。

for(x=0,y=0;y!=123&&x<3;x++)  scanf("%d",&y)

三、程序分析题

1. 阅读下列程序,写出程序运行的输出结果。

#include <stdio.h>
int main(void)
{int x=8;do{printf("*");x--;x--;}while(x==0);return 0;
}

2. 阅读下列程序,写出程序运行的输出结果。

#include <stdio.h>
int main(void)
{int s=0, i;for(i=1;;i++){if(s>50) break;if(i%2==0) s+=i;}printf("i=%d,s=%d\n",i,s);return 0;
}

3. 阅读下列程序,写出程序运行的输出结果。

#include <stdio.h>
int main(void)
{int a=3, b=2, c=1, d;switch(a=b==c+1){case 1:d=1;break;case 2:d=2;break;case 3:d=3;break;default:d=4;}printf("d=%d\n",d);return 0;
}

4. 阅读下列程序,写出程序运行的输出结果。

#include <stdio.h>
int main(void)
{int x=3, y=16;while(y-->0){y-=x;x++;}printf("x=%d,y=%d\n",x,y);return 0;
}

5. 阅读下列程序,写出程序运行的输出结果。

#include <stdio.h>
int main(void)
{int i=1,s=3;do{s+=i++;if(s%7==0) continue;else ++i;}while(s<15);printf("%d",i);return 0;
}

6. 阅读下列程序,写出程序运行的输出结果。

#include <stdio.h>
int main(void)
{int x,y=4;for(x=1;x<=100;x++){if(y>=30) break;if(y%3==1){y=y+3;continue;}y=y-2;}printf("%d\n",x);return 0;
}

四、程序填充题

1. 判断输入的整数能否被11和13同时整除,若能则输出“yes”,否则输出“no”。

#include<stdio.h>
int main(void)
{int num;scanf("%d",&num);if(_______)printf("yes\n");__________printf("no\n");return 0;
}

2. 从键盘输入年份,判断其是否是闰年。

#include<stdio.h>
int main(void)
{int year, yes=0;scanf("%d",&year);if(year%400==0) yes=1;else    if(____________)  yes=1;else __________;if(yes)    printf("%d is ",year);else    printf("%d is not ",year);printf(" a leap year.\n");return 0;
}

3. 统计输入字符串中字母的个数。

#include<stdio.h>
int main(void)
{int count=0;char ch;while((ch=getchar())!=_______){if(__________)count++;}printf("%d\n",count);return 0;
}

4. 输入圆的半径 r 和运算标志 m ,按照运算标志进行指定的计算。

运算标志 m运算
a面积
b周长
c二者均计算
#include<stdio.h>
int main(void)
{char m;float r,c,a,pi=3.14159;printf("input mark a,c or b and r: ");scanf("%c %f",&m,&r);if(_________) { a=pi*r*r;    printf("area is %f",a); }if(_________) { c=2*pi*r;    printf("circle is %f",c); }if(_________) { a=pi*r*r; c=2*pi*r;   printf("area and circle are %f%f",a,c); }return 0;
}

5. 从键盘输入一串英文字母(以换行符为结束标志),分别统计其中个元音字母(不区分大小写)出现的次数并输出(元音字母包括a、A、e、E、i、I、o、O、u、U)。

#include<stdio.h>
int main(void)
{int a=0, e=0, i=0, o=0, u=0;char ch;while((ch=getchar())!='\n')switch(_______){case 'a':case 'A':a++; _______;case 'e':case 'E':e++; break;case 'i':case 'I':i++; break;case 'o':case 'O':o++; break;case 'u':case 'U':u++;}printf("(a,A)=%d,(e,E)=%d,(i,I)=%d,(o,O)=%d,(u,U)=%d",a,e,i,o,u);return 0;
}

6. 求1000以内的所有完全数(一个数如果恰好等于除自身外其他因子之和,则称该数为完全数,例如6=1+2+3,6为完全数)。

#include<stdio.h>
int main(void)
{int a,i,m;for(a=1;a<=1000;a++){m=0;for(_____;i<=a/2;i++)if(!(a%i))____________;if(m==a)    printf("%4d",a);}return 0;
}

五、程序设计题

1. 编写程序,输出以下图形(要求使用循环结构)

&&&&&&&&&

  &&&&&&&

    &&&&&

      &&&

        &

2. 从键盘输入三个整数,分别代表年、月和日,输出这一天是该年的第几天。

3. 从键盘任意输入三条边 a 、b 和 c (均为整型)的值,若能构成三角形则计算并输出其面积 s;否则,输出“NO”。面积 s 的计算公式如下:

                       ​​​​​​​        \left\{\begin{matrix}t=\frac{a+b+c}{2} \\ s=\sqrt{t(t-a)(t-b)(t-c)} \end{matrix}\right.

4. 若袋中有2044个小球,第一次取出一半多两个,以后每次取出剩下的一半多两个,问几次取完。

5. 水仙花数是一指一个 n 位的正整数(n\geqslant 3),其各位上的数字的 n 次幂之和等于它本身, 如371=3^{3}+7^{3}+1^{3}。求出100~999所有的水仙花数并输出。

6. 利用公式计算e=1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\frac{1}{4!}+...的值,直到公式中最后一项的值小于10^{-6}为止。

答案:(未完)

一、单项选择题

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

二、填空题

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

三、程序分析题

1.

2.

3.

4.

5.

6.

四、程序填空题

1.

2.

3.

4.

5.

6.

五、程序设计题

1.

2.

3.

4.

5.

6.

这篇关于00342第四章 结构化程序设计 思考题和练习题(C语言)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/857739

相关文章

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Go语言使用select监听多个channel的示例详解

《Go语言使用select监听多个channel的示例详解》本文将聚焦Go并发中的一个强力工具,select,这篇文章将通过实际案例学习如何优雅地监听多个Channel,实现多任务处理、超时控制和非阻... 目录一、前言:为什么要使用select二、实战目标三、案例代码:监听两个任务结果和超时四、运行示例五

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示