大工城市学院2018年-2019年C语言期末考试题型

时间:2019-05-14 17:00:28下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《大工城市学院2018年-2019年C语言期末考试题型》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《大工城市学院2018年-2019年C语言期末考试题型》。

第一篇:大工城市学院2018年-2019年C语言期末考试题型

C语言考试要点

一、题型与分值

1.选择题(20分=20*1分)2.名词解释(10分=2*5分)3.思考与应用题(25分=5*5分)4.程序上分析题(30分=5*6分)5.编程题(15分=1*15分)

二、说明 1.选择题

与教材中每章后面的选择题题型一致,共20小题,每小题1分。2.名词解释

主要是第5-10章的章标题(数组、指针、字符串、结构、文件)从中选两个,每个5分,共10分。3.思考与应用题

共5小题,每小题5分,共25分。教材各章后面习题中的【思考与应用题】。第一章 第1~10题 第二章 第1~5题 第三章 第1~3题 第四章

第五章 第1~3题 第六章 第4、11、12、17、19、20题 第七章 第1~2题 第八章 第1~3题 第九章 第3~4题 第十章 第3题 4.程序分析题

共5小题,每小题6分,共30分。教材各章后面习题中的【思考与应用题】以及上机指导中的【上机练习】,重点是第3-8章。每个题目给出一段完整的程序代码,提出2-3个问题,比如写出程序的运行结果,改变个别条件后,再次写出程序的运行结果。下面是样题:

int main(void){ int x, y = 1;switch(x){ case 1: case 2: y += 1;case 3: y += 2;break;default: y += 3;} printf(“%dn”,y);} 根据程序回答以下问题:

(1)若画线位置的语句为:x=2;则程序的执行结果是什么?

(2)若画线位置的语句为:x=3;则程序的执行结果是什么?

(3)若画线位置的语句为:x=4;则程序的执行结果是什么?

5.编程题 一个程序15分,主要考察结构体和函数,下面是样题。

typedef struct //定义结构数据类型STU { int xh;char name[20];int score[3];float averScore;}STU;

int findHN(STU [],int n);//函数原型声明语句

int main(void)///main函数定义 { STU s[4] = { {100, “Liming”, {96,97,98}}, {101, “Zhangliang”,{86,85,75}}, {102, “Susan”, {64,45,78}}, {103, “Liufeng”, {86,92,94}} };int hn;

hn = findHN(s, 4);//函数调用

printf(“Number is %dn”,hn);//输出高于平均分的人数

return 0;}///main函数结束

int findHN(STU ss[],int n)//函数findHN定义部分 { int i;//控制循环,记录人数 int j;//控制循环,记录成绩门数 int hn;//记录高于平均分的人数 float aver;//记录n个人的平均分

//以下代码实现求每个人的平均分ss[i].sverScore和n个人的平均分aver

//以下代码实现统计高于平均分的人数hn hn = 0;

return hn;//返回高于平均分的人数

}// findHN函数定义结束

第二篇:C语言第一类题型

C语言编程第一周

1.编写一程序P122.C实现以下功能

