最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

成都信息工程学院C语言考试题及答案

IT圈 admin 32浏览 0评论

2024年3月9日发(作者:姒友瑶)

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

x(x只考虑整数int且必须定义为int、但F(x)完全可能超过int的表示范围)通过键

盘输入(输入前给出提示Please input x:),然后计算并在屏幕上输出函数值。编程可用素

材:printf("Please input x: ")...、printf("nF(...) = ..."...。

┌ -5x+27 (x<0)

F(x)= ├ 7909 (x=0)

└ 2x-1 (x>0)

程序的运行效果应类似地如图1所示,图1中的3是从键盘输入的内容。

#include

int main(void)

{

int x; //x存储自变量x的值

double Fx; //Fx存储函数值F(x)

/* 从键盘上读入x的值 */

printf("Please input x:"); //在屏幕上显示提示输入x的信息,告诉用户需要做

的事

scanf("%d", &x); //从键盘读入x的值

/* 根据题目里给出的计算公式计算F(x) */

if (x < 0) //如果x<0

{

Fx = -5.0 * x + 27; //x<0时的F(x)计算公式

}

else if (0 == x) //否则,若x等于0

{

Fx = 7909; //x=0时的F(x)计算公式

}

else

{

Fx = 2.0 * x - 1; //x>0时的F(x)计算公式

}

/* 将计算结果按题目的要求输出 */

printf("nF(%d) = %.0f", x, Fx);

return 0;

}

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

已知某银行整存整取存款不同期限的年息利率分别为:3.15%期限一年,3.63%期限

二年, 4.02%期限三年,4.69%期限五年,5.36%期限八年。从键盘上输入存钱的本金(以

元为单位,必须定义为int且应考虑金额很大的情况)和存款期限(只考虑1,2,3,5,8),求到

期时能从银行得到的利息(以元为单位,应考虑有小数,不计复利)。编程可用素材:print

f("nPlease input benjin,cunqi:")...、printf("nlixi = ... yuan"...。

程序的运行效果应类似地如图1所示,图1中的10000,8是从键盘输入的内容。

#include

int main(void)

{

int benjin, cunqi;

double lixi, lilv;

printf("nPlease input benjin,cunqi:");

scanf("%d,%d", &benjin, &cunqi);

if (1 == cunqi)

{

lilv = 3.15 / 100.0;

}

else if (2 == cunqi)

{

lilv = 3.63 / 100.0;

}

else if (3 == cunqi)

{

lilv = 4.02 / 100.0;

}

else if (5 == cunqi)

{

lilv = 4.69 / 100.0;

}

else if (8 == cunqi)

{

lilv = 5.36 / 100.0;

}

lixi = benjin * lilv * cunqi;

printf("nlixi = %.2f yuann", lixi);

return 0;

}

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

编写一个简单计算器程序,输入格式为:data1 op data2。其中data1和data2是

参加运算的两个数(data1、data2必须定义为int,但二者相加可能超出int能表示的范

围),op为运算符,它的取值只能是+、-、*、/、%。编程可用素材:printf("Please in

put data1 op data2: ")...、printf("nError! chu shu wei 0.n")...。

程序的运行效果应类似地如图1、图2、图3、图4所示,图1中的3000 + 2000、

图2中的3000 % 2000、图3中的3000 % 0和图4中的3000 / 0是从键盘输入的内

容。

#include

#include

int main(void)

{

int data1, data2;

double result;

char op;

printf("Please input data1 op data2: ");

scanf("%d %c %d", &data1, &op, &data2);

switch (op)

{

case '+':

result = (double)data1 + data2;

break;

case '-':

result = (double)data1 - data2;

break;

case '*':

result = (double)data1 * data2;

break;

case '%':

if (0 == data2)

{

printf("nError! chu shu wei 0.n");

exit(1);

}

else

{

result = data1 % data2;

}

break;

case '/':

if (0 == data2)

{

printf("nError! chu shu wei 0.n");

exit(1);

}

else

{

printf("n%d%c%d=%.2f", data1, op, data2, (double)data1 / data2);

return 0;

}

}

printf("n%d%c%d=%fn", data1, op, data2, result);

return 0;

}

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

输入月份,打印2003年该月有几天。当输入的月份超范围时,应显示“Invalid mo

nth input”。编程可用素材:printf("please input the month number: ")...、printf

("nInvalid month input !n")...、printf(" has ... daysn"...。

程序的运行效果应类似地如图1和图2所示,图1中的4和图2中的13是从键盘输

入的内容。

#include

int main(void)

{

int month, day;

printf("please input the month number: ");

scanf("%d", &month);

switch (month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

day = 31;

break;

case 4:

case 6:

case 9:

case 11:

day = 30;

break;

case 2:

day = 28;

break;

default :

day = -1;

}

if (-1 == day)

{

printf("nInvalid month input !n");

}

else

{

printf("n 2003.%d has %d daysn", month, day);

}

return 0;

}

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

已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成

的关系如下(计量单位:元):

profit≤1000 没有提成;

1000<profit≤2000 提成10%;

2000<profit≤5000 提成15%;

5000<profit≤10000 提成20%;

10000<profit 提成25%。

请根据输入的利润计算员工的薪水。编程可用素材:printf("Input profit: ")...、pr

intf("nsalary=...n"...。

程序的运行效果应类似地如图1所示,图1中的2000是从键盘输入的内容。

#include

int main(void)

{

int profit, grade;

double salary = 500;

printf("Input profit: ");

scanf("%d", &profit);

grade = (profit - 1) / 1000;

switch (grade)

{

case 0:

break;

case 1:

salary += profit * 0.1;

break;

case 2:

case 3:

case 4:

salary += profit * 0.15;

break;

case 5:

case 6:

case 7:

case 8:

case 9:

salary += profit * 0.2;

break;

default:

salary += profit * 0.25;

}

printf("nsalary=%.2fn", salary);

return 0;

}

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

输入一个三位正整数,然后逆序输出。如输入123,则输出321。编程可用素材:pr

intf("Input an integer: ")...、printf("nThe result is ...。

程序的运行效果应类似地如图1所示,图1中的750是从键盘输入的内容。

#include

int main(void)

{

int num, bai, shi, ge;

printf("Input an integer: ");

scanf("%d", &num);

bai = num / 100;

shi = num % 100 / 10;

ge = num % 10;

printf("nThe result is %d%d%dn", ge, shi, bai);

return 0;

}

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

输入一个华氏温度,要求输出摄氏温度,计算公式为c=5(F-32)/9。编程可用素材:

printf("Input the degree:")...、printf("nF(...)=C(...)...。

程序的运行效果应类似地如图1所示,图1中的120是从键盘输入的内容。

#include

int main(void)

{

float fC, fF=1.0; //fC存放摄氏温度的值,fF存放华氏温度的值

/* 从键盘上读入华氏温度到变量fF中 */

printf("Input the degree:"); //在屏幕上显示提示输入华氏温度的信息,告诉用

户需要做的事

scanf("%f", &fF); //从键盘读入华氏温度,存储到变量fF中

/* 按题目里给出的转换公式计算摄氏温度 */

fC = 5.0f / 9 * (fF - 32);

/* 将计算结果按题目的要求输出 */

printf("nF(%.2f)=C(%.2f)", fF, fC);

return 0;

}

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

输入一个小写英文字母,首先输出它及其ASCII码,然后输出其对应的大写字母及其

ASCII码。编程可用素材:printf("Input a lowercase letter: ")...、printf("n...(...)...。

程序的运行效果应类似地如图1所示,图1中的y是从键盘输入的内容。

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

用scanf输入圆半径r,圆柱高h,求圆周长C1(=2πr)、圆面积S(=πr

2

)、圆柱体

积V(=πr

2

h)。(注意:本题中规定圆周率取值为3.14)

程序的运行效果应类似地如图1所示,图1中的r=1.3,h=5是从键盘输入的内容。

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

判断输入的正整数是否既是5又是7的整倍数,若是,则输出“Yes.”;否则输出“N

o.”。

程序的运行效果应类似地如图1和图2所示,图1中的75和图2中的105是从键盘

输入的内容。

#include

int main(void)

{

int iNum;

printf("Please input an integer:");

scanf("%d", &iNum);

if ( (iNum%5 == 0) && (iNum%7 == 0) )

{

printf("nYes.");

}

else

{

printf("nNo.");

}

return 0;

}

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

用scanf输入某年某月某日,判断这一天是这一年的第几天?以3月5日为例,应该

先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份≥3

时需考虑多加一天。注:判断年份是否为闰年的方法——为400的倍数为闰年,如2000

年;若非100的倍数,而是4的倍数,为闰年,如1996年。编程可用素材:printf("Pl

ease input: year-month-dayn")...、printf("nIt is the ...th day.n"...。

程序的运行效果应类似地如图1所示,图1中的2000-3-1是从键盘输入的内容。

#include

int main(void)

{

int day, month, year, sum;

printf("Please input: year-month-dayn");

scanf("%d-%d-%d", &year, &month, &day);

switch (month)

{

case 1:

sum = 0;

break;

case 2:

sum = 31;

break;

case 3:

sum = 59;

break;

case 4:

sum = 90;

break;

case 5:

sum = 120;

break;

case 6:

sum = 151;

break;

case 7:

sum = 181;

break;

case 8:

sum = 212;

break;

case 9:

sum = 243;

break;

case 10:

sum = 273;

break;

case 11:

sum = 304;

break;

case 12:

sum = 334;

break;

default:

printf("data error");

break;

}

sum += day;

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

{

sum++;

}

printf("nIt is the %dth day.n", sum);

return 0;

}

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

输入实型数据a,b,然后输出a、b的值。

程序的运行效果应类似地如图1所示,图1中的5.79,6.8723是从键盘输入的内容。

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

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

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

程序的运行效果应类似地如图1所示,图1中的2.5,4.7,7是从键盘输入的内容。

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

从键盘输入一日期,年月日之间以“-”分隔,并以同样的形式但以“/”作分隔符输

出。

程序的运行效果应类似地如图1所示,图1中的2009-12-9是从键盘输入的内容。

#include

int main(void)

{

int iYear, iMonth, iDay;

printf("please input a date:");

scanf("%d-%d-%d", &iYear, &iMonth, &iDay);

printf("nthe date is:%d/%d/%d", iYear, iMonth, iDay);

return 0;

}

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

输入三角形的三边长a、b、c(边长可以是小数),求三角形面积area,并输出。如果

输入的三边构不成三角形,应给出“data error”的信息提示。注:根据“海伦-秦九韶”

公式,area=√p(p-a)(p-b)(p-c),其中p=(a+b+c)/2。编程可用素材:printf("npl

ease input triange sides:")...、printf("ndata errorn")...、printf("narea=...n"...。

程序的运行效果应类似地如图1和图2所示,图1中的3,4,5和图2中的3,4,8是从

键盘输入的内容。

#include

#include

int main(void)

{

double bianA, bianB, bianC, area, pABC;

printf("nplease input triange sides:");

scanf("%lf,%lf,%lf", &bianA, &bianB, &bianC);

if (bianA<0 || bianB<0 || bianC<0

|| (bianA+bianB <= bianC) || (bianA+bianC <= bianB) || (bianB+bianC

<= bianA))

{

printf("ndata errorn");

}

else

{

pABC = 1.0f / 2 * (bianA + bianB + bianC);

area = sqrt(pABC * (pABC - bianA) * (pABC - bianB) * (pABC - bian

C));

printf("narea=%7.2fn", area);

}

return 0;

}

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

输入两个整数,输出这两个整数的和

程序的运行效果应类似地如图1所示,图1中的3 4是从键盘输入的内容。

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

已知某产品单价是30 ,输入其数量是num,输出其总价。

程序的运行效果应类似地如图1所示,图1中的8是从键盘输入的内容。

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

输入x,y两个整数,输出其中较大的数。

程序的运行效果应类似地如图1所示,图1中的7,8是从键盘输入的内容。

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

输入两个整数,如果相等输出yes ,否则输出no。

程序的运行效果应类似地如图1所示,图1中的5 6是从键盘输入的内容。

#include

int main(void)

{

int iA, iB;

printf("please input x,y:");

scanf("%d%d", &iA, &iB);

if (iA == iB)

{

printf("yes");

}

else

{

printf("no");

}

return 0;

}

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

输出n行星号,每行5个*星号。编程可用素材:printf("please input n: ")...。

程序的运行效果应类似地如图1所示,图1中的4是从键盘输入的内容。

#include

int main(void)

{

int i, n;

scanf("%d", &n);

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

{

printf("* * * * *n");

}

return 0;

}

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

从键盘读入一个任意字符,输出该字符ASCII的十六进制值。编程可用素材:printf

("Input a character: ")...。

程序的运行效果应类似地如图1所示,图1中的b是从键盘输入的内容。

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

从键盘输入一个正方体的边长(整型),计算该正方体的体积和表面积。

程序的运行效果应类似地如图1所示,图1中的5是从键盘输入的内容。

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

从键盘输入一个正三角形的边长(整型),计算该三角形的面积和周长。注:根据“海

伦-秦九韶”公式,area=√p(p-a)(p-b)(p-c),其中p=(a+b+c)/2、a,b,c为三角形的

3条边长。

程序的运行效果应类似地如图1所示,图1中的5是从键盘输入的内容。

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

从键盘上输入一个四位整数,计算各个位上的数字之和。编程可用素材:printf("Inp

ut a number with 4-digit: ")...、printf("sum=...n"...。

程序的运行效果应类似地如图1所示,图1中的1234是从键盘输入的内容。

#include

int main(void)

{

int num, s1, s2, s3, s4, sum;

printf("Input a number with 4-digit: ");

scanf("%d", &num);

s1 = num / 1000;

s2 = num / 100 % 10;

s3 = num / 10 % 10;

s4 = num % 10;

sum = s1 + s2 + s3 + s4;

printf("sum=%dn", sum);

return 0;

}

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

从键盘输入3个整数,输出绝对值最大的数。编程可用素材:printf("Input 3 num

bers: ")...、printf("nThe number with maximum absolute value is ....n"...。

程序的运行效果应类似地如图1所示,图1中的1,-362,300是从键盘输入的内容。

#include

#include

int main(void)

{

int numA, numB, numC, max;

printf("Input 3 numbers: ");

scanf("%d,%d,%d", &numA, &numB, &numC);

max = (abs(numA) > abs(numB))? numA : numB;

if (abs(numC) > abs(max))

{

max = numC;

}

printf("nThe number with maximum absolute value is %d.n", max);

return 0;

}

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

从键盘上输入两个实数,计算这两个实数的商(只计算前面的数除以后面的数)

程序的运行效果应类似地如图1和图2所示,图1中的12 2.5和图2中的89.3 0是

从键盘输入的内容。

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

用键盘输入的整数产生5*5矩阵N,并按行输出该矩阵,每个元素占4个数位、右对

齐。

程序的运行效果应类似地如图1和图2所示,图1中的5和图2中的7是从键盘输

入的内容。

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

从键盘输入3个可带空格的字符串(约定:字符数≤127字节),输出长度最大的字符

串的长度。编程可用素材:printf("Please input the first string:t")...、printf("Plea

se input the second string:t")...、printf("Please input the third string:t")...、p

rintf("n最长的字符串长度为:...。

程序的运行效果应类似地如图1所示,图1中的hello world、my god、just so s

o是从键盘输入的内容。

#include

#include

#define SIZE 128

int main(void)

{

char str1[SIZE], str2[SIZE], str3[SIZE];

int len1, len2, len3, max;

/*从键盘接收三个字符串*/

printf("Please input the first string:t");

gets(str1);

printf("Please input the second string:t");

gets(str2);

printf("Please input the third string:t");

gets(str3);

/*求各字符串的长度*/

len1 = strlen(str1);

len2 = strlen(str2);

len3 = strlen(str3);

/*求长度最大者*/

max = len1;

if (len2 > max)

{

max = len2;

}

if (len3 > max)

{

max = len3;

}

/*输出结果*/

printf("n最长的字符串长度为: %dn", max);

return 0;

}

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

从键盘输入3个可带空格的字符串(约定:字符数≤127字节),输出最大的字符串。

编程可用素材:printf("Please input the first string:t")...、printf("Please input t

he second string:t")...、printf("Please input the third string:t")...、printf("n

最大字符串是:...。

程序的运行效果应类似地如图1所示,图1中的C program、hello、god save m

e是从键盘输入的内容。

#include

#include

#define SIZE 128

int main(void)

{

char str1[SIZE], str2[SIZE], str3[SIZE], maxstr[SIZE];

/*从键盘接收三个字符串*/

printf("Please input the first string:t");

gets(str1);

printf("Please input the second string:t");

gets(str2);

printf("Please input the third string:t");

gets(str3);

/*求最大字符串*/

strcpy(maxstr, str1);

if (strcmp(str2, maxstr) > 0)

{

strcpy(maxstr, str2);

}

if (strcmp(str3, maxstr) > 0)

{

strcpy(maxstr, str3);

}

/*输出结果*/

printf("n最大字符串是: %sn", maxstr);

return 0;

}

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

设某企业2006年的产值为5000万,计划以后每年的增长率为x(x从键盘输入,例

如输入8.75表示8.75%),计算该企业的产值在哪年实现翻番以及翻番时的产值,然后输

出(输出时以万为单位,应考虑有小数)。编程可用素材:printf("Please input x: ")...、p

rintf("nyear = ... nian, chanzhi = ...n"...。

程序的运行效果应类似地如图1所示,图1中的50.6是从键盘输入的内容。

#include

int main(void)

{

int year = 2006;

float x, yCz=5000, xCz;

printf("Please input x: ");

scanf("%f", &x);

xCz = yCz;

while (xCz < 2*yCz)

{

year++;

xCz = xCz * (1 + x / 100);

}

printf("nyear = %d nian, chanzhi = %.2fn", year, xCz);

return 0;

}

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

制作一简单的计算器,注意事项:

(1)需要计算的内容从命令行输入,格式为:P115 数1 op 数2,当命令行格式不正

确(参数个数不为4)时,应报错。

(2)op的取值范围为+、-、*、/、%,超出此范围则应报错。

(3)数1和数2均为整数(int),op为+、-、*时不考虑运算结果超出int型能表示的

范围, op为/、%时不考虑除数为0的情况,但op为/时计算结果应保留2位小数。

(4)程序的返回值(即由main函数return的值和程序使用exit终止运行时返回的值,

也称退出代码)规定为:

①正常运行结束时,返回0 ②命令行格式不对返回1 ③op超出范围时返回

2

(5)编程可用素材:printf("nusage:P115 num1 op num2n")...、printf("nop

(...) Error!n"...。

程序的运行效果应类似地如图1所示,图1中的E:Debug>表示程序所

在的文件夹,考生的程序位置可不必如此,图1中的P115 1001 + 5007、P115 1001 - 5

007、P115 25 * 30、P115 25 / 30、P115 25 % 9、P115 25 x 22、P115 100 +和

P115 100 + 330 =是从命令行输入的内容(注:图中的Pxxxxx表示随考生题号变换的内

容,在本套试卷中,请考生在阅读时将图中的Pxxxxx视作P115)。

#include

#include

int main(int argc, char *argv[])

{

int num1, num2;

double result;

if (argc != 4)

{

printf("nusage:P1-115 num1 op num2n");

exit(1);

}

num1 = atoi(argv[1]);

num2 = atoi(argv[3]);

switch (argv[2][0])

{

case '+' :

result = num1 + num2;

break;

case '-' :

result = num1 - num2;

break;

case '*' :

result = num1 * num2;

break;

case '/' :

result = num1 * 1.0 / num2;

break;

case '%' :

result = num1 % num2;

break;

default :

printf("nop(%c) Error!n", argv[2][0]);

exit(2);

}

if ('/' == argv[2][0])

{

printf("n%s / %s = %.2fn", argv[1], argv[3], result);

}

else

{

printf("n%s %c %s = %.0fn", argv[1], argv[2][0], argv[3], result);

}

return 0;

}

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

从键盘读入一个字符串(约定:字符数≤127字节),检查该字符串是否是回文。所谓回

文即正向与反向的拼写都一样,例如:adgda。编程可用素材:printf("Please input st

ring:")...、printf("n... shi hui wen."...、printf("n... bu shi hui wen."...。

程序的运行效果应类似地如图1和图2所示,图1中的asdfghjhgfdsa和图2中的

asdfghjhgfdsaa是从键盘输入的内容。

#include

int main(void)

{

int i, j, n;

/* 提示用户输入n并读入 */

printf("Please input n:");

scanf("%d", &n);

/* 在屏幕上显示出题目要求的图形,先显示上三角 */

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

{

printf("%*c", n-i+2, '#'); //每1行先显示前n-i+1个空格和1个#

for (j=0; j<2*i-2; j++) //再显示该行剩余的2*i-2个#

{

putchar('#');

}

putchar('n');

}

/* 显示下三角,从第n到第1行,一行一行逐行显示*/

for (i=n; i>=1; i--)

{

printf("%*c", n-i+2, '#');

for (j=0; j<2*i-2; j++)

{

putchar('#');

}

putchar('n');

}

return 0;

}

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

猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一

个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩

下的一半零一个。到第n(n从键盘输入)天早上想再吃时,就只剩下一个桃子了。求第一天

共摘了多少个桃子(不考虑猴子是否真的能吃多少桃子)。编程可用素材:printf("Please i

nput n:")...、printf("ntotal=...n"...。

程序的运行效果应类似地如图1所示,图1中的13是从键盘输入的内容。

#include

int main(void)

{

int i, total=1, n;

printf("nPlease input n:");

scanf("%d", &n);

for (i=2; i<=n; i++)

{

total = (total + 1) * 2;

}

printf("total=%dn", total);

return 0;

}

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

用scanf输入10个整数(采用int数据类型),计算所有正数的和、负数的和以及1

0个数的和。编程可用素材:printf("Input 10 integers.n")...、printf("nzhengshu

=...,fushu=...,all=...n"...。

程序的运行效果应类似地如图1所示,图1中的4 6 20 -45 35 56 -23 -4 9 70是从

键盘输入的内容。

#include

int main(void)

{

int i;

int sumZ=0, sumF=0, sum=0, num;

printf("Input 10 integers.n");

for (i=1; i<=10; i++)

{

scanf("%d", &num);

if (num < 0)

{

sumF += num;

}

if (num > 0)

{

sumZ += num;

}

sum += num;

}

printf("nzhengshu=%d,fushu=%d,all=%dn", sumZ, sumF, sum);

return 0;

}

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

有一递推数列,满足f(0)=0,f(1)=1,f(2)=2, f(n+1)=2f(n)+f(n-1)f(n-2) (n>=

2), 编写程序求f(n)的值(n由键盘输入,13>=n>=2)。编程可用素材:printf("Input n (1

3>=n>=2): ")...、printf("nf(...)=...n"...。

程序的运行效果应类似地如图1所示,图1中的10是从键盘输入的内容。

#include

int main(void)

{

int k, n;

double fn[21] = {0, 1, 2};

printf("Input n (13>=n>=2):");

scanf("%d", &n);

for (k=2; k

{

fn[k+1] = 2 * fn[k] + fn[k-1] * fn[k-2];

}

printf("nf(%d)=%.0fn", n, fn[n]);

return 0;

}

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

输入3行3列的矩阵,输出所有元素的累加和。编程可用素材:printf("Please inp

ut the 3x3 Matrix:n"...、printf("nsum=...n"...。

程序的运行效果应类似地如图1所示,图1中的

9 20 13

16 51 79

32 8 6

是从键盘输入的内容。

#include

int main(void)

{

int num[3][3], i, j, sum=0;

printf("Please input the 3x3 Matrix:n");

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

{

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

{

scanf("%d", &num[i][j]);

sum += num[i][j];

}

}

printf("nsum=%dn", sum);

return 0;

}

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

从键盘输入一行可带空格的字符串(约定:字符数≤127字节),按逆序输出该字符串。

注意,程序中不能使用库函数strrev或使用同名的变量、函数、单词。编程可用素材:p

rintf("Input a string: ")...、printf("nThe result is: ")...。

程序的运行效果应类似地如图1所示,图1中的abc xyz是从键盘输入的内容。

#include

#include

int main(void)

{

int i;

char str[128];

printf("Input a string: ");

gets(str);

printf("The result is: ");

for (i=strlen(str)-1; i>=0; i--)

{

printf("%c", str[i]);

}

printf("n");

return 0;

}

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

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

到输入的数据在0~100范围内。将输入的数据转换成等级‘A’,‘B’,‘C’,‘D’,‘E’。

90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以

下为‘E’,要求使用switch、case、default语句,结果赋值给变量grade,并将变量g

rade的值输出到屏幕上。

注意:变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费

内存空间和计算时间的好习惯。编程可用素材:printf("please input the score(0-10

0): ")...、printf("score=...,grade=...n",...。

程序的运行效果应类似地如图1所示,图1中的103和55是从键盘输入的内容。

#include

int main(void)

{

float score;

int temp;

char grade;

do

{

printf("nnplease input the score(0-100):");

scanf("%f", &score);

} while (score>100 || score<0);

temp = (int)score / 10;

switch (temp)

{

case 10:

case 9:

grade = 'A';

break;

case 8:

grade = 'B';

break;

case 7:

grade = 'C';

break;

case 6:

grade = 'D';

break;

default:

grade = 'E';

}

printf("score=%.1f,grade=%cn", score, grade);

return 0;

}

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

输入字符串s(约定:字符数≤100字节),将字符串s中所有字符‘*’删除,并将修

改后的字符串显示出来。编程可用素材:printf("Please input a string: ")...。

程序的运行效果应类似地如图1所示,图1中的*dgjk* %&* *df78dg 88**是从键

盘输入的内容。

#include

int main(void)

{

char str[101];

int i, j;

printf("Please input a string: ");

gets(str);

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

{

if (str[i] != '*')

{

str[j] = str[i];

j++;

}

}

str[j] = '0';

puts(str);

return 0;

}

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

键盘输入m,n(约定:m和n均≤1000且为正整数),输出介于m和n(含m和n)

中能被3整除且至少有位数字是5的所有整数。编程可用素材:printf("Input m, n:")...。

程序的运行效果应类似地如图1和图2所示,图1中的100,200和图2中的195,1

5是从键盘输入的内容。

#include

int main(void)

{

int i, m, n, tmp;

printf("Input m, n: ");

scanf("%d,%d", &m, &n);

if (m > n)

{

tmp = m;

m = n;

n = tmp;

}

for (i=m; i<=n; i++)

{

if (i % 3 == 0 && (i / 100 ==

{

printf("%d ", i);

}

}

|| i / 10 % 10 == || i % 10 == 5 5

5))

return 0;

}

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

计算X的Y次方,其中Y为整数(可以是负整数或0),X为实型。注意,程序中不

能使用库函数pow或使用同名的变量、函数、单词。编程可用素材:printf("Inpu

t x, y: ")...。

程序的运行效果应类似地如图1和图2所示,图1中的3.7,5和图2中的4,-2是从

键盘输入的内容。

#include

#include

int main(void)

{

int i, y, y1;

double x, xPowY=1.0;

printf("Input x, y: ");

scanf("%lf,%d", &x, &y);

y1 = abs(y);

for (i=1; i<=y1; i++)

{

xPowY = xPowY * x;

}

if (y < 0)

{

xPowY = 1 / xPowY;

}

printf("%f^%d=%fn", x, y, xPowY);

return 0;

}

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

求1+2+3+……+n≤m时的最大n值及和sum(=1+2+3+……+n),其中m从键

盘输入。编程可用素材:printf("please input m:")...、printf("nn=..., sum=...。

程序的运行效果应类似地如图1所示,图1中的10000是从键盘输入的内容。

#include

int main(void)

{

int in, im, sum = 0;

/*从键盘接收m的值存入im变量*/

printf("please input m:");

scanf("%d", &im);

in = 0;

while (sum <= im)

{

in++;

sum += in;

}

sum -= in;

in--;

printf("nn=%d, sum=%dn", in , sum);

return 0;

}

编写一程序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/...!=...。

程序的运行效果应类似地如图1所示,图1中的18是从键盘输入的内容。

#include

int main(void)

{

int n, i; //n存储从键盘读入的N值

double sum=0, fac=1; //sum存储累加,fac存储阶乘值

/* 从键盘上读入N的值 */

printf("Please input n:"); //输出请输入的屏幕提示

scanf("%d", &n); //从键盘上读入自然数N的值

/* 按计算公式完成S的计算 */

for (i=1; i<=n; i++) //从第1项开始一项一项地累加到第N项

{

fac = fac * i; //计算第i项的分母(i!),i!=(i-1)!*i

sum = sum + 1/fac; //累加第i项到sum中

}

/* 按题目要求的格式输出N和S的值 */

printf("S=1/1!+1/2!+...+1/%d!=%.16fn", n, sum);

return 0;

}

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

一个球从10000m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。

求它在第n(n从键盘输入)次落地时,共经过多少米?第n次反弹多高?编程可用素材:p

rintf("Please input n:")...、printf("sn=...,hn=...n"...。

程序的运行效果应类似地如图1所示,图1中的10是从键盘输入的内容。

#include

int main(void)

{

int i, n;

double sn, hn;

printf("Please input n:");

scanf("%d", &n);

sn = 0;

hn = 10000;

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

{

sn = sn + hn;

hn = hn / 2;

sn = sn + hn;

}

I0n

printf("sn=%f,hn=%fn", sn, hn);

return 0;

}

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

求s=a+aa+aaa+a的值,其中a是一个数字(可取1~9之间的一个值)。

例如2+22+222+2222+22222(此时共有5个数相加),其中a值和有几个数相加由键

盘输入控制。注意s的值有可能超出int的范围,编程可用素材:printf("Please input a,

n: ")...、printf("a+aa+...=...n"...。

程序的运行效果应类似地如图1所示,图1中的2,3是从键盘输入的内容。

#include

int main(void)

{

int n, count=1;

double valA, sn=0, tn=0;

printf("Please input a,n: ");

scanf("%lf,%d", &valA, &n);

while (count <= n)

{

tn = tn + valA;

sn = sn + tn;

valA = valA * 10;

count++;

}

printf("a+aa+...=%.0fn", sn);

return 0;

}

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

输入两个正整数m和n,求其最大公约数和最小公倍数。注:最大公约数也称最大公

因子,指某几个整数共有因子中最大的一个;两个整数公有的倍数称为它们的公倍数,其

中最小的一个正整数称为它们两个的最小公倍数。编程可用素材:printf("please input t

wo integer numbers: ")...、printf("nthe greatest common divisor is ...n"...、p

rintf("the least common multiple is ...n"...。

程序的运行效果应类似地如图1所示,图1中的35 15是从键盘输入的内容。

#include

#include

int main(void)

{

int m, n, zdGys, zxGbs;

printf("please input two integer numbers: ");

scanf("%d%d", &m, &n);

zdGys = min(m, n);

while (m % zdGys != 0 || n%zdGys != 0)

{

zdGys--;

}

zxGbs = max(m, n);

while (zxGbs % m !=0 || zxGbs % n != 0)

{

zxGbs++;

}

printf("nthe greatest common divisor is %dn", zdGys);

printf("the least common multiple is %dn", zxGbs);

return 0;

}

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

某班有40位同学参加考试,成绩(整数)从键盘输入,求全班最高分、最低分以及

平均分,并统计该班同学的考试及格率。编程可用素材:printf("n请输入40位同学的

成绩:")...、printf("n最高分:...最低分:...平均分:...及格率:...。

程序的运行效果应类似地如图1所示,图1中的99 81 71 81 77 94 100 67 66 44 7

5 49 47 45 65 74 73 74 63 69 72 77 65 79 84 73 46 62 68 42 75 62 65 66 62 6

9 44 62 84 77是从键盘输入的内容。

#include

#define SIZE 40

int main(void)

{

int scores[SIZE], i;

int max, min, count;

double aver, rate;

/*从键盘接收数据*/

printf("n请输入%d位同学的成绩:", SIZE);

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

{

scanf("%d", &scores[i]);

}

/*求最大、最小、分数总和,统计及格人数*/

max = scores[0];

min = scores[0];

aver = 0;

count = 0;

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

{

if (scores[i] > max)

{

max = scores[i];

}

else if (scores[i] < min)

{

min = scores[i];

}

aver += scores[i];

if (scores[i] >= 60)

{

count++;

}

}

/*求平均分和及格率*/

aver = aver / 40;

rate = (double)count / 40;

/*输出结果*/

printf("n最高分: %dn最低分: %dn平均分: %.1fn及格率: %.0f%%

n", max, min, aver, rate*100);

return 0;

}

2024年3月9日发(作者:姒友瑶)

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

x(x只考虑整数int且必须定义为int、但F(x)完全可能超过int的表示范围)通过键

盘输入(输入前给出提示Please input x:),然后计算并在屏幕上输出函数值。编程可用素

材:printf("Please input x: ")...、printf("nF(...) = ..."...。

┌ -5x+27 (x<0)

F(x)= ├ 7909 (x=0)

└ 2x-1 (x>0)

程序的运行效果应类似地如图1所示,图1中的3是从键盘输入的内容。

#include

int main(void)

{

int x; //x存储自变量x的值

double Fx; //Fx存储函数值F(x)

/* 从键盘上读入x的值 */

printf("Please input x:"); //在屏幕上显示提示输入x的信息,告诉用户需要做

的事

scanf("%d", &x); //从键盘读入x的值

/* 根据题目里给出的计算公式计算F(x) */

if (x < 0) //如果x<0

{

Fx = -5.0 * x + 27; //x<0时的F(x)计算公式

}

else if (0 == x) //否则,若x等于0

{

Fx = 7909; //x=0时的F(x)计算公式

}

else

{

Fx = 2.0 * x - 1; //x>0时的F(x)计算公式

}

/* 将计算结果按题目的要求输出 */

printf("nF(%d) = %.0f", x, Fx);

return 0;

}

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

已知某银行整存整取存款不同期限的年息利率分别为:3.15%期限一年,3.63%期限

二年, 4.02%期限三年,4.69%期限五年,5.36%期限八年。从键盘上输入存钱的本金(以

元为单位,必须定义为int且应考虑金额很大的情况)和存款期限(只考虑1,2,3,5,8),求到

期时能从银行得到的利息(以元为单位,应考虑有小数,不计复利)。编程可用素材:print

f("nPlease input benjin,cunqi:")...、printf("nlixi = ... yuan"...。

程序的运行效果应类似地如图1所示,图1中的10000,8是从键盘输入的内容。

#include

int main(void)

{

int benjin, cunqi;

double lixi, lilv;

printf("nPlease input benjin,cunqi:");

scanf("%d,%d", &benjin, &cunqi);

if (1 == cunqi)

{

lilv = 3.15 / 100.0;

}

else if (2 == cunqi)

{

lilv = 3.63 / 100.0;

}

else if (3 == cunqi)

{

lilv = 4.02 / 100.0;

}

else if (5 == cunqi)

{

lilv = 4.69 / 100.0;

}

else if (8 == cunqi)

{

lilv = 5.36 / 100.0;

}

lixi = benjin * lilv * cunqi;

printf("nlixi = %.2f yuann", lixi);

return 0;

}

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

编写一个简单计算器程序,输入格式为:data1 op data2。其中data1和data2是

参加运算的两个数(data1、data2必须定义为int,但二者相加可能超出int能表示的范

围),op为运算符,它的取值只能是+、-、*、/、%。编程可用素材:printf("Please in

put data1 op data2: ")...、printf("nError! chu shu wei 0.n")...。

程序的运行效果应类似地如图1、图2、图3、图4所示,图1中的3000 + 2000、

图2中的3000 % 2000、图3中的3000 % 0和图4中的3000 / 0是从键盘输入的内

容。

#include

#include

int main(void)

{

int data1, data2;

double result;

char op;

printf("Please input data1 op data2: ");

scanf("%d %c %d", &data1, &op, &data2);

switch (op)

{

case '+':

result = (double)data1 + data2;

break;

case '-':

result = (double)data1 - data2;

break;

case '*':

result = (double)data1 * data2;

break;

case '%':

if (0 == data2)

{

printf("nError! chu shu wei 0.n");

exit(1);

}

else

{

result = data1 % data2;

}

break;

case '/':

if (0 == data2)

{

printf("nError! chu shu wei 0.n");

exit(1);

}

else

{

printf("n%d%c%d=%.2f", data1, op, data2, (double)data1 / data2);

return 0;

}

}

printf("n%d%c%d=%fn", data1, op, data2, result);

return 0;

}

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

输入月份,打印2003年该月有几天。当输入的月份超范围时,应显示“Invalid mo

nth input”。编程可用素材:printf("please input the month number: ")...、printf

("nInvalid month input !n")...、printf(" has ... daysn"...。

程序的运行效果应类似地如图1和图2所示,图1中的4和图2中的13是从键盘输

入的内容。

#include

int main(void)

{

int month, day;

printf("please input the month number: ");

scanf("%d", &month);

switch (month)

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12:

day = 31;

break;

case 4:

case 6:

case 9:

case 11:

day = 30;

break;

case 2:

day = 28;

break;

default :

day = -1;

}

if (-1 == day)

{

printf("nInvalid month input !n");

}

else

{

printf("n 2003.%d has %d daysn", month, day);

}

return 0;

}

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

已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成

的关系如下(计量单位:元):

profit≤1000 没有提成;

1000<profit≤2000 提成10%;

2000<profit≤5000 提成15%;

5000<profit≤10000 提成20%;

10000<profit 提成25%。

请根据输入的利润计算员工的薪水。编程可用素材:printf("Input profit: ")...、pr

intf("nsalary=...n"...。

程序的运行效果应类似地如图1所示,图1中的2000是从键盘输入的内容。

#include

int main(void)

{

int profit, grade;

double salary = 500;

printf("Input profit: ");

scanf("%d", &profit);

grade = (profit - 1) / 1000;

switch (grade)

{

case 0:

break;

case 1:

salary += profit * 0.1;

break;

case 2:

case 3:

case 4:

salary += profit * 0.15;

break;

case 5:

case 6:

case 7:

case 8:

case 9:

salary += profit * 0.2;

break;

default:

salary += profit * 0.25;

}

printf("nsalary=%.2fn", salary);

return 0;

}

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

输入一个三位正整数,然后逆序输出。如输入123,则输出321。编程可用素材:pr

intf("Input an integer: ")...、printf("nThe result is ...。

程序的运行效果应类似地如图1所示,图1中的750是从键盘输入的内容。

#include

int main(void)

{

int num, bai, shi, ge;

printf("Input an integer: ");

scanf("%d", &num);

bai = num / 100;

shi = num % 100 / 10;

ge = num % 10;

printf("nThe result is %d%d%dn", ge, shi, bai);

return 0;

}

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

输入一个华氏温度,要求输出摄氏温度,计算公式为c=5(F-32)/9。编程可用素材:

printf("Input the degree:")...、printf("nF(...)=C(...)...。

程序的运行效果应类似地如图1所示,图1中的120是从键盘输入的内容。

#include

int main(void)

{

float fC, fF=1.0; //fC存放摄氏温度的值,fF存放华氏温度的值

/* 从键盘上读入华氏温度到变量fF中 */

printf("Input the degree:"); //在屏幕上显示提示输入华氏温度的信息,告诉用

户需要做的事

scanf("%f", &fF); //从键盘读入华氏温度,存储到变量fF中

/* 按题目里给出的转换公式计算摄氏温度 */

fC = 5.0f / 9 * (fF - 32);

/* 将计算结果按题目的要求输出 */

printf("nF(%.2f)=C(%.2f)", fF, fC);

return 0;

}

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

输入一个小写英文字母,首先输出它及其ASCII码,然后输出其对应的大写字母及其

ASCII码。编程可用素材:printf("Input a lowercase letter: ")...、printf("n...(...)...。

程序的运行效果应类似地如图1所示,图1中的y是从键盘输入的内容。

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

用scanf输入圆半径r,圆柱高h,求圆周长C1(=2πr)、圆面积S(=πr

2

)、圆柱体

积V(=πr

2

h)。(注意:本题中规定圆周率取值为3.14)

程序的运行效果应类似地如图1所示,图1中的r=1.3,h=5是从键盘输入的内容。

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

判断输入的正整数是否既是5又是7的整倍数,若是,则输出“Yes.”;否则输出“N

o.”。

程序的运行效果应类似地如图1和图2所示,图1中的75和图2中的105是从键盘

输入的内容。

#include

int main(void)

{

int iNum;

printf("Please input an integer:");

scanf("%d", &iNum);

if ( (iNum%5 == 0) && (iNum%7 == 0) )

{

printf("nYes.");

}

else

{

printf("nNo.");

}

return 0;

}

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

用scanf输入某年某月某日,判断这一天是这一年的第几天?以3月5日为例,应该

先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份≥3

时需考虑多加一天。注:判断年份是否为闰年的方法——为400的倍数为闰年,如2000

年;若非100的倍数,而是4的倍数,为闰年,如1996年。编程可用素材:printf("Pl

ease input: year-month-dayn")...、printf("nIt is the ...th day.n"...。

程序的运行效果应类似地如图1所示,图1中的2000-3-1是从键盘输入的内容。

#include

int main(void)

{

int day, month, year, sum;

printf("Please input: year-month-dayn");

scanf("%d-%d-%d", &year, &month, &day);

switch (month)

{

case 1:

sum = 0;

break;

case 2:

sum = 31;

break;

case 3:

sum = 59;

break;

case 4:

sum = 90;

break;

case 5:

sum = 120;

break;

case 6:

sum = 151;

break;

case 7:

sum = 181;

break;

case 8:

sum = 212;

break;

case 9:

sum = 243;

break;

case 10:

sum = 273;

break;

case 11:

sum = 304;

break;

case 12:

sum = 334;

break;

default:

printf("data error");

break;

}

sum += day;

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

{

sum++;

}

printf("nIt is the %dth day.n", sum);

return 0;

}

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

输入实型数据a,b,然后输出a、b的值。

程序的运行效果应类似地如图1所示,图1中的5.79,6.8723是从键盘输入的内容。

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

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

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

程序的运行效果应类似地如图1所示,图1中的2.5,4.7,7是从键盘输入的内容。

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

从键盘输入一日期,年月日之间以“-”分隔,并以同样的形式但以“/”作分隔符输

出。

程序的运行效果应类似地如图1所示,图1中的2009-12-9是从键盘输入的内容。

#include

int main(void)

{

int iYear, iMonth, iDay;

printf("please input a date:");

scanf("%d-%d-%d", &iYear, &iMonth, &iDay);

printf("nthe date is:%d/%d/%d", iYear, iMonth, iDay);

return 0;

}

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

输入三角形的三边长a、b、c(边长可以是小数),求三角形面积area,并输出。如果

输入的三边构不成三角形,应给出“data error”的信息提示。注:根据“海伦-秦九韶”

公式,area=√p(p-a)(p-b)(p-c),其中p=(a+b+c)/2。编程可用素材:printf("npl

ease input triange sides:")...、printf("ndata errorn")...、printf("narea=...n"...。

程序的运行效果应类似地如图1和图2所示,图1中的3,4,5和图2中的3,4,8是从

键盘输入的内容。

#include

#include

int main(void)

{

double bianA, bianB, bianC, area, pABC;

printf("nplease input triange sides:");

scanf("%lf,%lf,%lf", &bianA, &bianB, &bianC);

if (bianA<0 || bianB<0 || bianC<0

|| (bianA+bianB <= bianC) || (bianA+bianC <= bianB) || (bianB+bianC

<= bianA))

{

printf("ndata errorn");

}

else

{

pABC = 1.0f / 2 * (bianA + bianB + bianC);

area = sqrt(pABC * (pABC - bianA) * (pABC - bianB) * (pABC - bian

C));

printf("narea=%7.2fn", area);

}

return 0;

}

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

输入两个整数,输出这两个整数的和

程序的运行效果应类似地如图1所示,图1中的3 4是从键盘输入的内容。

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

已知某产品单价是30 ,输入其数量是num,输出其总价。

程序的运行效果应类似地如图1所示,图1中的8是从键盘输入的内容。

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

输入x,y两个整数,输出其中较大的数。

程序的运行效果应类似地如图1所示,图1中的7,8是从键盘输入的内容。

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

输入两个整数,如果相等输出yes ,否则输出no。

程序的运行效果应类似地如图1所示,图1中的5 6是从键盘输入的内容。

#include

int main(void)

{

int iA, iB;

printf("please input x,y:");

scanf("%d%d", &iA, &iB);

if (iA == iB)

{

printf("yes");

}

else

{

printf("no");

}

return 0;

}

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

输出n行星号,每行5个*星号。编程可用素材:printf("please input n: ")...。

程序的运行效果应类似地如图1所示,图1中的4是从键盘输入的内容。

#include

int main(void)

{

int i, n;

scanf("%d", &n);

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

{

printf("* * * * *n");

}

return 0;

}

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

从键盘读入一个任意字符,输出该字符ASCII的十六进制值。编程可用素材:printf

("Input a character: ")...。

程序的运行效果应类似地如图1所示,图1中的b是从键盘输入的内容。

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

从键盘输入一个正方体的边长(整型),计算该正方体的体积和表面积。

程序的运行效果应类似地如图1所示,图1中的5是从键盘输入的内容。

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

从键盘输入一个正三角形的边长(整型),计算该三角形的面积和周长。注:根据“海

伦-秦九韶”公式,area=√p(p-a)(p-b)(p-c),其中p=(a+b+c)/2、a,b,c为三角形的

3条边长。

程序的运行效果应类似地如图1所示,图1中的5是从键盘输入的内容。

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

从键盘上输入一个四位整数,计算各个位上的数字之和。编程可用素材:printf("Inp

ut a number with 4-digit: ")...、printf("sum=...n"...。

程序的运行效果应类似地如图1所示,图1中的1234是从键盘输入的内容。

#include

int main(void)

{

int num, s1, s2, s3, s4, sum;

printf("Input a number with 4-digit: ");

scanf("%d", &num);

s1 = num / 1000;

s2 = num / 100 % 10;

s3 = num / 10 % 10;

s4 = num % 10;

sum = s1 + s2 + s3 + s4;

printf("sum=%dn", sum);

return 0;

}

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

从键盘输入3个整数,输出绝对值最大的数。编程可用素材:printf("Input 3 num

bers: ")...、printf("nThe number with maximum absolute value is ....n"...。

程序的运行效果应类似地如图1所示,图1中的1,-362,300是从键盘输入的内容。

#include

#include

int main(void)

{

int numA, numB, numC, max;

printf("Input 3 numbers: ");

scanf("%d,%d,%d", &numA, &numB, &numC);

max = (abs(numA) > abs(numB))? numA : numB;

if (abs(numC) > abs(max))

{

max = numC;

}

printf("nThe number with maximum absolute value is %d.n", max);

return 0;

}

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

从键盘上输入两个实数,计算这两个实数的商(只计算前面的数除以后面的数)

程序的运行效果应类似地如图1和图2所示,图1中的12 2.5和图2中的89.3 0是

从键盘输入的内容。

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

用键盘输入的整数产生5*5矩阵N,并按行输出该矩阵,每个元素占4个数位、右对

齐。

程序的运行效果应类似地如图1和图2所示,图1中的5和图2中的7是从键盘输

入的内容。

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

从键盘输入3个可带空格的字符串(约定:字符数≤127字节),输出长度最大的字符

串的长度。编程可用素材:printf("Please input the first string:t")...、printf("Plea

se input the second string:t")...、printf("Please input the third string:t")...、p

rintf("n最长的字符串长度为:...。

程序的运行效果应类似地如图1所示,图1中的hello world、my god、just so s

o是从键盘输入的内容。

#include

#include

#define SIZE 128

int main(void)

{

char str1[SIZE], str2[SIZE], str3[SIZE];

int len1, len2, len3, max;

/*从键盘接收三个字符串*/

printf("Please input the first string:t");

gets(str1);

printf("Please input the second string:t");

gets(str2);

printf("Please input the third string:t");

gets(str3);

/*求各字符串的长度*/

len1 = strlen(str1);

len2 = strlen(str2);

len3 = strlen(str3);

/*求长度最大者*/

max = len1;

if (len2 > max)

{

max = len2;

}

if (len3 > max)

{

max = len3;

}

/*输出结果*/

printf("n最长的字符串长度为: %dn", max);

return 0;

}

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

从键盘输入3个可带空格的字符串(约定:字符数≤127字节),输出最大的字符串。

编程可用素材:printf("Please input the first string:t")...、printf("Please input t

he second string:t")...、printf("Please input the third string:t")...、printf("n

最大字符串是:...。

程序的运行效果应类似地如图1所示,图1中的C program、hello、god save m

e是从键盘输入的内容。

#include

#include

#define SIZE 128

int main(void)

{

char str1[SIZE], str2[SIZE], str3[SIZE], maxstr[SIZE];

/*从键盘接收三个字符串*/

printf("Please input the first string:t");

gets(str1);

printf("Please input the second string:t");

gets(str2);

printf("Please input the third string:t");

gets(str3);

/*求最大字符串*/

strcpy(maxstr, str1);

if (strcmp(str2, maxstr) > 0)

{

strcpy(maxstr, str2);

}

if (strcmp(str3, maxstr) > 0)

{

strcpy(maxstr, str3);

}

/*输出结果*/

printf("n最大字符串是: %sn", maxstr);

return 0;

}

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

设某企业2006年的产值为5000万,计划以后每年的增长率为x(x从键盘输入,例

如输入8.75表示8.75%),计算该企业的产值在哪年实现翻番以及翻番时的产值,然后输

出(输出时以万为单位,应考虑有小数)。编程可用素材:printf("Please input x: ")...、p

rintf("nyear = ... nian, chanzhi = ...n"...。

程序的运行效果应类似地如图1所示,图1中的50.6是从键盘输入的内容。

#include

int main(void)

{

int year = 2006;

float x, yCz=5000, xCz;

printf("Please input x: ");

scanf("%f", &x);

xCz = yCz;

while (xCz < 2*yCz)

{

year++;

xCz = xCz * (1 + x / 100);

}

printf("nyear = %d nian, chanzhi = %.2fn", year, xCz);

return 0;

}

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

制作一简单的计算器,注意事项:

(1)需要计算的内容从命令行输入,格式为:P115 数1 op 数2,当命令行格式不正

确(参数个数不为4)时,应报错。

(2)op的取值范围为+、-、*、/、%,超出此范围则应报错。

(3)数1和数2均为整数(int),op为+、-、*时不考虑运算结果超出int型能表示的

范围, op为/、%时不考虑除数为0的情况,但op为/时计算结果应保留2位小数。

(4)程序的返回值(即由main函数return的值和程序使用exit终止运行时返回的值,

也称退出代码)规定为:

①正常运行结束时,返回0 ②命令行格式不对返回1 ③op超出范围时返回

2

(5)编程可用素材:printf("nusage:P115 num1 op num2n")...、printf("nop

(...) Error!n"...。

程序的运行效果应类似地如图1所示,图1中的E:Debug>表示程序所

在的文件夹,考生的程序位置可不必如此,图1中的P115 1001 + 5007、P115 1001 - 5

007、P115 25 * 30、P115 25 / 30、P115 25 % 9、P115 25 x 22、P115 100 +和

P115 100 + 330 =是从命令行输入的内容(注:图中的Pxxxxx表示随考生题号变换的内

容,在本套试卷中,请考生在阅读时将图中的Pxxxxx视作P115)。

#include

#include

int main(int argc, char *argv[])

{

int num1, num2;

double result;

if (argc != 4)

{

printf("nusage:P1-115 num1 op num2n");

exit(1);

}

num1 = atoi(argv[1]);

num2 = atoi(argv[3]);

switch (argv[2][0])

{

case '+' :

result = num1 + num2;

break;

case '-' :

result = num1 - num2;

break;

case '*' :

result = num1 * num2;

break;

case '/' :

result = num1 * 1.0 / num2;

break;

case '%' :

result = num1 % num2;

break;

default :

printf("nop(%c) Error!n", argv[2][0]);

exit(2);

}

if ('/' == argv[2][0])

{

printf("n%s / %s = %.2fn", argv[1], argv[3], result);

}

else

{

printf("n%s %c %s = %.0fn", argv[1], argv[2][0], argv[3], result);

}

return 0;

}

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

从键盘读入一个字符串(约定:字符数≤127字节),检查该字符串是否是回文。所谓回

文即正向与反向的拼写都一样,例如:adgda。编程可用素材:printf("Please input st

ring:")...、printf("n... shi hui wen."...、printf("n... bu shi hui wen."...。

程序的运行效果应类似地如图1和图2所示,图1中的asdfghjhgfdsa和图2中的

asdfghjhgfdsaa是从键盘输入的内容。

#include

int main(void)

{

int i, j, n;

/* 提示用户输入n并读入 */

printf("Please input n:");

scanf("%d", &n);

/* 在屏幕上显示出题目要求的图形,先显示上三角 */

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

{

printf("%*c", n-i+2, '#'); //每1行先显示前n-i+1个空格和1个#

for (j=0; j<2*i-2; j++) //再显示该行剩余的2*i-2个#

{

putchar('#');

}

putchar('n');

}

/* 显示下三角,从第n到第1行,一行一行逐行显示*/

for (i=n; i>=1; i--)

{

printf("%*c", n-i+2, '#');

for (j=0; j<2*i-2; j++)

{

putchar('#');

}

putchar('n');

}

return 0;

}

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

猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一

个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩

下的一半零一个。到第n(n从键盘输入)天早上想再吃时,就只剩下一个桃子了。求第一天

共摘了多少个桃子(不考虑猴子是否真的能吃多少桃子)。编程可用素材:printf("Please i

nput n:")...、printf("ntotal=...n"...。

程序的运行效果应类似地如图1所示,图1中的13是从键盘输入的内容。

#include

int main(void)

{

int i, total=1, n;

printf("nPlease input n:");

scanf("%d", &n);

for (i=2; i<=n; i++)

{

total = (total + 1) * 2;

}

printf("total=%dn", total);

return 0;

}

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

用scanf输入10个整数(采用int数据类型),计算所有正数的和、负数的和以及1

0个数的和。编程可用素材:printf("Input 10 integers.n")...、printf("nzhengshu

=...,fushu=...,all=...n"...。

程序的运行效果应类似地如图1所示,图1中的4 6 20 -45 35 56 -23 -4 9 70是从

键盘输入的内容。

#include

int main(void)

{

int i;

int sumZ=0, sumF=0, sum=0, num;

printf("Input 10 integers.n");

for (i=1; i<=10; i++)

{

scanf("%d", &num);

if (num < 0)

{

sumF += num;

}

if (num > 0)

{

sumZ += num;

}

sum += num;

}

printf("nzhengshu=%d,fushu=%d,all=%dn", sumZ, sumF, sum);

return 0;

}

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

有一递推数列,满足f(0)=0,f(1)=1,f(2)=2, f(n+1)=2f(n)+f(n-1)f(n-2) (n>=

2), 编写程序求f(n)的值(n由键盘输入,13>=n>=2)。编程可用素材:printf("Input n (1

3>=n>=2): ")...、printf("nf(...)=...n"...。

程序的运行效果应类似地如图1所示,图1中的10是从键盘输入的内容。

#include

int main(void)

{

int k, n;

double fn[21] = {0, 1, 2};

printf("Input n (13>=n>=2):");

scanf("%d", &n);

for (k=2; k

{

fn[k+1] = 2 * fn[k] + fn[k-1] * fn[k-2];

}

printf("nf(%d)=%.0fn", n, fn[n]);

return 0;

}

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

输入3行3列的矩阵,输出所有元素的累加和。编程可用素材:printf("Please inp

ut the 3x3 Matrix:n"...、printf("nsum=...n"...。

程序的运行效果应类似地如图1所示,图1中的

9 20 13

16 51 79

32 8 6

是从键盘输入的内容。

#include

int main(void)

{

int num[3][3], i, j, sum=0;

printf("Please input the 3x3 Matrix:n");

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

{

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

{

scanf("%d", &num[i][j]);

sum += num[i][j];

}

}

printf("nsum=%dn", sum);

return 0;

}

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

从键盘输入一行可带空格的字符串(约定:字符数≤127字节),按逆序输出该字符串。

注意,程序中不能使用库函数strrev或使用同名的变量、函数、单词。编程可用素材:p

rintf("Input a string: ")...、printf("nThe result is: ")...。

程序的运行效果应类似地如图1所示,图1中的abc xyz是从键盘输入的内容。

#include

#include

int main(void)

{

int i;

char str[128];

printf("Input a string: ");

gets(str);

printf("The result is: ");

for (i=strlen(str)-1; i>=0; i--)

{

printf("%c", str[i]);

}

printf("n");

return 0;

}

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

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

到输入的数据在0~100范围内。将输入的数据转换成等级‘A’,‘B’,‘C’,‘D’,‘E’。

90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以

下为‘E’,要求使用switch、case、default语句,结果赋值给变量grade,并将变量g

rade的值输出到屏幕上。

注意:变量数据类型的选择应适当,在保证满足设计要求精度的情况下,养成不浪费

内存空间和计算时间的好习惯。编程可用素材:printf("please input the score(0-10

0): ")...、printf("score=...,grade=...n",...。

程序的运行效果应类似地如图1所示,图1中的103和55是从键盘输入的内容。

#include

int main(void)

{

float score;

int temp;

char grade;

do

{

printf("nnplease input the score(0-100):");

scanf("%f", &score);

} while (score>100 || score<0);

temp = (int)score / 10;

switch (temp)

{

case 10:

case 9:

grade = 'A';

break;

case 8:

grade = 'B';

break;

case 7:

grade = 'C';

break;

case 6:

grade = 'D';

break;

default:

grade = 'E';

}

printf("score=%.1f,grade=%cn", score, grade);

return 0;

}

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

输入字符串s(约定:字符数≤100字节),将字符串s中所有字符‘*’删除,并将修

改后的字符串显示出来。编程可用素材:printf("Please input a string: ")...。

程序的运行效果应类似地如图1所示,图1中的*dgjk* %&* *df78dg 88**是从键

盘输入的内容。

#include

int main(void)

{

char str[101];

int i, j;

printf("Please input a string: ");

gets(str);

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

{

if (str[i] != '*')

{

str[j] = str[i];

j++;

}

}

str[j] = '0';

puts(str);

return 0;

}

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

键盘输入m,n(约定:m和n均≤1000且为正整数),输出介于m和n(含m和n)

中能被3整除且至少有位数字是5的所有整数。编程可用素材:printf("Input m, n:")...。

程序的运行效果应类似地如图1和图2所示,图1中的100,200和图2中的195,1

5是从键盘输入的内容。

#include

int main(void)

{

int i, m, n, tmp;

printf("Input m, n: ");

scanf("%d,%d", &m, &n);

if (m > n)

{

tmp = m;

m = n;

n = tmp;

}

for (i=m; i<=n; i++)

{

if (i % 3 == 0 && (i / 100 ==

{

printf("%d ", i);

}

}

|| i / 10 % 10 == || i % 10 == 5 5

5))

return 0;

}

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

计算X的Y次方,其中Y为整数(可以是负整数或0),X为实型。注意,程序中不

能使用库函数pow或使用同名的变量、函数、单词。编程可用素材:printf("Inpu

t x, y: ")...。

程序的运行效果应类似地如图1和图2所示,图1中的3.7,5和图2中的4,-2是从

键盘输入的内容。

#include

#include

int main(void)

{

int i, y, y1;

double x, xPowY=1.0;

printf("Input x, y: ");

scanf("%lf,%d", &x, &y);

y1 = abs(y);

for (i=1; i<=y1; i++)

{

xPowY = xPowY * x;

}

if (y < 0)

{

xPowY = 1 / xPowY;

}

printf("%f^%d=%fn", x, y, xPowY);

return 0;

}

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

求1+2+3+……+n≤m时的最大n值及和sum(=1+2+3+……+n),其中m从键

盘输入。编程可用素材:printf("please input m:")...、printf("nn=..., sum=...。

程序的运行效果应类似地如图1所示,图1中的10000是从键盘输入的内容。

#include

int main(void)

{

int in, im, sum = 0;

/*从键盘接收m的值存入im变量*/

printf("please input m:");

scanf("%d", &im);

in = 0;

while (sum <= im)

{

in++;

sum += in;

}

sum -= in;

in--;

printf("nn=%d, sum=%dn", in , sum);

return 0;

}

编写一程序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/...!=...。

程序的运行效果应类似地如图1所示,图1中的18是从键盘输入的内容。

#include

int main(void)

{

int n, i; //n存储从键盘读入的N值

double sum=0, fac=1; //sum存储累加,fac存储阶乘值

/* 从键盘上读入N的值 */

printf("Please input n:"); //输出请输入的屏幕提示

scanf("%d", &n); //从键盘上读入自然数N的值

/* 按计算公式完成S的计算 */

for (i=1; i<=n; i++) //从第1项开始一项一项地累加到第N项

{

fac = fac * i; //计算第i项的分母(i!),i!=(i-1)!*i

sum = sum + 1/fac; //累加第i项到sum中

}

/* 按题目要求的格式输出N和S的值 */

printf("S=1/1!+1/2!+...+1/%d!=%.16fn", n, sum);

return 0;

}

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

一个球从10000m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。

求它在第n(n从键盘输入)次落地时,共经过多少米?第n次反弹多高?编程可用素材:p

rintf("Please input n:")...、printf("sn=...,hn=...n"...。

程序的运行效果应类似地如图1所示,图1中的10是从键盘输入的内容。

#include

int main(void)

{

int i, n;

double sn, hn;

printf("Please input n:");

scanf("%d", &n);

sn = 0;

hn = 10000;

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

{

sn = sn + hn;

hn = hn / 2;

sn = sn + hn;

}

I0n

printf("sn=%f,hn=%fn", sn, hn);

return 0;

}

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

求s=a+aa+aaa+a的值,其中a是一个数字(可取1~9之间的一个值)。

例如2+22+222+2222+22222(此时共有5个数相加),其中a值和有几个数相加由键

盘输入控制。注意s的值有可能超出int的范围,编程可用素材:printf("Please input a,

n: ")...、printf("a+aa+...=...n"...。

程序的运行效果应类似地如图1所示,图1中的2,3是从键盘输入的内容。

#include

int main(void)

{

int n, count=1;

double valA, sn=0, tn=0;

printf("Please input a,n: ");

scanf("%lf,%d", &valA, &n);

while (count <= n)

{

tn = tn + valA;

sn = sn + tn;

valA = valA * 10;

count++;

}

printf("a+aa+...=%.0fn", sn);

return 0;

}

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

输入两个正整数m和n,求其最大公约数和最小公倍数。注:最大公约数也称最大公

因子,指某几个整数共有因子中最大的一个;两个整数公有的倍数称为它们的公倍数,其

中最小的一个正整数称为它们两个的最小公倍数。编程可用素材:printf("please input t

wo integer numbers: ")...、printf("nthe greatest common divisor is ...n"...、p

rintf("the least common multiple is ...n"...。

程序的运行效果应类似地如图1所示,图1中的35 15是从键盘输入的内容。

#include

#include

int main(void)

{

int m, n, zdGys, zxGbs;

printf("please input two integer numbers: ");

scanf("%d%d", &m, &n);

zdGys = min(m, n);

while (m % zdGys != 0 || n%zdGys != 0)

{

zdGys--;

}

zxGbs = max(m, n);

while (zxGbs % m !=0 || zxGbs % n != 0)

{

zxGbs++;

}

printf("nthe greatest common divisor is %dn", zdGys);

printf("the least common multiple is %dn", zxGbs);

return 0;

}

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

某班有40位同学参加考试,成绩(整数)从键盘输入,求全班最高分、最低分以及

平均分,并统计该班同学的考试及格率。编程可用素材:printf("n请输入40位同学的

成绩:")...、printf("n最高分:...最低分:...平均分:...及格率:...。

程序的运行效果应类似地如图1所示,图1中的99 81 71 81 77 94 100 67 66 44 7

5 49 47 45 65 74 73 74 63 69 72 77 65 79 84 73 46 62 68 42 75 62 65 66 62 6

9 44 62 84 77是从键盘输入的内容。

#include

#define SIZE 40

int main(void)

{

int scores[SIZE], i;

int max, min, count;

double aver, rate;

/*从键盘接收数据*/

printf("n请输入%d位同学的成绩:", SIZE);

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

{

scanf("%d", &scores[i]);

}

/*求最大、最小、分数总和,统计及格人数*/

max = scores[0];

min = scores[0];

aver = 0;

count = 0;

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

{

if (scores[i] > max)

{

max = scores[i];

}

else if (scores[i] < min)

{

min = scores[i];

}

aver += scores[i];

if (scores[i] >= 60)

{

count++;

}

}

/*求平均分和及格率*/

aver = aver / 40;

rate = (double)count / 40;

/*输出结果*/

printf("n最高分: %dn最低分: %dn平均分: %.1fn及格率: %.0f%%

n", max, min, aver, rate*100);

return 0;

}

发布评论

评论列表 (0)

  1. 暂无评论