C语言 练习7~12
c语言习题集及答案
C语言习题集及答案导言C语言是一门广泛应用于系统开发和嵌入式编程的高级编程语言。
为了帮助学习者更好地掌握C语言的各个方面,提供一系列的习题集是非常有必要的。
本文档将为您提供一些常见的C语言习题,并提供相关的答案和解析。
希望本文档可以帮助您提高C语言的编程技能。
习题集1. 求阶乘编写一个C函数,输入一个正整数n,计算并返回n的阶乘。
int factorial(int n) {if (n == 0) {return1;} else {return n * factorial(n - 1);}}2. 反转字符串编写一个C函数,输入一个字符串,将字符串中的字符反转,并返回反转后的字符串。
void reverse_string(char *str) {int length = strlen(str);int i, j;char temp;for (i = 0, j = length - 1; i < j; i++, j--) {temp = str[i];str[i] = str[j];str[j] = temp;}}3. 数组排序编写一个C函数,输入一个整型数组,将数组中的元素按升序排序,并返回排序后的数组。
void sort_array(int *arr, int length) {int i, j, temp;for (i = 0; i < length - 1; i++) {for (j = 0; j < length - i - 1; j++) {if (arr[j] > arr[j + 1]) {temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}4. 查找最大元素编写一个C函数,输入一个整型数组,找到数组中的最大元素,并返回该元素的值。
int find_max(int *arr, int length) {int i;int max = arr[0];for (i = 1; i < length; i++) {if (arr[i] > max) {max = arr[i];}}return max;}答案解析1. 求阶乘递归是一种简洁的解决阶乘问题的方法。
C语言练习题(带标准答案)-绝对经典题目不看后悔
C语言练习题(带答案)-绝对经典题目不看后悔————————————————————————————————作者:————————————————————————————————日期:1单选题1.(A)是构成C语言程序的基本单位。
A、函数B、过程C、子程序D、子例程2.C语言程序从C开始执行。
A) 程序中第一条可执行语句B) 程序中第一个函数C) 程序中的main函数D) 包含文件中的第一个函数3、以下说法中正确的是(C)。
A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)。
A) C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写。
C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5.下列正确的标识符是(C)。
A.-a1B.a[i]C.a2_iD.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是(B)。
A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。
A)%x B)a+b C)a123 D)123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。
A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。
c语言程序设计课后习题及答案
c语言程序设计课后习题及答案C语言程序设计是计算机科学与技术专业的核心课程之一,它不仅教授了编程语言的基本知识,还培养了学生的逻辑思维能力和问题解决能力。
课后习题是巩固课堂学习内容的重要手段,以下是一些C语言程序设计的典型课后习题及答案。
习题1:基本数据类型编写一个程序,输入一个整数和一个浮点数,然后输出它们的和。
```c#include <stdio.h>int main() {int a;float b, sum;printf("请输入一个整数:");scanf("%d", &a);printf("请输入一个浮点数:");scanf("%f", &b);sum = a + b;printf("它们的和是:%f\n", sum);return 0;}```习题2:条件语句编写一个程序,根据输入的成绩判断学生的等级。
```c#include <stdio.h>int main() {float score;printf("请输入学生的成绩:");scanf("%f", &score);if (score >= 90) {printf("等级:A\n");} else if (score >= 80) {printf("等级:B\n");} else if (score >= 70) {printf("等级:C\n");} else if (score >= 60) {printf("等级:D\n");} else {printf("等级:F\n");}return 0;}```习题3:循环结构编写一个程序,计算1到100的整数之和。
c语言习题集及答案
c语言习题集及答案C语言习题集及答案C语言是一种广泛应用于系统软件和应用软件开发的高级语言,学习C语言对于计算机专业的学生来说至关重要。
为了帮助大家更好地掌握C语言的知识,我们整理了一套C语言习题集及答案,供大家参考和练习。
1. 请编写一个C程序,实现输入两个整数,输出它们的和。
```c#include <stdio.h>int main() {int a, b;printf("请输入两个整数:");scanf("%d %d", &a, &b);printf("它们的和为:%d\n", a + b);return 0;}```2. 编写一个C程序,实现输入一个整数,判断它是否为偶数。
```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (num % 2 == 0) {printf("%d是偶数\n", num);} else {printf("%d是奇数\n", num);}return 0;}```3. 编写一个C程序,实现输入一个字符,判断它是大写字母、小写字母还是数字。
```c#include <stdio.h>int main() {char ch;printf("请输入一个字符:");scanf("%c", &ch);if (ch >= 'A' && ch <= 'Z') {printf("%c是大写字母\n", ch);} else if (ch >= 'a' && ch <= 'z') {printf("%c是小写字母\n", ch);} else if (ch >= '0' && ch <= '9') {printf("%c是数字\n", ch);} else {printf("%c是其他字符\n", ch);}return 0;}```以上是我们整理的部分C语言习题及答案,希望能帮助大家更好地掌握C语言的知识。
c语言第7章函数练习题
4. C语言程序中,当函数调用时( )。 A. 实参和形参各占一个独立的存储单元 B. 实参和形参共用一个存储单元 C. 可以由用户指定是否共用存储单元 D. 计算机系统自动确定是否共用存储单元
fun(int x,int y,int z)
{ z=x*x+y*y;}
main()
{
int a=31;
fun(5,2,a);
printf("%d",a);
}
A.0
B.29
30.下列程序执行后的输出结果是( )。
voidfunc1(int i);
voidfunc2(int i);
charst[]="hello,friend!";
printf("%d\n",x);
}
上面程序的输出结果是( )。
A.720
B.120
C.24
39.下面程序的输出是( )。
main()
{
intt=1;
fun(fun(t));
}
fun(inth)
{
staticinta[3]={1,2,3};
intk;
for(k=0;k<3;k++) a[k]+=a[k]-h;
B. 不同函数中,可以使用相同名字的变量
C. 形式参数是局部变量
D. 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效
c语言 练习题
c语言练习题
在学习C语言编程过程中,适当的练习题目可以巩固所学的知识,
并提升对C语言的理解和应用能力。
以下是一些适用于初学者的C语
言练习题目,可以帮助您检验自己的编程水平和解决问题的能力。
练习一:输出姓名和年龄
要求:编写一个C程序,在控制台输出自己的姓名和年龄。
练习二:计算圆的面积
要求:编写一个C程序,根据用户输入的半径,计算并输出圆的面积。
练习三:计算矩形的面积和周长
要求:编写一个C程序,根据用户输入的长和宽,计算并输出矩形
的面积和周长。
练习四:判断奇偶数
要求:编写一个C程序,判断用户输入的数是奇数还是偶数,并在
控制台输出相应的结果。
练习五:计算两数之和
要求:编写一个C程序,要求用户输入两个整数,并计算它们的和,然后在控制台输出结果。
练习六:找出最大数
要求:编写一个C程序,要求用户输入三个数,然后找出其中的最大数,并在控制台输出结果。
练习七:判断闰年
要求:编写一个C程序,判断用户输入的年份是否为闰年,并在控制台显示结果。
练习八:计算阶乘
要求:编写一个C程序,要求用户输入一个正整数,然后计算并输出它的阶乘。
练习九:逆序输出字符串
要求:编写一个C程序,要求用户输入一个字符串,然后按逆序输出该字符串。
练习十:生成九九乘法表
要求:编写一个C程序,生成九九乘法表,并在控制台输出结果。
通过完成以上的C语言练习题,您可以巩固对C语言的理解,并提高编程能力。
希望这些练习题对您有所帮助,让您更好地掌握C语言编程。
继续努力学习,不断提升自己的技能!。
c语言入门练习题
C语言入门练习题一、基础知识篇1.1 变量与常量1. 定义一个整型变量并赋值为10。
2. 声明一个浮点型常量,其值为3.14。
3. 将字符型变量 'A' 赋值给另一个字符型变量。
1.2 数据类型1. 将一个整型变量转换为浮点型变量。
2. 将一个长整型变量赋值给一个短整型变量。
3. 编写一个程序,输出不同数据类型所占的字节数。
1.3 运算符1. 计算5加3乘2的结果。
2. 判断两个整型变量是否相等。
3. 使用自增运算符使变量i的值增加1。
二、控制结构篇2.1 顺序结构1. 编写一个程序,输出1到10的整数。
2. 输出用户输入的两个整数中的较大值。
3. 计算并输出圆的面积(给定半径)。
2.2 选择结构1. 判断一个整数是正数、负数还是零。
2. 根据用户输入的成绩,输出对应的等级(A、B、C、D、E)。
3. 编写一个程序,实现石头剪刀布的游戏。
2.3 循环结构1. 计算1到100所有整数的和。
2. 输出所有的水仙花数(一个三位数,其各位数字的立方和等于该数本身)。
3. 使用循环结构输出九九乘法表。
三、函数篇3.1 函数定义与调用1. 编写一个函数,计算两个整数的和。
2. 定义一个函数,实现字符串的复制。
3. 创建一个函数,判断一个数是否为素数。
3.2 递归函数1. 使用递归函数计算斐波那契数列的第n项。
2. 编写一个递归函数,实现字符串的逆序输出。
3. 利用递归函数求解汉诺塔问题。
四、数组篇4.1 一维数组1. 初始化一个包含10个整数的数组,并输出其元素。
2. 计算一维数组中所有元素的和。
3. 找出一维数组中的最大值和最小值。
4.2 二维数组1. 创建一个3行4列的二维数组,并输出其元素。
2. 计算二维数组对角线元素的和。
3. 实现矩阵的转置。
五、指针篇5.1 指针基本操作1. 声明一个整型变量和一个指向该变量的指针,并输出指针所指向的值。
2. 使用指针实现两个整数的交换。
3. 编写一个函数,通过指针参数修改传入的字符串。
c语言习题及详解答案
c语言习题及详解答案C语言是一种广泛使用的编程语言,以其结构化、可移植和高效性而著称。
以下是一些C语言的习题以及相应的详解答案。
# 习题1:求和问题编写一个C程序,输入两个整数,输出它们的和。
解答:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("这两个整数的和是:%d\n", sum);return 0;}```# 习题2:判断素数编写一个C程序,判断一个整数是否为素数。
解答:```c#include <stdio.h>#include <math.h>int isPrime(int n) {if (n <= 1) return 0;for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0) return 0;}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d 是素数。
\n", num);} else {printf("%d 不是素数。
\n", num);}return 0;}```# 习题3:字符串反转编写一个C程序,输入一个字符串,然后输出它的反转。
解答:```c#include <stdio.h>#include <string.h>void reverseString(char str[]) {int len = strlen(str);for (int i = 0; i < len / 2; i++) {char temp = str[i];str[i] = str[len - i - 1];str[len - i - 1] = temp;}}int main() {char str[100];printf("请输入一个字符串:");scanf("%s", str);reverseString(str);printf("反转后的字符串是:%s\n", str);return 0;}```# 习题4:数组排序编写一个C程序,输入一个整数数组,然后使用冒泡排序算法对其进行排序。
C语言各章节练习题(含答案)
一、C语言概述练习题选择1.一个C程序的执行是从。
A) 本程序的main函数开始,到main函数结束B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C) 本程序文件的第一个函数开始,到本程序main函数结束D) 本程序的main函数开始,到本程序文件的最后一个函数结束2.以下叙述不正确的是。
A) 一个C源程序必须包含一个main函数 B)一个C源程序可由一个或多个函数组成C) C程序的基本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面3.以下叙述正确的是。
A) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误B) 在C程序中,main函数必须位于程序的最前面C) C语言本身没有输入输出语句 D) C程序的每行中只能写一条语句4.一个C语言程序是由。
A)一个主程序和若干个子程序组成 B) 函数组成 C) 若干过程组成 D) 若干子程序组成二、数据类型、运算符与表达式选择. 1.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为。
x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 522.下列四组选项中,均不是C语言关键字的选项是。
A) define IF type B) getc char printfC) include case scanf D) while go pow3.下列四组选项中,均是不合法的用户标识符的选项是。
(C语言标识符由字母,数字,下划线组成,开头不能是数字)A) W P_0 do B) b-a goto int C) float la0 _A D) -123 abc TEMP8.已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=‘A’+‘6’-‘3’后,c2中的值为。
A) D B) 68 C) 不确定的值 D) C填空 1.若有以下定义,则计算表达式y+=y-=m*=y后的y值是【1】。
C语言练习7
/**********FILL**********/
f(n%8==7) __a=n/8___ ; }
}
if(i%17==4)
{
n=i/17 ;
/**********FILL**********/
if(_n%17==15!(n%17!=15)___) n=n/17 ;
}
/**********FILL**********/
main()
{ char x[80], y[40]; int a, h = 0;printf(“Please input x string: “);
gets(x);printf(“Please input y s’)
___h++__ ;___a = 0__;
{ int a[N], i;
for( i = 0; i < N; i++)scanf(“%d”, a +___i__ );
invert( a, 0, N - 1);for(i = 0; i < N; i ++) printf(“%d”, a[i]);printf(“\n”);
7.以下程序的运行结果是_30x____。
功能:根据整型形参m的值,计算如下公式的值。
1 1 1
t = 1- -- - -- - ... - --
2x2 3x3 mxm
例如:若m=5,则应输出:0.536389
#include "stdio.h"
double fun(int m)
{double y=1.0;int i;
/**********ERROR**********/
double a = 513.789215;
C语言程序设计在线练习
C语言程序设计在线练习1.第1题以下程序的输出结果是______。
main(){ int i,x,a[10],b[3];x=5;for(i=0;i<10;i++) a[i]=i;for(i=0;i<3;i++) b[i]=a[i*(i+1)];for(i=0;i<3;i++) x=b[i]*2;printf("%d\n",x);}A.12B.21C.22D.23标准答案:A2.第2题定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是______。
for(i=0;i<3;i++) printf("%d",x[i][2-1]);A.1 5 9B.1 4 7C.2 5 8D.3 6 9标准答案:C3.第3题写出下列程序的运行结果_______。
int x=-2;printf("%d,%u,%o",x,x,x);A.-2,-2,-2B.-2,32767,-177777C.-2,32768,177777D.-2,65534,177776标准答案:D4.第4题以下程序的运行结果是______。
# include "stdio.h"main(){ int a=1,b=2,c;c=max(a,b);printf("max is %d\n",c);}max(int x,int y){ int z;z=(x>y)?x:y;return(z);}A.2B.MAXIS2C.max is 2D.maxis2标准答案:C5.第5题写出下列程序的运行结果_______。
main(){ int a[]={2,4,6},*pr=&a[0],x=6,y,z;for(y=0;y<4;y++)z=(*(pr+y)<x)?*(pr+y):x;printf("%d\n",z);}A.6B.0C.4D.2标准答案:A6.第6题写出下列程序的运行结果_______。
c语言习题及答案
c语言习题及答案C语言习题及答案C语言是一种广泛应用于系统软件和应用软件开发的高级程序设计语言。
对于初学者来说,掌握C语言的基础知识是非常重要的。
为了帮助大家更好地学习C语言,下面将介绍一些常见的C语言习题及答案。
1. 什么是C语言的基本数据类型?请列举并简要介绍每种数据类型。
答:C语言的基本数据类型包括整型(int)、字符型(char)、浮点型(float)、双精度浮点型(double)和无类型(void)。
其中,整型用于表示整数,字符型用于表示单个字符,浮点型和双精度浮点型用于表示小数,无类型用于表示没有值的特殊情况。
2. 编写一个C程序,实现输入两个整数,然后输出它们的和。
答:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和为:%d\n", sum);return 0;}```3. 编写一个C程序,实现输入一个字符,然后判断它是大写字母、小写字母还是数字。
答:```c#include <stdio.h>int main() {char ch;printf("请输入一个字符:");scanf("%c", &ch);if (ch >= 'A' && ch <= 'Z') {printf("它是大写字母\n");} else if (ch >= 'a' && ch <= 'z') {printf("它是小写字母\n");} else if (ch >= '0' && ch <= '9') {printf("它是数字\n");} else {printf("它是其他字符\n");}return 0;}```通过以上习题的学习,相信大家对C语言的基础知识有了更深入的了解。
c语言第七章课后题
一、第七章习题7(p184-p187),7.1-7.7全做,7.8-7.12中选做两道,要求给出程序执行结果。
7-1 、#include <stdio.h>int Square(int i){return i*i;}int main(){int i=0;i=Square(i);for(; i<3;i++){static int i=1;i+=Square(i);printf("%d,",i);}printf("%d\n",i);return 0;}结果:结果分析:开头定义square()函数功能:计算一个数的平方入口参数:整数x返回值: i*i主函数: i=0; 进入循环:静态变量i=1 ;i=i+square ( 1) =2;输出2;循环变量i=0+1=1;i=1<3成立静态变量i=i+square (2) =2+4=6 ;输出6;循环变量i=i+1=2;I=2<3 成立静态变量( i 保持原值) i=6 ;i=i+square ( 6) =6+36=42 ;输出 42;循环变量i=i+1=3 ;I=3<3 不成立退出循环输出循环变量i=37-2 、#include <stdio.h>int hour,minute,second; /* 定义全局变量 */ voidupdate(){second ++;if(second == 60){second=0;minute++;}if(minute==60){minute=0 ;hour++;}if(hour==24)hour=0;}void display(){printf(" %d : %d : %d\n ",hour,minute,second);}void delay(){int t;for (t=0;t<100000000;t++); /*用循环体为空语句的循环实现延时*/}int main(){int i;second=0;for(i=0;i<1000000;i++){update(); /*利用循环控制时钟运行时间*/display(); /*显示时,分,秒*/delay(); /*模一尺时间为1秒*/ }return 0;}结果:自动跳出时间7-3 、#include <stdio.h>/*max() 函数功能:找两个数的最大值入口参数:两个整数a,b返回值:两数的最大值*/int max(int a, int b){int max=0;max = (a>b)?a:b;return max;}void main(){int x=0; /*输入的两个数x,y*/int y=0;int m=0; /*m用于接收max()函数的返回值*/printf("input two integer numbers:");scanf("%d,%d",&x,&y);m=max(x,y);printf("the max number is %d\n",m);}结果:7-4#include <stdio.h>/*LCM() 函数功能:计算两个整数的最小公倍数入口参数:两整数a, b返回值:最小公倍数*/int LCM(int a,int b){int i=0; /*循环变量*/int min=0; /*循环寻找范围的最小值*/int max=0; /*循环寻找范围的最大值*/min = (a>b)?a:b; /*最小值为a,b中的最大值*/ max = a*b;/*最大值为a*b*/for (i=min; i<=max; i++){if(i%a==0 && i%b==0)return i;}}void main(){int x; /*键盘输入两整数x,y*/int y;int m; /*m用于接收LCM()函数的返回值*/do{/*输入整数的合法数据*/ printf(" 输入两个正整数: ");scanf("%d,%d",&x,&y);}while(x<0 || y<0);m = LCM(x,y);printf(" 最小公倍数为: %d\n",m);}结果:7-5、#include <stdio.h>long fact(int n);void main(){int i=0; /* 循环变量*/int n=0; /* 输入的值*/int m=0; /* 接收 fact()函数的返回值*/do{printf("input n:");scanf("%d",&n);}while(n<0);for(i=1; i<=n; i++){m=fact(i);printf("%d!=%ld\n",i,m);}}/*fact 函数功能:计算 n!入口参数:n返回值:n!*/long fact(int n){static long p=1;p=p*n;return p;}结果:7-6、#include <stdio.h>long fact(int n);void main(){int i=0; /* 循环变量*/int n=0; /* 输入的值*/int m=0; /* 接收 fact()函数的返回值*/long s=0; /*所求最终结果*/do{printf("input n:");scanf("%d",&n);}while(n<0);for(i=1; i<=n; i++){m=fact(i);s=s+m;}printf("1!+2!+...+n! = %ld\n",s);}/*fact 函数功能:计算 n!入口参数:n返回值:n!*/long fact(int n){static long p=1;p=p*n;return p;}结果:7-7、(1)穷举法:#include <stdio.h>int Gcd(int a,int b);void main(){int x=0; /* 键盘键入两个数 */int y=0;int m=0; /* 接收 Gcd 的返回值*/do{printf(" 输入两个正数 :");scanf("%d,%d",&x,&y);}while(x<0 || y<0);m = Gcd(x,y);printf(" 最大公约数:%d\n",m); }/*Gcd() 函数功能:计算两数的最大公约数入口参数:两个正数 a, b返回值:最大公约数*/int Gcd(int a,int b){int i=0;int t=0;t=(a<b)?a:b; /*t 为 a,b 中的较小者 */ for(i=t; i>=1; i--){if(a%i==0 && b%i==0)return i;}}结果:( 2)欧几里得算法#include <stdio.h>int Gcd(int a,int b);void main(){int x=0; /* 键盘键入两个数 */int y=0;int m=0; /* 接收 Gcd 的返回值*/do{printf(" 输入两个正数 :");scanf("%d,%d",&x,&y);}while(x<0 || y<0);m = Gcd(x,y);printf(" 最大公约数:%d\n",m); }/*Gcd() 函数功能:计算两数的最大公约数入口参数:两个正数 a, b返回值:最大公约数*/int Gcd(int a,int b){int r=0;r=a%b;if(r!=0){do{a=b;b=r;r=a%b;}while(r!=0);}return b;}结果:(3)递归方法:#include <stdio.h>int Gcd(int a,int b);void main(){int x=0; /*键盘键入两个数*/int y=0;int m=0; /* 接收 Gcd 的返回值 */do{printf(" 输入两个正数:");scanf("%d,%d",&x,&y);}while(x<0 || y<0);m = Gcd(x,y);printf(" 最大公约数: %d\n",m); }/*Gcd() 函数功能:计算两数的最大公约数入口参数:两个正数a, b返回值:最大公约数*/int Gcd(int a,int b){if (a==b)/* 递归出口 */return a;else{if(a>b)return Gcd(a-b,b);elsereturn Gcd(b,b-a);}}结果:7-9、#include <stdio.h>/*old() 函数功能:计算第i 个人的年龄入口参数:人数i返回值:年龄*/int old(int i){if(i==1)return 10;elsereturn old(i-1)+2;}void main(){int x=5;/* 人数为 5*/int y=0; /* 接收 old()函数的返回值*/y=old(x);printf(" 第五个人的年龄为:%d\n",y);}结果:7-10、#include <stdio.h>void main(){int flag=0; /* 设置标志变量*/int a=0;/* 百位 */int b=0;/* 十位 */int c=0;/* 个位*/int m=0;/* 代表 acb*/int n=0;/* 代表 bac*/int p=0;/* 代表 bca*/int q=0;/* 代表 cab*/int r=0;/* 代表 cba*/int i=0;/* 从 100~999 中找 abc*/ int sum=0; /* 观众计算得结果*/printf(" 说出你的计算结果: "); scanf("%d",&sum);for(i=100;i<=999;i++){a=i/100;b=i/10%10;c=i%10;m=a*100+c*10+b;n=b*100+a*10+c;p=b*100+c*10+a;q=c*100+a*10+b;r=c*100+b*10+a;if ((m+n+p+q+r)==sum){flag=1;/* 一旦找到就退出循环*/break;}}if(flag==0)/* 未找到说明计算错误 */{printf(" 你算错了!");}else{printf(" 你想的数是 %d %d %d \n",a,b,c);}}结果:二、收集资料并整理,叙述结构化程序设计的基本思想;根据自己的编程,说说你对结构化程序设计的理解。
c语言练习题
c语言练习题C语言是一种广泛应用于计算机科学和软件开发领域的编程语言。
通过练习题的形式来学习和巩固C语言的基础知识和编程技巧是非常有效的方法。
本文将为您提供一些C语言练习题,帮助您提升编程能力和理解C语言的特性。
一、基础题1. 编写一个程序,接受用户输入的两个整数,并计算它们的和。
2. 编写一个程序,接受用户输入的一个整数n,打印出1到n之间的所有奇数。
3. 编写一个程序,接受用户输入的一个整数n,计算并打印出1到n之间的所有数字的平方。
4. 编写一个程序,接受用户输入的一个整数n,判断n是否为质数(只能被1和自身整除)。
5. 编写一个程序,接受用户输入的一个字符串,判断该字符串是否是回文串(正读和倒读都一样)。
二、数组和指针1. 编写一个程序,定义一个包含10个元素的整型数组,并初始化为1到10的连续整数。
然后打印出数组中的所有元素。
2. 编写一个程序,定义一个包含n个元素的整型数组,并计算数组中所有元素的和。
3. 编写一个程序,定义一个包含n个元素的整型数组,并找出数组中的最大值和最小值。
4. 编写一个程序,定义一个包含n个元素的整型数组,并按逆序打印出数组中的所有元素。
5. 编写一个程序,定义一个包含n个元素的整型数组,并从键盘输入n个元素的值。
三、函数和指针1. 编写一个函数,接受两个整数参数a和b,并返回它们的和。
2. 编写一个函数,接受一个整型数组和数组的长度作为参数,并打印出数组中的所有元素。
3. 编写一个函数,接受一个整型数组和数组的长度作为参数,计算并返回数组中所有元素的和。
4. 编写一个函数,接受一个整型数组和数组的长度作为参数,找出数组中的最大值和最小值,并分别返回。
5. 编写一个递归函数,接受一个正整数n作为参数,计算并返回n 的阶乘。
四、文件操作1. 编写一个程序,从文件中读取一组整数,并计算它们的和。
2. 编写一个程序,将一组整数写入文件。
3. 编写一个程序,从文件中读取一组字符串,并按照字典顺序排序后输出。
完整版C语言程序设计练习题含程序及参考答案
完整版C语言程序设计练习题含程序及参考答案1. 请编写一个C程序,要求输入一个整数n,并打印从1到n的所有整数。
```c#include <stdio.h>int main(){int n;printf("请输入一个整数n:");scanf("%d", &n);for (int i = 1; i <= n; i++){printf("%d ", i);}return 0;}```参考答案:```请输入一个整数n:51 2 3 4 5```2. 请编写一个C程序,要求输入两个整数m和n,并计算它们的和、差、积和商(m除以n的结果)。
```c#include <stdio.h>int main(){int m, n;printf("请输入两个整数m和n:");scanf("%d %d", &m, &n);int sum = m + n;int difference = m - n;int product = m * n;float quotient = (float)m / n;printf("和:%d\n", sum);printf("差:%d\n", difference);printf("积:%d\n", product);printf("商:%.2f\n", quotient);return 0;}```参考答案:```请输入两个整数m和n:10 3和:13差:7积:30商:3.33```3. 请编写一个C程序,要求输入一个整数n,并判断它是否为素数。
```c#include <stdio.h>#include <stdbool.h>bool isPrime(int n){if (n <= 1){return false;}for (int i = 2; i * i <= n; i++){if (n % i == 0){return false;}}return true;}int main(){int n;printf("请输入一个整数n:"); scanf("%d", &n);if (isPrime(n)){printf("%d是素数。
新概念C语言能力教程练习12答案
0x23&0x52=0x00100011 & 0x01010010=0x000000100x23|0x52=0x00100011 | 0x01010010=0x011100110x23^0x52=0x00100011 ^ 0x01010010=0x01110001~0x52=~0x01010010=0x10101101a&a=a a|a=a a^a=0 0^a=a12.2按位与操作符&将参与运算的两个操作数以二进制位为单位进行“与”运算。
与运算时,如果两个二进制位上的数均为1,则运算结果的此位为1;否则,运算结果的此位为0。
从按位或操作符|将参与运算的两个操作数以二进制位为单位进行“或”运算。
或运算时,如果两个二进制位上的数都为0,则运算结果的此位为0;否则,此位为1。
按位与操作符&的运算规则可知,利用按位与操作符&可以在不影响其它位的情况下将整数的某位设置为0。
由运算规则可知,利用按位或操作符|可以在不影响其它位的情况下将一个整数的某位设置为1。
异或操作符^也称xor操作符。
异或操作符^将参与运算的两个操作数以二进制位为单位进行“异或”运算。
“异或”运算可理解为“判断是否不同(为异)”的运算。
异或运算时,如果两个二进制位上的数相同(都为0或为1),则运算结果的此位为0(表示否,不为异);如果两个二进制位上的数不同,则运算结果的此位为1(表示是,为异)。
分析运算规则可知,某位与1进行异或运算时,结果与该位正好相反(翻转),即原来是1时结果为0,原来是0时结果为1;某位与0进行异或时,结果与该位相同。
12.3C语言操作符优先级的规律可简单分析为:单目操作符的优先级都比较高。
算术操作符高于比较操作符高于逻辑操作符(先求值)。
有算术运算作用的左(右)移操作符(用于构造操作数)高于比较操作符,其它位操作符高于逻辑操作符。
逗号操作符最低,赋值倒数第二,三目操作符倒数第三。
C语言程序设计(编程题专项练习)及答案
C语言程序设计(编程题专项练习)及答案C语言程序设计(编程题专项练习)及答案C语言是一种通用的计算机编程语言,被广泛应用于软件开发和系统设计中。
在学习C语言程序设计时,掌握编程题是非常重要的一环。
通过编程题的练习,可以加深对C语言的理解,并提高自己的编程能力。
本文将介绍一些C语言编程题目,并提供相应的答案。
1. 计算两数之和题目描述:编写一个C程序,计算两个整数的和。
要求用户输入两个整数,并输出它们的和。
答案示例:```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:\n");scanf("%d%d", &a, &b);sum = a + b;printf("两数之和为:%d\n", sum);return 0;}```2. 求两数之差的绝对值题目描述:编写一个C程序,计算两个整数差的绝对值。
要求用户输入两个整数,并输出它们差的绝对值。
答案示例:```c#include <stdio.h>#include <stdlib.h>int main() {int a, b, diff;printf("请输入两个整数:\n");scanf("%d%d", &a, &b);diff = abs(a - b);printf("两数之差的绝对值为:%d\n", diff);return 0;}```3. 判断奇偶数题目描述:编写一个C程序,判断一个整数是奇数还是偶数。
要求用户输入一个整数,并输出其奇偶性。
答案示例:```c#include <stdio.h>int main() {int num;printf("请输入一个整数:\n");scanf("%d", &num);if (num % 2 == 0) {printf("该数为偶数\n");} else {printf("该数为奇数\n");}return 0;}```4. 计算阶乘题目描述:编写一个C程序,计算一个整数的阶乘。
c语言程序设计教程第七道第十二章课后练习题
目录习题7 (1)选择题 (1)2.程序填空题 (3)习题8 (5)1.填空题 (5)习题9 (9)选择题 (9)程序填空题 (12)习题10 (13)选择题 (13)习题11 (15)选择题 (15)程序填空题 (18)习题12 (20)选择题 (20)程序填空题 (22)习题7选择题(1)在C语言中,引用数组元素时,其数组下标的数据类型允许是(C)。
A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型表达式(2)若有说明:int a[0];则对数组元素的正确引用是(D)。
A.a[10];B.a[3.5]C.a(5)D.a[10-10](3)设有数组定义:char array[]=”china”;则数组array所占的空间为(C)。
A.4个字节 B.5个字节 C.6个字节 D.7个字节(4)若二维数组a有m列,则在a[i][j]的元素个数为(B)A.J*m+IB.i*m+jC.i*m+j-1D.i*m+j+1(5)若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是(B)。
A.2 B.3 C.4 D.无确定值(6)以下不正确的定义语句是(B)。
A.double x[5]={2.0,4.0,6.0,8.0,10.0};B. int y[5]={0,1,3,5,7,9};C. char c1[]={‘1’,’2’,’3’,’4’,’5’};D. char c2[]={‘\x10’,’\xa’,’\x8’};(7)以下不能对二维数组a进行正确的初始化的语句是(C)。
A. int a[2][3]={0};B. int a[][3]={{1,2},{0}};C. int a[2][3]={{1,2},{3,4},{5,6}};D. int a[][3]={1,2,3,4,5,6};(8)以下能对二维数组a进行正确初始化的语句是(B)。
A. int a[2][]={{1,0,1},{5,2,3}};B. int a[][3]={{1,2,3},{4,5,6}};C. int a[2][4]={{1,2,3},{4,5},{6}};D. int a[][3]={{1,0,1},{ },{1,1}}; \\D中间初始值不存在,{}的初始化是错误的(9)以下不能正确的字符串赋初值的语句是(A)。
C语言练习题及答案
C语言练习题及答案以下是一些C语言练习题及其答案。
这些练习题旨在帮助初学者巩固C语言的基础知识,并提供了相应的解答。
每个练习题都具有一定的难度,涵盖了C语言的不同概念和语法规则。
通过完成这些练习题,读者能够提高自己的编程能力,并更好地理解C语言的使用。
练习题1:编写一个程序,计算并输出两个整数的和。
```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入第一个整数: ");scanf("%d", &num1);printf("请输入第二个整数: ");scanf("%d", &num2);sum = num1 + num2;printf("两个整数的和是: %d\n", sum);return 0;}```练习题2:编写一个程序,接受用户输入的半径,计算并输出圆的面积和周长。
假设圆周率为3.14,使用浮点数进行计算。
```c#include <stdio.h>int main() {float radius, area, circumference;printf("请输入圆的半径: ");scanf("%f", &radius);area = 3.14 * radius * radius;circumference = 2 * 3.14 * radius;printf("圆的面积是: %.2f\n", area);printf("圆的周长是: %.2f\n", circumference);return 0;}```练习题3:编写一个程序,判断一个整数是否为奇数或偶数。
如果是奇数,则输出"奇数",否则输出"偶数"。
C语言 练习7~12
练习7 7.1char f(char ch){if('A'<=ch && ch<='Z'){ch +=3;if(ch>'Z'){ch -=26;}}else if('a'<=ch && ch<='z')ch = (ch - 'a' + 3) % 26 + 'a';return ch;}7.2int f(int x,int y){int sum=x*x+y*y;if(sum>100)return sum/100;return x+y;}7.3int f(int n){int rev = 0;int m;while(n > 0){m = n % 10;rev = rev * 10 + m;n /= 10;}return rev;}7.4//仅仅判断了三位的正整数是否为水仙花数。
int f(int n){int m, sum, num = n;sum = 0;while(n > 0){m = n % 10;sum += m * m * m;n /= 10;}return sum == num;}7.5int f(int a,int b){int r;r =a % b;while(r > 0){a = b;b = r;r = a % b;}return b;}7.6/*输出说明1表示不能被2或3或5整除;2,3,5分别表示能被2,3,5整除;6表示能被2和3整除;10表示能被2和5整除;15表示能被3和5整除;30表示能同时被2、3和5整除;*/int f(int n){int m = 1;if(n % 2 == 0)m *= 2;if(n % 3 == 0)m *= 3;if(n % 5 == 0)m *= 5;return m;}7.7E。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
练习7 7.1char f(char ch){if('A'<=ch && ch<='Z'){ch +=3;if(ch>'Z'){ch -=26;}}else if('a'<=ch && ch<='z')ch = (ch - 'a' + 3) % 26 + 'a';return ch;}7.2int f(int x,int y){int sum=x*x+y*y;if(sum>100)return sum/100;return x+y;}7.3int f(int n){int rev = 0;int m;while(n > 0){m = n % 10;rev = rev * 10 + m;n /= 10;}return rev;}7.4//仅仅判断了三位的正整数是否为水仙花数。
int f(int n){int m, sum, num = n;sum = 0;while(n > 0){m = n % 10;sum += m * m * m;n /= 10;}return sum == num;}7.5int f(int a,int b){int r;r =a % b;while(r > 0){a = b;b = r;r = a % b;}return b;}7.6/*输出说明1表示不能被2或3或5整除;2,3,5分别表示能被2,3,5整除;6表示能被2和3整除;10表示能被2和5整除;15表示能被3和5整除;30表示能同时被2、3和5整除;*/int f(int n){int m = 1;if(n % 2 == 0)m *= 2;if(n % 3 == 0)m *= 3;if(n % 5 == 0)m *= 5;return m;}7.7E。
不可以。
无论在何种情况下,convertGrade函数都必须输出一个字符。
可以约定用函数输出字符F表明函数的输入数据非法。
7.8不能互换使用。
库函数abs用于求整数的绝对值,而库函数fabs用于求小数的绝对值。
函数调用abs(3)的值为整数3,函数调用abs(2.3)的值为整数2;函数调用fabs(3)的值为double 型数3.0,函数调用fabs(2.3)的值为double型数2.3。
注:abs(2.3)的实参为2.3,给形参赋值后,形参的值为2,故它的返回值为2。
7.9#include<stdio.h>int f(int n){int rev = 0;int m;while(n > 0){m = n % 10;rev = rev * 10 + m;n /= 10;}return rev;}void main(){int a;printf("请输入一个正整数:\n");scanf("%d",&a);if(f(a) == a)printf("%d是一个回文数\n", a);elseprintf("%d不是一个回文数\n", a);}7.10#include<stdio.h>int f(int a,int b){int r;r =a % b;while(r > 0){a = b;b = r;r = a % b;}return b;}int main(){int a,b;printf("请输入两个正整数:\n");scanf("%d%d", &a, &b);printf("%d和%d的最小公倍数是%d\n",a, b, a*b/f(a,b));return 0;}7.11#include<stdio.h>char f(char ch){if('A'<=ch && ch<='Z'){ch +=3;if(ch>'Z'){ch -=26;}}else if('a'<=ch && ch<='z')ch = (ch - 'a' + 3) % 26 + 'a';return ch;}void main(){char str[1000];int i=0;printf("请输入一个字符串:");gets(str);printf("加密前:%s\n加密后:",str);while(str[i] != '\0'){str[i] = f(str[i]);++i;}puts(str);}7.12#include<stdio.h>int f(int n){int m = 1;if(n % 2 == 0)m *= 2;if(n % 3 == 0)m *= 3;if(n % 5 == 0)m *= 5;return m;}void main(){int a, i;printf("请输入10个正整数:");for(i=0; i<10; ++i){scanf("%d", &a);printf("%d", a);switch(f(a)){case 1:printf("不能被2,3,5中的任一个数整除。
\n");break;case 2:printf("能被2整除。
\n");break;case 3:printf("能被3整除。
\n");break;case 5:printf("能被5整除。
\n");break;case 6:printf("能被2和3整除。
\n");break;case 10:printf("能被2和5整除。
\n");case 15:printf("能被3和5整除。
\n");break;case 30:printf("能同时被2,3,5整除。
\n");break;}}}7.13提示错误:fatal error C1083: Cannot open include file: '7_2.c': No such file or directory7.14注意函数形参的类型、个数,返回值等问题。
函数调用执行的过程为对实参求值,用实参给形参赋值,函数执行,执行结束。
7.15局部变量m和n的作用域从5行起至第9行止。
swap函数形参x和y的作用域从第11行起至第16行止。
变量temp的作用域从12行起至第16行止。
7.16全局变量m和变量n的作用域从3行起至第16行止。
swap函数形参x和y的作用域从第11行起至第16行止。
变量temp的作用域从12行起至第16行止。
程序的运行结果为:7.17交换前:m = 3, n = 5交换后:m = 5, n = 37.18m = 10, n = 57.1910, 1510, 2010, 207.20例7-11在函数calculate中计算了圆的周长并赋值给了全局变量g_circum;而main函数通过访问全局变量g_circum得到了圆的周长。
全局变量的使用方式为,一个函数为全局变量赋值,另一个函数使用全局变量的值。
例7-13(1)中函数vary1改变并使用了全局变量的值。
例7-14函数vary使用了全局变量的值。
例7-15函数vary3把全局变量g_i的作用域限制在函数中,并在函数中使用了全局变量。
全局变量可用于在函数之间传递数据,使用全局变量时应参考例7-11的用法。
7.21程序7-8中,swap函数执行时局部变量m,n不能在swap函数使用,但这两个变量的生命期却并没有结束。
7.227.23相同。
函数randomize产生的随机序列与种子有关,即与函数中变量seed的值有关。
7.24例7-17函数sumUpFactor使用全局变量数组a时,为数组a各元素赋值。
函数print使用了全局变量数组a中的各个元素。
7.25主调函数和被调函数是使用和被使用的关系。
函数通常且有一定的功能(作用),甚至可以将函数(库函数)理解成C语言的命令。
主调函数使用被调函数代替编码完成操作,可以提高编程效率,避免编码时可能出现的错误。
7.26数组为形参时,数组的长度可有可无不起作用。
如有函数void test(int a[5]),则调用test函数时,实参可以是任意长度的一维int型数组,而并非只能用长度为5的一维int型数组。
因此,数组为形参时常需用另一个整型形参指出数组的长度。
数组为形参时,函数中如改变形参数组元素的值,则实参数组相对应数组元素的值也会随之改变。
7.27void sort(int a[], int n){int i, j, temp;for(i=1; i<n; ++i){temp = a[i];for(j=i; j>=0 && temp<a[j-1]; --j)a[j] = a[j - 1];a[j] = temp;}}7.28//只给出了main函数。
void main(){int a[10],i;printf("排序前:");for(i=0; i<10; ++i){a[i] = randomize();printf("%d ", a[i]);}sort(a,10);printf("\n排序后:");for(i=0; i<10; ++i){printf("%d ", a[i]);}printf("\n");}7.29例6-4将转换后数据每一位上的数字都存储到了一个整数数组中,因此,相关函数也需一个数组存储输出结果。
函数的输出结果不能是数组,而数组作形参时可以修改实参数组的元素,故可以把保存输出结果的数组定义为函数的一个形参。
convert函数用于将整数n转换成base进制,转换结果每一位上的数字都存储到了rem数组中。
转换成功时convert函数会返回一个整数,否则将返回另外一个整数。
7.30函数abc的作用为删除字符数组str存储字符串中的字符d。
程序的输出结果为abcef。