C语言上机作业12 答案

合集下载

第十二次上机作业带答案

第十二次上机作业带答案

一、改错题题目:以下程序求数组a 每列和整个数组的最小元素及其行、列号#include “stdio.h”#define n 4#define m 3int a[n][m]={5,4,7,8,6,4,9,5,6,7,3,5},s[m];p(int j){ int k,i ,x;x=a[0][j]; i =0; //s[0]=x=a[0][j]for(k=1;k<n;k++)if(a[k][j]<x){ i =k;s[j]=x=a[k][j];}return i ;}main(){ int index[m],i ,j,k;for(j=0;j<m;j++){ index[j]=p(j);printf(“a[&d,%d]=%d \n”,index[j],j,s[j]); //&->%}i =s[l];k=0; // i=s[0]for(j=1;j<m;j++)if(s[j]<i ){i =s[j];k=j;}printf(“min=a[%d,%d]=%d”,index[k],k,i );}正确答案:a[0][0]=5a[3][1]=3a[1][2]=4min=a[3][1]=3二、完善程序1. 下列函数用于确定一个给定字符串str 的长度。

编主函数,用”china ”测试。

strlen(char str[]){int num;num=0; while( ) //str[num]!=’\0’++num; return ; //num}2. 用递归算法编写C 语言程序,求组合数)!(!!n m n m c n m -⨯=的值。

#include <stdio.h>int combin();void main(){ int combin(int x,int y);int m,n;printf("Input integer:m=?n=?\n");scanf("%d%d",&m,&n);printf("The result c(m,n)=%d\n",combin(m,n));}combin(int x,int y){int comb;if(x<2*y)y= ; //y-xif(y==0)comb=1;elseif( ) //y==1comb=x;elsecomb= ; // combin(x-1,y-1)*x/yreturn(comb);}3.下面程序能够统计主函数调用count 函数的次数(用字符#作为结束输入的标志),请在处填入正确的内容。

C语言程序设计上机指导书及答案

C语言程序设计上机指导书及答案

姓名:_________________ 学号:_________________ 专业:_________________日期:_________________指导原则:促进学生针对实际问题,用所学C语言知识编写符合规范的源程序代码,在某一集成开发环境下尽一切调试技能调试程序,并对运行结果进行分析处理,得出正确结论,解决好实际问题。

更快更好地掌握所学知识,技能和软件的一向开发方法目的:1,通过上机实验,加深对教材内容的理解,特别是一些语法规定,熟练掌握各种语法规则。

2,通过上机实验,熟悉某个C语言集成开发环境。

掌握集成开发环境下程序的编辑、编译与连接、运行的完整过程3,通过上机实验,要学会调试程序。

能根据系统给出的“出错信息”,判断错误所在,并修改错误,使程序正确运行。

要求:1,复习与本次实验相关的教学内容2,了解集成开发环境的操作步骤3,准备好实验内容。

对于编程题,一定要自己动手,书写工整,并人工检查无误后才能上机实验,以提高上机效率。

4,要准备好调试和运行程序时所需的数据。

5,对运行中可能出现的问题事先作出估计,并对程序中有疑问的地方作上标记,以便在运行时给予注意。

并在程序调试时,把系统给出的出错原因,解决方法等记载在源程序之后;程序运行结束后,把运行结果也记录下来。

6,每个实验应独立完成,对实际问题所编写的源程序需写出完整实验的报告。

第一次上机作业熟悉C语言集成开发环境实验目的:1,熟悉C语言集成开发环境2,掌握集成开发环境下文件的编写与调用,源程序的编译与调试,程序运行结果的观察与分析。

3,掌握C语言程序的基本结构实验要求:1, 程序编写完后,要对输入的每一个符号和词进行检查核对,不能有错。

2,编写源程序时,不要在中文输入法下进行,也不要有首字符大写,否则调试时,会有错误。

实验内容:1,在D盘新建文件夹:D:\C语言程序\×××(所在班级如0709401)\×××(自己学号或姓名如01),作为以后所做程序的存放位置。

C语言上机题参考答案

C语言上机题参考答案
}
20、设有1<=n<=500个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进
行1到m的报数,报数到第m个人,此人出圈,再从他的下一个人重新开始1到m的
报数,如此进行下去直到所有的人都出圈为止。
要求按出圈次序输出编号。
输入格式如下:
n s m
示例:
输入:
6 1 3
输出:
3 6 4 2 5 1
scanf("%d",&n);
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
}
8、编程输出n行图形(n值通过键盘输入),
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
if(x>1) y=6*x+5;
printf("%d",y);
}
三、循环图形
7、编程输出n行图形(n值通过键盘输入)
假设n=5,则图形如下:
*
**
***
****
*****
假设n=6,则图形如下:
*
**
***
****
*****
******
#include<stdio.h>
void main()
{int i,j,n;
printf("%.2f\n",(a+b+c)/3.0);

12套C语言上机试题参考答案

12套C语言上机试题参考答案

第一套上机试题一、改错题【分析】:改错题的错误一般可分为两类,一类是语法错误,这类错误可通过调试程序改正,较容易;另一类是逻辑错误,这类错误程序能运行,但结果不正确,这类错误相对较难,修改前必须要看懂和理解程序。

#include"stdio.h"#define n 4 #define m 3 /*语法错,#define m 3需另起一行*/int a[n][m],s[m];p(int j)/*此函数的功能为:找出a数组中第j列的最小元素的值及行号,函数成功运行后,i中即为j列的最小元素的行号,s[j]中即为j列的最小元素的值*/{int k,i,x;x=a[0][j];i=0; /*逻辑错,从函数的功能可知,a[0][j]也应赋值给s[j],所以x=a[0][j]应改为s[j]=x=a[0][j]*/for(k=1;k<n;k++)if(a[k][j]<x){i=k;s[j]=x=a[k][j];}return i;}main(){int index[m],i,j,k;for(i=0;i<n;i++)for(j=0;j<m;j++)scanf("%d",a[i][j]);/*语法错,但编译时不会报错,scanf语句的一般形式为scanf(格式控制,地址表列),所以a[i][j]应改为&a[i][j])*/for(j=0,j<m;j++){index[j]=p[j];printf("a[%d,%d]=%d\n",index[j],j,s[j]);}i=s[1];k=0; /*逻辑错,数组s中存放的是a数组中每一列的最小值,比较时应从数组的第0个元素开始,而下面的for循环是从第1个元素开始的,所以i=s[1]应改为i=s[0]*/ for(j=1;j<m;j++)/*此循环的功能为:找出数组a中最小元素的值及其行号,列号*/if(s[j]<i){i=s[j];k=j;}printf("min=a[%d,%d]=%d",index[k],k,i); }二、编程题【分析】:本题的主要功能是建立一个3行8列的二维数组,并给其元素赋值,其中第1、2行的值可通过递推公式x i+1=(25*x i+357)%1024得到,第三行的值取前两行同列元素的最大公约数,所以编程时可用一个函数来实现求公约数的算法。

c语言上机作业及答案

c语言上机作业及答案

c语言上机作业及答案4.11 编程计算1×2×3+3×4×5+…+99×100×101的值。

#includemain(){long i ;long term, sum = 0;for (i = 1; i <= 99; i = i + 2){term = i * (i + 1) * (i + 2);sum = sum + term;}printf("sum=%ld",sum);}4.12 编程计算1!+2!+3!+4!+…+10!的值。

#includemain(){long term = 1,sum = 0;int i;for (i = 1; i <= 10; i++){term = term * i;sum = sum + term;}printf("1!+2!+...+10! = %ld \n", sum);}#includemain(){long term ,sum = 0;int i, j;for (i = 1; i <= 10; i++){term = 1;for (j = 1; j <= i; j++){term = term * j;}sum = sum + term;}printf("1!+2!+…+10! = %ld \n", sum);}4.13 编程计算a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入。

#includemain(){long term = 0,sum = 0;int a , i, n;printf("Input a,n: ");scanf("%d,%d", &a, &n); /*输入a,n的值*/for (i = 1; i <= n; i++){term = term * 10 + a; /*求出累加项*/sum = sum + term; /*进行累加*/}printf("sum=%ld\n",sum);}4.14 利用=×…的前100项之积计算π的值。

C语言程序设计 上机实验指导与习题 参考答案

C语言程序设计 上机实验指导与习题 参考答案

C 语言程序设计上机实验指导与习题参考答案仅供教师内部参考华南农业大学目录上机实验1实验1 C 语言程序初步1一实验目的1二实验内容1实验2 基本数据类型运算和表达式3一实验目的3二实验内容3实验3 基本输入与输出5一实验目的5二实验内容5实验4 选择结构程序设计4一实验目的4二实验内容4实验5 循环结构程序设计一9一实验目的9二实验内容9实验6 循环结构程序设计二15一实验目的15二实验内容15实验7 数组17一实验目的17二实验内容17实验8 字符数组的应用22一实验目的22二实验内容22实验9 函数的基本应用24 一实验目的24二实验内容24实验10 指针与结构体26一实验目的26二实验内容26*实验11 链表29一实验目的29二实验内容29*实验12 文件32一实验目的32二实验内容32上机实验实验1 C 语言程序初步一实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2 了解在该系统上如何编辑编译连接和运行一个C 程序3 通过运行简单的C 程序初步了解C 程序的特点4 在教师的指导下学会使用JudgeOnline 实验系统二实验内容1 运行第一个C 程序[题目The first C Program]将下列程序输入TC 或VC编译连接和运行该程序void mainprintf "The first C Program\n"[具体操作步骤]以Turbo C 上的操作为例1Windows 进入后按照第一章中介绍的方法进入Turbo C2在编辑窗口中输入程序3保存程序取名为a1c4按照第一章中介绍的方法编译连接和运行程序2 在JudgeOnline 系统中提交实现了计算ab 功能的程序[题目1001计算ab]由键盘输入两个整数计算并输出两个整数的和实现该功能的程序如下void mainint a bscanf "dd" a b1 printf "d" a b1在程序编辑窗口中输入程序2保存程序取名为a2c3按照前二章中介绍的方法编译连接和运行程序4在程序运行过程中输入15 30↙↙表示输入回车符5 如果看到如下输出结果则表明1530 的结果正确如果得不到如下结果则需检查并更正程序456 按照第三章中介绍的方法进入JudgeOnline 实验系统7 显示题目列表点击题号为1001题名为计算ab的题目8 查看完题目要求后点击页面下端的sumbit 参照第二章提交程序的方法提交程序a2c9 查看评判结果如果得到accepted则该题通过否则返回第一步检查程序是否正确2实验2 基本数据类型运算和表达式一实验目的1掌握C 语言数据类型熟悉如何定义一个整型和实型的变量以及对它们赋值的方法2 掌握不同的类型数据之间赋值的规3 学会使用C 的有关算术运算符以及包含这些运算符的表达式特别是自加和自减-- 运算符的使用4 进一步熟悉C 程序的编辑编译连接和运行的过程二实验内容1 变量的定义[题目1117变量定义按要求完成程序]下面给出一个可以运行的程序但是缺少部分语句请按右边的提示补充完整缺少的语句void mainint a b 定义整型变量a 和bint i j 定义实型变量i 和ja 5b 6i 314 j iabprintf "a db di fj f\n" a b i j[具体操作步骤]1将代码补充完整2在TC 或VC上运行通过3在JudgeOnline 实验系统上提交2 赋值表达式与赋值语句[题目1118赋值表达式与赋值语句写出程序运行结果] 阅读下面程序写出运行结果void mainfloat aint b cchar d ea 35b ac 330d c3e \\printf "fddcc" abcde运行结果为35000003330J\[提示]赋值语句具有类型转换的功能但可能会改变数据3 基本运算[题目1119基本运算写出程序运行结果]阅读下面程序写出运行结果void mainint a b cfloat d 15 e fa 357b 1510c be 1510f d10printf "dddfff" abcdef运行结果为0211500000010000001500000[提示]除法分整除与普通除法之分4实验3 基本输入与输出一实验目的1熟练掌握putchargetcharprintf scanf 函数的使用方法2 掌握各种类型数据的输入输出的方法能正确使用各种格式转换符二实验内容[题目1126字符的输入与输出]编程实现由键盘输入一个字符后在屏幕上输出该字符[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]a↙↙[正确输出] [正确输出]a参考程序include "stdioh"mainchar chch getcharputchar ch[题目1127计算加法]编程实现由键盘输入一个加法式输出正确的结果两个加数均为整数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]1020 ↙- 1560↙[正确输出] [正确输出]30 45参考程序include "stdioh"mainint a bscanf "dcd" abprintf "d" ab[题目1014求圆面积]由键盘输入圆半径r 请计算该圆的面积注取314159结果保留两位小数位另外程序只要能对r 在0 到10000 范围的情况输出正确答案即可[第一组自测数据] [键盘输入]5652 ↙[键盘输入][正确输出] 112↙1335502 [正确输出][第二组自测数据] 39408[提示]结果保留两位小数可采用printf 函数的格式控制字符来实现参考程序include "stdioh"mainfloat arearscanf "f"rarea 314159rrprintf "02f"area2[题目1015计算摄氏温度值]从键盘输入一个华氏温度值要求按格式输出其对应的摄氏温度值精确到小数点后两位数学公式描述为5C F 329[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]100↙100↙[正确输出] [正确输出]3778 3778[提示]注意公式中的除为普通除法参考程序includevoid mainfloat fcscanf "f"fc 509 f-32printf "2f"c3实验4 选择结构程序设计一实验目的1了解C 语言表示逻辑的方法以0 代表假以非0 代表真2 学会正确使用逻辑运算符和逻辑表达式3 熟练掌握if 语句和switch 语句4 结合程序掌握一些简单的算法二实验内容[题目1120判断点是否在圆]由键盘输入一个点的坐标要求编程判断这个点是否在单位圆上点在圆上输出Y 不在圆上输出N 使用小数点后3 位精度进行判断[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]07070707 ↙8>0505↙[正确输出] [正确输出]Y N[提示] 1平面上的点与圆的关系分为在圆内在圆上在圆外三种本题要求判断是否在圆上2判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度本题为0001 的方法实现参考程序include "stdioh"include "mathh"void mainfloat abscanf "ff"abif fabs aabb-1 1e-3printf "Y\n"else printf "N\n"[题目1017求数的位数]由键盘输入一个不多于9 位的正整数要求输出它是几位数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]349213 ↙10000↙[正确输出] [正确输出]6 5[提示]划定一位数二位数九位数的范围后用if else if else 语句实现判断4参考程序mainint nplacescanf "ld"nif n 99999999 place 9else if n 9999999 place 8else if n 999999 place 7else if n 99999 place 6else if n 9999 place 5else if n 999 place 4else if n 99 place 3else if n 9 place 2else place 1printf "ld\n"place[题目1018数的排序]由键盘输入三个整数a b c按从小到大的顺序输出这三个数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]654590 ↙963 ↙[正确输出] [正确输出]456590 369参考程序includemainint abctscanf "ddd"abcif a b t aa bb tif a c t aa cc tif b c t bb cc tprintf "ddd"abc[题目1016字符变换]由键盘输入5 个字符将其中的大写字母变成小写其它类型的字符不变并按输入顺序逐个输出[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]ApPLe ↙aB 5 ↙[正确输出] [正确输出]apple ab 5[提示]下面代码实现由键盘读入一个字符并按题意处理后输出char aa getcharif a A a Z a a32putchar a5现在题目要求处理5 个字符怎么做呢请自己思考参考程序includemainchar abcdescanf "ccccc"abcdeif a Za A a a32if b Zb A b b32if c Zc A c c32if d Zd A d d32if e Ze A e e32printf "ccccc"abcde[题目1019数的整除]由键盘输入5 个整数逐个判断它们能否被27 整除能的输出YES不能的输出NO 注意输出时一个判断结果占一行5 个数的判断共占5 行[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]8 27 17577 325 54 ↙8 27 17577 325 54 ↙[正确输出] [正确输出]NO NOYES YESYES YESNO NOYES YES[提示]整除即除得余数为0参考程序include "stdioh"mainint abcdescanf "d d d d d"abcdeif a27 0 printf "YES\n" else printf "NO\n"if b27 0 printf "YES\n" else printf "NO\n"if c27 0 printf "YES\n" else printf "NO\n"if d27 0 printf "YES\n" else printf "NO\n"if e27 0 printf "YES\n" else printf "NO\n"[题目1020正负奇偶判断]由键盘输入非零整数x 判断该数正负正数输出positive 负数输出negative 接着判断该数的奇偶性奇数输出odd偶数输出even[第一组自测数据] negative[键盘输入] odd-43 ↙[第二组自测数据][正确输出] [键盘输入]698 ↙positive[正确输出] even参考程序include "stdioh"mainint nscanf "d"nif n 0 printf "negative\n"else printf "positive\n"if n2 0 printf "even\n"else printf "odd\n"[题目1023简单计算器]下面程序是实现一个简单的运算器保留两位小数点如果由键盘输入1050计算机可以输出结果6000如果输入8 *6计算机输出4800如果输入204 计算机输出500 如果输入8-6计算机输出200 请在空处填上适当的代码运行通过后并提交include "stdioh"void mainfloat abcscanf "fcf"switch opcasecase - _case _case __default printf "error"returnprintf "result " c[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]452↙501-23 ↙[正确输出] [正确输出]90 27107参考程序includeint mainchar opscanf "fcf"aopbswitch opcase c abbreakcase -c a-bbreakcase c abbreakcase c abbreakdefaultprintf "error"breakprintf "result 2f"c8实验5 循环结构程序设计一一实验目的1熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中用循环实现一些常用算法如穷举迭代递推等二实验内容[题目1024计算阶乘]输入正整数n计算n 结果用长整型数表示注n 123n[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]5 ↙8 ↙[正确输出] [正确输出]120 40320参考程序includemainlong in 1ascanf "ld"afor i 1i ai n niprintf "ld\n"n[题目1025计算数列和]有数列1357911现要求由键盘输入n计算输出该数列的前n 项和[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]2 ↙ 5 ↙[正确输出] [正确输出]4 259参考程序includemainlong nsum 0it 1scanf "ld"nfor i 1i nisum sumtt t2printf "ld\n"sum或includemainlong nsumscanf "ld"nsum nnprintf "ld"sum注评判系统不对程序实现细节进行分析只对运行结果进行评测[题目1026 加一行字符中的数字]由键盘输入一行字符总字符个数从1 个至80 个均有可能以回车符表示结束将其中每个数字字符所代表的数值累加起来输出结果[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]abc123↙A6H7T65↙[正确输出] [正确输出]6 24[提示] 1可以使用下面程序段逐个读入键盘输入的一行字符char chwhile ch getchar \n2 数字字符转为对应的数值可用a ch-0参考程序includemainchar cint s 0awhile c getchar \nif c 0c 9a c-48s saprintf "d"s10[题目1029求最大公约数]由键盘输入两个正整数mn mn 用长整数表示计算它们的最大公约数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]1624↙1725↙[正确输出] [正确输出]8 1[提示]公约数是既能整除m 又能整除n 的数题目要求满足这一条件的最大的一个参考程序includemainlong rmntempscanf "ldld"mnwhile m 0r nmn mm rprintf "ld\n"n或includemainlong mntisscanf "ldld"mnt m nnmfor i t-1i 1i--if mi 0ni 0s i breakprintf "d"s[题目1030字符变换]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束将其中的大写字符变成小写其它类型的字符不变最后输出变换后的句子[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙ThiS IS My fIrSt C ProgrAm ↙[正确输出] [正确输出]how are you this is my first c program11参考程序includemainchar cwhile c getchar \nif c Ac Zc c32putchar c[题目1037计算数列和]有数列编程实现由键盘输入n计算输出数列前n 项和结果保留四位小数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]20 ↙30 ↙[正确输出] [正确输出]326603 880403参考程序includemainint itnfloat a 2b 1s 0scanf "d"nfor i 1i nis sabt aa abb tprintf "4f\n"s[题目1044输出最小值]从键盘输入十个整数输出最小值[ 自测数据][键盘输入]12 45 76 87 5 87 43 55 99 21 ↙[正确输出]512参考程序include "stdioh"mainint itminscanf "d" minfor i 1i 10iscanf "d" tif t min min tprintf "d\n"min*[题目1031统计单词个数]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束以空格分割单词要求输出单词的个数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙There are many students and many[正确输出] trees↙3 [正确输出]7参考程序includemainint inum 0word 0char cfor i 0 c getchar \niif c word 0else if word 0word 1numprintf "d"num*[题目1042百万富翁]一个百万富翁遇到一个陌生人陌生人找他谈了一个换钱的计划该计划如下我每天给你m 元而你第一天只需给我一分钱第二天我仍给你m 元你给我2 分钱第三天我仍给你m 元你给我4分钱依次类推你每天给我的钱是前一天的两倍直到一个月38 天百万富翁很高兴欣接受这个契约现要求编写一个程序由键盘输入m计算多少天后百万富翁开始亏钱[第一组自测数据] 18[键盘输入] [第二组自测数据]100↙[键盘输入][正确输出] 10000↙13[正确输出] 25参考程序includeincludemainint nmiscanf "d"mfor i 1i 38iif 001 pow 2i-1 -1 -im 0 breakprintf "d"i-114实验6 循环结构程序设计二一实验目的1进一步熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中使用多重循环二实验内容[题目1028求素数]输出2 到200 之间包括2 200 的所有素数注要求1 行1 个素数按由小到大的顺序输出[提示]采用双重循环外层循环产生2 到200 之间的数内层循环对数进行判断是否为素数参考程序includeincludemainint mkifor m 2m 200mk sqrt mfor i 2i kiif mi 0 breakif i k printf "d\n"m[题目1035打印菱形]由键盘输入正数n要求输出2n1 行的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]3 ↙ 2 ↙[正确输出] [正确输出]15参考程序include "stdioh"include "mathh"mainint nijkscanf "d"nfor i 1i 2n1ik abs n1-ifor j 1j kj printf " "for j 1j 2n1-2kj printf ""printf "\n"[题目1038打印图案]由键盘输入正数n要求输出中间数字为n 的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]4 ↙ 3[正确输出] [正确输出]1 1121 121 12321 12321 1234321 121 12321 1 1211参考程序includeincludemainint nijkhscanf "d"nfor i -n1i n-1ifor j 0j abs i jprintf " "for k 1k n-abs i k printf "d"kfor h n-abs i -1h 1h-- printf "d"hprintf "\n"16实验7 数组一实验目的1掌握一维数组和二维数组的定义赋值和输入输出方法2 掌握与数组有关的算法二实验内容[题目1039倒序]由键盘输入10 个整数倒序输出数字间由一个空格分隔[ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]66 13 67 99 2 19 20 14 5 70参考程序includemainint a [10]int ifor i 0i 10i scanf "d"a[i]for i 9i 0i-- printf "d\n"a[i][题目1040统计不同数字个数]由键盘输入20 个整数统计不同数字的个数[ 自测数据][键盘输入]70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11↙[正确输出]16[提示]上述答案中因为5 有1 个重复数字11 有1 个重复数字22 有2 个重复数字故不同数字有16个分别是70 5 14 22 19 2 99 67 13 66 93 44 38 11 39 3317参考程序include"stdioh"mainint a [20]int itp 0for i 0i 20iscanf "d"a[i]for t 0t itif a[t] a [i] breakif t ipprintf "d"p[题目1062打印矩阵]由键盘输入一个3×4 的矩阵要求输出它的转置矩阵[ 自测数据][键盘输入] [正确输出] 1 6 9 3 1 1 11 1 02 6 1 91 9 8 9 9 0 83 2 9参考程序includemainint a [3][4]b[4][3]ijfor i 0i 3ifor j 0j 4jscanf "d"a[i][j]b[j][i] a [i][j]for i 0i 4ifor j 0j 3jprintf "d "b[i][j]printf "\n"*[题目1047冒泡排序]由键盘输入10 个数用冒泡法对10 个数从小到大排序并按格式要求输出代码如下请填充完整数字间由一个空格分隔incude "stdioh"mainint a[10] i j t18for i 0i 10iscanf "d"___________for ___________for j 0j ____jif ______________________for i 0i 10iprintf "d "a[i][ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]2 5 13 14 19 20 66 67 70 99参考程序includemainint a [10]int ijtfor i 0i 10iscanf "d"a[i]for i 0i 9ifor j 0j 9-ijif a[j] a [j1]t a [j] a [j] a[j1] a[j1] tfor i 0i 10iprintf "d "a[i]*[题目1046计算高精度加法]由键盘输入两个位数很长的整数一行一个数每个数最长不超过80 位试计算并输出这两个数的和[ 自测数据][键盘输入]1XXXXXXXXXX23456789 ↙987654321098765 ↙[正确输出]1XXXXXXXXXX4455555419参考程序include "stdioh"include "stringh"mainint a [100] 0 b[100] 0 c[100] 0char s[101]int i 0n1 0n2 0 0e 0gets sn1 strlen sfor i n1-1i 0i-- a[n1-1-i] s[i]-0gets sn2 strlen sfor i n2-1i 0i-- b[n2-1-i] s[i]-0if n1 n2 n1else n2for i 0i ic[i] a[i]b[i]e 10e a[i]b[i]e 10if c[] 0 printf "d"c[]for i -1i 0i--printf "d"c[i]*[题目找矩阵中的鞍点]由键盘输入一个3 ×4 3 行4 列的矩阵输出矩阵中的鞍点即在矩阵行中最大列中最小的数若没有鞍点输出NO 字样[ 自测数据][键盘输入]87 90 110 98 ↙70 97 210 65 ↙98 45 120 30 ↙[正确输出]11020参考程序includemainint ijka[3][4]jflagfor i 0i 3ifor j 0j 4jscanf "d"a[i][j] for i 0i 3ia [i][0]j 0for j 0j 4jif a[i][j]a [i][j] j jflag 1for k 0k 3kif a [k][j]flag 0 breakif flagprintf "d" breakif flagprintf "NO"21实验8 字符数组的应用一实验目的1掌握字符数组和字符串函数的使用2 掌握与字符串处理有关的算法二实验内容[题目1121定义存贮字符串的字符数组]在下面程序中填充定义字符数组的语句使程序完整include "stringh"void mainchar s[80] 定义字符数组sstrcpy s "abcdefghij klmn"printf "s" s参考程序[题目1123字符串的输入与输出]下面程序实现从键盘读入字符串后输出到屏幕请填充必要的语句include "stdioh"void mainchar s[50]printf "Whats your name"gets s 由键盘读入字符串printf "Your name is "printf "s" s 打印字符串参考程序[题目1122字符串的合并]从键盘输入3 个字符串每个字符串以回车符做为结束标志将3 个字符串以输入先后顺序合并到字符串s 中请填空使用程序完整include "stdioh"include "stringh"mainchar s[100] ""char a [30]gets a strcat s a22gets a strcat s agets a strcat s a可以写多行代码printf "s" s[ 自测数据][键盘输入] [正确输出]123 123abc456abc456参考程序[题目1050寻找字符串]由键盘输入两个字符串假设第一个字符串必包含第二个字符串如第一个字符串为ABCDEF第二个为CDE则CDE 包含在ABCDEF 中现要求编程输出第二字符串在第一行字符串中出现的位置如果第二个字符串在第一个字符串中出现多次则以最前出现的为准[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]ABCDEFG ↙hellhello ↙DE ↙hello ↙[正确输出] [正确输出]4 5[提示]方法1建立双重循环外层循环变量指示第一个串的查找起始位置内层循环从起始位置开始判断第二个字符中是否出现在此处方法2 使用字符串函数strstr参考程序include "stdioh"mainint ijchar a [80] b[80]gets a gets bfor i 0a[i] \0ifor j 0b[j] \0jif a[ij] b[j] breakif b[j] \0 breakif a[i] \0 printf "d"i1else printf "Not Found"23实验9 函数的基本应用一实验目的1掌握定义函数的方法2 掌握函数实参与参的对应关系以及值传递的方式3 掌握函数的嵌套调用和递归调用的方法4 掌握全局变量和局部变量动态变量静态变量的概念和使用方法二实验内容[题目1059函数定义]下面是使用辗转相除法求最大公约数的程序请补充完整程序中函数的定义与调用include "stdioh"int f int m int nint rwhile r mn 0m nn rreturn nmainint a b nscanf "dd" a bprintf "d\n" f a b[题目1083编写函数计算阶乘]下面程序实现由键盘读入整数n计算并输出n 请补充完整计算阶乘的函数long fanc int along in 1for i 1i ai n nireturn nvoid mainint nscanf "d" n24printf "ld" fanc n[题目1124函数中的变量]写出下面程序的运行结果int f1 int xstatic int z 3y 0yzreturn xyzmainint a 1kfor k 0k 3k printf "4d"f1 a 程序运行结果为6 8 10*[题目1084编写递归调用函数实现十进制数转二进制数]下面程序实现由键盘输入一个正整数不大于100000000 输出其对应的二进制数原码表示请填空include "stdioh"void fun int iif i 1fun i2printf "d" i2mainint nscanf "d" nfun n25实验10 指针与结构体一实验目的1通过实验进一步掌握指针的概念会定义和使用指针变量2 能正确使用数组的指针和指向数组的指针变量3 能正确使用字符串的指针和指向字符中的指针变量4 掌握结构体类型变量的定义和使用二实验内容[题目1091交换两数由大到小输出]下面程序交换两数使两数由大到小输出请填空include "stdioh"void swap int p1 int p2int temptemp p1p1 p2p2 tempint mainint ab int papbscanf "dd" a bpa a pb bif a b swap pa pbprintf "d d\n"ab[题目1065数组中的指针]设有如下数组定义int a[3][4] 1357 9111315 17192123计算下面各项的值设数组a 的首地址为2000一个int 类型数占四个字节注意地址则输出地址变量则输出变量值要求一行一个答案不允许多余空行及空格1a[2][1] 2 a[1] 3 a 4 a 15 a 16 a 17 a[2] 18 a 1 19 a2 226参考程序include "stdioh"mainprintf "19\n"printf "2016\n"printf "2000\n"printf "2016\n"printf "2004\n"printf "2016\n"printf "2036\n"printf "2020\n"printf "21"[题目1092函数实现求字符串长度]下面程序以指针方式传递参数由函数实现求字符串长度请填空完成include "stdioh"include "stringh"int f char preturn strlen pint mainchar s[80]int iscanf "s" si f sprintf "d" i[题目1125定义结构体类型]要求定义一个名为student 的结构体类型其包含如下成员1字符数组name 最多可存放10 个字符2 字符变量sex用于记录性别3 整数类型变量num用于记录学号4 float 类型变量score 用于记录成绩并使下列代码完整定义结构体类型struct studentchar name[20]char sex。

