C语言程序设计函数练习题及参考答案
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语言程序设计及实验指导练习及习题参考答案(8--10)

C语言程序设计及实验指导练习及习题参考答案(8--10) 8练习参考答案1、练习8-1.如果有定义:intm,n=5,某p=&m;与m=n等价的语句是BA.m=某p;B.某p=某&n;C.m=&n;D.m=某某p;8-2.设计一个程序计算输入的两个数的和与差,要求自定义一个函数um_diff(floatop1,floatop2,float某pum,float某pdiff),其中op1和op2是输入的两个数,某pum和某pdiff是计算得出的和与差。
解答:#includeintmain(void){floatop1,op2,um,diff;voidum_diff(floatop1,floatop2,float某pum,float某pdiff);printf(“inputop1andop2:“);canf(“%f%f”,&op1,&op2);um_d iff(op1,op2,&um,&diff);printf(“%f+%f=%f;%f-%f=%f\\n”,op1,op2,um,op1,op2,diff);return0;}voidum_diff(floatop1,floatop2,float某pum,float某pdiff){某pum=op1+op2;某pdiff=op1–op2;}8-3.两个相同类型的指针变量能不能相加?为什么?解答:不能。
因为指针变量是一种特殊的变量,指针变量的值存放的是所指向变量的地址,两个地址相加并不能保证结果为一个有效的地址值,因而在C语言中指针变量相加是非法的。
8-4.根据表8.2所示,这组数据的冒泡排序其实循环到第6遍(即n-2)时就已经排好序了,说明有时候并不一定需要n-1次循环。
请思考如何改进冒泡排序算法并编程实现(提示:当发现一遍循环后没有数据发生交换,说明已经排好序了)。
解答:设置一个标志变量flag,进入一轮循环前设置为0,在循环中有发生数据交换就改写flag值为1。
(完整版)c语言函数练习题附答案

函数一、选择题1.在c 语言中以下不正确的说法是:()A.实参可以是常量、变量、或表达式B.形参可以是常量、变量或表达式C.实参可以为任意类型D.形参应与其对应的实参类型一致2.以下程序有语法性错误,有关错误原因的正确说法是:()int main(){ int G=5,k;void prt_char();……k=prt_char(G);……}A.语句 void prt_char();有错,它是函数调用语句,不能用 void 说明B.变量名不能使用大写字母C.函数说明和函数调用语句之间有矛盾D.函数名不能使用下划线3.以下正确的说法是:()A.函数的定义可以嵌套,但函数的调用不可以嵌套B.函数的定义不可以嵌套,但函数的调用可嵌套C.函数的定义和调用均不可以嵌套D.函数的定义和调用均可以嵌套4.若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是:()A)函数调用可以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参5.以下所列的各函数首部中,正确的是:()A、 void play(var :Integer,var b:Integer)B、 void play(int a,b)C、 void play(int a,int b)D、 Sub play(a as integer,b as integer)6.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是:()A、地址传递B、单向值传递C、由实参传给形参,再由形参传回实参D、传递方式由用户指定7.有以下程序void fun (int a,int b,int c){ a=456; b=567; c=678;}int main(){ int x=10, y=20,z=30;fun (x,y,z);printf("%d,/%d,%d\n",x,y,z);return 0;}输出结果是:()A、30,20,10B、10,20,30C、456,567,678D、678,567,4568.下述函数定义形式正确的是()。
c语言程序设计考试题答案及解析

c语言程序设计考试题答案及解析一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中合法的标识符?A. 2variableB. variable2C. variable-2D. variable$2答案:B解析:在C语言中,标识符可以由字母、数字和下划线组成,但不能以数字开头,也不能包含特殊字符如$、-等。
2. C语言中,哪个关键字用于声明一个整型变量?A. intB. floatC. doubleD. char答案:A解析:int是用于声明整型变量的关键字,float用于声明浮点型变量,double用于声明双精度浮点型变量,char用于声明字符型变量。
3. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. ||D. &答案:A解析:&&是逻辑与运算符,||是逻辑或运算符,&是按位与运算符,而|是按位或运算符。
4. C语言中,哪个函数用于计算两个整数的和?A. max()B. min()C. sum()D. pow()答案:C解析:sum()函数通常用于计算两个整数的和,而max()和min()函数分别用于找出两个数中的最大值和最小值,pow()函数用于计算幂。
5. 在C语言中,哪个关键字用于循环结构?A. ifB. whileC. forD. switch答案:B、C解析:while和for都是C语言中的循环结构关键字,if用于条件判断,switch用于多条件分支选择。
6. C语言中,哪个函数用于输出字符串?A. printf()B. scanf()C. gets()D. puts()答案:D解析:puts()函数用于输出字符串,printf()用于格式化输出,scanf()用于输入,gets()函数已不推荐使用,因为它可能导致缓冲区溢出。
7. 下列哪个选项是C语言中的数组声明?A. int a[10];B. int a[];C. int a;D. int a=10;答案:A解析:int a[10];是声明一个有10个元素的整型数组的正确方式,B 选项没有指定数组大小,C选项声明了一个整型变量,D选项是对整型变量进行赋值。
(完整版)C语言程序设计习题集及答案