从键盘读入4个数num1、num2、num3、num4,输出:(num1÷num2的余数)×num3+num4,不需考虑num2为0和计算结果溢出的情况。要求输出的结果中,整数部分宽度为8(不足8时以0补足)、小数部分宽度为7。编程可用素材:printf(“请输入4个数:”)、printf(“n计算结果为:„。请输入4个数:100 30 100.1234567 2

5int main(void){

} 2.编写一程序P134.C实现以下功能

通过键盘输入一串(约定为10个字符),输出每个字符对应的ASCII码值(十进制)。编程可用素材:printf(”n请输入10个字符:“)、printf(”n加密结果为:„。请输入10个字符:Very Good!

加密结果为:86, 101, 114, 121, 32, 71, 111, 111, 100, 33 #include

int main(void){

} 3.编写一程序P721.C实现以下功能

从键盘输入x,y,z的值,编写程序输出以下表达式的值:

x+z%3*(int)(x+y)%2/4

编程可用素材:printf(“please input x,y,z: ”)、printf(“nResult = „。

程序的运行效果应类似地如图1所示,图1中的红色部分是从键盘输入的内容。return 0;char a1, a2, a3, a4, a5, a6, a7, a8, a9, a10;

printf(”n请输入10个字符: “);scanf(”%c%c%c%c%c%c%c%c%c%c“, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9, &a10);printf(”n加密结果为: %d, %d, %d, %d, %d, %d, %d, %d, %d, %dn“, a1, a2, a3, a4, a5, a6, return 0;int num1, num2, num4;double num3, xx;

printf(”请输入4个数:“);scanf(”%d%d%lf%d“, &num1, &num2, &num3, &num4);xx =(num1 % num2)* num3 + num4;printf(”n计算结果为:%016.7fn“, xx);计算结果为:00001026.2345670 #include a7, a8, a9, a10);please input x,y,z: 2.5,4.7,7 Result = 2.500000 #include

int main(void){

} 4.编写一程序P736.C实现以下功能

从键盘上输入一个四位整数,计算各个位上的数字之和。编程可用素材:printf(”Input a number with 4-digit: “)、printf(”nsum=„n“„。Input a number with 4-digit: 1234 sum=10 #include

int main(void){

}

第二周

1.编写一程序P132.C实现以下功能

在屏幕上输出I can printf n,”t &!。

程序的运行效果应类似地如图1所示。I can printf n,“t &!#include return 0;printf(”Input a number with 4-digit: “);scanf(”%d“, &a1);a2 = a1 % 10;a3 = a1 / 10 % 10;a4 = a1 / 100 % 10;a5 = a1 / 1000;sum = a2 + a3 + a4 + a5;printf(”nsum=%dn“, sum);int a1, a2, a3, a4, a5, sum;return 0;float x, y, m;int zz;

printf(”please input x,y,zz: “);scanf(”%f%f%f“, &x, &y, &zz);m = x + zz % 3 *(int)(x + y)% 2 / 4;printf(”nResult =%fn“, m);int main(void){

}

2.编写一程序P710.C实现以下功能

输入一个小写英文字母,首先输出它及其ASCII码,然后输出其对应的大写字母及其ASCII码。编程可用素材:printf(”Input a lowercase letter: “)、printf(”n„(„)„。

Input a lowercase letter: yy(121)Y(89)#include

int main(void){

} 3.编写一程序P711.C实现以下功能

用scanf输入圆半径r,圆柱高h,求圆周长C1(=2πr)、圆面积S(=πr)、圆柱体积V(=πrh)。(注意:本题中规定圆周率取值为3.14)

编程可用素材:printf(“Input: ”)、printf(“nC1 = „ S = „ V =„。Input: r=1.3, h=5C1 = 8.16 S = 5.31V = 26.53 include #include

int main(void){

printf(”Input: “);scanf(”r=%lf, h=%d“, &rr, &hh);cc = 3.14f * 2 * rr;ss = 3.14f * rr * rr;vv = 3.14f * rr * rr * hh;printf(”nC1 = %.2fn S = %.2fn V = %.2fn“, cc, ss, vv);double rr, cc, ss, vv;int hh;

22printf(”I can printf ,“ &!n”);return 0;char xiao, da;printf(“Input a lowercase letter: ”);scanf(“%c”, &xiao);da = xiaoaa)*(ppcc));printf(“narea=%.2fn”, area);return 0;printf(“Input a character: ”);scanf(“%c”, &aa);printf(“nAscii('%c')= 0x%xn”, aa, aa);char aa;} return 0;6.编写一程序P135.C实现以下功能

通过键盘输入弧度x,输出x的正弦值(可用库函数sin)。编程可用素材:printf(“请输入弧度 x: ”)、printf(“nSin(„)= „n”„。

请输入弧度 x: 1.552Sin(1.55)= 0.99982 #include #include

int main(void){

} 7.编写一程序P259.C实现以下功能

先从键盘读入7个数据(依次为3整数、2字符、2实数),然后按示例格式倒序输出这7个数据。编程可用素材:printf(“请输入7个数据(依次为3整数、2字符、2实数): ”)、printf(“n这7个数据倒序为: ”)。请输入7个数据(依次为3整数、2字符、2实数): 81 192 35 x m 6127.123763 152.351192这7个数据倒序为: 7-152.35119 6-6127.12376 5-m 4-x 3-35 2-192 1-81 #include

int main(void){

}

第三周

1.编写一程序P111.C实现以下功能

x(x只考虑整数int且必须定义为int、但F(x)完全可能超过int的表示范围)通过键盘输入(输入前return 0;printf(“请输入7个数据(依次为3整数、2字符、2实数): ”);scanf(“%d %d %d %c %c %lf %lf”, &a1, &a2, &a3, &a4, &a5, &a6, &a7);printf(“n这7个数据倒序为: 7-%.5f 6-%.5f 5-%c 4-%c 3-%d 2-%d 1-%dn”, a7, a6, a5, a4, a3, int a1, a2, a3;char a4, a5;double a6, a7;return 0;printf(“请输入弧度 x: ”);scanf(“%lf”, &xx);aa = sin(xx);printf(“nSin(%.2f)= %.5fn”, xx, aa);double xx, aa;a2, a1);给出提示Please input x:),然后计算并在屏幕上输出函数值。编程可用素材:printf(“Please input x: ”)、printf(“nF(„)= „。

┌-5x+27

(x<0)

F(x)= ├ 7909

(x=0)

└ 2x-1

(x>0)Please input x: 3F(3)= 5 #include

int main(void){

} 2.编写一程序P113.C实现以下功能

已知某银行整存整取存款不同期限的年息利率分别为:3.15%期限一年,3.63%期限二年,4.02%期限三年,4.69%期限五年,5.36%期限八年。从键盘上输入存钱的本金(以元为单位,必须定义为int且应考虑金额很大的情况)和存款期限(只考虑1,2,3,5,8),求到期时能从银行得到的利息(以元为单位,应考虑有小数,不计复利)。编程可用素材:printf(”Please input benjin,cunqi: “)、printf(”nlixi = „ yuan“„。Please input benjin,cunqi: 10000,8 lixi = 4288.00 yuan #include

int main(void)if(xx > 0){

}

return 0;

fx = 2 *(double)xx5)*(double)xx + 27;printf(”nF(%d)= %.0fn“, xx, fx);int xx;double fx;{

} int bj, cq;double money;

printf(”Please input benjin,cunqi: “);scanf(”%d,%d“, &bj, &cq);money = bj;if(cq == 1){ } {

}

return 0;else {

}

if(cq == 3){ } else {

} if(cq == 5){ } else {

} if(cq == 8){ }

printf(”nlixi = %.2f yuann“, money * 0.0536 * 8);printf(”nlixi = %.2f yuann“, money * 0.0469 * 5);

printf(”nlixi = %.2f yuann“, money * 0.0402 * 3);if(cq == 2){ } printf(”nlixi = %.2f yuann“, money * 0.0363 * 2);else

printf(”nlixi = %.2f yuann“, money * 0.0315);

3.编写一程序P114.C实现以下功能

编写一个简单计算器程序,输入格式为:data1 op data2。其中data1和data2是参加运算的两个数(data1、data2必须定义为int,但二者相加可能超出int能表示的范围),op为运算符,它的取值只能是+、-、*、/、%。编程可用素材:printf(”Please input data1 op data2: “)、printf(”nError!chu shu wei 0.n“)。Please input data1 op data2: 3000 + 2000 3000+2000=5000 #include

int main(void){

printf(”Please input data1 op data2: “);scanf(”%d %c %d“, &data1, &op, &data2);switch(op){

case '+':

aa =(double)data1 + data2;printf(”n%d+%d=%.0fn“, data1, data2, aa);break;aa =(double)data11)int year, month, day, sum;{

case 11:

sum = sum + 30;

case 10:

sum = sum + 31;

case 9:

sum = sum + 30;

case 8:

sum = sum + 31;

case 7:

sum = sum + 31;

case 6:

sum = sum + 30;

case 5:

sum = sum + 31;

case 4:

sum = sum + 30;

case 3:

sum = sum + 31;

case 2:

if(year % 400 == 0 ||(year % 100!= 0 && year % 4 == 0))

{

sum = sum + 29;

}

else

{

sum = sum + 28;

}

case 1:

sum = sum + 31;

break;

default :

;} sum += day;printf(”nIt is the %dth day.n“, sum);

return 0;} 6.编写一程序P737.C实现以下功能

从键盘输入3个整数,输出绝对值最大的数。编程可用素材:printf(”Input 3 numbers: printf(“nThe number with maximum absolute value is „

.n”

„Input 3 numbers: 1,-362, 300

The number with maximum absolute value is-362

“)、。#include #include

int main(void){

} 7.编写一程序P744.C实现以下功能

(1)从键盘输入一个一百分制成绩,如果不在0~100范围内,则要求重新输入数据,直到输入的数据在0~100范围内。

(2)将输入的数据转换成等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。

(3)要求使用switch、case、default语句,结果赋值给变量grade,并将变量grade的值输出到屏幕上。

(4)变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费内存空间和计算时间的好习惯。

编程可用素材:printf(”please input the score(0-100): “)、printf(”nscore=„,grade=„。please input the score(0-100): 103 please input the score(0-100): 55.3 score=55.3,grade=E include

int main(void)return 0;printf(“Input 3 numbers: ”);scanf(“%d, %d, %d”, &a1, &a2, &a3);b1 =(int)fabs(a1);b2 =(int)fabs(a2);b3 =(int)fabs(a3);if(b1 >= b2 && b1 >= b3){ } if(b2 >= b1 && b2 >= b2){ } if(b3 >= b1 && b3 >= b2){ } printf(“nThe number with maximum absolute value is %d.n”, max);max = a3;max = a2;max = a1;int a1, a2, a3, b1, b2, b3, max;{

}

第四周

1.编写一程序P226.C实现以下功能

从键盘读入两个整数iBegin和iEnd,要求输出≥iBegin且≤iEnd的所有整数。编程可用素材:printf(“Please Input two number: ”)、printf(“nResult: ”)、printf(“ %d”„。Please Input two number: 51 62 Result: 51 52 53 54 55 56 57 58 59 60 61 62 2.编写一程序P231.C实现以下功能

从键盘读入两个整数iBegin和iCount,要求输出≤iBegin的iCount个整数(后一数为前一数减7)。编程可用素材:printf(“Please Input two number: ”)、printf(“nResult: ”)、printf(“ %d”„。return 0;printf(“please input the score(0-100): ”);scanf(“%f”, &score);while(score < 0 || score > 100){

} switch((int)(score / 10)){

} if(score < 60){ } printf(“nscore=%.1f,grade=En”, score);case 10: case 9:

printf(“nscore=%.1f,grade=An”, score);break;printf(“nscore=%.1f,grade=Bn”, score);break;printf(“nscore=%.1f,grade=Cn”, score);break;printf(“nscore=%.1f,grade=Dn”, score);break;;printf(“please input the score(0-100): ”);scanf(“%f”, &score);float score;case 8: case 7: case 6: default: Please Input two number: 903 8 Result: 903 896 889 882 875 868 861 854 3.编写一程序P125.C实现以下功能

从键盘读入两个字符cBegin和cEnd,要求输出≤cBegin且≥cEnd的所有字符。编程可用素材:printf(“Please Input two char: ”)、printf(“nResult: ”)。Please Input two char: MA Result: MLKJIHGFEDCBA 4.编写一程序P269.C实现以下功能

从键盘读入两个整数iBegin和iEnd,要求按示例输出≤iBegin且≥iEnd的所有整数及其相邻的数。编程可用素材:printf(“Please Input two number: ”)、printf(“nResult: ”)。Please Input two number: 800 795

Result: 800/801 799/800 798/799 797/798 796/797 795/796 #include

int main(void){

}

5.编写一程序P127.C实现以下功能

从键盘读入一个字符cBegin和一个数iCount,要求输出≤cBegin的iCount个字符。编程可用素材:printf(“Please Input a char and a number: ”)、printf(“nResult: ”)。Please Input a char and a number: M 9 Result: MLKJIHGFE #include

int main(void){

printf(“Please Input a char and a number: ”);scanf(“%c %d”, &cBegin, &iCount);int iCount, i, x;char cBegin;return 0;printf(“Please Input two number: ”);scanf(“%d %d”, &iBegin, &iEnd);printf(“nResult: ”);for(i = iBegin;i >= iEnd;i--){ } printf(“n”);printf(“ %d/%d”, i, i+1);int iBegin, iEnd, i;

} printf(“nResult: ”);for(i = cBegin, x = 1;x <= iCount;x++, i--){ } printf(“n”);return 0;printf(“%c”, i);6.编写一程序P140.C实现以下功能

从键盘输入5个字符,输出ASCII值最大的一个字符及其ASCII值。编程可用素材:printf(“请输入5个字符: ”)、printf(“n最大的字符是 „-„n”„。

请输入5个字符: YmAkX最大的字符是 m-109 #include

int main(void){

return 0;7.编写一程序P714.C实现以下功能

用scanf输入10个整数(采用int数据类型),计算所有正数的和、负数的和以及10个数的和。编程可用素材:printf(“Input 10 integers: ”)、printf(“nzhengshu=„,fushu=„,all=„。printf(”请输入5个字符: “);scanf(”%c%c%c%c%c“, &a1, &a2, &a3, &a4, &a5);max = a1;if(a2 > max){ } if(a3 > max){ } if(a4 > max){ } if(a5 > max){ } printf(”n最大的字符是 %c-%dn“, max, max);max = a5;max = a4;max = a3;max = a2;char a1, a2, a3, a4, a5, max;Input 10 integers: 4 6 20-45 35 56-23-4 9 70 zhengshu=200,fushu=-72,all=128 #include

int main(void){

int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, fushu, zhengshu, all;

printf(”Input 10 integers: “);scanf(”%d %d %d %d %d %d %d %d %d %d“, &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9, &a10);fushu = 0;zhengshu = 0;if(a1 > 0){ } else { } if(a2 > 0){ } else { } if(a3 > 0){ } else { } if(a4 > 0){ } else { } fushu += a4;zhengshu += a4;fushu += a3;zhengshu += a3;fushu += a2;zhengshu += a2;fushu += a1;zhengshu += a1;

if(a5 > 0){ } else { } if(a6 > 0){ } else { } if(a7 > 0){ } else { } if(a8 > 0){ } else { } if(a9 > 0){ } else { } if(a10 > 0){ } zhengshu += a10;fushu += a9;zhengshu += a9;fushu += a8;zhengshu += a8;fushu += a7;zhengshu += a7;fushu += a6;zhengshu += a6;fushu += a5;zhengshu += a5;

} else { } all = fushu + zhengshu;printf(”nzhengshu=%d,fushu=%d,all=%dn“, fushu, zhengshu, all);return 0;fushu += a10;8.编写一程序P752.C实现以下功能

键盘输入m,n(约定:m和n均≤1000且为正整数),输出介于m和n(含m和n)中能被3整除且至少有位数字是5的所有整数。编程可用素材:printf(”Input m, n: “)、printf(”nResult: “)。Input m, n: 100,200 Result: 105 135 150 153 156 159 165 195 #include

int main(void){

} printf(”Input m, n: “);scanf(”%d,%d“, &m, &n);printf(”nResult: “);if(m > n){

} else {

} for(;i <= max;i++){

} printf(”n“);

return 0;if((i % 3 == 0)&&(i % 10 == 5 ||(i / 10)% 10 == 5 ||(i / 100)% 10 == 5)){ } printf(” %d“, i);i = m;max = n;i = n;max = m;int m, n, max, i;9.编写一程序P753.C实现以下功能

计算X的Y次方,其中Y为整数(可以是负整数或0),X为实型。注意,程序中不能使用库函数pow或使用同名的变量、函数、单词。编程可用素材:printf(”Input x, y: “)、printf(”nResult: „^„=„。Input x, y: 3.7,5 Result: 3.700000^5=693.439570 #include #include

int main(void){

} 10.编写一程序P215.C实现以下功能

求S=1/1!+1/2!+1/3!+„+1/N!并输出结果(显示时小数部分占16位,计算时要求从第1项开始往后累加)。N为任意自然数(只考虑int型),从键盘读入。编程可用素材:printf(“Please input n: ”)、printf(“nS=1/1!+1/2!+...+1/„!=„。

Please input n: 18 S=1/1!+1/2!+...+1/18!=1.7***0455 #include

int main(void){

printf(”Please input n: “);double ss, j;int n, i;return 0;printf(”Input x, y: “);scanf(”%lf,%d“, &xx, &yy);aa = 1;i =(int)fabs(yy);j = 1;for(;j <= i;j++){ } if(yy < 0){ } printf(”nResult: %f^%d=%fn“, xx, yy, aa);aa = 1 / aa;aa = xx * aa;double xx, aa;int yy, i , j;

} scanf(”%d“, &n);ss = 0;j = 1;for(i = 1;i <= n;i++){

} printf(”nS=1/1!+1/2!+...+1/%d!=%.16fn“, n, ss);return 0;j = j * i;ss = 1 / j + ss;11.编写一程序P716.C实现以下功能

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字(可取1~9之间的一个值)。例如2+22+222+2222+22222(此时共有5个数相加),其中a值和有几个数相加由键盘输入控制。注意s的值有可能超出int的范围,编程可用素材:printf(”Please input a,n: “)、printf(”na+aa+...=„。

Please input a,n: 2,3 a+aa+...=246 #include

int main(void){

}

第五周

1.编写一程序P211.C实现以下功能

根据输入的n在屏幕上显示对应的以#组成的菱形图案。编程可用素材:printf(“Please input n: ”)。Please input n: 1 # return 0;printf(“Please input a,n: ”);scanf(“%d,%d”, &aa, &nn);j = 0;ss = 0;for(i = 1;i <= nn;i++){

} printf(“na+aa+...=%.0fn”, ss);j = j * 10 + aa;ss = ss + j;double ss, j;int aa, nn, i;### # #include

int main(void){

} 2.编写一程序P724.C实现以下功能

从键盘输入1~9之间的一个数,根据输入的数,输出对应的下三角乘法口诀表。要求积的输出占3个宽度,且左对齐。编程可用素材:printf(“input a number(1~9): ”)。input a number(1~9): 3 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 #include

int main(void){

printf(“input a number(1~9): ”);scanf(“%d”, &num);for(i=1;i<=num;i++){ int i, j, num;return 0;printf(“Please input n: ”);scanf(“%d”, &n);for(i=1;i<=2*n+1;i=i++){

} for(j=1;j<=(2*n+1);j++){

} printf(“n”);if(i+j>=n+2 && i+j<=3*n+2 && i-j>=-n && i-j<=n){ } else { } printf(“");printf(”#“);int n , i, j;

}

} for(j=1;j<=i;j++){ } printf(”n“);printf(”%d*%d=%-3d“, i, j, i * j);return 0;3.编写一程序P740.C实现以下功能

公鸡每只5元,母鸡每只3元,小鸡每3只1元,用M元钱买N只鸡,问公鸡、母鸡、小鸡各几只。编程可用素材:printf(”Input the money: “)、printf(”Input the number: “)、printf(”n cock

hen chickn“)。

Input the money: 100 Input the number: 100

cock

hen chick

0

#include

int main(void){

printf(”Input the money: “);scanf(”%d“, &m);printf(”Input the number: “);scanf(”%d“, &n);printf(”n cock hen chickn“);for(cock=0;cock<=n;cock++){

for(hen=0;hen<=n-cock;hen++){

} for(chick=0;chick<=n-hen-cock;chick = chick +3){

} if(cock + hen + chick == n && cock * 5 + hen * 3 + chick / 3 == m){ } printf(”%6d%6d%6dn“, cock, hen, chick);int m, n, cock, hen, chick;

} }

return 0;4.编写一程序P112.C实现以下功能

设某企业2006年的产值为5000万,计划以后每年的增长率为x(x从键盘输入,例如输入8.75表示8.75%),计算该企业的产值在哪年实现翻番以及翻番时的产值,然后输出(输出时以万为单位,应考虑有小数)。编程可用素材:printf(”Please input x: “)、printf(”nyear = „ nian, chanzhi = „。Please input x: 50.6

year = 2008 nian, chanzhi = 11340.18 #include

int main(void){

} 5.编写一程序P224.C实现以下功能

猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第n(n从键盘输入)天早上想再吃时,就只剩下一个桃子了。求第一天共摘了多少个桃子(不考虑猴子是否真的能吃多少桃子)。编程可用素材:printf(“Please input n: ”)、printf(“ntotal=„”„。Please input n:13 total=12286 #include

int main(void){

printf(“Please input n: ”);scanf(“%d”, &n);int n, i, total;return 0;printf(“Please input x: ”);scanf(“%f”, &x);year = 2006;for(chanzhi=5000;chanzhi<=10000;chanzhi=chanzhi*(x/100+1)){ } printf(“nyear = %d nian, chanzhi = %.2fn”, year, chanzhi);year = year + 1;int year;float x;double chanzhi;

} total = 1;for(i=1;i<=n-1;i++){ } printf(“ntotal=%dn”, total);return 0;total =(total + 1)* 2;6.编写一程序P830.C实现以下功能

求1+2+3+„„+n≤m时的最大n值及和sum(=1+2+3+„„+n),其中m从键盘输入——不得使用解方程、算平方根方法。编程可用素材:printf(“please input m: ”)、printf(“nResult: n=„, sum=„。please input m: 10000 Result: n=140, sum=9870 #include

int main(void){

} 7.编写一程序P223.C实现以下功能

一个球从10000m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第n(n从键盘输入)次落地时,共经过多少米?第n次反弹多高?编程可用素材:printf(”Please input n: “)、printf(”nsn=„,hn=„。Please input n: 10 sn=29960.937500,hn=9.765625 #include

int main(void){ int h, i, n;double sn, hn;return 0;printf(“please input m: ”);scanf(“%d”, &m);sum =1;for(n=1;sum<=m;){

} printf(“nResult: n=%d, sum=%dn”, nn);n++;sum = sum + n;int m, n, sum;

} 8.编写一程序P745.C实现以下功能

输入两个正整数m和n,求其最大公约数和最小公倍数。注:最大公约数也称最大公因子,指某几个整数共有因子中最大的一个;两个整数公有的倍数称为它们的公倍数,其中最小的一个正整数称为它们两个的最小公倍数。编程可用素材:printf(“please input two integer numbers: ”)、printf(“nthe greatest common divisor is printf(”nthe least common multiple is „。please input two integer numbers: 35 15 the greatest common divisor is 5 the least common multiple is 105 #include

int main(void){

printf(“please input two integer numbers: ”);scanf(“%d %d”, &m, &n);if(m > n){

temp = m;m = n;n = temp;int m , n, zdgys, zxgbs, temp, i;

„、return 0;printf(“Please input n: ”);scanf(“%d”, &n);h = 10000;if(n==1){

} else {

} printf(“nsn=%f,hn=%fn”, sn, hn);for(i=2, sn=h, hn=h;i<=n;i++){

} hn = hn / 2;hn = hn / 2;sn = sn + 2 * hn;hn = h;sn = h;

} } for(i=m;i<=m;i--){

} zxgbs =(n * m)/ zdgys;printf(“nthe greatest common divisor is %d”, zdgys);printf(“nthe least common multiple is %dn”, zxgbs);return 0;if(m%i==0 && n%i==0){

} zdgys = i;break;9.编写一程序P793.C实现以下功能

从键盘读入一个数n(必须使用long int),先逆序输出n的各位数,再输出n的各位数之和。编程可用素材:printf(“请输入一个数:”)、printf(“n该数的各位数之逆序为:”)、printf(“n该数的各位数之和为:%dn”„。请输入一个数:1234567 该数的各位数之逆序为:7654321 该数的各位数之和为:28 #include

int main(void){

} return 0;printf(“请输入一个数:”);scanf(“%ld”, &aa);printf(“n该数的各位数之逆序为:”);for(sum=0;aa!=0;){

} printf(“n该数的各位数之和为:%dn”, sum);bb = aa % 10;aa = aa / 10;sum = sum + bb;printf(“%d”, bb);long int aa;int bb, sum;10.编写一程序P225.C实现以下功能

从键盘读入一个整数Num,按从小到大的顺序依次输出所有满足条件的3位数:该数各位数字的立方和等于Num。编程可用素材:printf(“Please Input a number: ”)、printf(“nResult: ”)、printf(“%5d”„、printf(“not Find!n”)。Please Input a number: 251 Result:

155 236 263 326 362 515 551 623 632 include

int main(void){

}

return 0;int num, aa, bb, cc, n, flag=0;

printf(“Please Input a number: ”);scanf(“%d”, &num);printf(“nResult: ”);for(n=100;n<=999;n++){

} if(!flag){ } else { } printf(“n”);printf(“not Find!n”);aa = n / 100;bb = n % 100 / 10;cc = n % 10;if(aa*aa*aa+bb*bb*bb+cc*cc*cc == num){

} flag = 1;printf(“%5d”, n);

第三篇:c语言题型总结

C语言题型总结

1.字母的输入与输出:

#include main(){ char ch1,ch2,ch3;printf(“请输入三个字母:”);scanf(“%c,%c,%c”,&ch1,&ch2,&ch3);printf(“输出三个字母:%c %c %c”,ch1-32,ch2-32,ch3-32);}

#include main(){ char ch1,ch2,ch3;printf(“请输入三个字母:”);ch1=getchar();ch2=getchar();ch3=getchar();printf(“输出三个字母:%3c%3c%3c”,ch1-32,ch2-32,ch3-32);}

#include main(){ char ch1,ch2,ch3;printf(“请输入三个字母:”);ch1=getchar();ch2=getchar();ch3=getchar();putchar(ch1-32);putchar(ch2-32);putchar(ch3-32);} 2.分类显示:

#include main(){ int m;printf(“请输入m:k”);scanf(“%d”,&m);

} if(m>0)printf(“%d is greater than 0”);else printf(“%d is less than or equal to 0”);3.分段函数:

#include main(){ float x,y;scanf(“%f”,&x);if(x<2)

y=1+x;else if(x<4)

y=1+(x-2)*(x-2);else

y=(x-1)*(x-1)+(x-2)*(x-2);printf(“x=%f,y=%f”,x,y);} 4.成绩分等级: #include main(){ int s,num;char grade;

printf(“请输入成绩s:”);scanf(“%d”,&s);

num=s/10;

switch(num){

case 10:grade='A';break;

case 9:grade='A';break;

case 8:grade='B';break;

case 7:grade='C';break;

case 6:grade='D';break;

case 5:

case 4:

case 3:

case 2:

case 1:

case 0:grade='E';break;

deflaut:break;

} } printf(“The score is %d,the grade is %cn”,s,grade);5.求最大公约数、最小公倍数:

#include main(){ int m,n,i,b;printf(“请输入两个数:”);

scanf(“%d,%d”,&m,&n);for(i=m;i>0;i--)

if(m%i==0&&n%i==0)

break;b=(m*n)/i;printf(“最大公约数:%d,最小公倍数:%d”,i,b);} 6.1000以内素数:

#include main(){ int i,j;for(i=1000;i>0;i--)

{

for(j=2;j

if(i%j==0)

break;

if(j==i)

printf(“%d,”,i);} } 7.1000以内最大的10个质数求和:

#include main(){ int i,j,sum=0,n=0,a[10];for(i=999;i>2;i=i-2)

{

for(j=2;j

if(i%j==0)

break;

if(j==i)

{

a[n]=i;

n++;

if(n>10)

break;

} } for(n=0;n<10;n++)

sum+=a[n];

printf(“%d+%d+%d+%d+%d+%d+%d+%d+%d+%d=%dn”,a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],sum);}

#include main(){ int i,j,sum=0,n=0,a[10];for(i=999;i>2;i=i-2)

{

for(j=2;j

if(i%j==0)

break;

if(j==i)

{

a[n]=i;

sum+=a[n];

n++;

if(n>9)

break;

} } for(n=0;n<10;n++)

printf(“%d,”,a[n]);

printf(“%d”,sum);}

8.各位的和:

#include main(){ int n,c;c=0;scanf(“%d”,&n);

while(n!=0)

{

c+=n%10;

n=n/10;}

printf(“%d”,c);} 9.判断几位数:

#include main(){ int n,c;c=0;scanf(“%d”,&n);

while(n!=0)

{

c++;

n=n/10;}

printf(“%d”,c);} 10.奇数项相加,偶数项相减:

#include main(){ int i;double sum;i=1,sum=0;while(i<=20){

if(i%2==0)

sum=sum-1.0/i;

else

sum=sum+1.0/i;

i++;} printf(“%lfn”,sum);} 11.100-200以内找质数:

#include main(){ int i,j,sign;for(i=100;i<=200;i++)

{

sign=1;

for(j=2;j

if(i%j==0)

{

sign=0;break;

}

if(sign==1)

printf(“%d is/n”,i);

else

printf(“%d is not/n”,i);} } 12.10个成绩的最高、最低、平均值

#include main(){ int a[10],max,min,i;float aver,sum;max=min=sum=0;printf(“请输入10个成绩:”);for(i=0;i<10;i++)

scanf(“%d”,&a[i]);for(i=0;i<10;i++){ sum+=a[i];aver=(float)sum/10;

if(a[i]>max)

max=a[i];

if(a[i]

min=a[i];} printf(“max=%d,min=%d,aver=%f”,max,min,aver);} 13.数组删除一个元素

#include main(){ int a[10],num,i;printf(“请输入数组:”);for(i=0;i<10;i++)

scanf(“%d”,&a[i]);printf(“删除其中一个数num=”);scanf(“%d”,&num);for(i=num;i<10;i++)

a[i-1]=a[i];

a[9]=0;

printf(“后来的数组为:”);for(i=0;i<10;i++)

printf(“%d”,a[i]);} 14.数组添加一个元素

#include main(){ int a[10],b[11],num,i,t;printf(“请输入数组:”);for(i=0;i<10;i++)

scanf(“%d,”,&a[i]);printf(“添加其中一个数num=”);scanf(“%d,”,&num);printf(“添加的数为:”);scanf(“%d”,&t);

for(i=0;i

b[i]=a[i];

b[num-1]=t;for(i=num;i<=10;i++)

b[i]=a[i-1];

printf(“后来的数组为:”);for(i=0;i<11;i++)

printf(“%d,”,b[i]);} 15.数组形式计算成绩

#include main(){ int a[5][3],i,j;float aver1[5],aver2[3],s,s1,s2;printf(“请输入数组:n”);for(i=0;i<5;i++){

s1=0;

for(j=0;j<3;j++)

{

scanf(“%d”,&a[i][j]);

s1+=a[i][j];

}

aver1[i]=(float)s1/3;} for(j=0;j<3;j++){

s2=0;(不能随便动位置)

for(i=0;i<5;i++)

s2+=a[i][j];

aver2[j]=(float)s2/5;

s+=aver2[j];} for(i=0;i<5;i++)

printf(“student%d:%3.1f,”,i,aver1[i]);for(j=0;j<3;j++)

printf(“course%d:%3.1f,”,j,aver2[j]);

printf(“Average:&3.1f”,s/3);} 输入成绩时,一行三个,之后回车

16.函数的多级调用

float myfabs(float x){ return x>0?x:-x;} float myfunc(float r){ return 2*myfabs(r)+1;} main(){ float f=0.5;printf(“%f”,myfunc(f));} 17.三个数比较大小

#include int getMax(int a,int b,int c){ int t;if(a>b)

t=a;else

t=b;if(c>t)

t=c;

return t;} int getMin(int a,int b,int c){ int k;if(a>b)

k=b;else

k=a;if(c

k=c;return k;} int getMax(int a,int b,int c);int getMin(int a,int b,int c);main(){ int a,b,c;printf(“请输入三个整数:n”);scanf(“%d,%d,%d”,&a,&b,&c);printf(“最大值是:%d,最小值是:%d”,getMax(a,b,c),getMin(a,b,c));} 18.求最大公约数、最小公倍数(调用函数)

#include int gcd(int a,int b){ int i;for(i=a;i>0;i--)

if(a%i==0&&b%i==0)

break;return i;} int mul(int a,int b){ int j;j=a*b/gcd(a,b);return j;} int gcd(int a,int b); int mul(int a,int b); main(){ int a,b;printf(“请输入两个整数:n”);scanf(“%d,%d”,&a,&b);printf(“最大公约数是:%d,最小公倍数值是:%d”,gcd(a,b),mul(a,b));} 19.二维数组找最大行、最小行,之后换行

#include main(){

int n,i,j,nMax=0,nMin=0,temp;int a[10][10];printf(“请输入正整数:n”);

scanf(“%d”,&n);printf(“请输入二维数组a[%d][%d]n”,n,n);for(i=0;i

for(j=0;j

scanf(“%d,”,&a[i][j]);} for(i=0;i

for(j=0;j

{

if(a[i][j]>a[nMax][j])

{

nMax=i;

}

else if(a[i][j]

{

nMin=i;

}

}

if(nMax==nMin)

{

printf(“变换后的二维数组为:n”);

for(i=0;i

{

for(j=0;j

printf(“%d,”,a[i][j]);

printf(“n”);

}

}

else

{

for(j=0;j

{

temp=a[nMax][j];

a[nMax][j]=a[nMin][j];

a[nMin][j]=temp;

}

printf(“变换后的二维数组为:n”);

for(i=0;i

{

for(j=0;j

printf(“%d,”,a[i][j]);

printf(“n”);

}

} }

20.判断某年某月某日是星期几

#include int daysInMonth(int year,int month);main(){

int y,m,d,i,days;int isLeapYear(int year);scanf(“%d,%d,%d”,&y,&m,&d);for(i=2012;i

days+=366;else days+=365;days+=daysInMonth(y,i);for(i=1;i

case 0:

printf(“星期日”);break;case 1:

printf(“星期一”);break;case 2:

printf(“星期二”);break;case 3:

printf(“星期三”);break;case 4:

printf(“星期四”);break;case 5:

printf(“星期五”);break;case 6:

printf(“星期六”);break;} } int isLeapYear(int year){

} {

if(year%400==0||(year%4==0&&year%100!=0))return 1;return 0;int daysInMonth(int year,int month)switch(month){ case 1: case 3: case 5: case 7: case 8:

case 10: case 12:return 31;case 4: case 6:

case 9:

case 11:return 30;case 2:if(isLeapYear(year)==1)

} return 29;

} else return 28;21.字符串的连接

#include main(){ char s1[20],s2[20],*p1,*p2;p1=s1;p2=s2;

printf(“请输入字符串1:”);gets(s1);

printf(“请输入字符串2:”);

gets(s2);while(*p1)

p1++;(先输出p1所指的第一个字母,然后使p1指向下一个字符,再输出,p再自增)

while(*p1++=*p2++);(把*p2的内容赋给*p1,p1,、p2自增,*p2就是表达式的值!指的是字符串的内容,而非对地址赋值)p是指针变量,他不能用来存放字符串,只能存放char变量的地址。

printf(“连接后结果:%sn”,s1);}

#include main(){

} char s1[20],s2[20];int i,j;printf(“请输入字符串s1:”);gets(s1);printf(“请输入字符串s2:”);gets(s2);for(i=0;s1[i]!='';i++);for(j=0;s2[j]!='';j++)

{

} s1[i] ='';s1[i]=s2[j];i++;puts(s1);#include void catStr(char *str1,char *str2);main(){

char str1[20]=“hello”,str2[20]=“world”;printf(“the origin :”);

gets(str1);

gets(str2);

catStr(str1,str2);

printf(“now :”);

puts(str1);

puts(str2);} void catStr(char*str1,char*str2){ while(*str1!='')

str1++;

while(*str2!=''){

*str1++=*str2;

str2++;}

*str1='';}

22.两个数交换

#include void swap(int *p1,int *p2){

} int temp;temp=*p1;*p1=*p2;*p2=temp;main(){ int a=5,b=9,*pa=&a,*pb=&b;

printf(“交换前a=%d,b=%dn”,a,b);

} swap(pa,pb);printf(“交换后a=%d,b=%dn”,a,b);23.求三角形的周长和面积 #include void Process(float f1,float f2,float f3,float *p1,float *p2);main(){ float a,b,c,fArea,fPerimeter;

printf(“nPlease input 3 sides of the triangle:”);

} void Process(float f1,float f2,float f3,float *p1,float *p2){

} float s;s=(f1+f2+f3)/2;*p1=sqrt(s*(s-f1)*(s-f2)*(s-f3));*p2=f1+f2+f3;scanf(“%f%f%f”,&a,&b,&c);Process(a,b,c,&fArea,&fPerimeter);printf(“Area=%f,Perimeter=%f”,fArea,fPerimeter);24.回文数

#include main(){

}

#include main(){

int n,c=0;printf(“Pleasse input the number:”);scanf(“%d”,&n);printf(“The original number is:%ldn”,n);printf(“And now the number is:”);long n;printf(“Pleasse input the number:”);scanf(“%d”,&n);printf(“The original number is:%ldn”,n);printf(“And now the number is:”);while(n){ printf(“%d”,n%10);} n/=10;printf(“n”);getchar();while(n){

c=c*10+n%10;

n/=10;}

} printf(“%d”,c);printf(“n”);getchar();25.字符串的复制

#include void upCopy(char *new,char *old);main(){

char s1[20],s2[20];

gets(s1);

upCopy(s2,s1);

puts(s1);

puts(s2);} void upCopy(char *new,char *old){

while(*old!=''){

if(*old>='A'&&*old<='Z')

*new++=*old;

old++;}

*new='';} 26.初始化一个3X5的二维矩阵,计算前4列的和,保存在每行的最后一个元素中。例如:第一行的和为A[0][0]+ A[0][1] +A[0][2]+ A[0][3],放入A[0][4]中,要求输出原始矩阵和新矩阵。

#include main(){

int A[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}},i,j;for(i=0;i<3;i++){ for(j=0;j<5;j++)printf(“%dt”,A[i][j]);

}

printf(“n”);} for(i=0;i<3;i++){ A[i][4]=0;

for(j=0;j<4;j++)A[i][4]+=A[i][j];} for(i=0;i<3;i++){

} for(j=0;j<5;j++)printf(“%dt”,A[i][j]);printf(“n”);27.编制函数mystrcat(char *s1,char *s2),将字符串s2种的数字字符连接到字符串s1的后面。例如s1=”1010”,s2=”Hi1T2”,则连接后的s1为 “101012”。

#include void mytrcat(char *s1,char *s2){

while(*s1!='')

s1++;while(*s2!=''){

if(*s2>='0'&&*s2<='9'){ *s1=*s2;s1++;} s2++;} *s1=*s2;或(*s1='';)

} void mystrcat(char *s1,char *s2);main(){

char *s1[20],*s2[20];printf(“请输入字符串1:”);gets(s1);printf(“请输入字符串2:”);gets(s2);

mytrcat(s1,s2);} puts(s1);28.写一个函数mystrcmp(char *s1,char *s2),其功能和库函数strcmp相同。在主函数中定义字符数组s1和s2并初始化,调用mystrcmp后由main函数输出比较的结果。本题不许使用字符串处理函数。#include char mystrcmp(char *s1,char *s2){

int result;while(*s1!=''){

if(*s1>*s2)return 1;if(*s1<*s2)return-1;

s1++;

s2++;}

return 0; } char mystrcmp(char *s1,char *s2);main(){ char s1[20],s2[20];

int result;printf(“请输入字符串1:”);gets(s1);printf(“请输入字符串2:”);gets(s2);

result=mystrcmp(s1,s2);printf(“%d”,result);} 还有问题,再试试?为啥不行 折半查找 #include #define N 6 main(){

int a[N],i,j,t,mid,x,flag,low,high;printf(“the origin shu zu is:”);for(i=0;i

min=i;

for(j=i+1;j

{

if(a[min]>a[j])

min=j;

}

} {

} } t=a[i];a[i]=a[j];a[j]=t;printf(“now shu zu is: ”);for(i=0;i

printf(“%d,”,a[i]);printf(“please input the number:”);

scanf(“%d”,x);

low=0;high=N-1;while(low<=high){

mid=(high+low)/2;if(x==a[mid]){ flag=1;break;}

if(x>a[mid])

low=mid+1;else high=mid-1;} if(flag==1)

printf(“found:%d”,mid+1);else } printf(“not found”);#include int main(){ int a[20]={1,2,3,4,6,7,8,10,11,13,14,15,16,18,19,21,23,24,26,28};int n,low,high,flag,mid;printf(“输入一个数:”);scanf(“%d”,&n);low=0;high=19;

while(low<=high){ mid=(low+high)/2;if(n==a[mid]){ flag=1;

break;}

if(n>a[mid])

low=mid+1;else

high=mid-1;

} if(flag==1)

printf(“found,%dn”,mid+1);else

printf(“not foundn”);}

第四篇:南京晓庄学院—C语言期末考试复习提纲

习题一

1.以下常量中正确的是。

A.’abc’ B.’x123’ C.3.145E-1.2 D.”a”

2.设有“int a;”,以下不能正确表达数学关系10

。A.1010&&a<15 D.!(a<=10)&&!(a>=15)3.以下程序段的输出结果是

。int a=0,b=4,k=2;k=a+1>0||(++a<0)&&(!(b--<=0));printf(”%d,%d,%d”,k,a,b);A.1,1,3 B.1,1,4 C.1,0,3 D.1,0,4 4.若有“int a=5;a+=a-=-a*a;”,则a的值是。

5.以下所列语句中,合法的语句是。

A.a=1,b=2 B.++a;C.a=a+1=5;D.y=int(a);6.以下所列字符常量中,不合法的是。

A.’xff’ B.’65’ C.’$’ D.’x1a’

7.设有定义“float y=3.45678;int x;”,则以下表达式中能实现将y中数值保留小数点后2位,第3位四舍五入的表达式是

。A.y=(y*100+0.5)/100.0 B.x=y*100+0.5,y=x/100.0 C.y=y*100+0.5/100.0 D.y=(y/100+0.5)*100.0 8.以下程序段输出结果是

。int a=10,b=11,c=12,s;s=a++<=10&&b--<=2&&c++;printf(”%d,%d,%d,%d”,s,a,b,c);A.0,11,10,13 B.1,11,10,13 C.0,11,10,12 D.1,11,10,12 9.设有语句“int a=2,b=3,c=2;a+=b*=(++b-c++);”,变量b的值是。

习题二

1.以下关于if语句的错误描述是

。A.条件表达式可以是任意的表达式

B.条件表达式只能是关系表达式或逻辑表达式 C.条件表达式的括号不可以省略

D.与else配对的if语句是其之前最近的未配对的if语句 2.以下叙述中不正确的是。

A.一个变量的作用域完全取决于变量说明语句的位置 B.外部变量可以在函数以外的任何位置定义

C.内部变量的生存期只限于本次函数调用,无法将内部变量的值保存至函数的下一次调用 D.用static说明一个外部变量是为了限制其他编译单位的引用 3.以下程序的输出结果是。

main(){ extern int x;printf(”%d”,x+=2);fun1(2);} int x=1;

{int x,*y;y=fun(&x);„} int *fun(int *a){int *t;*a=99;t=a;return t;} A.无确切的值 B.形参a的地址

C.主函数中变量x的地址 D.fun函数中变量t的地址 3.[程序] main(){ int s,p[9]={1,2,3,4,5,6,7,8,9};printf(”n%d”,add(p,5));} add(int *p,int n){ if(n==1)return *p;else return *p+add(p+1,n-1);} 程序输出结果是

。4.[程序] int *swap(int *a, int *b){ int *p;p=a;a=b;b=p;return a;} main(){ int x=3,y=4,z=5;swap(swap(&x,&y),&z);printf(”%d,%d,%d”,x,y,z);} 程序输出结果是

。5.[程序] fun(int n,int *s){ int f1,f2;if(n==1||n==2)*s=1;else { fun(n-1,&f1);fun(n-2,&f2);*s=2*f1+f2+1;printf(”n%d,%d”,f1,f2);} } main(){ int x;fun(4,&x);printf(”nx=%d”,x);} 程序运行时输出的第一行是

,第二行是

,最后一行是

。6.如有以下定义

int y[4][4]={1,2,3,4,5,6,7,8,9,10},*py1=y[1],(*py2)[4]=y;则不能正确引用值为7的数组元素的表达式是。

fun(p,0,3);fun(p+3,1,6);for(i=0;i<10;i++){ if(i%5==0)printf(”n”);printf(”%d”,a[i]);} } 程序输出的第一行是

,第二行是。

习题四

1.设有基类型相同的两个指针变量,则不能对它们进行

运算。

A.+ B.struct s { int a;int *b;};int x0[]={110,120},x1[]={210,220};struct s x[]={{100},{200}},*p=x;x[0].b=x0;x[1].b=x1;A.*p->b B.(++p)->a C.*(p++)->b D.*(++p)->b 8.设有“char s[]=”Program”,*p=s;”,则以下叙述中正确的是

。A.数组s的内容与指针变量p中的内容相同 B.数组s的长度与strlen(p)的值相等 C.p[5]的值等于s[5]的值 D.sizeof(s)等于sizeof(*p)9.若有定义语句“static char str[4][20]={”thank”, ”you”, ”very”, ”much!”};”, 则str数组中存储’’的数组元素有

个。10.以下程序输出结果是。

main(){ enum color{RED=5,BLUE,WHITE=0,BLACK};char *colorname[]={”red”,”blue”,”white”,”black”};printf(”%s”,colorname[BLACK]);}

习题五

1.函数delstr功能是:在字符串str中删除所有出现的子串str1。[程序] char *delstr(char *str,char *str1){ char *p,*p1,*q1;int i;if(*str==’’||*str1==’’)return str;p=str;while(*p!=’’){ p1=p,q1=str1;while(*p1==*q1 && *q1!=’’)

;if(p!=p1 && *q1==’’){ for(i=0;*p1!=’’;i++,p1++)

=*p1;

=’’;} p++;}

;} 2.设结点的数据结构定义如下:

typedef struct p{ int x,y;struct p *next;}PNODE;

{ int j,t;if(n==1)return;for(j=1;j

struct node { int x;struct node *next;};函数find_del功能是:在参数head指向的链表中查找并删除x值最大的结点,如有多个相同的x值最大的结点,删除第一个结点,保存该结点的地址到pm指向的指针变量中,函数返回链表首结点的指针。

struct node *find_del(struct node *head,struct node **pm){ struct node *p1,*p2,*pmax,*pre;if(head==NULL)return NULL;pmax=

;p2=p1=pmax;while(p1){ if(p1->x>){ pre=p2;pmax=p1;} p2=p1;p1=p1->next;} if(pmax==head)head=pmax->next;else

=pmax->next;

=pmax;return head;}

编程题

1.熟悉Visual C++编程环境,编写第一个C语言程序,输出以下信息: * * * * * * * * * * * * * * * Very good!* * * * * * * * * * * * * * *

36

5.验证素数。

6.打印Fibonacci数列。(1 1 2 3 5 8 13 „)

1.有一分数序列2/1,3/2,5/3,8/5,13/8,21/13,„,求出这个数列的前20项之和。

0

5.已有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中

6.输出以下的杨辉三角形(要求输出10行)。1 1 1 1 2 1 1 1 1.2

5.写一函数建立一个有3名学生数据的单向动态链表。

6.写一函数以删除动态链表中指定的结点。

1、输入两个正整数m和n,求其最大公约数和最小公倍数

#include int main(){

int p,r,n,m,temp;

printf(“请输入两个正整数n,m:”);scanf(“%d,%d,”,&n,&m);

if(n {

temp=n;n=m;

43、求100~200之间的全部素数

#include #include

int main(){ int n,k,I,m=0;for(n=101;n<=200;n=n+2){ k=sqrt(n);for(i=2;i<=k;i++);if(n%i==0)break;if(i>=k+1){ Printf(“%d”,n);m=m+1;} If(m%10==0)printf(“n”);} printf(“n”);return 0;} 4、10个整数用冒泡法由小到大排序 #include int main(){ int a[10];int i,j,t;printf(“输入10个数字:n”);for(i=0;i<10;i++)scanf(“%d”,&a[i]);printf(“n”);for(j=0;j<9;j++)for(i=0;i<9;i++)if(a[i]>a[i+1]){ t=a[i];a[i]=a[i+1];a[i+1]=t;} printf(“排序后的数是:n”);for(i=0;i<10;i++)printf(“%d”,a[i]);printf(“n”);return 0;}

66、用打擂台法,有一个3*4的矩阵,求出其中最大的那个元素的值和它所在的行号和列号 #include int main(){ int i,j,row=0,colum=0,max;int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>max){ max=a[i][j];row=i;colum=j;} printf(“max=%dn row=%dn colum=%dn”,max,row,colum);return 0;}

7、求一个3*3的整型矩阵对角线元素之和

#include

int main(){

int a[3][3],sum=0;

int i,j;

printf(“enter data:n”);

for(i=0;i<3;i++)

for(j=0;j<3;j++)scanf(“%3d”,&a[i][j]);

for(i=0;i<3;i++)sum=sum+a[i][i];

printf(“sum=%6dn”,sum);

return 0;}

int a[N]={100,98,95,93,87,85,77,75,67,65,57,55,47,45,37};printf(“input number to look for:”);scanf(“%d”,&x);

left=0;right=N-1;

while(left<=right){ mid=(left+right)/2;if(x==a[mid])break;

else if(x

right=mid-1;}

if(left<=right)

printf(“%d在数组中的第%d个数.n”,x,mid+1);else

printf(“数组中没找到%d.n”,x);

return 0;}

10、编一程序,将两个字符串连接起来,不要用strcat函数

#include int main()

{ char s1[80],s2[40];

int i=0,j=0;

printf(“input string1:”);scanf(“%s”,s1);

printf(“input string2:”);scanf(“%s”,s2);

while(s1[i]!='')i++;

while(s2[j]!='')s1[i++]=s2[j++];

0

{void inverse(char str[]);char str[100];

printf(“input string:”);

gets(str);inverse(str);

printf(“inverse string:%sn”,str);return 0;}

void inverse(char str[]){char t;int i,n;

n=strlen(str);

for(i=0;i

str[i]=str[n-1-i];str[n-1-i]=t;}

}

14、编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格、和其他字符的个数,在主函数中输入字符串以及输出上述的结果

#include

int letter,digit,space,others;int main()

{void count(char []);

char text[80];

printf(“input string:n”);gets(text);printf(“string:”);puts(text);letter=0;digit=0;space=0;others=0;count(text);

printf(“nletter:%dndigit:%dnspace:%dnothers:%dn”,letter,digit,space,others);

return 0;}

void count(char str[]){int i;

for(i=0;str[i]!='';i++)

if((str[i]>='a'&& str[i]<='z')||(str[i]>='A' && str[i]<='Z'))letter++;

p2++;} *p2='';}

16、有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。#include struct Student { int num;char name[20];float score;} int main(){ struct 5},{10110,”sun”,100}};struct Student temp;const int n=5;int i,j,k;printf(“The order is:n”);for(i=0;istu[k].score)k=j;temp=stu[k];stu[k]=stu[i];stu[i]=temp;} for(i=0;i

for(i=0;i

第五篇:谭浩强版C语言期末考试

一 选择题(24分,每小题2分)

1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是()。

A 存放读入数据项的存储区

B 存放读入数据的地址或指向此地址的指针 C 一个指向所读文件的文件指针

D 一个整形变量,代表要读入的数据项总数

2.以下程序的输出结果为()。main(){

int i=010,j=10;

printf(“%d,%dn”,i++,j--);}

A 11,9 B 9,10 C 8,10 D 9,9

3.设a为int型变量,执行下列赋值语句后,a的取值分别是()。a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2;

A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20

4.设i和k都是int类型,则for循环语句()。for(i=0,k=-1;k=1;i++,k++)printf(“****n”);A 循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循环

5.以下程序的输出结果为()。main(){

char c;

int i;

for(i=65;i<68;i++)

{

c=i+32;

switch(c)

{

case 'a':

case 'b':

case 'c':printf(“%c,”,c);break;

default:printf(“end”);

}

} }

A a,b,c,end

B a,a,a,end

C a,a,a,D a,b,c,6.函数调用语句:fseek(fp,-10L,2);的含义是()。

A 将文件位置指针从文件末尾处向文件头的方向移动10个字节 B 将文件位置指针从当前位置向文件头的方向移动10个字节 C 将文件位置指针从当前位置向文件末尾方向移动10个字节

D 将文件位置指针移到距离文件头10个字节处

7.以下程序的输出结果为()。main(){

int i=0,j=0;

while(s1[i]!='')

i++;

while(s2[j]!='')

s1[i++]=s2[j++];

s1[i]=0;

printf(“%sn”,s1);}

A side B country C sidetry D countryside

8.下列说法不正确的是()。

A 主函数main中定义的变量在整个文件或程序中有效 B 不同函数中,可以使用相同名字的变量 C 形式参数是局部变量

D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效

9.在下列程序段中,枚举变量 c1的值是()。enum color { red,yellow,blue=4,green,white}c1;c1=yellow;c1=white;A 1 B 3 C 5 D 6

10.设有说明 int(*ptr)();其中标识符ptr是()。

A 是一个指向整形变量的指针

B 是一个指针,它指向一个函数值是int的函数 C 是一个函数名 D定义不合法

11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为()。

A int p;B int(*p)[n];C int *p[n];D int(*p)();

12.具有相同类型的指针类型变量p与数组a,不能进行的操作是()。

A p=a;B *p=a[0];C p=&a[0];D p=&a;

二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)

1.参加位运算的数据可以是任何类型的数据。

()

2.若有定义和语句: int a;char c;float f;scanf(“%d,%c,%f”,&a,&c,&f);

若通过键盘输入:10 A 12 5 则a=10,c=‘A’,f=12.5。

()

3.C语言把文件看作是一个字符(字节)的序列。

()

4.若有宏定义:

#define S(a,b)t=a;a=b;b=t 由于变量t没定义,所以此宏定义是错误的。

()

5.在Turbo C中,下面的定义和语句是合法的: file *fp;fp=fopen(“a.txt”,“r”);

()

6.若有定义: char s[ ]=“china”;

则Turbo C系统为数组s开辟6个字节的内存单元。

()

7.若有定义和语句:

int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++)

sum+=a[i][2-i];则sum=21。

()

8.若有定义和语句: struct student {

int num;

char name[10];

float score;}

s[5]={{1,“lili”,98.5},{9,“xiaohua”,66}},*p=s;printf(“%d”,*p++);输出结果是1。

()

9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。

()

10.在Turbo C中,此定义和语句是合法的: enum aa{ a=5,b,c}bb;bb=(enum aa)5;

()三 写出下列程序的运行结果(36分,每小题6分)1.main(){

int i=29,j=6,k=2,s;

s=i+i/j%k-9;//s=i+(i/j)%k-9

printf(“s=%dn”,s);} 2.main(){

int x=31,y=2,s=0;

do

{

s-=x*y;

x+=2;y-=3;

}

while(x%3==0);//先执行,后判断

printf(“x=%dty=%dts=%dn”,x,y,s);} 3.main(){

int a[6]={10,20,30,40,50,60},i;

invert(a,0,5);

for(i=0;i<6;i++)

printf(“%d,”,a*i+);

printf(“n”);}

invert(int s[ ],int i,int j)//倒置 {

int t;

if(i

{

invert(s,i+1,j-1);//函数自身的嵌套调用,形成循环

t=s[i];

s[i]=s[j];

s[j]=t;

} }

4.#include

main(){

char str[ ]=“The C program”,c;

int i;

for(i=2;(c=str[i])!='';i++)

{

switch(c)

{

case 'g': ++i;break;//由于++i,跳过了g后面的1个字母

case 'o': continue;

default: printf(“%c”,c);continue;

}

printf(“*”);

}

printf(“n”);} 5.struct w //结构体 {

char low;

char high;};

union u //共用体 {

struct w byte;

short word;}uw;

main(){

int result;

uw.word=0x1234;

printf(“word value:%04xn”,uw.word);

printf(“high byte:%02xn”,uw.byte.high);

printf(“low byte:%02xn”,uw.byte.low);

uw.byte.low=0x74;

printf(“word value:%04xn”,uw.word);

result=uw.word+0x2a34;

printf(“the result:%04xn”,result);}

6.main(){

char *s2=“I love China!”,**s1=&s2;

char *s3,c,*s4=“w”;

s3=&c;

*s3='H';

s2=s2+2;

printf(“%st%ct%st%cn”,s2,*s3,s4,**s1);}

四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)

1.百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹? main(){

int hb,hm,hl,n=0;

for(hb=0;hb<=100;hb+=(1))

for(hm=0;hm<=100-hb;hm+=(2))

{

hl=100-hb-(3);

if(hb/3+hm/2+2*(3)==100)

{

n++;

printf(“hb=%d,hm=%d,hl=%dn”,hb/3,hm/2,2*hl);

}

}

printf(“n=%dn”,n);} 2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。#define N 10

char str[N];

void main(){

int i,flag;

for(flag=1;flag==1;)

{

scanf(“%s”,str);

flag=0;

printf(“n”);

}

sort(___(4)___);

for(i=0;i

{

printf(“%c”,str[i]);

}

printf(“n”);}

sort(char str[N]){

int i,j;

char t;

for(j=1;j

for(i=0;i<10-j;i++)

if(str[i]>str[i+1])

{

t=str[i];

____(5)____;

____(6)____;//交换位置

} }

3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)

例如,矩阵为: //冒泡排序 3 0 0 3 2 5 7 3 1 0 4 2 则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。

add(int m,int n,int arr[]){

for(i=0;i

for(j=0;j

sum=sum+____(7)____;

for(j=0;j

for(i=1;____(8)____;i++)

sum=sum+arr[i*n+j];

return(sum);} 4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。#define N 10 main(){

void maxmin(int arr[],int *pt1,int *pt2,int n);

int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

p1=&a;

p2=&b;

maxmin(array,p1,p2,N);

printf(“max=%d,min=%d”,a,b);}

void maxmin(int arr[],int *pt1,int *pt2,int n){

int i;

*pt1=*pt2=arr[0];

for(i=1;i

{

if(arr[i]>*pt1)

____(9)____;

if(arr[i]<*pt2)

____(10)____;

} }

答案

一 选择题(24分,每小题2分)1.(B)2.(C)3.(B)4.(D)5.(D)6.(A)7.(D)8.(A)9.(D)10.(B)11.(C)12.(D)二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)1.(×)2.(√)

3.(√)4.(×)

5.(×)6.(√)

7.(√)8.(×)

三 写出下列程序的运行结果(36分,每小题6分)1.s=20

2.x=35 y=-4 s=-29 3.60,50,40,30,20,10, 4.e C pr*am 5.word value:1234 6.love China!H w l

high byte:12

low byte:34

word value:1274

the result:3ca8

四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)1.(1)3(2)2(3)hm hl

2.(4)str(5)str[i]=str[i+1](6)str[i+1]=t 3.(7)arr[i*n+j](8)i

选择题

1.一个C程序的执行是从 a。

A)本程序的main函数开始,到main函数结束

B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C)本程序的main函数开始,到本程序文件的最后一个函数结束 D)本程序文件的第一个函数开始,到本程序main函数结束

2.以下叙述正确的是 c。

A)在C程序中,main函数必须位于程序的最前面 B)C程序的每行中只能写一条语句 C)C语言本身没有输入输出语句

D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误 3.以下叙述不正确的是 d。A)一个C源程序可由一个或多个函数组成 B)一个C源程序必须包含一个main函数 C)C程序的基本组成单位是函数