C语言上机作业试题5套含答案

C语言上机作业试题5套含答案

第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。

程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。

例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。

例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。

(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。

)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。

方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。

例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。

⏹A说:不是我。

⏹B说:是C。

⏹C说:是D。

⏹D说:他乱说。

已知三个人说的是实话,一个人说的是谎话。

此刻要依照这些信息,找出做了好事的人。

VC语言上机试题及答案

VC语言上机试题及答案

C 语言上机考试题20套(试题)C 语言上机考试题(第一套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S 例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。

请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。

试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){…………}main() /*主函数 */{ clrscr();printf(″%f\n ″, fun(10));}2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几?3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。

C 语言上机考试题(第二套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S 例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。

请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。

试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){…………}main() /*主函数 */{ clrscr();printf(″%f\n″, fun(10));}2.回文数是指正读和反读都一样的自然数。

例如,8, 121, 5445这三个数都是回文数。

求:(1) [1,1000]之内既是回文数,又是素数的最大整数。

(2) [1,1000]以内既是回文数,又是素数的整数有多少个。

3. 编写程序,能对输入一行字符,统计其中分别有多少个单词和空格。

12月计算机二级C语言上机习题及答案

12月计算机二级C语言上机习题及答案

xx年12月计算机二级C语言上机习题及答案成绩的取得离不开我们平时的努力,以下是为大家的xx年12月上机习题及答案,希望对大家的学习起到帮助!使用VC++6.0翻开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正其中的错误,使程序正确运行,并且使程序输出的结果为0K注意:错误的语句在//******error******的下面,修改该语句即可。

