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; }