D)在C程序中,注释说明只能位于一条语句的后面 4.C语言规定:在一个源程序中,main函数的位置 c。

A)必须在最开始 B)必须在系统调用的库函数的后面 C)可以任意 D)必须在最后 5.一个C语言程序是由 b。

A)一个主程序和若干子程序组成 B)函数组成 C)若干过程组成 D)若干子程序组成 6.C语言中的语句需要 b 符号作为结尾。A): B)C)。D)// 7.C 语言程序中可以对程序进行注释,注释部分用符号_c _括起来。A)‘{‘ 和’}’ B)‘[‘和’]’ C)“/*”和”*/” D)“*/”和”/*” 8.C语言中注释的位置 c。

A)必须在程序的最开始 B)必须在程序的结尾 C)可以在程序的任何位置 D)不可以写到main函数里面

9.C语言程序能够在不同的操作系统下面运行,这说明c语言具有很好的 c。A)适应性 B)移植性 C)兼容性 D)操作性

10.C语言经过编译后生成的文件的后缀是 b。A).c B).cpp C).exe D).obj 11.C语言编译程序的首要工作是 a。

A)检查C语言程序的语法错误 B)检查C语言程序的逻辑错误 C)检查程序的完整性 D)同时检查语法和逻辑错误

12.C语言经过链接后生成的文件的后缀是 c。A).c B).cpp C).exe D).obj 13.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符 c。A)必须为字母 B)必须为下划线