试题程序:#includeclassTC{public:TC(){a=b=0:}private:inta,b;};classTCl:publicTC{public:TC1(){}//******error****** virtualvoidfunc(); };classTC2:publicTCl {public:TC2(){a=0:b=0:}voidfunc(){//******error****** cout<<"OK"} private:inta;intb;};voidmain(){TC20bj;//******error******TCl*p=(TCl*)obj;p->func();}(1)应改为“virtualvoidfunc()=0;”。

(2)应改为“cout<<"0K"<(endl;”。

(3)应改为“TCl*p=(TCl*)&obj;”。

【解析】此题中TCl类中的func函数是纯虚函数,纯虚函数的定义格式为virtual<函数类型><函数名>((参数表>)=0”,因此第1处的语句应为“virtualvoidfunc()=0;”。

func函数没有参数表。

编译程序后发现第2处的语句有错误,cout流中的数据是用流插入运算符“<<”顺序参加的,因此“<”不正确,应改成“cout<<"0K"<使用VC++6.0翻开考生文件夹下的源程序文件3.cpp。

《C语言》上机实验题及参考答案

《C语言》上机实验题及参考答案

《C语言》上机实验题及参考答案作者名:不详来源:网友提供05年7月21日1、编程实现对键盘输入的英文名句子进行加密。

用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变:2、编程实现将任意的十进制整数转换成R进制数(R在2-16之间)。

3、从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、1角、5分、1分各多少张。

4、随机产生20个[10,50]的正整数存放到数组中,并求数组中的所有元素最大值、最小值、平均值及各元素之和。

5、编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。

6、模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用A、B、C、D表示,当选某候选人时直接输入其编号(编号由计算机随机产生),若输入的不是A、B、C、D则视为无效票,选举结束后按得票数从高到低输出候选人编号和所得票数。

7、任何一个自然数m的立方均可写成m个连续奇数之和。

例如:1^3=12^3=3+53^3=7+9+114^3=13+15+17+19编程实现:输入一自然数n,求组成n3的n个连续奇数。

8、已知abc+cba=1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。

9、编制一个完成两个数的四则运算程序。

如:用户输入34+56则输出结果90.00。

要求运算结果保留两位小数,用户输入时一次将两个数和操作符输入。

10、输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。

如输入:56439,输出:5位数5,6,4,3,99,3,4,6,511、编写子函数:(1)用冒泡法将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。

c语言上机练习

c语言上机练习

第一次上机练习(首次)1.阅读以下程序,说出其功能和运算结果(输入5↙)。

#include <stdio.h>int main( ){int n ;int factorial(int n) ;scanf("%d",&n) ;printf("%d\n", factorial(n)) ;return 0 ;}int factorial(int n){int i, fact=1 ;for(i=1;i<=n;i++)fact=fact*i ;return fact ;}答案:120 求n的阶乘。

2.改正下列程序中的错误,在屏幕上显示“Welcome to You!”。

#include <stdio.h>int mian( ){printf("Welcome to You!\n")return 0 ;}答案:2行main4行末尾少分号3.编写程序在屏幕上显示以下内容:Programming is fun.And Programming in C is even more fun!答案:#include <stdio.h>int main( ){printf("Programming is fun.\nAnd Programming in C is even more fun!\n") ;return 0 ;}4.编写程序输出以下图案:* * * ** * ** **答案:#include <stdio.h>void main( ){printf("* * * *\n");printf(" * * *\n");printf(" * *\n");printf(" *\n");}5.编写程序,计算并在屏幕上显示10~20的平方值。

C语言程序设计上机实验指导与习题参考答案(第四版)

C语言程序设计上机实验指导与习题参考答案(第四版)

C语言程序设计上机实验指导与习题参考答案(第四版)C 语言程序设计上机实验指导与习题参考答案(第四版)(学生改编)实验 1:C语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。

(2)了解在该系统上如何编辑、编译、连接和运行一个 C程序。

(3)通过运行简单的 C 程序,初步了解 C程序的特点。

(4)在教师的指导下,学会使用在线评判系统。

二、实验内容1.运行第一个 C 程序题目:ThefirstCProgram将下列程序输入visualc ,编译、连接和运行该程序。

includequotstdio.hquotmain printfquotThefirstCProgramnquot 具体操作步骤(1)在编辑窗口中输入程序。

(2)保存程序,取名为a1.c。

(3)按照第一章中介绍的方法,编译、连接和运行程序。

,则该题完成。

4按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”2.在在线评判系统中提交实现了计算 ab 功能的程序题目 1001:计算ab由键盘输入两个整数,计算并输出两个整数的和。

实现该功能的程序如下,inclu dequotstdio.hquotmain int ab scanfquotddquotampaampbprintfquotdquotab(1)在程序编辑窗口中输入程序。

(2)保存程序,取名为a2.c。

(3)按照前二章中介绍的方法,编译、连接和运行程序。

(4)在程序运行过程中,输入15 30↙↙表示输入回车符(5)如果看到如下输出结果,则表明1530 的结果正确,如果得不到如下结果,则需检查并更正程序。

45(6)按照第三章中介绍的方法进入在线评判系统。

(7)显示题目列表,点击题号为 1001,题名为“计算ab”的题目。

(8)查看完题目要求后,点击页面下端的“sumbit” ,参照第二章提交程序的方法提交程序a2.c。

(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。

C语言上机实验完整答案

C语言上机实验完整答案

实验 2
程序代码 #include<stdio.h> void main () {char a;int i;
for (i=1;;i++) {
a=getchar(); if(a=='\n') break; switch(a) {case '0':printf(" zero ");break;
case '1':printf(" one ");break; case '2':printf(" two ");break; case '3':printf(" three ");break; case '4':printf(" four ");break; case '5':printf(" five ");break; case '6':printf(" six ");break; case '7':printf(" seven ");break; case '8':printf(" eight ");break; case '9':printf(" nine ");break; }
printf("input a number\n"); scanf("%d",&n); h=n-7*i;
while(h>7) {i=i+1; h=n-7*i;} switch(h) { case 1: printf("星期一\n"); break ; case 2: printf("星期二\n"); break ; case 3: printf("星期三\n"); break ; case 4: printf("星期四\n"); break ; case 5: printf("星期五\n"); break ; case 6: printf("星期六\n"); break ; case 7: printf("星期日\n"); break ; } } 运行结果

C语言上机练习汇总及答案

C语言上机练习汇总及答案

1)10002 显示Hello World! ........................................................................... 错误!未定义书签。

2)10003 显示What is a computer? .............................................................. 错误!未定义书签。

3)10004 显示图形(字符图案输出)......................................................... 错误!未定义书签。

4)10005 显示Welcome to You!(调试示例error01_1) ........................... 错误!未定义书签。

5)10006 显示"Programming in C is fun!" .................................................. 错误!未定义书签。

6)10007 显示图案(字符图案输出)....................................................... 错误!未定义书签。

7)20011 求华氏温度100°F对应的摄氏温度。

........................................... 错误!未定义书签。

8)20012 求华氏温度150°F 对应的摄氏温度。

......................................... 错误!未定义书签。

9)20013 求摄氏温度26°C对应的华氏温度。

............................................ 错误!未定义书签。

12年9月最新计算机二级C语言南开100上机填空题、改错题(笔者笔试优秀)

12年9月最新计算机二级C语言南开100上机填空题、改错题(笔者笔试优秀)

