中国大学C语言程序题

更新时间:2024-07-03 01:21:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第3周编程题在线测试

1 计算两个数的平方和(3分) 题目内容:

从键盘读入两个实数,编程计算并输出它们的平方和,要求使用数学函数pow(x,y)计算平方值,输出结果保留2位小数。程序中所有浮点数的数据类型均为float。 提示:使用数学函数需要在程序中加入编译预处理命令 #include

以下为程序的运行结果示例: please input x and y: 1.2,3.4↙ Result=13.00

输入格式: \输出格式:

输入提示信息:\输出格式:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include #include int main() { float x,y; printf(\ scanf(\ printf(\ return 0; }

2逆序数的拆分计算(3分) 题目内容:

从键盘输入一个4位数的整数,编程计算并输出它的逆序数(忽略整数前的正负号)。例如,输入-1234,忽略负号,由1234分离出其千位1、百位2、十位3、个位4,然后计算4*1000+3*100+2*10+1 = 4321,并输出4321。再将得到的逆序数4321拆分为两个2位数的正整数43和21,计算并输出拆分后的两个数的平方和的结果。

以下是程序的运行结果示例: Input x: -1234↙ y=4321 a=43,b=21 result=2290

输入格式: \

输出格式:

输入提示信息:\逆序数输出格式:\

逆序数拆分后的输出格式:\平方和的输出格式:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 #include? int main(){ printf(\ int x; scanf(\ if (x <= 0) { x = -x; } int a, b, c, d; a = x / 1000; b = x / 100 % 10; c = x / 10 % 10; d = x % 10; printf(\ printf(\ printf(\ return 0; }

3拆分英文名(3分) 题目内容:

从键盘输入某同学的英文名(小写输入,假设学生的英文名只包含3个字母。如: tom),编写程序在屏幕上输出该同学的英文名,且首字母大写(如: Tom)。同时输出组成该英文名的所有英文字符在26个英文字母中的序号。 以下为程序的运行结果示例: Input your English name: tom↙ Tom t:20 o:15 m:13

输入格式: \输出格式:

输入提示信息:\

首字母大写的英文姓名的输出格式:\

姓名中每个字母在26个英文字母中的序号的输出格式:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 #include int main() { char a, b, c; printf(\ scanf(\ printf(\ printf(\ printf(\ printf(\ return 0; }

4计算体指数(3分) 题目内容:

从键盘输入某人的身高(以厘米为单位,如174cm)和体重(以公斤为单位,如70公斤),将身高(以米为单位,如1.74m)和体重(以斤为单位,如140斤)输出在屏幕上,并按照以下公式计算并输出体指数,要求结果保留到小数点后2位。程序中所有浮点数的数据类型均为float。

假设体重为w公斤,身高为h米,则体指数的计算公式为:

以下是程序的运行结果示例: Input weight, height: 70,174↙ weight=140 height=1.74 t=23.12

输入格式: \输出格式:

输入提示信息:\ (注意:在height和逗号之间有一个空格) 体重输出格式:\身高输出格式:\体指数输出格式:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 #include #include int main() { float weight, height,t; printf(\ scanf(\ t = weight / pow((height / 100), 2); printf(\

}