C)必须为字母或下划线 D)可以是字母、数字和下划线中任一种字符 14.若以下选项中的变量已正确定义,则正确的赋值语句是 c。A)x1=26.8%3;B)1+2=x2;C)x3=0x12;D)x4=1+2=3;15.设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是 b。

A)x=x*100+0.5/100.0 B)x=(x*100+0.5)/100.0 C)x=(int)(x*100+0.5)/100.0 D)x=(x/100+0.5)*100.0 16.下列C语言中运算对象必须是整型的运算符是 a。A)%= B)/ C)= D)*= 17.若有以下程序段:int c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是 a。A)0 B)0.5 C)1 D)2 18.设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是 D。

A)把x和y按从大到小排列 B)把x和y按从小到大排列 C)无确定结果 D)交换x和y中的值

19.下列变量定义中合法的是 a。

A)short _a=1-.le-1;B)double b=1+5e2.5;C)long do=0xfdaL;D)float 2_and=1-e-3;20.若变量已正确定义并赋值,符合C语言语法的表达式是 a。

A)a=b=7 B)a=7+b+c,a++ C)int(12.3%4)D)a=a+7=c+b 21.若有float x;则sizeof(x)和sizeof(float)两种描述 A。A)都正确 B)都不正确 C)前者正确 D)后者正确