填空题答案第1题答案第1处填空:n>1或1<n第2处填空:n-1第3处填空:1或1l或1L第2题答案第1处填空:n==0或0==n或!n第2处填空:n==1或1==n第3处填空:fun(n-1)+fun(n-2)或fun(n-2)+fun(n-1) 第3题答案第1处填空:n--或--n或n-=1或n=n-1第2处填空:s[i]=s[n]或*(s+i)=*(s+n)第3处填空:s[n]=t或*(s+n)=t第4题答案第1处填空:i<=n或n>=i第2处填空:||第3处填空:1.0或(double)1第5题答案第1处填空:r*r第2处填空:&x第3处填空:x第6题答案第1处填空:<=第2处填空:n++或n+=1或n=n+1第3处填空:return s或return (s)第7题答案第1处填空:n%10第2处填空:break第3处填空:break第8题答案第1处填空:&num[i]或num+i第2处填空:max<num[i]?或num[i]>max?第3处填空:num[i]!=0或0!=num[i]第9题答案第1处填空:(*a)++或++(*a)或*a=*a+1或*a+=1 第2处填空:(*b)++或++(*b)或*b=*b+1或*b+=1 第3处填空:upper,lower第10题答案第1处填空:max=a第2处填空:max=b第3处填空:max=c第11题答案第1处填空:1第2处填空:s[k]或*(s+k)第3处填空:c第12题答案第1处填空:tt[i]<='Z'或'Z'>=tt[i]第2处填空:32或'a'-'A'第3处填空:tt第13题答案第2处填空:2第3处填空:n%i==0或!(n%i)或0==n%i第14题答案第1处填空:*p或*p!='\0'或*p!=0第2处填空:i++或++i或i+=1或i=i+1第3处填空:'\0'或0第15题答案第1处填空:!=第2处填空:str[1]或*(str+1)第3处填空:s,c第16题答案第1处填空:n%100!=0或n%100或0!=n%100 第2处填空:n%400==0或!(n%400)或0==n%400 第3处填空:flag第17题答案第1处填空:n第2处填空:else第3处填空:a,b第18题答案第1处填空:*p==t或t==*p第2处填空:bb[n++]=i第3处填空:n第19题答案第1处填空:score[i]或*(score+i)第2处填空:below第3处填空:below[i]或*(below+i)第20题答案第1处填空:i第2处填空:j第3处填空:aa,&n第21题答案第1处填空:j++或++j或j+=1或j=j+1第2处填空:s[i]=t1[i]第3处填空:j第22题答案第1处填空:&&第2处填空:0第3处填空:s[j]或*(s+j)第23题答案第1处填空:int x[]或int*x第2处填空:sum+=x[i]或sum=sum+x[i]第3处填空:sum/n第24题答案第1处填空:a第2处填空:a第3处填空:b第25题答案第1处填空:n/2第2处填空:i第3处填空:a[n-i-1]第26题答案第1处填空:i=1第3处填空:--j或j-1第27题答案第1处填空:j=2第2处填空:i第3处填空:j第28题答案第1处填空:1第2处填空:s*i或i*s第3处填空:0第4处填空:s+fun(k)或fun(k)+s第29题答案第1处填空:0第2处填空:i<=x或x>=i第30题答案第1处填空:--i或i--或i-=1或i=i-1第2处填空:s[i]-'0'第3处填空:t*10+k或k+t*10或10*t+k或k+10*t第31题答案第1处填空:*(p1+i)或p1[i]或*(p1+i)!=0或p1[i]!=0第2处填空:*p2或p2[0]或*p2!=0或p2[0]!=0第3处填空:*p2++第32题答案第1处填空:sum+=x[i]或sum=sum+x[i]第2处填空:avg*1000或1000*avg第3处填空:(avg+5)/10或(5+avg)/10第33题答案第1处填空:1第2处填空:i第3处填空:a[p+i]或*(a+p+i)第34题答案第1处填空:bb[i]=0或*(bb+i)=0第2处填空:bb[5]++或++bb[5]或bb[5]=bb[5]+1或bb[5]+=1 第3处填空:p++;或++p;或p+=1;或p=p+1;第35题答案第1处填空:i<*num或*num>i第2处填空:n++或++n或n+=1或n=n+1第3处填空:*num=n第36题答案第1处填空:&&第2处填空:s[i]-'0'第3处填空:n第37题答案第1处填空:xx[i]%10第2处填空:bb[n++]=xx[i]第3处填空:n第38题答案第1处填空:n/100%10第2处填空:"yes!"第3处填空:"no!"第39题答案第1处填空:"%d",&n第2处填空:str2[i]=str1[i];第40题答案第1处填空:"%s",str1第2处填空:%c第3处填空:str2第41题答案第1处填空:"%ld",&n第2处填空:n=-n;或n*=-1;第3处填空:"%ld",n第42题答案第1处填空:*p或p[0]第2处填空:default:b[10]++;第3处填空:p++;或p+=1;或p=p+1;或++p; 第43题答案第1处填空:*p或*p!=0或0!=*p第2处填空:bb[*p-'0']++或bb[*p-'0']+=1 第3处填空:num[j]=bb[i]第44题答案第1处填空:0第2处填空:||第45题答案第1处填空:s1-i-1或s1-1-i第2处填空:2*s1或s1*2第46题答案第1处填空:*k第2处填空:s[i]>max或max<s[i]第3处填空:i第47题答案第1处填空:xx[i]%10第2处填空:bb[n++]=xx[i]第3处填空:n第48题答案第1处填空:n>0或0<n第2处填空:n%10+'0'或'0'+n%10第3处填空:str[i]='\0'或str[i]=0第49题答案第1处填空:disc<0或0>disc第2处填空:sqrt第3处填空:sqrt第50题答案第1处填空:s第2处填空:*p++第3处填空:*(p)或*p或*p!=0第51题答案第1处填空:x>y或y<x第2处填空:x>z或z<x第3处填空:y>z或z<y第52题答案第1处填空:"out52.dat","w"第2处填空:fputc(ch,fp)第3处填空:fclose(fp)第53题答案第1处填空:i第3处填空:p->next第54题答案第1处填空:*p1<*p2或*p2>*p1第2处填空:*p1>*p2或*p2<*p1第3处填空:'\0'或0第55题答案第1处填空:flag=1第2处填空:j%i==0或0==j%i或!(j%i)第3处填空:flag==1或1==flag第56题答案第1处填空:&&第2处填空:fputc(ch,fp1)第3处填空:fclose(fp)第57题答案第1处填空:double第2处填空:j第3处填空:1.0/t或(double)1/t第58题答案第1处填空:&n第2处填空:i=1第3处填空:f*=i或f=f*i或f=i*f第59题答案第1处填空:sum=0第2处填空:sum+=n或sum=sum+n或sum=n+sum第3处填空:ld第60题答案第1处填空:i<n或n>i第2处填空:j<n-1或n-1>j第61题答案第1处填空:bb[i]=0或*(bb+i)=0第2处填空:bb[i]+=score[i][j]或bb[i]=bb[i]+score[i][j]或bb[i]=score[i][j]+bb[i] 第62题答案第1处填空:"%c",&str[i]或"%c",str+i第2处填空:str[i]!='*'或*(str+i)!='*'第3处填空:"%c",str[j]或"%c",*(str+j)第63题答案第1处填空:STU第2处填空:h第3处填空:h第64题答案第1处填空:str1[i]!=''或''!=str1[i]第2处填空:i++或++i或i+=1或i=i+1第65题答案第1处填空:bb[i][j]=1第2处填空:bb[i][j]=0第66题答案第1处填空:j>i或i<j第2处填空:bb[j]=bb[j-1]第3处填空:break第67题答案第1处填空:p=str第2处填空:p[i]++或++p[i]或p[i]+=1或p[i]=p[i]+1第2处填空:'\0'或0第3处填空:*p++第69题答案第1处填空:<第2处填空:*p2或p2[0]第3处填空:str1第70题答案第1处填空:*(pstr+j)或pstr[j]第2处填空:pstr[j]或*(pstr+j)第3处填空:p第71题答案第1处填空:std[3]或std[]或*std第2处填空:PERSON第3处填空:std第72题答案第1处填空:N第2处填空:M第3处填空:bb[i]/N或*(bb+i)/N第73题答案第1处填空:bb[i][j]=0第2处填空:1第3处填空:j==n-1-i或j==n-i-1第74题答案第1处填空:*std或std[0]第2处填空:std[i].age第3处填空:第75题答案第1处填空:&n第2处填空:t*i或i*t第3处填空:s+t或t+s第76题答案第1处填空:i第2处填空:s[j]=s[i]第77题答案第1处填空:N-1第2处填空:bb[n++]=aa[i]第3处填空:i,bb[i]第78题答案第1处填空:fun(char s[],int n)或fun(char*s,int n) 第2处填空:j=0第3处填空:s[j]='\0'或s[j]=0第79题答案第1处填空:aa[i]%2==0或0==aa[i]%2或aa[i]%2 第2处填空:i<k或k>i第80题答案第1处填空:--i或i--或i-=1或i=i-1第2处填空:bb[j]=bb[i]第81题答案第1处填空:sum=0第2处填空:t[i][i]第2处填空:g*g*g==i或i==g*g*g第83题答案第1处填空:break;第2处填空:i++或++i或i+=1或i=i+1第3处填空:'\0'或0第84题答案第1处填空:&&第2处填空:i,j第85题答案第1处填空:[N]第2处填空:t[i][j]第3处填空:t[j][i]第86题答案第1处填空:N第2处填空:N-1第3处填空:0第87题答案第1处填空:&&第2处填空:g+第88题答案第1处填空:s[i]或s[i]!=0或0!=s[i]第2处填空:s[i]==ch或ch==s[i]第3处填空:return n第89题答案第1处填空:s[i]!='\0'或s[i]或s[i]!=0第2处填空:32或'a'-'A'第3处填空:i++或++i或i+=1或i=i+1第90题答案第1处填空:STU第2处填空:std[i].num第3处填空:std[i]第91题答案第1处填空:i=1,j=0或j=0,i=1第2处填空:bb[j++]=i第3处填空:return j第92题答案第1处填空:str[i+1]或str[i+1]!='\0'或str[i+1]!=0 第2处填空:str[i]=ch第93题答案第1处填空:aa[max]<aa[i]或aa[i]>aa[max]第2处填空:aa[min]>aa[i]或aa[i]<aa[min]第3处填空:aa[max]=aa[min]第94题答案第1处填空:i++或++i或i+=1或i=i+1第2处填空:s[j++]=s[i]第3处填空:s[j]='\0'或s[j]=0第95题答案第1处填空:0.0或0或(double)0第2处填空:n第3处填空:s第1处填空:aa[k++]=t或aa[k]=t,k++或aa[k]=t;k++第2处填空:i<j或j>i第97题答案第1处填空:break第2处填空:t[i]第3处填空:u[ul]第98题答案第1处填空:s[i]!='\0'或s[i]或s[i]!=0第2处填空:25第3处填空:1第99题答案第1处填空:j%i==0或!(j%i)或0==j%i第2处填空:flag==1或flag或1==flag第3处填空:aver/n第100题答案第1处填空:k=0第2处填空:||第3处填空:s[k]='\0'或s[k]=0改错题答案第1题答案第1处:IsPrime(int n);应改为IsPrime(int n)第2处:if!(n%i)应改为if(!(n%i))第2题答案第1处:int k=1;应改为int k=0;第2处:while(*p!=*q)应改为while(*p||*q)第3题答案第1处:s[j]=s[i];应改为s[j++]=s[i];第2处:s[j]="\0";应改为s[j]='\0';第4题答案第1处:void fun(char*s,int a,int b)应改为void fun(char*s,int*a,int*b)第2处:a++;应改为(*a)++;第3处:b++;应改为(*b)++;第5题答案第1处:a[i+1]=a[i];应改为a[i]=a[i+1];第6题答案第1处:for(i=2;i<m;i++)应改为for(i=2;i<=m;i++)第2处:y-=1/(i*i);应改为y-=1.0/(i*i);第7题答案第1处:p=j应改为p=j;第2处:p=i;应改为p=j;第8题答案第1处:void fun(char*p);应改为void fun(char*p)第2处:p=q+i;应改为q=p+i;第9题答案第1处:t=s[k];应改为t+=s[k];第2处:*aver=&ave;应改为*aver=ave;第10题答案第1处:void fun(char*s,*t1,*t2,*w)应改为void fun(char*s,char*t1,char*t2,char*w) 第2处:while(r)应改为while(*r)第11题答案第2处:n=n*7+*p-'o';应改为n=n*8+*p-'0';第12题答案第1处:a=NuLL;应改为a=NULL;第2处:if(r==p)应改为if(*r==*p)第13题答案第1处:t+=1.0/k;应改为t+=1.0/i;第2处:应填return t;第14题答案第1处:int r;应改为double r;第2处:while(fabs(n-m)<0.001)应改为while(fabs(n-m)>0.001)第15题答案第1处:void fun(char str,char ch)应改为void fun(char*str,char ch) 第2处:if(*str==ch)应改为if(*str=='\0')第3处:str[1]='0';应改为str[1]='\0';或str[1]=0;第16题答案第1处:p->next=NULL;应改为p=s;第2处:s->data=rand()%m;应改为s->data=rand()%(m-1);第3处:return p;应改为return h;第17题答案第1处:if((k%13=0)||(k%17=0))应改为if((k%13==0)||(k%17==0)) 第2处:应填}第18题答案第1处:void fun(int a,int b)应改为void fun(int*a,int*b)第2处:t=b;b=a;a=t;应改为t=*b;*b=*a;*a=t;第19题答案第1处:void fun(long s,long t)应改为void fun(long s,long*t)第2处:while(s<0)应改为while(s>0)第20题答案第1处:void fun(int a[],int m)应改为int fun(int a[],int m)第2处:if(m>=a[mid])应改为if(m>a[mid])第21题答案第1处:p=h;应改为p=h->next;第2处:p=h->next;应改为p=p->next;第22题答案第1处:for(i=2;i<m;i++)应改为for(i=2;i<=m;i++)第2处:y+=1/(i*i);应改为y+=1.0/(i*i);第23题答案第1处:int fun(n)应改为int fun(int n)第2处:if(n=1)应改为if(n==1)第24题答案第1处:if(r==p)应改为if(*r==*p)第2处:if(r=='\0')应改为if(*r=='\0')第25题答案第1处:if n==0应改为if(n==0)第2处:result=n--;应改为result*=n--;第26题答案第1处:应填sum=0;第2处:scanf("%d,",a[i][j]);应改为scanf("%d,",&a[i][j]);第27题答案第1处:t=0;应改为t=1.0;第2处:while(t<=eps)应改为while(t>=eps)第28题答案第2处:应填p++;或++p;或p+=1;或p=p+1第3处:a[i]='0';应改为a[i]='\0';或a[i]=0;第29题答案第1处:b=a;应改为a=b;第2处:return(a);应改为return(b);第30题答案第1处:long k;应改为long k=1;第2处:num\=10;应改为num/=10;第31题答案第1处:if((tt[i]>='a')||(tt[i]<='z'))应改为if((tt[i]>='a')&&(tt[i]<='z'))第2处:tt[i]+=32;应改为tt[i]-=32;第32题答案第1处:if(i+1%5==0)应改为if((i+1)%5==0)第33题答案第1处:while(*s!='@')应改为while(*s)或while(*s!='\0')或while(*s!=0)第2处:(*s)++;应改为s++;第34题答案第1处:t=0;应改为*t=0;第2处:if(d%2==0)应改为if(d%2!=0)第35题答案第1处:if(p=='')应改为if(*p=='')第2处:*p=toupper(*(p-1));应改为*(p-1)=toupper(*(p-1));第36题答案第1处:j=1;应改为j=0;第2处:while(t!=0&&m!=0&&n!=0)应改为while(t!=0||m!=0||n!=0)第37题答案第1处:*r=t;应改为r=t;或r=&t[0];第2处:应填r=t;或r=&t[0];第38题答案第1处:t=x;x=y;应改为t=*x;*x=y;第2处:return(y);应改为return(t);或return t;第39题答案第1处:void fun(char s,char t)应改为void fun(char*s,char*t)第2处:t[2*d-1]='\0';应改为t[2*d]='\0';或t[d+i]='\0';或t[2*d]=0;或t[d+i]=0;第40题答案第1处:for(i=j+1;i<n-1;i++)应改为for(i=j+1;i<n;i++)第2处:t=i;应改为p=i;第41题答案第1处:while(p->next)应改为while(p!=NULL)第2处:p=h->next;应改为p=p->next;第42题答案第1处:if(i%2&&s[i]%2==0)应改为if(i%2||s[i]%2==0)或if(i%2!=0||s[i]%2==0) 第2处:t[i]='\0';应改为t[j]='\0';或t[j]=0;第43题答案第1处:k=n;应改为k=i;第2处:b=k/10;应改为b=k%10;第44题答案第1处:fun(int**a,int m)应改为void fun(int(*a)[M],int m)第2处:a[j][k]=k*j;应改为a[j][k]=(k+1)*(j+1);第45题答案第1处:void fun(char*s,t1,t2,w)应改为void fun(char*s,char*t1,char*t2,char*w) 第2处:while(w)应改为while(*w)第1处:fun(int n)应改为double fun(int n)第2处:return sum应改为return sum;第47题答案第1处:void fun(int*a,int n);应改为void fun(int*a,int n)第2处:m=0;应改为m=i;第48题答案第1处:fun(char(*sq)[N])应改为char*fun(char(*sq)[M])第2处:return sq;应改为return sp;第49题答案第1处:*t=malloc(sizeof(STU));应改为t=(STU*)malloc(sizeof(STU)*m);第2处:t[k].num=b[j].num;应改为strcpy(t[k].num,b[j].num);第50题答案第1处:t[i]=s[s1-i];应改为t[i]=s[s1-i-1];或t[i]=s[s1-1-i];第51题答案第1处:void fun(char str[][],int m,char*pt)应改为void fun(char str[][10],int m,char*pt) 第2处:pt[i]=str[k,i];应改为pt[i]=str[k][i];第52题答案第1处:int fun(double x[],int n)应改为int fun(double x[],int n){第53题答案第1处:switch(g);应改为switch(g)第2处:case 1;应改为case 1:第54题答案第1处:double fun(char*s,char*t)应改为char*fun(char*s,char*t)第2处:(*ss)++;应改为ss++;第3处:(*tt)++;应改为tt++;第55题答案第1处:y=0;应改为y=1;第2处:d=i-a;应改为d=a-i;第56题答案第1处:void fun(char(*pstr)[6])应改为void fun(char*pstr[6])第2处:if(strcmp(*(pstr+i),pstr+j)>0)应改为if(strcmp(*(pstr+i),*(pstr+j))>0)第3处:*(pstr+i)=pstr+j;应改为*(pstr+i)=*(pstr+j);第57题答案第1处:while(i>j)应改为while(i<j)或while(j>i)第2处:c=0;应改为*c='\0';或*c=0;第58题答案第1处:for(i=0;i<=s1;i++)应改为for(i=0;i<s1;i++)第2处:t[s1]='\0';应改为t[2*s1]='\0';第59题答案第1处:void fun(char*s,int num[5]);应改为void fun(char*s,int num[5])第2处:num[i]=0;应改为num[k]=0;第3处:switch(s)应改为switch(*s)第60题答案第1处:if(i%k!=0)应改为if(i%k==0)第2处:if(k<i)应改为if(k>=i)第61题答案第1处:fun(int m)应改为double fun(int m)第2处:for(i=100,i<=m,i+=100)应改为for(i=100;i<=m;i+=100)第62题答案第1处:break应改为break;第63题答案第1处:i=1;应改为i=0;第2处:while(i<3||*p)应改为while(i<3&&*p)第3处:b[k]='';应改为b[k++]='';第64题答案第1处:c=c-32;应改为c=c+32;第2处:c=c-5;应改为c=c+5;第65题答案第1处:void fun(long s,long t)应改为void fun(long s,long*t)第2处:s1=s1*100;应改为s1=s1*10;第66题答案第1处:fun(int n)应改为double fun(int n)第2处:b+=c;应改为b=c;第67题答案第1处:fun(double a,double x0)应改为double fun(double a,double x0) 第2处:if(abs(x1-x0)>=1e-6)应改为if(fabs(x1-x0)>=1e-6)第68题答案第1处:return 1;应改为return 3;第2处:return 3;应改为return 1;第69题答案第1处:void upfst(char p)应改为void upfst(char*p)第70题答案第1处:int fun(int*b);应改为int fun(int*b)第2处:for(k=10;k<=55;k++)应改为for(k=1;k<55;k++)第3处:return k;应改为return i;第71题答案第1处:if k>1应改为if(k>1)第72题答案第1处:int fun(char*str,*substr)应改为int fun(char*str,char*substr)第2处:for(i=0,str[i],i++)应改为for(i=0;str[i];i++)第73题答案第1处:t=1.0-1/i;应改为t-=1.0/i;或t=t-1.0/i;或t-=(double)1/i;第2处:应填return t;第74题答案第1处:c=aa[i];应改为ch=aa[i];第75题答案第1处:int fun(int m,int xx[][])应改为int fun(int m,int xx[][M])第2处:printf("%4f",xx[i][j]);应改为printf("%4d",xx[i][j]);第76题答案第1处:long s1=0;应改为long s1=1;第2处:s\=10;应改为s/=10;第77题答案第1处:void fun(char a)应改为void fun(char*a)第78题答案第1处:k++应改为k++;第2处:if(m=k)应改为if(m==k)第79题答案第1处:c[t]="\0";应改为c[t]='\0';第80题答案第1处:fun(int n)应改为double fun(int n)第2处:s=s+(Double)a/b;应改为s=s+(double)a/b;第81题答案第1处:fun(int n)应改为double fun(int n)第2处:for(i=2;i<n;i++)应改为for(i=2;i<=n;i++)第82题答案第1处:result*=--n;应改为result*=n--;第2处:应填return result;第83题答案第1处:void fun(int x,int y)应改为void fun(int*x,int*y)第2处:t=x;x=y;y=t;应改为t=*x;*x=*y;*y=t;第84题答案第1处:void fun(int m,int k);应改为void fun(int m,int k)第2处:aa[i]=m/k;应改为aa[i]=m%k;第3处:printf("%d",aa[i]);应改为printf("%d",aa[i-1]);第85题答案第1处:s[j]=s[i];应改为s[j++]=s[i];第2处:s[i]='\0';应改为s[j]='\0';第86题答案第1处:float*k;应改为float k;第2处:if(*s<*p)应改为if(*s>*p)第87题答案第1处:void fun(int a)应改为void fun(int a[M])或void fun(int a[])或void fun(int*a) 第2处:a[j]=a[j+1];应改为a[j]=a[j-1];第88题答案第1处:for(i=0;i<=3;i++)应改为for(i=1;i<=3;i++)第2处:if(k>=1&&k<=6)应改为if(k>=0&&k<=6)第89题答案第1处:for(i=1;i<y;i++)应改为for(i=1;i<=y;i++)第2处:t=t/1000;应改为t=t%1000;第90题答案第1处:d=0;应改为d=1;第2处:s=1;应改为s=0;第3处:s=s/10;应改为d=d/10;第91题答案第1处:for(i=strlen(t);i;i--)应改为for(i=strlen(t)-1;i;i--)或for(i=strlen(t)-1;i>0;i--)第2处:if(t[j]<t[j+1])应改为if(t[j]>t[j+1])第92题答案第1处:long s=0,t=1;应改为long s=0,t=0;第2处:for(j=0;j<=n;j++)应改为for(j=0;j<n;j++)第3处:t=t%10;应改为t=t/10;第93题答案第1处:while(t>=num)应改为while(fabs(t)>=num)第2处:t=s%n;应改为t=s/n;第94题答案第1处:int sum=0.0;应改为double sum=0.0;第2处:sum\=c;应改为sum/=c;第95题答案第1处:s=s+(n+1)/n;应改为s=s+(double)(n+1)/n;第2处:return s;应改为return t;第96题答案第1处:fun(int k)应改为double fun(int k)第2处:return s应改为return s;第97题答案第1处:f(double x)应改为double f(double x)第2处:return s应改为return s;第98题答案第1处:#define FU(m,n)(m/n)应改为#define FU(m,n)(m)/(n)第2处:Return(value);应改为return(value);第99题答案第1处:int i,j,k,sum;应改为int i,j=0,k,sum; 第2处:if(sum%4=2)应改为if(sum%4==2) 第100题答案第1处:if(t=0)应改为if(t==0)第2处:zero=count;应改为*zero=count;。

C语言上机练习参考答案

C语言上机练习参考答案

第1章C语言概述1-1编写程序,在屏幕上显示一个如下输出:1-2---------------------------------1-3Programming in C is fun!1-4I love C language.1-5---------------------------------1-6编写程序,在屏幕上显示一个如下图案:1-7* * * *1-8* * *1-9* *1-10*1-11已知某个圆的半径,编写一个程序,用来计算并显示面积。

1-12要求:将π定义为符号常量,并假设一个恰当的半径值。

Program#include <stdio.h> #define PI 3.14 main(){ float r=5, s; s = PI*r*r;printf("The area of circle is: %.2f\n", s); } OutputThe area of circle is: 78.50 1-13已知两个整数20和10,编写程序,自定义函数add( )将这两个数相加,自定义函数sub( )计算这两个数的差,并按照下面形式显示计算结果: 1-1420+10=30 1-1520-10=10Program#include <stdio.h> int add(int a, int b) { return (a+b); }int sub(int a, int b) { return (a-b); }main(){ int a=20, b=10;printf("%d + %d = %d\n", a, b, add(a, b)); printf("%d - %d = %d\n", a, b, sub(a, b)); } Output20 + 10 = 30 20 – 10 = 10 1-16 已知变量a 、b 和c 的值,编写程序,用来计算并显示x 的值,其中cb a -=x 1-17 请分别用以下数值运行该程序 1-18 (1)a=250,b=85,c=25 1-19(2)a=300,b=70,c=80Program (1)#include <stdio.h> main(){ int a=250, b=85, c=25; float x;x=1.0*a/(b-c);printf("x = %.2f\n", x);}Output (1)x = 4.17#include <stdio.h>main(){ int a=300, b=70, c=80;float x;x=1.0*a/(b-c); /*试写成x=a/(b-c); 得到什么运行结果?为什么?*/printf("x = %.2f\n", x);}Output (2)x = -30.00第2章 常量、变量及数据类型 & 第3章 运算符和表达式3-1 编写程序,求华氏温度100o F 对应的摄氏温度。

最新最全二级c语言上机题105套参考答案

最新最全二级c语言上机题105套参考答案

1. 程序填空题(1) M (2) < (3) k2. 程序改错题(1) || 改为&& if((tt[i]>=‟a‟ && (tt[i]<=‟z‟))(2) +改为-tt[i]-=32;3. 程序设计题void fun( int m, int *k, int xx[] ){int i,j;int n=0;for(i=4;i<m;i++){for (j=2;j<i;j++)if(i%j==0) break;if(j<i) xx[n++]=i;}*k=n;}第2套题参考答案1.程序填空题(1) j++ 或j+=1, ++j, j=j+1 (2) s[i]=t1[i] (3) j2. 程序改错题(1) 将,改为; for(j=i+1; j<6; j++)(2) *(pstr+j) *(patr+i)=pstr+j;3.程序设计题int fun(char *ss, char c){int i, n=0;for(i=0;ss[i]!='\0';i++)if(ss[i]==c)n++;return n;}另一种写法int fun(char *ss, char c){int i=0;for(;*ss!='\0';ss++)if(*ss==c)i++;return i;}1. 程序填空题(1) && (2) 0 或者…\0‟(3) s[j] 或*(s+j)2. 程序改错题(1)将<改为<= for(i=2; i<=m; i++)(2)将1改为1.0 y+=1.0/(i*i); y+=(double)1/(i*i);3. 程序设计题void fun ( int a[3][3], int b[3][3]){int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)b[i][j]=a[i][j]+a[j][i];}第4套参考答案1.程序填空题(1) s[i] (2) …9‟(3) *t=n2.程序改错题(1) t=*x; *x=y;(2) return t;3.程序设计题void fun (int *a, int *n){int i,k=0;for(i=1; i<1000; i++)if(((i%7==0) || (i%11==0)) && (i%77 !=0))a[k++]=i;*n=k;}第5套参考答案1.程序填空题(1) 1 (2) s[k]或*(s+k) (3) c2.程序改错题(1) long s=0, t=0; (2) t=t/10;3.程序设计题void fun(char *tt, int pp[]){int i;for(i=0;i<26;i++)pp[i]=0;for(i=0; tt[i]!='\0'; i++)if((tt[i]>='a') && (tt[i]<='z'))pp[tt[i]-'a']++;} //tt[i]可以用*tt代替,i++可以用tt++代替,省略i=0第6套参考答案1.程序填空题(1) t=i; (2) i (3) …\0‟或者02.程序改错题(1)while(fabs(t)>=num)(2)t=s/n;3.程序设计题void fun (char a[], char b[], int n){int i,j=0;for(i=0;a[i]!=0;i++)if(i!=n)b[j++]=a[i];b[j]='\0';}第7套参考答案1.程序填空题(1) …\0‟(2) 0 (3) c2.程序改错题(1) double sum=0.0; (2) sum/=c;3.程序设计题float fun(int n){int i, t=0;float s=0.0;for(i=1;i<=n;i++){t=t+i;s=s+1.0/t;}return s;}第8套参考答案1.程序填空题(1) i++ (2) m (3) m2.程序改错题(1)while((high>=2) && (n<10) ) //丢了括号(2)break; //丢了分号3.程序设计题double fun(){double x1=0.0, x0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>=0.000001);return x1;}第9套参考答案1.程序填空题(1) N (2) N-1 (3) 02.程序改错题(1) s=s+(double)(n+1)/n (2) return t;3.程序设计题int fun( int t){int f0=0, f1=1,f;do{f=f0+f1;f0=f1;f1=f;}while(f<t);return f;}第10套参考答案1.程序填空题(1) 0 (2) j-- (3) j2.程序改错题(1) double f(double x) (2) return s;3.程序设计题double fun( int m ){double s=0.0,t=0.0;int i;for(i=1;i<=m;i++)t=t+log(i);s=sqrt(t);return s;}第11套参考答案1.程序填空题(1) N (2) t[i][j] (3) t[j][i]2.程序改错题(1) (m)/(n) (2) value3.程序设计题void fun( char *a ){char *p=a;int i=0;while (*p!='\0' && *p=='*'){p++;}while(*p!='\0'){a[i++]=*p;p++;}a[i]='\0';}另一种解法,用指针void fun( char *a ){char *p=a;while (*p=='*') p++;for (;*p!='\0';p++,a++)*a=*p;*a='\0';}第12套参考答案1.程序填空题(1) t[][N] (2) i=0; i<N; (3) s2.程序改错题(1) int fun(…) (2) else if(m>a[mid])3.程序设计题void fun( char *a, char *p ){char *t=a;int i=0;for(; t<=p;t++)if(*t!='*')a[i++]=*t;for(;*t!=0;t++)a[i++]=*t;a[i]='\0';}另一种用指针void fun( char *a, char *p ){char *t=a;for(; t<=p;t++)if(*t!='*')*(a++)=*t;for(;*t!=0;t++)*(a++)=*t;*a='\0';}第13套参考答案1.程序填空题(1) sum=0; (2) t[i][i] (3) 12.程序改错题(1) double r; (2) while(fabs(n-m)>0.001)3.程序设计题void fun( char *a, char *h,char *p ){int i=0;char *q=a;while(q<h){ a[i]=*q; i++; q++; }while(q<=p){if(*q!='*'){a[i]=*q; i++;}q++;}while(*q){ a[i]=*q; i++; q++; }a[i]=0;}第14套参考答案1. 程序填空题(1)1 (2) j++ (3) j2. 程序改错题(1) t=a; a=b; b=t; (2) return b;3. 程序设计题void fun( char *a ){int i=0;char *p=a;while(*p){if(*p!='*')a[i++]=*p;p++;}a[i]=0;}另一种用for循环void fun( char *a ){int i, j=0;for(i=0; a[i]!=\0‟; i++){if(a[i]!='*')a[ij++]=a[i];}a[j]=0;}第15套参考答案1. 程序填空题(1)a[i]%2==0 (2) a[j] (3) j2. 程序改错题(1) int fun(int n) (2)if(n==1)3. 程序设计题void fun( char *a,int n ){int i=0, j=0;char *p=a, *q=a;while (*p)p++;p--;while(*p=='*'){i++;}if(i>n){while(*q && q<(p+n+1)){a[j++]=*q;q++;}a[j]=‟\0‟;}第16套参考答案1. 程序填空题(1)a[i] (2) a[j] (3) a[j]2. 程序改错题(1)去掉分号(2)case 1: case 2 : return 1;3. 程序设计题void fun(STREC *a){int i;double sum=0.0, average;for(i=0;i<N;i++)sum=sum+a->s[i];average=sum/N;a->ave=average;}第17套参考答案1. 程序填空题(1)a[] (2) 2 (3) i+12. 程序改错题(1)sum=0.0 (2)if((i+1) % 5==0)3. 程序设计题double fun( STREC *a, STREC *b, int *n ){double sum=0.0, ave;int i,j=0;for(i=0;i<N; i++)sum=sum+a[i].s;ave=sum/N;for(i=0;i<N;i++)if(a[i].s<ave)b[j++]=a[i]; //结构体整体赋值return ave;}第18套参考答案1. 程序填空题(1) 1 (2) i (3) a[p+i]2. 程序改错题(1)float k; (2)if(*a<*c)3. 程序设计题int fun( STREC *a, STREC *b ){int max, i,j=0;max=a[0].s;for(i=1; i<N; i++)if(a[i].s>max)max=a[i].s;for(i=0;i<N;i++)if(a[i].s==max)b[j++]=a[i];return j;}第19套参考答案1. 程序填空题(1)char (2) ch=‟9‟(3) …0‟2. 程序改错题(1) b[k]=*p (2)b[k++]= “”; 或者b[k]=”“; k++;3. 程序设计题double fun( STREC *h ){double sum=0, ave;STREC *p=h->next ;while(p!=NULL){sum=sum+p->s;p=p->next ;}ave=sum/N;return ave;}第20套参考答案1. 程序填空题(1) n/2 (2) i (3) a[n-1-i]2. 程序改错题(1) n=*-…0‟ (2) n=n*8+p-…0‟;3. 程序设计题STREC fun( STREC *a, char *b ){int i;STREC str={"\0",-1};for(i=0;i<16;i++)if(strcmp(a[i].num,b)==0)str=a[i];return str;}第21套参考答案1.程序填空题(1) 999 (2) t/10 (3) x2.程序改错题(1) void fun(long s, long *t) (2) while(s>0) 3.程序设计题void fun( STREC a[] ){int i, j, k;STREC t;for(i=0; i<N-1; i++){k=i;for (j=i+1;j<N;j++)if(a[j].s>a[k].s)k=j;if(k!=i){t=a[i]; a[i]=a[k]; a[k]=t;}}}第22套参考答案1.程序填空题(1) 0 (2) x (3) t++2.程序改错题(1) int i, s1; (2) s[s1-i-1]3.程序设计题void fun(int a, int b, long *c){*c=(a/10)*100+(a%10)*1+(b/10)*1000+(b%10)*10;}第23套参考答案1.程序填空题(1) 0 (2) x*10 (3) n/102.程序改错题(1) *t=0; (2) if(d%2==1)3.程序设计题void fun(char p1[], char p2[]){int i,j;for(i=0;p1[i]!='\0';i++);for(j=0;p2[j]!='\0';j++)p1[i+j]=p2[j];p1[i+j]='\0';}第24套参考答案1.程序填空题(1) 1 (2) s>0 (3) i*102.程序改错题(1)int fun(int n, int xx[][M]) (2) printf( "%d", xx[i][j] );3.程序设计题void fun(int a, int b, long *c){*c=(a/10)*1000+(a%10)*10+(b/10)*1+(b%10)*100;}第25套参考答案1.程序填空题(1) 0.0 (2) n (3) (t*t)2.程序改错题(1) for(i = 0; str[i]!='\0'; i++) (2) if(substr[k+1]=='\0')3.程序设计题double fun ( double eps){double s=1,p1=1,p2=1,t=1;int i=1;while(t>eps){p1=p1*i;p2=p2*(2*i+1);t=p1/p2;s=s+t;i++;}return 2*s;}第26套参考答案1.程序填空题(1) 10 (2) 0 (3) x2.程序改错题(1) if (n==0) (2) result=result*(n--); or result*=n--;3.程序设计题long fun ( char *p){long n=0;int flag=1, m;if(*p=='-'){p++; flag=-1;}else if (*p=='+'){p++;}while(*p!=0){m=*p-'0';n=n*10+m;p++;}n=flag*n;return n;}第27套参考答案1.程序填空题(1) (double)(2*k+1) or (double)3 (2)> (3)(t+1)2.程序改错题(1) double fun ( int n ) //教材没错,原题是void(2) s = s + (double)a / b;3.程序设计题int fun (int a[][M]){int i, j, max;max=a[0][0];for(i=0;i<2;i++){for(j=0;j<M;j++)if(a[i][j]>max)max=a[i][j];}return max;}第28套1.程序填空题(1) 1 (2) i*2 (3)-12.程序改错题(1) k++; //丢了分号(2) if(m==k)3.程序设计题void fun(int a[],int n, int *max, int *d){int i;*max=a[0]; *d=0;for(i=1;i<n;i++)if(a[i]>*max){ *max=a[i]; *d=i; }}第29套1.程序填空题(1) 0 (2) i++ ((2.0*i)*(2.0*i))2.程序改错题(1) void fun (char *s, char *t) (2) t[2*d] = '\0';3.程序设计题void fun(char *s, char t[]){int i,j=0,n;n=strlen(s);for(i=0;i<n;i++)if(i%2!=0 && s[i]%2!=0)t[j++]=s[i];t[j]='\0';}第30套1.程序填空题(1) s[i] (2) k (3) 02.程序改错题(1) while ( *w ) //原题无* (2) if(*r==*p) 3.程序设计题void fun(char *s, char t[]){int i,j=0,n;n=strlen(s);for(i=0;i<n;i++)if(s[i]%2==0)t[j++]=s[i];t[j]=0;}第31套参考答案1.程序填空题(1) k (2) N (3) a[k][i]2.程序改错题(1) for(i=strlen(t)-1;i;i--) //教材正确(2) if(t[j]>t[j+1]) 3.程序设计题void fun(char *ss){int i,j,n;n=strlen(ss);for(i=0;i<n;i++)if(i%2==1 && ss[i]>='a' && ss[i]<='z')ss[i]=ss[i]-32;}第32套参考答案1.程序填空题(1) k (2) N-1 (3) temp2.程序改错题(1) void fun(int a[][M], int m) (2) a[j][k] = (k+1) * (j+1) ;3.程序设计题void fun(int a, int b, long *c){*c=(a/10)*10+(a%10)*1000+b/10+(b%10)*100;}第33套参考答案1.程序填空题(1) j (2) 0 (3) i++2.程序改错题(1) for(i = 2 ; i <= m ; i++) (2) y -= 1.0 /(i * i) ;3.程序设计题int fun(int score[],int m, int below[]){double sum=0.0, ave;int i,j=0;for(i=0;i<m;i++)sum=sum+score[i];ave=sum/m;for(i=0;i<m;i++)if(score[i]<ave)below[j++]=score[i];return j;}第34套参考答案1.程序填空题(1) t, s (2) s[i] (3) 02.程序改错题(1) if (i%k==0) (2) if (k==i)3.程序设计题void fun (int x, int pp[], int *n){int i,j=0;for(i=1;i<x;i++)if(x%i==0 && i%2==1)pp[j++]=i;*n=j;}第35套参考答案1.程序填空题(1) s (2) -- (3)return 02.程序改错题(1) double fun (int n) (2) s=s+(double)a/b;3.程序设计题void fun(int m,int k,int xx[]){int i, j;m=m+1;j=0;while(j<k){ for(i=2;i<m;i++)if(m%i==0)break;if(m==i)xx[j]=i; j++;}m++;}}另一种用for循环编写的void fun(int m,int k,int xx[]){int i, j, n;for(i=m+1,n=0; n<k;i++){ for(j=2;j<i;j++)if(i%j==0)break;if(i==j) xx[n++]=i;}}第36套参考答案1.程序填空题(1) n++ (2) 0 (3)s++2.程序改错题(1) t=t+s[k]; or t+=s[k] ; (2) *aver=ave;3.程序设计题int fun(int *s,int t,int *k){int i, max;max=s[0]; *k=0;for(i=1;i<t;i++)if(s[i]>max){ *k=i;max=s[i];}}第37套参考答案1.程序填空题(1) *s (2) s++ (3) n2.程序改错题(1) { //丢了函数的括号(2) if (x[j]>=xa) //不是=> 3.程序设计题float fun(int m, int n){float p1=1,p2=1, p3=1;float p;if(m<n){t=m;m=n;n=t;}for(i=1;i<=m;i++)p1=p1*i;for(j=1;j<=n;j++)p2=p2*j;for(k=1;k<=(m-n);k++)p3=p3*k;p=p1/(p2*p3);return p;}可以先建立一个求阶乘的函数,然后调用long jc(int m){long s=1;int i;for(i=1;i<=m;i++) s=s*i;return s;}float fun(int m, n){float p;p=1.0*jc(m)/jc(n)/jc(m-n);}第38套参考答案1.程序填空题(1) …0‟or 48 (2) s++ (3) sum2.程序改错题(1) if((k%13==0)||(k%17==0)) (2) }3.程序设计题double fun( int n){int i;double sum=0.0;for(i=0;i<n;i++)if(i%3==0 && i%7==0)sum=sum+i;sum=sqrt(sum);return sum;}第39套参考答案1.程序填空题(1) *s (2) 1 (3) k[n]2.程序改错题(1) double float fun(int k) (2) return s;3.程序设计题double fun(int n){double s=0.0, t;int i;for(i=1;i<=n;i++){t=1.0/(i*(i+1));s=s+t;}return s;}第40套参考答案1.程序填空题(1) i (2) ps[j] (3) tp2.程序改错题(1) double fun(int n) (2) return sum; 3.程序设计题double fun(double x, int n){double s=1.0,t=1.0, p=1.0;int i;for(i=1;i<=n;i++){t=t*x;p=p*i;s=s+t/p;}return s;}第41套参考答案1.程序填空题(1) double (2)f1 (3)f32.程序改错题(1) while(p!=NULL) (2) p=p->next3.程序设计题int fun(char *str){int n=0,i,flag=1;char *p=str;while(*p!='\0'){n++;p++;}for(i=0;i<n/2;i++){ if(str[i]==str[n-i-1]);else{flag=0;break;}}return flag;}第42套参考答案1.程序填空题(1) h->next (2) p->next (3)>2.程序改错题(1) p=h->next; (2) p=p->next;3.程序设计题void fun (int (*s)[10], int *b, int *n, int mm, int nn){int i,j,k=0;for(i=0;i<mm;i++)for(j=0;j<nn;j++)b[k++]=s[i][j];*n=k;}第43套参考答案1.程序填空题(1) NODE (2) next (3)r2.程序改错题(1) if(i%2 || s[i]%2==0) (2) t[j]='\0';3.程序设计题void fun (int (*s)[10], int *b, int *n,int mm, int nn){int i,j,k=0;for(i=0; i<nn;i++)for(j=0;j<mm;j++)b[k++]=s[j][i];*n=k;}第44套参考答案1.程序填空题(1) next (2) NULL (3) r2.程序改错题(1) r=t; (2) r=t;3.程序设计题void fun(char a[M][N],char *b){int i,j,k=0;for(i=0;i<M;i++)for(j=0; a[i][j]!='\0'; j++)b[k++]=a[i][j];b[k]='\0';}第45套参考答案1.程序填空题(1) p->next (2) q (3)p->next2.程序改错题(1) while(*s!= '\0') (2) s++;3.程序设计题void fun(int *w, int p, int n){int i,j,t;for(i=0;i<=p;i++){t=w[0];for(j=0;j<n-1;j++)w[j]=w[j+1];w[j]=t;}第46套参考答案1.程序填空题(1)double (2)f1 (2) f22.程序改错题(1)char* fun(char *s, *t) (2) ss++ (3) tt++3.程序设计题void fun (char *w,int m){int i,j,n;char ch;n=strlen(w);for(i=0;i<3;i++){ch=w[0];for(j=1;j<n;j++)w[j-1]=w[j];w[j-1]=ch;}}第47套参考答案1.程序填空题(1) x (2) p (3) s2.程序改错题(1) long k=1; (2) num/=10;3.程序设计题float fun ( float *a , int n ){int i;float ave=0;for(i=0;i<n;i++)ave=ave+a[i];ave=ave/n;return ave;}第48套参考答案1.程序填空题(1) FILE * (2) fp (3) ch2.程序改错题(1) s[j++]=s[i]; (2) s[j]='\0';3.程序设计题void fun(char (*s)[N],char *b){int i,j,k=0;for(i=0;i<N;i++)for(j=0;j<M;j++)b[k++]=s[j][i];b[k]='\0';}第49套参考答案1.程序填空题(1) N (2) k (3) ss[i]2.程序改错题(1) int k=0; (2) while(*p || *q)3.程序设计题#include <stdio.h>void fun( char *a ){int i=0;char *p=a;while(*p && *p=='*'){a[i]=*p;i++;p++;}while(*p){if(*p!='*'){a[i]=*p;i++;}p++;}a[i]='\0';}第50套参考答案1.程序填空题(1) fw (2) str (3) str2.程序改错题(1) void fun (long s, long *t) (2) sl = sl*10;3.程序设计题int fun( STREC *a, STREC *b ){int i,n=0;*b=a[0];for(i=1;i<N;i++)if(a[i].s<b->s)*b=a[i];for(i=0;i<N;i++)if(a[i].s==b->s){b[n]=a[i];n++;}return n;}第51套参考答案1.程序填空题(1) k (2) len (3)ss[i][j]2.程序改错题(1) result*=n—…(2) return result;3.程序设计题void fun( char s[],int c){int j=0,n;char *p=s;while(*p!='\0'){ if(*p!=c)s[j++]=*p;p++;}s[j]='\0';}第52套参考答案1.程序填空题(1) x (2) n (3) t2.程序改错题(1) d=1; (2) s=0; (3) d=d/10;3.程序设计题double fun(double x[9]){int i;double s=0.0,t;for(i=0;i<8;i++){t=sqrt((x[i]+x[i+1])/2);s=s+t;}return s;}第53套参考答案1.程序填空题(1) STU (2) std[i].num (3) std[i]2.程序改错题(1) if(*r==*p) {r++; p++;} (2) if(*r==‟\0‟)3.程序设计题void fun(char *s, char t[]){int i,j=0;for(i=0;s[i]!='\0';i++)if(s[i] % 2==1)t[j++]=s[i];t[j]=0;}第54套参考答案1.程序填空题(1) std[i].year (2) std[i] (3) n2.程序改错题(1) IsPrime(int n) (2) if(!(n%i))3.程序设计题fun(STU a[], STU *s){int i;*s=a[0];for(i=1;i<N;i++)if(a[i].s>s->s)*s=a[i];}第55套参考答案1.程序填空题(1) STU (2) score[i] (3) &std2.程序改错题(1) if(k>1)3.程序设计题void fun(int a[ ][N], int n){int i,j;for(i=0;i<N;i++)for(j=0;j<i;j++)a[i][j]=a[i][j]*n;}第56套参考答案1.程序填空题(1) std[] (2) PERSON (3) std2.程序改错题(1) int k, q, i; (2) pt[i]=str[k][i];3.程序设计题void fun (int a[][N]){int i,j;for(i=0;i<N;i++)for(j=0;j<=i;j++)a[i][j]=0;}第57套参考答案1.程序填空题(1) std[0] (2) std[i].age (3) 2.程序改错题(1) void fun(int *a, int *b) (2) t=*b;*b=*a;*a=t;3.程序设计题void fun(int tt[M][N],int pp[N]){int i,j,max;for(i=0;i<N;i++){max=tt[0][i];for(j=0;j<M;j++)if(tt[j][i]>max)max=tt[j][i];pp[i]=max;}pp[i]=0;}第58套参考答案1.程序填空题(1) a[i] (2) m%10 (3) m/102.程序改错题(1) b[i] = a[i][0]; (2) for (j=1; j<N; j++) (3) if ( b[i] > a[i][j] ) 3.程序设计题double fun(double a[ ] , int n){int i,j;double min,max,sum;min=max=a[0];sum=a[0];for(i=1;i<n;i++){sum=sum+a[i];if(a[i]>max) max=a[i];if(a[i]<min) min=a[i];}sum=sum-max-min;return sum/(n-2);}第59套参考答案1.程序填空题(1) i+1 (2) k=j (3) t2.程序改错题(1) void fun(char *str, char ch ) (2) if ( *str != ch ) (3) str[1] = '\0';3.程序设计题void fun(char*s){int i,n;char t;n=strlen(s);for(i=0;i<n/2;i++){t=s[i];s[i]=s[n-i-1];s[n-i-1]=t;}}第60套参考答案1.程序填空题(1) *n (2) next (3) head2.程序改错题(1) a=NULL; (2) if(*r==*p)3.程序设计题void fun(int a, int b, long *c){*c=(a%10)*1000+(a/10)*10+b%10+(b/10)*100;}第61套参考答案1.程序填空题(1) ss[i] (2) j+n (3) 12.程序改错题(1) if (*p==' ') (2) *(p-1)=toupper( *(p-1));3.程序设计题void fun(char *s,int num){int i,j,k;char *p=s;char ch;for(i=1;i<num-1;i++){ch=p[i];k=i;for(j=i+1;j<num-1;j++)if(p[j]>p[k])k=j;p[i]=p[k];p[k]=ch;}第62套参考答案1.程序填空题(1) [N] (2)len (3) *n=len2.程序改错题(1) t+=1.0/i; (2) return t;3.程序设计题int fun(char *str, char *substr){char *r,*p;int n=0;while(*str){p=str;r=substr;while(*r){ if(*p==*r) {p++; r++;}elsebreak;}if(*r=='\0') n++;str++;}return n;}另一种解法int fun(char *str, char *substr){int i, j=0;for(i=0;str[i+1]!=‟\0‟;i++)if(str[i]==substr[0] && str[i+1]==substr[1]) j++;return j;}第63套参考答案1.程序填空题(1) && (2) …A‟(3) ch2.程序改错题(1) void fun(int a[]) //答案是void fun(int *a) (2) a[j]=a[j-1];3.程序设计题int fun(int n){int i,j,s=0;for(i=2;i<n;i++)if(n%i==0)s=s+i;return s;}第64套参考答案1.程序填空题(1)1.0 (2) -1 (3)t2.程序改错题(1) for(i=1;i<=3;i++) (2) if(k>=0 && k<=6)3.程序设计题double fun(int n){int i,p=1;double s=1.0,t=1.0;for(i=1;i<=n;i++){p=p*i;t=1.0/p;s=s+t;}return s;}第65套参考答案1.程序填空题(1)x (2)n (3)fabs(t)2.程序改错题(1) for(i=1;i<=y;i++) (2) t=t%1000;3.程序设计题double fun(double x){double s=1.0,t;int n=1;t=0.5*x;s=s+t;do{n++;t*=(0.5-n+1)*x/n;s=s+t;}while(fabs(t)>=1e-6);return s;}第66套参考答案1.程序填空题(1) 1.0 (2) 1 (3) i2.程序改错题(1) k=i; (2) b=k%10;3.程序设计题double fun(double x[10]){int i;double s=0.0, ave;for(i=0;i<10;i++)s=s+x[i];ave=s/10;s=0.0;for(i=0;i<10;i++)s=s+pow((x[i]-ave),2); //平方等于两个相乘,0.5次方等于开平方s=s/10;s=pow(s,0.5);return s;}第67套参考答案1.程序填空题(1) tt (2) tt.score[i] (3) std2.程序改错题(1) void fun(int *a,int n) //去掉分号(2) m=i;3.程序设计题unsigned fun(unsigned w){unsigned i;int s=1,sum=0,t;do{t=w%10;t=t*s;sum=sum+t;s=s*10;w=w/10;}while(w>=10);return sum;} //另一种思路是求w的位数,对n-1位取余数第68套参考答案1.程序填空题(1)q (2) next (3) next2.程序改错题(1) p=j; (2) p=i;3.程序设计题void fun ( int m, int *a , int *n ){int i,j=0;for(i=1;i<=m;i++)if((i%7==0)||(i%11==0))a[j++]=i;*n=j;}第69套参考答案1.程序填空题(1) N (2) i (3) -12.程序改错题(1) a2=k/10; (2)return i;3.程序设计题void fun( char *a ){char *p;int i=0,j=0;p=a;while(*p){i++;p++;}p--;while(*p=='*'){ p--;j++;}a[i-j]=0;}第70套参考答案1.程序填空题(1) next (2) t->data (3) t2.程序改错题(1) void fun (char *a) //丢* (2) printf("%c", *a) ; //丢,3.程序设计题char *fun ( char *s, char *t){int i,j;for(i=0;s[i]!='\0';i++);for(j=0;t[j]!='\0';j++);if(i>=j) return s;else return t;}第71套参考答案1.程序填空题(1) “r”(2) fs (3) ft2.程序改错题(1) if (d%2==0) (2) s /= 10;3.程序设计题void fun(char *s, char t[]){int i,j=0;for(i=0;s[i]!='\0';i++)if((i%2==0) &&(s[i]%2==0))t[j++]=s[i];t[j]='\0';}第72套参考答案1.程序填空题(1) a (2) (3) score[i]2.程序改错题(1) s[j++]=s[i]; (2) s[j]=0;3.程序设计题void fun( char *a ){int i,j,n=0;char t;char*p=a;for(i=0;p[i]!='\0';i++)n++;while(*p=='*'){t=p[0];for(i=1;i<n;i++)p[i-1]=p[i];p[i-1]=t;}}另一种思路void fun( char *a ){int i=0,n=0;char*p=a;while(*p=='*'){ n++; p++;} //统计*的个数while(*p){ a[i]=*p ; i++ ; p++} //将前导*后的字符传递给awhile(n!=0) //后面补*{a[i]=‟*‟;i++;n--;}a[i]=‟\0‟}第73套参考答案1.程序填空题(1) N (2) substr (3) 02.程序改错题(1) fun(int x, int y, int z ) (2) return j;3.程序设计题void fun( char *a, int n,int h,int e ){char *p;int i;for(i=0;i<(n-h-e);i++)a[i]=a[h+i];a[i]='\0';}第74套参考答案1.程序填空题(1) data (2) next (3) head2.程序改错题(1) while ( *r ) (2) *a = *r; a++; r++; //r++丢分号3.程序设计题void fun(char *s, char t[]){int i,j=0;for(i=1;s[i]!='\0';i+=2)t[j++]=s[i];t[j]=0;} //可以先求一下字符串的长度strlen第75套参考答案1.程序填空题(1) struct student (2) n-1 (3) a[i].name, a[j].name2.程序改错题(1) q=p+i; (2) while(q>p )3.程序设计题int fun( STREC *a,STREC *b,int l, int h ){int i,j=0;for(i=0;i<N;i++)if(a[i].s>=l && a[i].s<=h)b[j++]=a[i];return j;}第76套参考答案1.程序填空题(1) b->sno (2) ->name (3) &t2.程序改错题(1) double fun(double a, double x0) (2) if( fabs(x1-x0)>=0.00001 ) 3.程序设计题double fun( STREC *a, STREC *b, int *n ){int i,j=0;double ave,sum=0.0;for(i=0;i<N;i++)sum=sum+a[i].s;ave=sum/N;for(i=0;i<N;i++)if(a[i].s>=ave)b[j++]=a[i];*n=j;return ave;}第77套参考答案1.程序填空题(1) STYPE (2)FILE (3) fp2.程序改错题(1) for( i=0; i<sl; i++) (2) t[s1*2] = '\0';3.程序设计题void fun(int a, int b, long *c){*c=(a/10)*1000+(a%10)*10+(b/10)*100+b%10;}第78套参考答案1.程序填空题(1) fp (2) == (3) fp2.程序改错题(1) n=strlen(aa); (2) ch=aa[i];3.程序设计题double fun( STREC *h ){STREC *p=h->next;double max=p->s;while(p!=NULL){if(p->s>max)max=p->s;p=p->next;}return max;}第79套参考答案1.程序填空题(有问题)2.程序改错题(有问题)3.程序设计题void fun(int a, int b, long *c){*c=a/10+(a%10)*100+(b/10)*1000+(b%10)*10;}第80套参考答案1.程序填空题(1) FILE * (2) fclose(fp) (3) fp2.程序改错题(1) t=calloc(m,sizeof(STU)); (2) t[k]=b[j];3.程序设计题int fun(int a[], int n){int i, j=1;for(i=1;i<n;i++)if(a[i-1]!=a[i])a[j++]=a[i];return j;}第81套参考答案1.程序填空题(1) [M] (2) N (3) 02.程序改错题(1) t=1.0; (2) return (2*s)3.程序设计题void fun( char *a, int n ){char *p=a;char *q=a;int i=0,j=0;while(*p=='*'){p++; i++;}if(i>n){while(*q){a[j++]=*(q+i-n); q++;}a[j]='\0';}}第82套参考答案1.程序填空题(1) fp (2) fclose(fp) (3) fname2.程序改错题(1) for ( i=j+1; i<n ; i++ ) (2) p=i;3.程序设计题void fun(int a, int b, long *c){*c=a/10+(a%10)*100+(b/10)*10+(b%10)*1000;}第83套参考答案1.程序填空题(1) NULL (2)n (3) head, ch2.程序改错题(1) for (i = 0,t = 0; p[i] ; i++) (2) c[t]='\0';3.程序设计题void fun ( char *ss ){int i;for(i=1;ss[i]!='\0';i+=2)if(ss[i]>='a' && ss[i]<='z')ss[i]=ss[i]-32;}第84套参考答案1.程序填空题(1) struct student * (2) a->score[i] (3) a2.程序改错题(1) char *fun(char (*sq)[M]) (2) return sp;3.程序设计题void fun(int a, int b, long *c){*c=(a/10)*100+a%10+(b/10)*10+(b%10)*1000;}第85套参考答案1.程序填空题(1) 0 (2) && (3) 12.程序改错题(1) t=t-1.0/i; (2) return t;3.程序设计题void fun (char *str){char *p=str;int i=0;while(*p!='\0'){ if(*p!=' ')str[i++]=*p;p++;}str[i]='\0';}第86套参考答案1.程序填空题(1) j=2 (2) i (3)j2.程序改错题(1)j=0 (2) if(sum%4==2)3.程序设计题double fun(int n){int i;double s=0,t=0;for(i=1;i<=n;i++){t=1.0/(2*i-1)-1.0/(2*i);s=s+t;}return s;第87套参考答案1.程序填空题(1) 0 (2) t (3) i+t2.程序改错题(1) b[i] = 0; (2) b[a[i] - 'a']++; (3) if (b[max] < b[i]) 3.程序设计题(答案评分有问题)long fun( char *s ){int n, i, j;long m=0;n=strlen(s);for(j=0;j<n;j++){i=s[j]-48;m=m*10+i;}return m;}另一种解法int i,sum=0,len;len=strlen(s);for(i=0;i<len;i++){sum=sum*10+*s-48;s++;}return sum;第88套参考答案1.程序填空题(1) “r”(2) > (3) fwrite2.程序改错题(1) p=s (2) while(*p++);3.程序设计题void fun(int *a, int *b){int i,j;for(i=0;i<M;i++)b[i]=0;for(i=0;i<N; i++){j=a[i]/10;if(j>=0 && j<=9)b[j]++;elseb[10]++;}}第89套参考答案1.程序填空题(1) b[k] (2) N/2 (3) <2.程序改错题(1) int t[N] ,i, num=0; (2) t[num++]=b[i]; (3) for(i=0; i<num; i++) 3.程序设计题int fun(char *s){int n=0;while(*s){if(*s>='0' && *s<='9')n++;s++;}return n;}第90套参考答案1.程序填空题(1) j (2) k (3) p2.程序改错题(1) while ( i < j ) (2) if ( *a )3.程序设计题void fun(char *s, char t[]){int len,i,j=0;len=strlen(s);for(i=0;i<len;i++)if(i%2==0 && s[i]%2==1);elset[j++]=s[i];t[j]=0;}第91套参考答案1.程序填空题(1) i%5 (2)\n (3) a[i]2.程序改错题(1) return t; (2) for(i=0;i<N;i++) t[i]=x[i]; (3) x[i+1]=findmid(a,b,c);3.程序设计题int fun( int *s, int x){int i;for(i=0;i<N;i++)if(s[i]==x)break;if(i==15)return -1;elsereturn i;}第92套参考答案1.程序填空题(1) pb (2) p->data (3) p->next2.程序改错题int i, one=0, zero=0 ; (2) switch( s[i] ) (3) case 0 : zero++; break;3.程序设计题void fun( char *a , char *s){while(*s){*a=*s;a++;s++;}*a=0;}第93套参考答案1.程序填空题(1) [N] (2) i (3) i+12.程序改错题(1) void fun(int m,int k) //去掉分号(2) aa[i]=m%k; (3) printf("%d",aa[i-1]);3.程序设计题char *fun(char (*a)[81], int num, char *max){int i,len,m;max=a[0];for(i=0;i<num;i++){if(strlen(max)<strlen(a[i]))max=a[i];}return max;}第94套参考答案1.程序填空题(1) a[0][i] (2) < (3) x, y2.程序改错题(1) void fun(int *x,int *y) (2) t=*x;*x=*y;*y=t;3.程序设计题int fun(int lim, int aa[MAX]){int i,j,k=0;for(i=2;i<=lim;i++){for(j=2;j<i;j++)if(i%j==0) break;。

C语言程序设计上机习题与参考答案

C语言程序设计上机习题与参考答案

C语言程序设计上机习题与参考答案1、给出三角形的三边a、b、c,求三角形的面积(应先判断a、b、c三边是否能构成一个三角形)。

2、某幼儿园只收2~6岁的小孩,2~3岁编入小班,4岁编入中班,5~6岁编入大班,编制程序实现每输入一个年龄,输出该编入什么班。

3、编写程序,输入一个整数,判断它能否被3、5、7整除,并根据情况输出下列信息:(1)能同时被3、5、7整;(2)能同时被3、5、7中的两个数整除,并输出这两个数;(3)只能被3、5、7中的一个数整除;(4)不能被3、5、7中的任何一个数整除。

4、请列出所有的个位数是6,且能被3整除的两位数。

5、求1~500中能被5整除的数的倒数之和。

6、编写程序,输入某门功课的若干个同学的成绩,以-1作为终值,计算平均成绩并输出。

7、若口袋里放入12个球,3个红球,3个白的,6个黑的,从中任取8个,编写程序,列出所有可能的取法。

8、编写一个程序,求2022!的末尾有多少个0?9、一个自然数平方的末几位与该数相同时,称该数为同构数。

例如:252=625,则25为同构数。

编程求出1~1000中的同构数。

10、输入一个较大的整数,求小于该整数的最大5个素数。

n11、求下列数列的近似值:S=1-1/22+1/33-1/44+(-1)/nn.输入精度,当某一项的精度小于该值时停止计算。

floatfun(floatep){}voidmain(){floatep;canf(“%f”,&ep);printf(“%f\n”,fun(ep));}12、编写一个函数change(int某,intr),将十进制整数某转换成r(1<r<10)进制后输出。

13、求1000以内的亲密数对。

亲密数对的定义为:若整数a的所有因子(不包括本身)之和为b,b的所有因子(不包括b本身)之和为a,且a和b不相等,则称a与b为亲密数对。

intfun(int某){}voidmain(){intn,a,b;for(n=1;n<1000;n++){b=fun(n);a=fun(b)if(a!=b&&a==n)printf(“\n%d,%d\n”,a,b);}}14、用递归法求下列问题的解:一对小兔,一个月后长成中兔,第二个月长成大兔,长成大兔,长成大兔后以后每个月生一对小兔。

(完整版)C语言上机练习题及答案

(完整版)C语言上机练习题及答案

(完整版)C语言上机练习题及答案1输入三个整数x,y,z,把这三个数由小到大输出。

# includevoid main(){int x,y,z,a;scanf ("%d,%d,%d",&x,&y,&z);if(x>y) {a=x; x=y;y=a;}if(x>z) { a=x; x=z; z=a;}if(y>z) {a=y; y=z; z=a;}printf("%d,%d,%d\n",x,y,z);}2输入圆的半径,输出圆的周长和面积。

# include# define PI 3.1415926# define S ==PI*r*r# define V (4.0/3)*PI*r*r*rvoid main(){double r;printf("please input r:");scanf("%lf",&r);printf("area is %.4lf\n",S);printf("volume is %.4lf\n",V);}输入正方形的边长,输出正方形的周长和面积。

# includevoid main(){float c,zc,mj;printf("输入你的正方形");scanf("%f\n",&c);zc=4*c;mj=c*c;printf("周长%f,面积%f,边长%f",zc,mj,c);}3用格式输入函数输入3个字符,并用输出函数反向输出3个字符和他们的ASCII 码。

# includeint main(){char-ch1,ch2,ch3;printf("please input three characters:\n");scanf("%C%C%c",&ch1,&ch2,&ch3);printf("%c\n%d\n",ch3,ch3);printf("%c\n%d\n",ch2,ch2);printf("%c\n%d\n",ch1,ch1);}输入一个摄氏温度,要求输出华氏温度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
union aa
{ float x,y;
char c[6];
};
struct st
{ union aa v;
float w[5];
double ave;
} w;
3.有以下说明定义语句,可用a.day引用结构体成员day,请写出引用结构体成员a.day
的其它两种形式【1】【2】。
{ int day;
char mouth;
{union bt
{int k;
char c[2];
}a;
a.k=-7;
printf("%o,%o\n",a.c[0],a.c[1]);
}
8.若有以下的说明、定义和语句,则输出结果为_______(已知字母A的十进制数为65)。
main()
{union un
{int a;
char c[2];
}w;
w.c[0]='A';w.c[1]='a';
}
10.下面程序的输出结果是________。
struct ks
{int a;int *b;}
main()
{struct ks s[4],*p;int n=1,i;
for(i=0;i<4;i++)
{s[i].a=n;
s[i].b=&s[i].a;
n=n+2;
}
p=&s[0];
printf("%d,%d\n",++(*p->b),*(s+2)->b);
while (ch!=’#’)
{ s=(struct node*)malloc(sizeof(struct node));
s->data=(【2】);
r->next=s.r;
r=s;
ch=getchar();
}
r->next=(【3】);
return h;
}
7.下列程序的执行结果为_______。
main()
root
struct list
{
char *sp;
(【1】)
(【2】)
}root;
6.以下函数creatlist用来建立一带头节点的单链表,链表的结构如下图所示,新的
节点总是插入在链表的末尾。链表的头指针作为函数值返回。链表最后一个节点的next域放入NULL,作为链表结束的标志。data为字符型数据域,next为指针域。读入时字符以#表示输入结束(#不存入链表)。请填空。
int year;
} a,*b;
b=&a;
4.为了建立如图所示的存储结构(即每个结点含两个域,data是数据域,next是指向该结构的指针域,data用以存放整型数)请填空。
datanext
struct link {char data;(【1】)}node;
5.变量root有如图所示的存储结构,其中sp是指向字符串的指针的指针域,next是指向该结构的指针域,data用以存放整型数。请填空,完成此结构的类型说明和变量root的定义。
C语言程序设计上机作业12
答案
结构体与共用体上机作业答案
1.答案:【1】10【2】4
2.答案:34
3.答案:【1】(*b).day【2】b->day
4.答案:【1】struct link *next
5.答案:【1】struct list *next【2】int data
6.答案:【1】struct【2】ch【3】NULL
else if(vtype==FLOAT)printf("%f\n",v.y);
}
15.下面程序的输出是_______。
main()
{enum em{em1=3,em2=1,em3};
char *aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
struct node
{ char data;
struct node *next;
};
……
(【1】)creatlist()
{ struct node *h,*s,*r;
char ch;
h=(struct node *)malloc(sizeof(struct node));
r=h;
ch=getchar();
main()
{struct st
{char a[10];
int b;
double c;
};
printf("%d\n",sizeof(struct st));
}
13.若有以下的说明和语句,已知int类型占两个字节,则以下的输出结果为________。
main()
{union un
{int i;
double y;
{int vtype;
union val
{int x;
char c;
float y;
}v;
v.x=100;vtype=INT;v.y=23.70;vtype=FLOAT;v.c='A';vtype=CHAR;
if(vtype==INT)printf("%d\n",v.x);
else if(vtype==CHAR)printf("%c\n",v.c);
7.答案:177771,177777
8.答案:60501
9.答案:4,8
10.答案:2 5
11.答案:13
12.答案:20
13.答案:18
14.答案:A
15.答案:DDBBCC
C语言程序设计上机作业12
结构体与共用体上机作业
要求:把下列各题填空。直接把答案填写在相应的位置,然后保存此word文件,上传。
printf("%o\n",w.a);
}
9.程序运行的结果是________。
main()
{union EXAMPLE
{struct
{int x;
int y;
}in;e.b=2;e.in.x=e.a*e.b;e.in.y=e.a+e.b;
printf("%d,%d\n",e.in.x,e.in.y);
}
11.下面程序的输出结果是________。
#include<stdio.h>
union pw
{int i;
char ch[2];
}a;
main()
{a.ch[0]=13;
a.ch[1]=0;
printf("%d\n",a.i);
}
12.若有以下的说明和语句,已知int类型占两个字节,则以下的输出结果为_______。
}
1.有以下定义和语句,则sizeof(a)的值是【1】,而sizeof(a.share)的值是【2】。
struct date
{ int day;
int month;
int year;
union
{ int share1;
float share2;
}share;
} a;
2.若有以下说明和定义语句,则变量w在内存中所占字节数________。
};
struct st
{char a[10];
union un b;
};
printf("%d\n",sizeof(struct st));
}
14.程序运行的结果是_______。
#include<stdio.h>
#define INT 1
#define FLOAT 2
#define CHAR 3
main()
相关文档
最新文档