printf(\printf(\ return 0;

第4周——无处不在的抉择 1数位拆分v2.0(4分) 题目内容:

从键盘上输入一个4位数的整数n,编写程序将其拆分为两个2位数的整数a和b,计算并输出拆分后的两个数的加、减、乘、除和求余运算的结果。例如n=-4321,设拆分后的两个整数为a,b,则a=-43,b=-21。除法运算结果要求精确到小数点后2位,数据类型为float。求余和除法运算需要考虑除数为0的情况,即如果拆分后b=0,则输出提示信息\is zero!\

程序的运行结果示例1: Please input n:

1200↙ 12,0

sum=12,sub=12,multi=0 The second operater is zero!

程序的运行结果示例2: Please input n: -2304↙ -23,-4

sum=-27,sub=-19,multi=92 dev=5.75,mod=-3

输入提示信息:\输入格式: \输出格式:

拆分后的两个整数的输出格式:\

加法、减法、乘法的输出格式:\除法和求余的输出格式:\

除数为0的提示信息:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb #include

int main() { int m, x, y; printf(\ scanf(\ x = m / 100;

}

y = m % 100;

printf(\

printf(\if (y != 0){ printf(\}

else{ printf(\ }

return 0;

2出租车计价(4分) 题目内容:

已知某城市普通出租车收费标准为:起步里程为3公里,起步费为8元,10公里以内超过起步里程的部分,每公里加收2元,超过10公里以上的部分加收50%的回空补贴费,即每公里3元。出租车营运过程中,因堵车和乘客要求临时停车等客的,按每5分钟加收2元 计算,不足5分钟的不计费。从键盘任意输入行驶里程(精确到0.1公里)和等待时间(精确到分钟),请编程计算并输出乘客应支付的车费,对结果进行四舍五入,精确到元。

程序运行结果示例1:

Input distance and time:2,2↙ fee = 8

程序运行结果示例2:

Input distance and time:5,5↙ fee = 14

程序运行结果示例3:

Input distance and time:12,15↙ fee = 34

程序运行结果示例4:

Input distance and time:20,0↙ fee = 52

输入提示信息:\输入格式:

用逗号分隔的两个数字,第一个表示距离、第二个表示时间:\输出格式:

价格的输出格式:\ (注意:等号的两边各有一个空格)

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 #include #include ?

int main() { float f=0, fee=0; int d=0,dp=0; printf(\ scanf(\ if ((f>0)&&(f<10)) {

if (f <= 3 && d < 5) {

fee = 8;

printf(\ }

if (f<10&&d>=5) {

dp=d/5;

fee=(f-3)*2+8+2 * dp; printf(\ } } if (f >= 10 && d >= 5) { dp = d / 5; fee = (f - 10) * 3 + 22 + 2 * dp; printf(\ } if (f >= 10 && d < 5) { fee = (f - 10) * 3 + 22; printf(\ } return 0; }

3数据区间判断(6分) 题目内容:

从键盘输入一个int型的正整数n(已知:0

程序运行结果示例1: Please enter the number: 2563↙

2563: 1000-9999

程序运行结果示例2: Please enter the number: 156↙

156: 100-999

程序运行结果示例3: Please enter the number: 36↙ 36: 10-99

程序运行结果示例4: Please enter the number: 3↙ 3: 0-9

程序运行结果示例5: Please enter the number: 10923↙ error!

输入提示信息:\输入格式: \输出格式:

输出的区间判断: \\\\

输入错误提示信息:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 #include #include ? int main() { int x; printf(\ scanf(\ if (x>=0&&x<=9)

printf(\ else if (x>=1000&&x<=9999)

printf(\ else if (x>=10&&x<=99) printf(\ else if (x>=100&&x<=999)

}

printf(\else printf(\return 0;

4计算一元二次方程的根v2.0(4分)

题目内容:

根据下面给出的求根公式,计算并输出一元二次方程

的两个实根,要求精确到小

数点后4位。其中a,b,c的值由用户从键盘输入。如果用户输入的系数不满足求实根的要求,输出错误提示 \。程序中所有的数据类型均为float。

程序运行结果示例1:

Please enter the coefficients a,b,c: 1,2,1↙

x1=-1.0000, x2=-1.0000

程序运行结果示例2:

Please enter the coefficients a,b,c: 2,6,1↙

x1=-0.1771, x2=-2.8229

程序运行结果示例3:

Please enter the coefficients a,b,c: 2,1,6↙ error!

输入提示信息:\输入格式: \输出格式:

输出格式:\

如果输入的系数不满足求实根的要求,输出错误提示信息:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include #include int main() { float a, b, c, x1, x2, m; printf(\

scanf(\ m=b*b-4*a*c; if (m<0){ printf(\ } else{ x1 = (-b + sqrt(m))/(2 * a); x2 = (-b - sqrt(m))/(2 * a); printf(\ } return 0; }

第5周——周而复始的循环之道

16位密码输入检测(4分)

题目内容:

从键盘输入6位仅由数字0~9组成的密码。用户每输入一个密码并按回车键后,程序给出判断:如果是数字,则原样输出该数字,并提示用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提示\,并让用户继续输入下一位密码。直到用户输入的密码全部是数字为止。 以下为程序的运行结果示例: Input your password: 1↙

1, you have enter 1-bits number 6↙

6, you have enter 2-bits number a↙ error d↙ error 4↙

4, you have enter 3-bits number 6↙

6, you have enter 4-bits number 8↙

8, you have enter 5-bits number 2↙

2, you have enter 6-bits number

输入提示信息:\输入格式: \

输出格式:

如果输入的是数字,输出格式为:\如果输入的不是数字,输出提示信息:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include int main(){ char a; int i=0;

printf(\ while(i<6) {

scanf(\ if (a>=48&&a<=57) {

printf(\ } else {

printf(\

}

getchar(); }

return 0; }

2判断一个整型数据有几位v1.0(4分)

题目内容:

从键盘输入一个整型数据(int型),编写程序判断该整数共有几位。例如,从键盘输入整数16644,该整数共有5位。

程序运行结果示例1: Please enter the number: 21125↙ 21125: 5 bits

程序运行结果示例2: Please enter the number: -12234↙ -12234: 5 bits

输入提示信息:\输入格式: \

输出格式:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include int main(){ int x,y,n;

printf(\ scanf(\ n=x;

for (y=1;x/=10;y++);

printf(\ return 0; }

3检测输入数据中奇数和偶数的个数(4分)

题目内容:

从键盘输入一系列正整数,输入-1表示输入结束(-1本身不是输入的数据)。编写程序判断输入数据中奇数和偶数的个数。如果用户输入的第一个数据就是-1,则程序输出\。否则。用户每输入一个数据,输出该数据是奇数还是偶数,直到用户输入-1为止,分别统计用户输入数据中奇数和偶数的个数。

程序运行结果示例1: Please enter the number: 1↙ 1:odd 5↙ 5:odd 8↙ 8:even 9↙ 9:odd 12↙ 12:even 17↙ 17:odd -1↙

The total number of odd is 4 The total number of even is 2

程序运行结果示例2: Please enter the number:

-1↙ over!

The total number of odd is 0 The total number of even is 0

输入提示信息:\输入格式: \输出格式:

用户输入的第一个数据就是-1,输出格式:\奇数的输出格式:\偶数的输出格式:\

输入数据中奇数的个数统计:\输入数据中偶数的个数统计:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include int main(){

int s,odd=0,even=0;

printf(\ do{

scanf(\

if (s==-1&&odd==0&&even==0) printf(\ else if( s%2!=0 &&s!=-1) {printf(\ odd++;}

else if (s%2==0)

{printf(\ even++;}

else even+=0; } while (s!=-1);

printf(\ printf(\ return 0; }

4计算球的反弹高度(4分)

题目内容:

一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下并反弹......,求它在第5次和第10次落地时,分别共经过了多少米?第5次和第10次反弹分别是多高?要求计算结果保留到小数点后3位。用户从键盘输入想要计算的第n次(n<=15)。程序中所有浮点数的数据类型均为float。

程序运行结果示例1: Input:

5↙ 5 times: 287.500 3.125

程序运行结果示例2: Input: 10↙ 10 times: 299.609 0.098

输入提示信息:\输入格式: \输出格式:

反弹次数:\

第n次反弹共经过多少米:\第n次的反弹高度:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include int main(){ int time,i;

float each=0,sum=0,h=100; printf(\ scanf(\ for (i=0;i

sum+=h; h/=2; each=h; sum+=each; }

printf(\ printf(\ printf(\ return 0; }

第6周——分工与合作:领导的艺术

1程序改错v2.0(5分)

下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。

1. #include 2. int main() 3. {

4. int score; 5. char grade;

6. printf(\7. scanf(\

8. if (score < 0 || score > 100) 9. printf(\10. else if (score >= 90) 11. grade = 'A’; 12. else if (score >= 80) 13. grade = 'B'; 14. else if (score >= 70) 15. grade = 'C'; 16. else if (score >= 60) 17. grade = 'D'; 18. else 19. grade = 'E'; 20. printf(\21. return 0; 22. }

程序运行结果示例1: Please input score: a↙ Input error! Please input score: -12↙ Input error! Please input score: 230↙ Input error! Please input score: 92↙ grade: A

程序运行结果示例2: Please input score:

88↙ grade: B

程序运行结果示例3: Please input score: 73↙ grade: C

程序运行结果示例4: Please input score: 65↙ grade: D

程序运行结果示例5: Please input score: 27↙ grade: E

输入提示信息:\输入格式: \输出格式:

输入错误时的提示信息:\

输出格式:\注意:%c前面有一个空格)

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include #include

int main(){

int score,m=0; char grade;

printf(\ do{

m=scanf(\ getchar();

if (m!=1||score<0||score>100) {

printf(\ m=0; }

}while (m==0); if (score>=90) grade = 'A';

else if (score>=80)

grade = 'B';

else if (score>=70) grade = 'C';

else if (score>=60) grade = 'D';

else grade = 'E';

printf(\ return 0; }

2编程计算a+aa+aaa+…+aa…a(n个a)的值(4分)

题目内容:

编程计算 a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入。例如,当n=4,a=2,表示计算2+22+222+2222的值。

程序运行结果示例: Input a,n: 2,4↙ sum=2468

输入提示信息:\

输入格式: \(先输入a,后输入n) 输出格式: \

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include int main(){

int a,n,sum=0,tem=1; printf(\ scanf(\ int i;

for (i=1;i<=n;i++) {

sum += (a*tem); tem=tem*10+1; }

printf(\ return 0; }

3搬砖问题(4分)

题目内容:

n块砖( 27

程序的运行结果示例1: Input n(27

men=0,women=4,children=32

程序的运行结果示例2: Input n(27

men=3,women=3,children=30

程序的运行结果示例3: Input n(27

men=2,women=14,children=20 men=7,women=7,children=22 men=12,women=0,children=24

输入提示: \

输入格式: \

输出格式:\

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include int main() {

int n,woman,man,kid;

printf(\ scanf(\

for(man=0;man<=19;man++) {

for (woman=0;woman<=22;woman++) {

kid=36-man-woman;

if(4*man+3*woman+0.5*kid==n)

printf(\ }

}

return 0; }

4编程输出某年某月有多少天(考虑到闰年)。(5分)

题目内容:

从键盘输入一个年份和月份,输出该月有多少天(考虑闰年),用switch语句编程。

程序运行结果示例1: Input year,month: 2015,3↙ 31 days

程序运行结果示例2: Input year,month: 2015,4↙ 30 days

程序运行结果示例3: Input year,month: 2016,2↙ 29 days

程序运行结果示例4: Input year,month: 2014,2↙ 28 days

程序运行结果示例5: Input year,month: 2015,13↙ Input error!

输入提示信息:\ 输入格式: \ 输出格式:

输入错误时的提示信息:\ 输出格式:

\ \ \ \

为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

#include int isleap(int n); int main(){

int year,month;

printf(\ scanf(\ switch(month){

case 1:case 3:case 5:case 7:case 8:case 10:case 12: printf(\ break;

case 4:case 6:case 9:case 11: printf(\ break; case 2:

if (isleap(year)){

printf(\ break; } else{

printf(\ break; }

default:printf(\ }

return 0; }

int isleap(int n) {

if(n0!=0&&n%4==0||n@0==0) return 1; else

return 0; }

第7周——《盗梦空间》的逻辑:探寻递归的奥秘

1递归法计算游戏人员的年龄(4分)

题目内容:

有n个人围坐在一起,问第n个人多大年纪,他说比第n-1个人大2岁;问第n-1个人,他说比第n-2个人大2岁,.....,问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁,问第n个人多大年纪。

递归函数原型:unsigned int ComputeAge(unsigned int n); 提示:

计算年龄的递归公式为:

输入格式: \

输出格式: \

输入样例1: 5↙

输出样例1:

The_person's_age_is_18 输入样例2: 10↙ 输出样例2:

The_person's_age_is_28

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! (注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)

#include

unsigned int Age(unsigned int age); int main(){

unsigned int n=0; scanf(\

printf(\ return 0; }

unsigned int Age(unsigned int n) {

if (n==1)

return 10; else

return Age(n-1)+2; }

2递归法计算两个数的最大公约数(4分)

题目内容:

利用最大公约数的性质计算。对正整数a和b,当a>b时,若a中含有与b相同的公约数,则a中去掉b后剩余的部分a-b中也应含有与b相同的公约数,对a-b和b计算公约数就相当于对a和b计算公约数。反复使用最大公约数的上述性质,直到a和b相等为止,这时,a或b就是它们的最大公约数。这三条性质,也可以表示为:

性质1 如果a>b,则a和b与a-b和b的最大公约数相同,即Gcd(a, b) = Gcd(a-b, b) 性质2 如果b>a,则a和b与a和b-a的最大公约数相同,即Gcd(a, b) = Gcd(a, b-a) 性质3 如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a, b) = a = b

程序运行结果示例1: Input a,b:16,24↙ 8

程序运行结果示例2: Input a,b:-2,-8↙ Input error!

输入提示信息:\输入格式:\ 输出格式:

输出最大公约数:\

输入错误提示信息:\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include int Gcd(int a, int b); int main() {

int a, b, c;

printf(\ scanf(\ c = Gcd(a, b); if ( c!= -1)

printf(\ else

printf(\ return 0; }

int Gcd(int a, int b) {

if (a <= 0 || b <= 0) return -1; if (a == b)

return a;

else if (a > b)

return Gcd(a - b, b); else

return Gcd(a, b - a); }

3寻找中位数v1.0(4分)

题目内容:

编写一个函数返回三个整数中的中间数。函数原型为: int mid(int a, int b, int c); 函数功能是返回a,b,c三数中大小位于中间的那个数。 输入格式: \

输出格式:\ 输入样例1: 12 6 18↙ 输出样例1: The_result_is_12 输入样例2: -9 7 -2↙ 输出样例2: The_result_is_-2

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! (注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)

#include

int mid(int a, int b, int c); int main(){ int a,b,c;

scanf(\

printf(\ return 0; }

int mid(int a, int b, int c) {

int j,i,t;

int m[3]={a,b,c}; for (i=0;i<2;i++)

for (j=i;j<=2;j++) if (m[j]>m[i]) { t=m[j]; m[j]=m[i]; m[i]=t; } return m[1];

}

4还原算术表达式(4分)

题目内容:

编写程序求以下算式中XYZ的值,其中两数XYZ与YZZ相加的和n(99

程序运行结果示例1: Input n(n<1000): 532↙ X=3,Y=2,Z=1

程序运行结果示例2: Input n(n<1000): 977↙ Invalid

输入提示:\Input n(n<1000):\\n\ 输入格式: \

输出格式:\ 计算不成功(无解)的输出提示:\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include

int mid(int a, int b, int c); int main() {

int x,y,z,n;

printf(\ scanf(\ for (x=1;x<=9;x++) {

for (y=1;y<=9;y++) {

for (z=1;z<=9;z++)

{

if ((x*100+y*10+z+y*100+z*10+z)==n) {

printf(\ return 0; } } } }

printf(\ return 0; }

第8周—— 一堆数据来了,你准备好了吗

1矩阵转置v1.0(4分)

题目内容:

用二维数组作为函数参数,编程计算并输出n×n阶矩阵的转置矩阵。其中,n的值不超过10,n的值由用户从键盘输入。

程序运行结果示例1: Input n:3↙ Input 3*3 matrix: 1 2 3↙ 4 5 6↙ 7 8 9↙

The transposed matrix is: 1 4 7 2 5 8 3 6 9

程序运行结果示例2: Input n:2↙ Input 2*2 matrix: 1 2↙ 4 5↙

The transposed matrix is: 1 4 2 5

输入提示信息:

提示输入矩阵的阶数:\

提示输入矩阵数据:\输入格式: \

输出提示信息:\输出格式:\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include #include #define N 10

int main() {

int matrix[N][N]; int i,j,n;

printf(\ scanf(\

printf(\ for(i=0;i

for(j=0;j

scanf(\ } }

int k,q,temp; for(k=0;k

for(q=k+1;q

temp=matrix[k][q];

matrix[k][q]=matrix[q][k]; matrix[q][k]=temp; } }

printf(\ for(i=0;i

for(j=0;j

printf(\ }

printf(\

}

return 0; }

2兔子生崽问题(4分)

题目内容:

假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,n(n<=12)月以后可有多少对兔子(即当年第n月份总计有多少对兔子,含成兔和小兔)?请编程求解该问题,n的值要求从键盘输入。

参考答案:依题意,兔子的繁殖情况如图所示。图中实线表示成兔仍是成兔或者小兔长成成兔;虚线表示成兔生小兔。观察分析此图可发现如下规律: (1)每月小兔对数 = 上个月成兔对数。

(2)每月成兔对数 = 上个月成兔对数 + 上个月小兔对数。 综合(1)和(2)有:每月成兔对数 = 前两个月成兔对数之和。

用fn(n=1,2,…)表示第n个月成兔对数,于是可将上述规律表示为如下递推公式:

程序运行示例: Input n(n<=12): 10↙

1 2 3 5 8 13 21 34 55 89 Total=89

输入提示:\

输入格式:\输出格式:

每个月兔子对数的输出格式: \

第12个月的兔子总数的输出格式: \

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include

int creat(int n); int main() {

int each,total,i,n;

printf(\ scanf(\ for (i=1;i<=n;i++)

printf(\

printf(\

return 0; }

int creat(int n) {

if (n==1 || n==2) return 1; else

return creat(n-1)+creat(n-2); }

3抓交通肇事犯(4分)

题目内容:

一辆卡车违犯交通规则,撞人后逃跑。现场有三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。现在请根据以上线索帮助警方找出车号以便尽快破案。

[提示]:假设这个4位数的前两位数字都是i,后两位数字都是j,则这个可能的4位数

k = 1000*i + 100*i + 10*j + j

式中,i和j都在0~9变化。此外,还应使k=m*m,m是整数。由于k是一个4位数,所以m值不可能小于31。

输入格式: 无

输出格式:\k=%d,m=%d\\n\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include int main() {

int a,b,c,d,i,j;

for (i=31;i<100;i++) {

j=i*i; a=j/1000;

d=j;

b=j00/100; c=j0/10;

if (a==b&&c==d&&a!=c)

printf(\ } return 0; }

4检验并打印幻方矩阵。(4分)

题目内容:

幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个5×5的矩阵并将其存入一个二维整型数组中,检验其是否为幻方矩阵,并将其按指定格式显示到屏幕上。 输入格式: \输出格式:

如果是幻方矩阵,输出提示信息: \ 矩阵元素的输出:\(换行使用\)

如果不是幻方矩阵,输出提示信息: \ 输入样例1: 17_24_1_8_15 23_5_7_14_16 4_6_13_20_22 10_12_19_21_3 11_18_25_2_9

(输人样例中“_”代表空格) 输出样例1: It is a magic square! **17**24***1**8**15 **23***5***7**14**16 ***4***6**13**20**22 **10**12**19**21***3 **11**18**25***2***9 (输出样例中“*”代表空格) 输入样例2: 1_0_1_6_1 3_1_1_1_1 1_1_1_1_2 1_1_1_1_1 9_1_7_1_1

(输人样例中“_”代表空格) 输出样例2:

It is not a magic square!

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! (输人样例中“_”代表空格,输出样例中“*”代表空格)

#include int judge (); int i,j;

int m[5][5]={0}; int main() {

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

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

scanf(\ if (judge()) {

printf(\ for(i=0;i<5;i++) {

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

printf(\ printf(\ } } else

printf(\ return 0; }

int judge () { int l=0,r=0;

int s[5]={0},t[5]={0}; for (i=0;i<5;i++)

for (j=0;j<5;j++) {

s[i]+=m[i][j]; t[j]+=m[i][j];

if (i==j) l+=m[i][j]; if (i+j==4) r+=m[i][j]; }

if (l!=r) return 0; for (i=0;i<5;i++)

if (s[i]!=l||t[i]!=l) return 0; return 1; }

第9周——呼风唤雨的指针:C语言世界中的“金箍棒”

1重复数字检查(4分)

题目内容:

从键盘输入一个数,检查这个数中是否有重复出现的数字。如果这个数中有重复出现的数字,则显示“Repeated digit!”;否则显示“No repeated digit!”。 已知函数原型:

int CountRepeatNum(int count[], int n); 若有重复数字,则该函数返回重复出现的数字;否则返回-1. 程序运行结果示例1: Input n: 28212↙ Repeated digit!

程序运行结果示例2: Input n: 12345↙

No repeated digit!

输入提示:\输入格式: \ 输出格式:

有重复数字,输出信息: \ 没有重复数字,输出信息: \

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include #include

int CountRepeatNum(int count[10], int n) {

int b,rtn=-1; while (n>0){ b = n % 10; if (count[b]) { rtn = b; break; } count[b] = 1; n /= 10; } return rtn; }

int main() { int a[10] = { 0 }; int rtn = 0; long int n; printf(\ scanf(\

rtn = CountRepeatNum(a,n); if (rtn!=-1) printf(\ else printf(\ return 0; }

2教授的课(4分)

题目内容:

教授正在为一个有N个学生的班级讲授离散数学课。他对某些学生缺乏纪律性很不满意,于是决定:如果课程开始后上课的人数小于K,就取消这门课程。从键盘输入每个学生的到达时间,请编程确定该课程是否被取消。如果该门课程被取消,则输出“Yes”,否则输出“No”。假设教授在时刻0开始上课。如果一个学生的到达时间是非正整数,则表示该学生在上课前进入教室。如果一个学生的到达时间是正整数,则表示该学生在上课后进入教室。如果一个学生在时刻0进入教室,也被认为是在上课前进入教室。假设到达时间的绝对值不超过100,学生数N不超过1000。要求在输入学生的到达时间之前,先输入N和K。 已知函数原型:

//函数功能:根据数组a中记录的学生到达时间确定课程是否被取消,取消则返回1,否则返回0 int IsCancel(int a[], int n, int k); 程序运行结果示例1: Input n,k: 4,3↙ -1 -3 4 2↙ YES

程序运行结果示例2: Input n,k: 5,3↙ -1 -2 -3 0 4↙ NO

输入提示:\输入格式:

\ \

输入包括两行数据: 第1行是n,k的值。 第2行是学生的到达时间。 输出格式:

课程被取消,输出\ 课程不取消,输出\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include #include #define N 1000

int IsCancel(int a[], int n, int k) {

int i=0,j=0; for(i=0;i

if (a[i]<=0) {

j++; } }

if (j

return 1; } else {

return 0; } }

int main() {

int n = 0,k =0,i; int studentNum[N]; int temp,rtn;

printf(\ scanf(\ for(i=0;i

scanf(\ studentNum[i] = temp; }

rtn = IsCancel(studentNum,n,k); if (rtn==1)

printf(\ else

printf(\ return 0; }

3寻找鞍点(4分)

题目内容:

请编程找出一个M*N矩阵中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。如果矩阵中没有鞍点,则输出“No saddle point!”

已知函数原型:

void FindSaddlePoint(int a[][N], int m, int n); 在该函数中输出有无鞍点的信息。 程序运行结果示例1: Input m,n: 3,3↙ Input matrix: 1 2 3↙ 4 5 6↙ 7 8 9↙ a[0][2] is 3

程序运行结果示例2: Input m,n: 3,4↙ Input matrix: 3 4 7 5↙ 0 1 8 2↙ 9 3 2 6↙ No saddle point!

输入提示: \ “Input matrix:\\n\ 输入格式:

输入矩阵大小: \ 输入矩阵元素: \ 输出格式:

找到鞍点的输出格式:\

没找到鞍点的输出格式:\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include #include int main() {

int i,j,k,a[100][100],max,maxj,flag; int m,n;

printf(\ scanf(\ printf(\ for(i=0;i

scanf(\ for(i=0;i

max=a[i][0]; maxj=0;

for(j=0;jmax) {

max=a[i][j]; maxj=j; }

flag=1;

for(k=0;ka[k][maxj]) {

flag=0; break; }

if(flag) {

printf(\ break; } }

if(!flag)

printf(\ return 0; }

4统计重复字符(4分)

题目内容:

输入一串字符(字符数小于80),以回车表示输入结束,编程计算并输出这串字符中连续重复次数最多的字符和重复次数。如果重复次数最多的字符有两个,则输出最后出现的那一个。 已知函数原型:

//函数功能:统计字符串中连续重复次数最多的字符及其重复的次数

//函数参数:str指向待统计的字符串,指针形参tag返回重复字符最后出现的下标位置 //函数返回值:返回字符重复的次数

int CountRepeatStr(char str[], int *tag);

求解思路:设置一个计数器,遍历字符串中的所有字符,若str[i] == str[i+1],则计数器加1,同时判断计数器的值是否大于记录的最大重复次数max,若大于,则用计数器的值更新max,并记录该字符最后出现的位置i+1.若str[i] != str[i+1],则计数器重新初始化为1。遍历结束时,函数返回max的值。

程序运行结果示例1: Input a string: 2344455555↙ 5:5

程序运行结果示例2: Input a string: sgf222257↙ 2:4

输入提示信息:\ 输入格式: 用gets()输入字符串 输出格式:\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include #include

int CountRepeatStr(char str[], int *tag) {

int i=0; int max = 1; int count = 1;

for(i = 0;i

if (str[i]==str[i+1]) {

count++; }

else {

count=1; }

if (count>max) {

max = count; *tag = i; } }

return max; }

int main() {

char inStr[80]; int tag=0; int max =0 ;

printf(\ gets(inStr);

max = CountRepeatStr(inStr,&tag); printf(\ return 0; }

第10周——大力水手指针

1数字字符串转换为整型数(4分)

题目内容:

从键盘输入一串字符(假设字符数少于8个),以回车表示输入结束,编程将其中的数字部分转换为整型数并以整型的形式输出。

函数原型为 int Myatoi(char str[]);

其中,形参数组str[]对应用户输入的字符串,函数返回值为转换后的整型数。

解题思路的关键是:1)判断字符串中的字符是否是数字字符;2)如何将数字字符转换为其对应的数字值;3)如何将每一个转换后的数字值加起来形成一个整型数。 程序运行结果示例1: Input a string:7hg09y↙ 709

程序运行结果示例2: Input a string:9w2k7m0↙ 9270

程序运行结果示例3:

Input a string:happy↙ 0

输入提示信息:\输入格式: \输出格式:\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include #include

int Myatoi(char str[]) {

int rtn=0;

int i=0,j=0,k=0; int num[8];

while(str[i]!='\\0') {

if (str[i]>='0'&&str[i]<='9') {

num[j] = str[i]-48; j++; } i++; }

int b = 1;

for( k = j-1; k>=0; k--) {

rtn += b * num[k]; b *= 10; }

return rtn; }

int main() {

char inStr[8]; int rtn =0 ;

printf(\

gets(inStr);

rtn = Myatoi(inStr); printf(\ return 0; }

2奇偶数分离(4分)

题目内容:

输入n个整数(n从键盘输入,假设n的值不超过100),按奇偶数分成两组并输出。输出两行,第一行为所有奇数,第二行为所有偶数,保持数据的相对顺序与输入顺序相同。

函数原型如下所示:

void Seperate(int a[], int n); //数组a[]存放用户输入的n个整数

解题思路:用两个循环分别输出奇数和偶数,在输出第一个数时用\格式字符,在输出其余数时用\格式字符,用标志变量记录和判断是否是第一个奇数或偶数。 程序运行结果示例1: Input n:7↙

Input numbers:5 9 47 82 0 6 7↙ 5,9,47,7 82,0,6

程序运行结果示例2:

Input n:8↙

Input numbers:-2 3 5 0 23 62 79 83↙ 3,5,23,79,83 -2,0,62

输入提示信息:\

\输入格式: \

每行第一个数据的输出格式:\

每行第二个及以后数据的输出格式:\

注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!

#include \int main() {

void Seperate(int a[], int n,int js[],int os[],int *jsLength,int *osLength); int nums,i,j,k;int array[100]={0}; int js[100]={9999},os[100]={9999}; printf(\ scanf(\ printf(\

for(i=0;i

scanf(\ }

int jsLength=0,osLength=0;

Seperate(array,nums,js,os,&jsLength,&osLength); int fNum = 1; //输出奇数 if (jsLength > 0) {

for(j=0;j

if (fNum == 1) {

printf(\ fNum = 2; } else {

printf(\ } }

printf(\ }

//输出偶数 fNum = 1;

if (osLength > 0) {

for(k=0;k

if (fNum == 1) {

printf(\ fNum = 2; } else {

printf(\ } } }

return 0; }

void Seperate(int a[],int n,int js[],int os[],int *jsLength,int *osLength) {

int j,m=0,k=0; for(j=0;j

if(a[j]%2!=0) {

//??êy js[m] =a[j]; m++; } else {

os[k] =a[j]; k++; }

*jsLength = m; *osLength = k; } }

3颠倒句子中的单词顺序(4分)

题目内容:

从键盘输入一个句子(假设字符数小于100个),句子中的单词之间用空格分隔,句子必须以一个标点符号作为结尾,句子开头和末尾标点符号前均没有空格,以回车表示输入结束,请编程颠倒句中的单词顺序并输出。

函数原型:int Inverse(char str1[], char str2[][N])

函数功能:将str1中的单词颠倒顺序后分别存入str2的每一行,返回str1中的单词数。 程序运行结果示例1:

Input a sentence:you can cage a swallow can't you?↙ you can't swallow a cage can you?

程序运行结果示例2:

Input a string:you are my sunshine!↙ sunshine my are you!

程序运行结果示例3:

Input a sentence:I love you!↙ you love I!

本文来源:https://www.bwwdw.com/article/260.html

Top