22.有整型变量x,单精度变量y=5.5,表达式x=(float)(y*3+((int)y)%4)执行后,x的值 为(b)。

A)17 B)17.500000 C)17.5 D)16 23.已知float x=1,y;则y=++x*++x的结果是 a。A)y=9 B)y=6 C)y=1 D)表达式是错误的 24.下列关于单目运算符++、--的叙述中正确的是 D。A)它们的运算对象可以是任何变量和常量

B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量 C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量 D)它们的运算对象可以是char型变量、int型变量和float型变量 25.已定义ch为字符型变量,下列赋值语句中错误的是 c。A)ch='';B)ch=62+3;C)ch=NULL;D)ch='xaa';26.假定有以下变量定义,则能使值为3的表达式是 d。int k=7,x=12;A)x%=(k%=5)B)x%=(k-k%5)C)x%=k-k%5 D)(x%=k)-(k%=5)27.设有“int x=11;”则表达式(x++*1/3)的值是 a。A)3 B)4 C)11 D)12 28.已定义c为字符型变量,则下列语句中正确的是 c。A)c=’97’ B)c=“97” C)c=97 D)c=“a” 29.sizeof(float)是 c。

A)一个双精度型表达式 B)一个整型表达式 C)一种函数调用 D)一个不合法的表达式