C语言程序设计习题集东华理工大学2014.9基础知识一单项选择题(每题2分,共44分)1 以下叙述正确的是___。
A C程序基本组成单位是语句B C程序每一行只能写一个语句C 简单C语句必须以分号作为结束符D 注释语句可以嵌套2 一个C语言程序是从___开始执行的。
A 程序中第一个函数B 名为main的函数C 包含文件(头文件)的第一个函数D 程序中的第一个语句3 请选出合法的C语言赋值语句___。
A a=b=58B i++;C a=58,b=58D k=int(a+b);4 下面标识符中,合法的用户标识符是___。
A 1abcB includeC a-b-c123D char5 以下所列的C语言整形常量中,正确的是___。
A 0x10B 0976C 076LD 01ff6 C语言中下列运算符的操作数必须为整型的是___。
A %B ++C /D =7 设a和b均为int型变量,则执行以下语句后的输出为___。
int a=20; int b=3; printf("%d\n",a+=(b%=2));A 20B 21C 0D 238 已知int i;,则执行语句 i=2.6;后,i的值为___。
A 2B 3C 2.6D 不确定9 以下合法的字符常量为___。
A 'ab'B '\482'C '\'D '\xaf'10 若y为int型变量,则执行以下语句后,y的值是___。
y=8; y+=y-=y*y;A 64B –56C –112D –4811 以下合法的浮点型常量是___。
A e-3B 1.5e+2.4C 3.14e+2LD 3.14 e +512 设int数据占用两个字节,float数据占用四个字节,double数据占用8个字节,且已知float a=2;int b=3;则执行下列语句输出为___。
printf("%d",sizeof(a*b)+2/5);A 4B 8C 6D 713 设int型占2个字节,且int i=-2;,则语句printf("%u",i);的输出结果为___。
完整版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语言程序设计练习题(含程序及参考答案)
C语言程序设计练习题(含程序及参考答案) C语言程序设计练习题(含程序及参考答案)一、简介C语言是一种通用的编程语言,被广泛应用于软件开发和系统编程中。
为了提高编程技巧和加深对C语言的理解,我们编制了一系列的C语言程序设计练习题。
本文将逐题介绍练习题的具体内容,并提供相应的程序及参考答案。
二、练习题列表1. 求两个数的和题目描述:输入两个整数,求它们的和。
程序:```#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:\n");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("它们的和是:%d\n", sum);return 0;}```参考答案:输入两个整数,例如:5 3它们的和是:82. 判断一个数是否为奇数题目描述:输入一个整数,判断它是否为奇数。
程序:```#include <stdio.h>int main() {int num;printf("请输入一个整数:\n");scanf("%d", &num);if (num % 2 == 1) {printf("该数是奇数。
\n");} else {printf("该数不是奇数。
\n");}return 0;}```参考答案:输入一个整数,例如:7该数是奇数。
3. 计算一个数的平方题目描述:输入一个整数,计算它的平方。
程序:```#include <stdio.h>int main() {int num, square;printf("请输入一个整数:\n");scanf("%d", &num);square = num * num;printf("该数的平方是:%d\n", square);return 0;}```参考答案:输入一个整数,例如:4该数的平方是:164. 求两个数中的最大值题目描述:输入两个整数,求它们的最大值。
C语言函数练习题及答案
C语言函数练习题及答案1【单选题】在下列关于C函数定义的叙述中,正确的是??A、函数可以嵌套定义,但不可以嵌套调用;B、函数不可以嵌套定义,但可以嵌套调用;C、函数不可以嵌套定义,也不可以嵌套调用;D、函数可以嵌套定义,也可以嵌套调用;我的答案:B得分:2.5分2【单选题】下面函数调用语句含有实参的个数为?nc((exp1,exp2),(exp3,exp4,exp5));A、1B、2C、4D、5我的答案:B得分:2.5分3【单选题】C语言中函数返回值的类型是由以下哪个选项决定的??A、函数定义时指定的类型;B、return语句中的表达式类型;C、调用该函数时的实参的数据类型;D、形参的数据类型;我的答案:A得分:2.5分4【单选题】以下关于函数叙述中,错误的是?A、函数未被调用时,系统将不为形参分配内存单元;B、实参与形参的个数必须相等,且实参与形参的类型必须对应一致;C、当形参是变量时,实参可以是常量、变量或表达式;D、如函数调用时,实参与形参都为变量,则这两个变量不可能共享同一内存空间;我的答案:B得分:2.5分5【单选题】若函数调用时参数为基本数据类型的变量,以下叙述正确的是??A、实参与其对应的形参共享内存存储单元;B、只有当实参与其对应的形参同名时才共享内存存储单元;C、实参与对应的形参分别占用不同的内存存储单元;实参将数据传递给形参后,立即释放原先占用的内存存储单元;我的答案:C得分:2.5分6【单选题】函数调用时,实参和形参都是简单变量,它们之间数据传递的过程描述正确的是??A、实参将地址传递给形参,并释放原先占用的存储单元;B、实参将地址传递给形参,调用结束时形参再将此地址回传给实参;C、实参将值传递给形参,调用结束时形参再将其值回传给实参;D、实参将值传递给形参,调用结束时形参并不将其值回传给实参;我的答案:D得分:2.5分7【单选题】若用数组名作为函数调用的实参,则传递给形参的是?A、数组第一个元素的地址;数组的第一个元素的值;C、数组中所有元素的值;D、数组元素的个数;我的答案:A得分:2.5分8【单选题】C语言规定了程序中各函数之间调用关系,以下说法正确的是??A、既允许直接递归调用也允许间接递归调用;B、不允许直接递归调用也不允许间接递归调用;C、允许直接递归调用不允许间接递归调用;D、不允许直接递归调用允许间接递归调用;我的答案:A得分:2.5分9递归函数f(n)=f(n-1)+n (n>1)的递归体是?A、f(1)=0B、f(0)=1f(n)=f(n-1)+nD、f(n)=n我的答案:C得分:2.5分10【单选题】若函数的形参为一维数组,则下列说法中正确的是()。
《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语言规定,在一个源程序中,main函数的位置______。
a、必须在最为已经开始b、必须在系统调用的库函数的后面c、可以任一必须在最后5、一个c语言程序是由______。
a、一个主程序和若干子程序共同组成b、函数共同组成c、若干过程共同组成d若干子程序共同组成、、d(acdcb)第三章数据类型、运算符与表达式(红色显示的部分为参考答案)1、如果x、i、j和k都就是int型变量,则排序下面表达式后,x的值______。
x=(i=4,j=16,k=32)a.4b.16c.32d.522、设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是______。
a.7b.8c.6d.23、以下四组选项中,均不是c语言关键字的选项就是______。
a.defineiftypeb.getccharprintfc.includescanfcased.whilegopow4、下列四组选项中,均是c语言关键字的选项是______。
a.autoenumincludeb.switchtypedefcontinuec.signedunionscanfd.ifstructtype5、下列四组选项中,均是不合法的用户标识符的选项是______。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言程序设计练习题及参考答案 1、定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。 #include <> int fun(int a,int b,int c) { if(a+b>c && b+c>a && a+c>b) { if(a==b && b==c ) 、 return 3;
else if(a==b||b==c||a==c) return 2; else return 1; } else return 0; } void main() { int a,b,c,shape; ? printf("\nInput a,b,c: ");
scanf("%d%d%d",&a,&b,&c); printf("\na=%d, b=%d, c=%d\n",a,b,c); shape =fun(a,b,c); printf("\n\nThe shape : %d\n",shape); } 2、编写一个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运行后 a 中的值为8,b中的值为3。 #include <> void fun(int *x,int *y) { int t; t=*x;*x=*y;*y=t }
void main() { int a=3,b=8; printf("%d %d\n",a,b); fun(&a,b); printf("%d %d\n",a,b); } 3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中。 例如,输入的数为:55 12 34, 输出结果应当是:a=,b=,c=。 #include <> void fun(float *p,float *q,float *s) { float k; if (*p<*q) { k=*p;*p=*q;*q=k;} if (*q<*s) { k=*s;*s=*p;*p=k;} if (*p<*q) { k=*p;*p=*q;*q=k;} }
void main() { float a,b,c; printf("Input a b c: "); scanf("%f%f%f",&a,&b,&c); printf("a=%,b=%,c=%\n\n",a,b,c); fun(&a,&b,&c); printf("a=%,b=%,c=%\n\n",a,b,c); } 4、编写函数fun(int n),它的功能是:计算正整数n的所有因子(1和n除外)之和作为函数值返回。例如:n=120时,函数值为239。 #include <> #include <> int fun(int n) { int i,s=0; for (i=2;i if (n%i==0) s=s+i; return s; }
void main() /*主函数*/ { void NONO(); printf("%d\n",fun(120)); NONO(); }
void NONO( ) {/* 请在此函数内打开文件,输入测试数据,调用 fun 函数, 输出数据,关闭文件。 */ FILE *wf; wf = fopen("", "w") ; fprintf(wf,"%d\n",fun(120)); fclose(wf) ; } 5、计算s,并输出 1 1 1 S = 1 + ── + ─── + …… + ────── 1+2 1+2+3 1+2+3+…+n n通过键盘输入,例如:若n的值为11时,则函数值为: #include <> #include <> float fun(int n) { int i; float s=,h=1; for (i=2;i<=n;i++) { h=h+i; s=s+h; } return s; }
void main() { int n;float s; printf("\nPlease enter N:");scanf("%d",&n); s=fun(n); printf("the result is:%f",s); } 6、将一个整数中的每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:时,t中的数为:7531。 #include <> void fun(long s,long *t) { int d; long s1=1; *t=0;
while (s>0) { d=s%10; if(d%2!=0) { *t=d*s1+*t; s1=s1*10; } s/=10; } }
main() { long s,t; printf("\nPlease enter s:"); scanf("%ld",&s); fun(s,&t); printf("The result is:%ld\n",t); } 7、计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值从键盘传入,若k的值为500,则输出4622。 #include <> int fun(int k) { int m=0,mc=0,j; while((k>=1)&&(mc<10)) { if ((k%13 == 0)||(k%17 == 0)) { m=m+k;mc++; } k--; } return m; }
void main() { printf("%d\n",fun(500)); } 8、已知一个数列的前三项分别为0,0,1, 以后的各项都是其相邻的前三项之和,计算并输出该数列前n项的平方根之和sum。例如,当n=10时,程序的输出结果应为:。 #include <> #include <> double fun(n) { double sum,s0,s1,s2,s; int k; sum = ;
if(n <= 2) sum = ; s0 = ; s1 = ; s2 = ; for (k = 4; k <= n; k++) { s = s0 + s1 + s2; sum += sqrt(s); s0 = s1; s1 = s2; s2 = s; } return sum; }
void main ( ) { int n; printf("Input N="); scanf("%d", &n); printf("%f\n", fun(n) ); } 9、编写一个程序,从键盘输入m,输出大于m且紧随m的素数。 #include <> int fun(int m) { int i,k; for (i=m+1;;i++) { for (k=2;k if(i%k==0) break;
if (k>=i) return(i); } }
void main() { int n; printf("\nPlease enter n:"); scanf("%d",&n); printf("%d\n",fun(n)); } 10、判断两个整数m和n是否互质(即是否有公共的因子)(m≠1,n≠1)。方法是: 用2到t(t取m和n中较小的那个数)之间的数分别去除m和n,若m和n能同时被某个数除尽,则m和n不互质;否则它们互质。 例如,若输入187和85,则应输出No(表示它们不互质,它们有公因子17)。若输入89和187,则应输出Yes(表示它们互质)。 #include <> int IsThat( int m, int n ) { int k, t, mk=1; t=m; if (m>n) t=n;
for(k=2;k<=t;k++) if( m%k==0 && n%k==0 ) { mk=0; break; }
return mk; }
void main( ) { int m, n; printf( "\nPlease enter 2 numbers:\n" ); scanf("%d %d", &m, &n);
if( IsThat( m, n ) ) printf( "Yes\n" ); else printf( "No\n" ); }