30.有以下定义语句: double a,b;int w;long c;若各变量已正确赋值,则下列选项中正确的表达式是 c。A)a=a+b=b++ B)w%((int)a+b)C)(c+w)%(int)a D)w=a=b 31.若变量a是int类型,并执行了语句:a=‘A’+1.6;,则正确的叙述是 c。A)a的值是字符C B)a的值是浮点型

C)不允许字符型和浮点型相加 D)a的值是字符’A’的ASCII值加1 32.设a和b均为double型变量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是 d。A)6.500000 B)6 C)5.500000 D)6.000000 33.在下列选项中,不正确的赋值语句是 d。A)++t;B)n1=(n2=(n3=0));C)k=i==j;D)b+c=1;34.已知char a;int b;float c;double d;则表达式a+b * c-d的结果为__d __型。A)char B)int C)float D)double 35.若x 为int型变量,则执行语句x=10;x+=x=x-x后,x的值为__a ____。A)0 B)10 C)20 D)30 36.若x、a、b、c均 为int型变量,则执行表达式x=(a = 4, b = 8, c = 12)后,x的 4 值为__c__。

A)4 B)8 C)12 D)24 37.在C程序中,x + y是_____、x + y;是___a____。

A)表达式、语句 B)表达式、表达式 C)语句、语句 D)语句、表达式 38.假设变量a是整型,b是实型,c是双精度型,则表达式30+a+c*b的值的数据类型是 c。

A)int B)float C)double D)不确定

39.在C语言中,char型数据在内存中的存储形式是 d。A)补码 B)反码 C)原码 D)ASCII码

40.执行下列程序片段时输出结果是 c。int x=13,y=5;printf(“%d”,x%=(y/=2));A)3 B)2 C)1 D)0 41.执行语句scanf(“%c%c%c”,&c1,&c2,&c3),输入abc时,变量c1、c2、c3的值分别为 a。A)'a', 'b', 'c' B)'a','b', '' C)'a', '', 'b' D)'a','','c'

42.设c1,c2均是字符型变量,则以下不正确的函数调用为 d。A)scanf(“c1=%cc2=%c”,&c1,&c2);B)c1=getchar();C)putchar(c2);D)putchar(c1,c2);43.下列函数中能够向终端输出一个字符或字符型变量值的是 d。A)gets B)puts C)getchar D)putchar 44.若有下列语句 char c=’A’; printf(“%d”,c);则输出的结果是 c。

A)A B)c C)65 D)错误的语句

45.下列程序输入’a’字母后,执行程序后输出的结果是 b。#include int main(){ char c;c=getchar();c=c-32;printf(“%cn”,c);return 0;} A)65 B)A C)97 D)a 46.程序流程图中带箭头的线段表示 b。

A)处理操作 B)数据流 C)控制流 D)调用关系 47.程序流程图中的菱形框表示 c。A)输入 B)输出 C)判断 D)循环 48.下面的流程图是 d 结构的程序设计。A)顺序 B)顺序加选择 C)判断 D)循环

49.NS图完全取消了 a,不允许有随意的控制流,全部算法写在一个矩形框内。A)流程线 B)输出 C)判断 D)循环 50.以下描述中正确的是 c。

A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C)do-while循环至少要执行一次循环语句 D)do-while循环中,根据情况可以省略while 51.逻辑运算符两侧运算对象的数据类型 d。

A)只能是0或1 B)只能是0或非0正数 C)只能是整型或字符型数据 D)可以是任何类型的数据

52.下列运算符中优先级最高的是 b。(非,算术,关系,AND,或,赋值运算符)A)< B)十 C)&& D)!= 53.能正确表示“当x 的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是 c。A)(x>=1)&&(x<=10)&&(x> = 200)&&(x<=210)B)(x>=1)||(x<=10)||(x>=200)||(x<=210)c)(x>=1)&&(x<=10)||(x>= 200)&&(x<=210 D)(x > =1)||(x< =10)&&(x> = 200)||(x<=210)54.判断char型变量

ch

是否为大写字母的正确表达式是 c。A)' A' <=ch<='z' B)(ch> = 'A')&(ch<=' Z')C)(ch>=' A')&&(ch<='Z')D)(' A' < = ch)AND('Z'> = ch)55.设x,y 和z是int型变量,且x = 3,y= 4,z= 5,则下面表达式中值为0的是 d。A)'y'&&'y' B)x < =y C)x||y+z&&y-z D)!(x=y && ch<'B'&&!Y)的值是 c。A)0 B)语法错 C)1 D)“假” 57.若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数 表达式的值 为“假”。则以下不能满足要求的表达式是 a。A)A%2==1 B)!(A%2 = =0)C)!(A%2)D)A%2 58.若有程序段如下: a=b=c=0;x=35;if(!a)x--;else if(b);if(c)x=3;else x=4;执行后,变量x的值是 b。A)34 B)4 C)35 D)3 59.定义:int x=7,y=8,z=9;后,则下面表达式为0的是 d。A)' x ' && ' y ' B)x<=y C)x||y+z&&y-z D)!((x

printf(“It is the %dth day.”,x);return 0;} A)是死循环 B)循环执行2次 C)循环执行1次 D)有语法错误

61.对switch后括号内的表达式,叙述正确的是 c。A)只能是数字 B)可以是浮点数 C)只能是整型数据或字符型数据 D)以上叙述都不对

62.下列关于switch和break语句的说法中正确的是 b。A)break语句只能用在switch语句中 B)在switch语句中,可以根据需要决定是否使用break语句 C)在switch语句中必须使用break语句 D)以上选项都不正确 63.以下正确的描述是 b。

A)continue语句的作用是结束整个循环的执行 B)只能在循环体内和switch语句体内使用break语句 C)在循环体内使用break语句或continue语句的作用相同 D)从多层循环嵌套中退出时, 只能使用goto语句

64.以下说法中错误的是 d。

A)C语言总是从main函数开始执行 B)函数在程序中出现的先后位置与其被调用的顺序无关 C)一个完整的C程序可由若干个C源程序文件组成

D)main函数的定义必须出现在所有其他函数之前,否则将产生运行错误 65.C语言规定,函数返回值的类型是 c。

A)由return语句中表达式的类型所决定 B)由调用该函数的主调函数所具有的类型决定 C)由定义该函数时所指定的函数类型决定 D)由系统随机决定 66.以下说法中正确的是 b。

A)main函数和其他函数间可相互调用 B)main函数可以调用其他函数,但其他函数不能调用main函数 C)因为main函数可不带参数,所以其后的参数小括号能省略 D)根据情况可以不写main函数

67.以下函数定义中正确的是 b。A)fun(float x,y)B)

fun(int x, int y)C)

fun(int x, int y);D)void fun(int x, int y){ return x+y;} { return x+y;} { return x+y;} { return x+y;} 68.以下说法中正确的是 b。

A)在一个函数的执行过程中又出现对其他函数的调用,则称此函数为递归函数。B)递归函数中必须存在递归结束的条件

C)函数的递归调用可以提高程序的执行效率 D)递归函数中必须出现return语句 69.以下有关“递归函数”说法中正确的是 a。

A)既允许直接递归调用,也允许间接递归调用 B)只允许直接递归调用 C)既不允许直接递归调用,也不允许间接递归调用 D)只允许间接递归调用

70. C语言中,函数调用时若实参是数组名,则传递给被调函数对应形参的是 d。A)整个数组 B)数组元素的个数

C)数组占用的内存单元个数 D)数组在内存中存放的首地址

71.C语言中,函数调用时若实参是数组名,则被调函数对应形参 c。A)可以是相应类型简单变量 B)必须是相应类型数组名 C)可以是相应类型数组名 D)必须是相应类型的指针变量 72.以下说法中错误的是 d。

A)数组元素可以作为函数实参 B)指针可以作为函数的形参 C)结构变量可以作为函数参数 D)结构指针变量不能作为函数参数

73.C语言中,以下叙述中错误的是 a。A)主函数中定义的变量是全局变量

B)同一程序中,全局变量和局部变量可以同名 C)全局变量的作用域从定义处开始到本源程序文件结束 D)局部变量的作用域被限定在其所定义的局部范围中 74.在一个源程序文件中定义的全局变量,其作用域为 b。

A)整个源程序文件 B)从定义处开始到本源程序文件结束 C)整个主函数 D)所处C程序的所有源程序文件中 75.在C函数中,局部变量的隐含存储类型是 a。A)auto B)static C)register D)extern 76.在C程序中,如果限定一个局部变量只能在所定义的范围中起作用,那么这个变量的存储类型 a。

A)只能是auto B)只能是extern C)可以是auto或static D)可以是extern或static 填空题

1.在C语言中所提供的数据结构是以数据类型形式出现的,其中的基本类型包括int 型 即 整形、float型即_ 单精度浮点型、double型即 双精度浮点型、char型即 字符型 等。2.C语言中的标识符只能由三种字符组成,它们是 字母、数字 和 下划线。

3.C程序中的字符常量是用单引号括起来的一个字符;除此之外,还允许用一种特殊形式的字符常量,是以 反斜杠 开头,被称为转义字符。

4.字符串常量是一对双引号括起来的字符序列,且以 ‘’ 结束。5.常量是指在程序执行过程中其值 不能 _改变的量。6.变量是指在程序执行过程中其值 可以改变 的量。7.C实型变量分为 单精度 _和 双精度 _两类。

8.转义字符'n'表示 换行,使光标移到屏幕上下一行开头。9.一个字符变量在内存中占 1 字节。

10.一个字符数据既可以以字符形式输出,也可以以 整数 形式输出。11.字符串常量是用_ “” _括起来的字符序列。

12.在进行运算时,不同类型的数据必须_ 先强制类型转换 _,然后进行运算。13.可以利用_ 强制类型转换 _运算符将一个表达式的值转换成指定的类型。

14.有两种类型转换,一种是在运算时不必用户指定,系统自动进行类型转换;另一种是 用户自己定义的转换(强制类型转换)。15.两个整数相除的结果是_ 整数。16.求模运算符(%)只能用于 整数 _操作数。17.一个表达式的最后加上一个 ; 就成了一个语句。18.若int x = 3,则执行表达式x*= x+= xb;//(b=7)a = a-b;//(a=9)printf(“a=%d, b=%d n”, a,b);return 0;} A=9;b=7 3.写出以下程序运行的结果 , c = 3。#include int main(){ int a, b, c;a =(b =(c = 3)* 5)*5;printf(“a=%d, b=%d, c=%d n”, a, b, c);return 0;} A=75,b=15,c=3

4.下面程序的功能是输出100至200之间的不能被3整除的数,请填空使程序完整。int main(){ int n;for(n=100;n<=200;n++){ if(n%3==0)else

{printf(“%d ”,n);} } return 0;} 5.下面程序完成的功能是,在全班50个学

生中,征集慈善募捐,当总数达到2000元时就结束。请判断下面程序的正误,如果错误请改正过来(只有一处错误)。

int main(){ float amount,total;int i;for(i=1,total=0;i<=50;i++){ scanf(“%f”,&amount);total=total+amount;if(total>=2000)break;}

printf(“%f ”,total);return 0;}

6.执行程序之后,输入2↙6↙3↙,以下程序运行后的输出结果是。(↙表示回车)#include int main(){ int a,b,c,d;printf(“请输入三个整数:n”);scanf(“%d%d%d”,&a,&b,&c);if(a>b)d=a;//d=2 else d=b;if(c>d)d=c;printf(“%dn”,d);return 0;} D=6 7.s+=n;11 } printf(“n=%dn”,n);return 0;} N=5 8.下面程序的功能是:求1!+2!+3!+„+10!,请填空使程序完整。int main(){ int n;double s=0,t=1;for(n=1;n<=10 n++){ t=t*n;t++;}

printf(“%e”, t);return 0;}

9.请给出程序运行结果。int main(){ int i;for(i=1;i<=5;i++)printf(“%d ”,sub(i));

printf(“n”);以下程

后的输

果是。#include int main(){ int n,s;s=n=0;while(s<=10){ n++;return 0;} int sub(int n){ int a;if(n==1)return 1;a=n+sub(n-1);return a;} 1 3 6 10 15 10.请给出程序运行结果。int m=10;int main(){ int fun(int x,int y);int a=7,b=6;

printf(“%dn”,fun(a,b)/m);return 0;} int fun(int x,int y){ int m=2;return x*y-m;} 4 11.以下程序的功能是求一个3*4矩阵中最小元素。请填空。

fun(int a[][4]){ int i,j,k,min=10000;for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[i][j]

min=a[i][j];return min;} int main(){ int a[3][4]={1,2,3,-22,5,6,-3,8,9,-8,22,10};int k;k= fun(a)printf(“%dn”,k);return 0;} 12.下面程序的功能是:用户从键盘输入两个float型数据a和b,计算并输出a除以b的商。请判断下面程序的正误,如果错误请改正过来。float cal(float a, b){ float x;

x=a/b;//注意这样编程输入时

要输入带小说点,要不这一步做的是取整运算;// return x;} int main(){ float a,b;scanf(“%f %f”,&a,&b);printf(“商=%fn”,cal(a,b));return 0;} 5.下面程序的功能是:输出全局变量a、b两者的最小值。请判断下面程序的正误,如果错误请改正过来。(int a=8,b=7;既然是全局变量,应该写到前面,至少在main前)

int min(int x,int y){ int z;z=x

return 0;} int a=8,b=7

编程题

1.编写一个程序,求满足以下条件的最大的n值。12+22+32+„n2≤10001.#include int main(){ int b,a;a=0;while(b<=10001);{ b=b+a*a;a=a+1;} printf(“%dn”,a);return 0;} 2.编写一个程序,输入三条线段的长度,判断这三条线段能否构成一个直角三角形。#include int main(){ int a,b,c;scanf(“%d%d%d”,&a,&b,&c);if(a>b&&a>c){if((a*a)==(b*b+c*c))printf(“长度为abc的三条边能构成直角三角形n”);else printf(“长度为abc的三条边不能构成直角三角形n”);} else if(b>a&&b>c){ if((b*b)==(a*a+c*c))printf(“长度为abc的三条边能构成直角三角形n”);else

printf(“长度为abc的三条边不能构成直角三角形n”);} else if(c>a&&c>b){ if((c*c)==(a*a+b*b))printf(“长度为abc的三条边能构成直角三角形n”);else printf(“长度为abc的三条边不能构成直角三角形n”);} return 0;} 3.判断用户输入的字符是数字字符、字母字符还是其它字符。

4.从键盘输入3名学生的5门成绩,分别找出每个学生的最高成绩,用循环嵌套。5.编写函数,删除字符串中的所有数字字符。6.分别求出1-100之间奇数之和、偶数之和。7.输入三个不同的整数,输出三个整数中的最大数。#include int main(){ int a,b,c;scanf(“%d%d%d”,&a,&b,&c);if(a>b&&a>c)printf(“最大值为%dn”,a);if(b>a&&b>c)printf(“最大值为%dn”,b);if(c>a&&c>b)printf(“最大值为%dn”,c);return 0;}

下载大工城市学院2018年-2019年C语言期末考试题型word格式文档
下载大工城市学院2018年-2019年C语言期末考试题型.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    大一C语言期末考试试题

    6.以下程序的输出结果为(D )。 main( ) { char c; int i; for(i=65;i......

    C语言期末考试编程题范文

    1.打印出所有的“水仙花数”,并按照一行5个的格式输出。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1*1*1+5*5*5+3*3*3......

    深大C语言期末考试模拟题1

    一、 单选题1.是构成C语言的基本单位。A.函数B.过程C.子程序D.子例程2.能正确表示a≥10或a≤0关系表达式的是A.a>=10 or a=10 | a=10 || a=10,a=’0’)&&(c1=0)&&(c1......

    计算机二级C语言题型和评分标准(合集5篇)

    1、选择题:40题,每题1分。按标答给分 2、程序填空:3处空,每空6分。共18分,按标答给分,如果和标答的写法不一样,就算对的也没有分。每一空有每一空的分数。做对一空就给6分 3、程序......

    计算机二级C语言上机题型总结

    全国计算机二级C语言考试上机题型总汇 (一)关于“******”问题 1、将字符串中的前导*号全部删除,中间和后面的*号不删除。 void fun(char *a) { char *p=a; while(*p= =’*’)......

    大学语文期末考试题型

    《大学语文》期末考试八类题型: 一、填空(10题10分); 二、默写(2-3段,5分); 三、单项选择题(5题5分); 四、多项选择题(5题10分); 五、句中词语解释(10题10分); 六、句子翻译(5题10分); 七、简......

    高二期末考试题型[合集]

    一、阅读理解1.下列各组词语中加点字注音全对的一组:A、江渚 zhǔ 凤阙 què 绮筵 yán 扁舟 piānB、碣石 jié 渌水 lù 草腓 fēi 蓦然 mùC、金樽 zūn 危樯 qiáng......

    C语言程序设计期末考试试题(含答案)(大全5篇)

    C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分)1、以下不是C语言的特点的是 A、 C语言简洁、紧凑 B、 能够编制出功能复杂的程序 C、 C......