关键词不能为空

当前您在: 主页 > 高中公式大全 >

excel求差公式C语言练习题答案

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2020-09-10 23:27
tags:三角形边长公式

文华学院怎么样-unit1


1.已知三角形的三边长为a,b,c,计算三角形面积的公式为:
area=sqrt(s(s-a)(s-b)(s-c)),其中s=(a+b+c)2。
试编程从键盘输入a,b,c的值(假设a,b,c的值可以保证其构成一个三角形),计算并输出三角形的面积 。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Input a,b,c:3,4,5
area = 6.00
答案:#include
#include
int main(void)
{







}
-----------------1

2.从键盘任意输入一个4位整数,编程计算并输 出它的逆序数.例如:输入1234,分离出千位1、百位2、十位3和个位4,然后计
算4*1000 +3*100+2*10+1=4321,并输出4321。
**要求输入提示信息为:无
**要求输入格式为:
**要求输出格式为:
程序运行示例如下:
1234 此处为输入
4321 此处为输出
答案:
#include
int main(void)
{










int a, b, c, d,e;
scanf(
b = a1000;
c = a%1000100;
d = a%10010;
e = a%10;
a = e*1000+d*100+c*10+b;
printf(
return 0;

float a, b, c, s, area;
printf(
scanf(
s = (a + b + c) 2;
area = sqrt(s*(s - a)*(s - b)*(s - c));
printf(
return 0;

}

--------------2

3.有关输入输出问题。
输入为:12a↙
b↙
运行结果为:1,2,a,b,123.300000,65535
请改正程序中的错误,使它能得出正确的结果。
#include

main()
{
int b;
unsigned short a = 65535;
short k = a;
char c, d;
int f, g;

b = (1234.0 - 1) 10;
scanf(
scanf(
scanf(
scanf(
printf(
}

答案:#include

main()
{
double b;
int a = 65535;
char c, d;
int f, g;

b = (1234.0 - 1) 10;
scanf(
scanf(
scanf(
scanf(
printf(
}
--------3

4.输入一行字符,统计其中的英文字符、数字字符、空格字符,以及 其他字符的个数。请找出以下程序的错误,并改正之。
#include
#include

#define ARR_SIZE = 80;

main()
{
charstr[ARR_SIZE];
int len, i;
int letter=0,digit=0,space=0,other=0;

printf(请输入一个字符串:
gets(str);

len = strlen(str);

for(i=0; i {
if(a= {
letter ++;
}
elseif(0= {
digit ++;
}
elseif(str[i]=' ')
{
space ++;
}
else
other ++;
}

printf(英文字符数:%dn
printf(数字字符数:%dn
printf(空格数:%dn
printf(其他字符数:%dn
}
答案 :#include
#include

#define ARR_SIZE 80

main()
{
charstr[ARR_SIZE];
int len, i;
int letter = 0, digit = 0, space = 0, other = 0;

printf(请输入一个字符串:
gets(str);

len = strlen(str);

for(i = 0; i {
if('a'<= str[i]&&str[i] <= 'z'|| 'A'<= str[i]&&str[i] <= 'Z')
{
letter++;
}
elseif('0'<= str[i] && str[i]<= '9')
{
digit++;
}
elseif( str[i] == ' ')
{
space++;
}
else
other++;
}

printf(英文字符数:%dn
printf(数字字符数:%dn
printf(空格数:%dn
printf(其他字符数:%dn
}
--------------------4
5.对输入的一个数判断是否是素数。所谓素数是指这 个数只能被1和自身整除。要求在主函数输入一个数,调用函数Fun()判断
该数是否是素数。打印信 息在主函数中进行。例如:从键盘输入5,5是素数则打印如下信息:。又如:
从键盘输入4, 4不是 素数则打印如下信息:。负数、0和1均不是素数。对输入的数据要考虑数据
的合法性,不满足条件的数 要重新输入直到满足条件为止。不能使用全局变量,不按给定的函数原型编写程序
不给分。Fun()函数原型为: int Fun(int m);
**输入数据提示信息:
注:该提示信息请放在循环体外
**输入数据格式为:
**输出格式要求:
若是素数输出数据格式为:
若不是素数输出数据格式为:
不完整答案:#include
intFun(inta)
{
inti;
if(a>1)
{
for(i = 2;i {
if(a%i==0)
return0;
else
continue;
}
return1;
}
else
return0;

}
main()
{
intb,c;
printf(
scanf(
c = Fun(b);
if(0 == c)
printf(
else
printf(

}
参考答案:#include
intFun(intm);
intmain()
{
intm, flag;

printf(
do
{
scanf(
}
while(m < 2); e1

flag = Fun(m); 3

if(flag) 1
printf(
else
printf(

return0;
}
intFun(intm)2
{
inti, flag = 1; 1

for(i = 2; i < m; i++) 1
{
if(m % i == 0) 1
{
flag = 0; 1
break;
}
}
returnflag;2
}
- -------------------------------------- -------------------5
6.求1898
现將不超过2000的所 有素数从小到大排成第一行,第二行上的每个数都等于它“右肩”上的素数与“左肩”上的素数之差。
请 编程求出:第二行数中是否存在这样的若干个连续的整数,它们的和恰好是1898?假如存在的话,又有几种这 样的情况?
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
There are follwing primes in first row :
(1).101,......,1999
(2). 89,......,1987
(3). 53,......,1951
(4). 3,......,1901
答案:
#include
#defineN 330
int a[N];
int main()
{



































}
7.从键盘任意输入一个整数m,若m不是素数,则对m进行质因数 分解,并将m表示为质因数从小到大顺序排列的乘积形式输出,
否则输出。例如,用户输入90时,程序 输出90 = 2 * 3 * 3 * 5;用户输入17时,程序输出
prime number。
输入提示信息:
输入格式:
输出格式:
是素数时输出
}
printf();
for (c = 329;c >= 0;c--)













for (b = c + 1;c < b;b++)












if (b < 330)
{







}
else
break;
if ((a[b] - a[c]) == 1898)
{


}
else
continue;
printf(, d, a[c], a[b]);
d++;
int c = 0, b = 0, d = 1;
int i = 0, j = 0, k = 0;
for (i = 3;i <= 2000;i++)
{














for (j = 2;j < i;j++)
{




}
if (j == i)
{


}
else
continue;
a[k] = i;
k++;
if (i%j == 0)

else
continue;
break;
否则输出用,
运行示例1:
Input m:90↙
90 = 2 * 3 * 3 * 5
运行示例2:
Input m:13↙
It is a prime number
答案:
#include
#include
intIsPrime(intx);
voidOutputPrimeFactor(intx);
intmain()
{
intm;
printf(
scanf(
if(IsPrime(m))
{
printf(
}
else
{
printf(
OutputPrimeFactor(m);
}
return0;
}
intIsPrime(intx)
{
inti,flag=1;
intsquareRoot=sqrt(x);
if(x<=1)
{
flag=0;
}
for(i=2;i<=squareRoot&&flag;i++)
{
if(x%i==0)
{
flag=0;
}
}
returnflag;
}
voidOutputPrimeFactor(intx)
{
inti;
for(i=2;i{
if(x%i==0)
{
printf(
OutputPrimeFactor(xi);
return;
}
}
printf(
}
---------------------------7
8.
将任一整数转换为二进制形式。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Input number:876
number of decimal form:876
it's binary form: 01101100
答案:
#include
#include
int main()
{







}
---------------------------8
9.
求自然数n最近的素数k, k>n。

***输入提示信息**:
*** 输入数据格式**:
***输出数据格式**:
int a;
char b[32];
printf();
scanf(, &a);
printf(, a);
printf();
printf(, itoa(a, b, 2));

示例
输入:
257
输出:
Please input n:263
答案:
#include
int main()
{
int n, i = 1, k;
printf(
scanf(
for (k = n + 1;i;k++)
{
for (i = 2;i < k;i++)
if (k%i == 0)
break;
else
continue;
if (i == k)
{
printf(
i = 0;
break;
}
}
}
---------------9
10.
如果一个正整数m的 所有小于m的不同因子(包括1)加起来正好等于m本身,那么就被称它为完全
数。它是指这样的一些特 殊的自然数,它所有的真因子(即除了自身以外的约数)的和,恰好等于它
本身。
注意:1没有真因子,所以不是完全数。例如,6就是一个完全数,是因为6 = 1 + 2 + 3。
请编写一个判断完全数的函数IsPerfect(),然后判断从键盘输入的整数是否是完全数。 < br>要求:按如下原型编写判断完全数的函数,若函数返回0,则代表不是完全数,若返回1,则代表是
完全数。
int IsPerfect(int x);
**要求输入提示信息为:
**要求输入格式为:
**要求输出格式为


注:不能使用指针 、结构体、共用体、文件、goto、枚举类型进行编程,主函数不能使用int main
和return 0。
答案:
#include
int IsPerfect(int x);
int main()
{
int m;
printf(
scanf(
if (IsPerfect(m))
printf(
else
printf(
}
int IsPerfect(int x)
{
int i = 1,b = 0;
for (i = 1;i < x;i++)
if (x%i == 0)
{
b = b + i;
continue;
}
else
continue;
if (b == x)
return 1;
else
return 0;

}
---------------------10
11.
用函数编程计算两整数 的最大值,在主函数中调用该函数计算并输出从键盘任意输入的两整数的最大
值。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Input a,b:5,8
max = 8
答案:
#include
int max(int a, int b)
{
if(a >= b)
return a;
else
return b;
}
main()
{
int a = 0,b = 0;
printf(
scanf(
printf(
}
---------------------------11
12.
利用求阶乘函数Fact(),编程计算并输出1! + 2! + …+ n!的值。
**输入格式要求:提示信息:
**输出格式要求:
答案:
#include
int sum_s(int i);
main()
{
unsigned int n = 0;
unsigned long b = 0;
printf(
scanf(
for (b;n;n--)
{
b = b +sum_s(n);
}
printf(
}
int sum_s(int i)
{
int a;
for(a = 1;i;i--)
{
if (i > 1)
a = a * i;
else
a = a * 1;
}
return a;
}
--------------------------------------12
13.
编程输出如下菜单界面(具体的输出则以下面提示中要求的输出格式为准):

=======大学信息管理系统=======
------------------------------
办公室管理 财务管理
教务管理 图书管理
科研管理 设备管理
人事管理 后勤管理
退出系统
------------------------------
请您在上述功能中选择(0——8):


提示:输出如下格式
大学信息管理系统======= n

办公室管理 5. 财务管理 n
教务管理 6. 图书管理 n
科研管理 7. 设备管理 n
人事管理 8. 后勤管理 n
退出系统n


请您在上述功能中选择(0——8):n
答案:
#include
main()
{
printf(大学信息管理系统======= n
printf(
printf(办公室管理 5. 财务管理 n
printf(教务管理 6. 图书管理 n
printf(科研管理 7. 设备管理 n
printf(人事管理 8. 后勤管理 n
printf(退出系统n
printf(
printf(请您在上述功能中选择(0——8):n
}
-------------------------------------13
14.
利用静态变量计算n的阶乘。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Input n:10
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
答案:
#include
int sum_s(int i);
main()
{
unsigned int n = 0,b = 1;
printf(
scanf(
for (b = 1;b <= n;b++)
{
printf(
}
}
int sum_s(int i)
{
int a;
for(a = 1;i;i--)
{
if (i > 1)
a = a * i;
else
a = a * 1;
}
return a;
}
-------- ----------------------------------------14
15.
写一个程序从键盘输入两个整数,然后显示输出第1个数除以第2个数的结果。例如,输入123和12,程序的输出结果格式如下:

10 Remainder = 3
------
12 ) 123
提示:使用求余运算符获得余数,使用整数除法获得商。

**输入格式要求:提示信息:请输入两个整数:
**输出格式要求:



答案:
#include
main()
{
int a, b, c, d;
printf(请输入两个整数:
scanf(
c = a b;
d = a % b;
printf(
printf(
printf(
}
-------------------------------------------15
16.
写一个程序,将接收的摄氏温度转换为对应的华氏温度。程序应显示如下的提示信息:
Please input cels:
然后输入一个十进制数并回车,然后程序以合适的消息形式输出转换后的华氏温度。
程序使用如下的公式完成转换:摄氏温度 = 5.0 *(华氏温度 – 32.0) 9.0
**输入格式要求:提示信息:
**输出格式要求:
答案:
#include
main()
{
double a,b;
printf(
scanf(
b = (9.0 * a)5.0 + 32.0;
printf(
}
--------------------------16
17.
写一个程序,将接收的华氏温度转换为对应的摄氏温度。程序应显示如下的提示信息:
Please input fahr:
然后输入一个十进制数并回车,然后程序以合适的消息形式输出转换后的华氏温度。
程序使用如下的公式完成转换:摄氏温度 = 5.0 *(华氏温度 – 32.0) 9.0
**输入格式要求:提示信息:
**输出格式要求:
答案:
#include
main()
{
double a,b;
printf(
scanf(
b = 5.0 * (a - 32.0) 9.0;
printf(
}
-----------------------------------17
18.
编写一个程序,输入一个3位整数,要求逆序输出对应的数。例如:输入123,则输出321。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Please enter a positive integer: 345
345-->543
答案:
#include
int main(void)
{
int a, b, c, d,e;
printf(
scanf(
b = a100;
d = a%10010;
e = a%10;
c = e*100+d*10+b;
printf(
return 0;
}
-------------------------------------------18
19.
计算两个数的平方和
从键盘读入两个实数,编程计算并输出它们的平方和, 要求使用数学函数pow(x,y)计算平方值,输
出结果保留2位小数。
提示:使用数学函数需要在程序中加入编译预处理命令 #include

以下为程序的输出示例:
Please input x and y:
1.2,3.4↙
result=13.00

输入格式:


输出格式:
输入提示信息:
输出格式:
答案:
#include
#include
main()
{
float x,y,z;
printf(
scanf(
z = pow(x,2) + pow(y,2);
printf(
}
————————————————————————————————19
20.
写一个程序从键盘输入两个整数,然后显示第1个整数占第二个整数的百分比,保留到小数点后1位。
例如输入5和40,程序输出结果如下:
5 is 12.5 percent of 40

**输入格式要求:提示信息:请输入两个整数:
**输出格式要求:
答案:
#include
main()
{
int a, b;
float c;
printf(请输入两个整数:
scanf(
c = (float)a (float)b;
c = c *100;
printf(
}
----------------------------------20
21. < br>求三角形面积。输入三角形的三个边长,计算三角形的面积。设三角形的三个边长分别为a、b、c,为简单起见,我们认为输入的三个边长数据是正确的,可以组成一个三角形。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Enter 3 floats:2,2,3
area=1.98
答案:
#include
#include
int main(void)
{
float a, b, c, s, area;
printf(
scanf(
s = (a + b + c) 2;
area = sqrt(s*(s - a)*(s - b)*(s - c));
printf(
return 0;
}
------------------------------------------21
22.
写一个程序计算长为11.5厘米,宽为2.5厘米,高为10厘米的盒子的体积和表面积。
程序说明:采用直接赋值,不用输入。
**输出格式要求
答案:
#include
main()
{
float a, b;
a = (11.5 * 2.5 + 11.5*10 +10 * 2.5)*2;
b = 11.5 * 2.5 * 10;
printf(
}
23.
用递归方法计算整数n的阶乘n!。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Input n:5
5! = 120
答案;
#include
int f(int n)
{
if(n==1 ||n==0)
return 1;
else
return n * f(n - 1);
}
main()
{
int n;
o: printf(
scanf(
while (n<0)
{
printf(
goto o;
}
printf(
}
------------------------------------23
24.
用递归方法编程计算Fibonacci数列的前N项。其中fib(0)=0,fib(1)=1,f ib(n)=fib(n-1)+fib(n-2)。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Input n:10
Fib(1)=1
Fib(2)=1
Fib(3)=2
Fib(4)=3
Fib(5)=5
Fib(6)=8
Fib(7)=13
Fib(8)=21
Fib(9)=34
Fib(10)=55
答案:
#include
int Fib(int n)
{
if (n == 0)
return 0;
else if (n == 1)
return 1;
else
return Fib(n - 1) + Fib(n - 2);
}
main()
{
int n, a;
printf(
scanf(
for (a = 1; a <= n;a++)
{
printf(
}
}
--------------------------------------------24
25.
利用求阶乘函数Fact(),编程计算并输出从1到n之间所有数的阶乘值。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Input n(n>0):10
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
答案:
#include
int sum_s(unsigned int i)
{
unsigned int a;
for(a = 1;i;i--)
{
if (i > 1)
a = a * i;
else
a = a * 1;
}
return a;
}
int Fact(unsigned int n)
{
unsigned int i;
for(i = 1;i <= n; i++)
{
printf(
}
}
main()
{
unsigned int i;
printf(
scanf(
Fact(i);
}
---------------------------25
26.
爱因斯坦 曾出过这样一道数学题:有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最
后剩下2阶; 若每步跨5阶,最后剩下4阶;若每步跨6阶,则最后剩下5阶;只有每步跨7阶,最
后才正好1阶不剩 。参考例6.15程序,编写计算这条阶梯共有多少阶的程序如下所示,其中存在一
些语法和逻辑错误, 请找出并改正之,然后上机运行程序并写出程序的运行结果。

#include
main()
{
int x = 1, find = 0;
while (!find);
{
if (x%2=1 && x%3=2 && x%5=4 && x%6=5 && x%7=0)
{
printf(
find = 1;
x++;
}
}
}
答案:
#include
main()
{
int x = 1, find = 0;
while (!find)
{
if (x % 2 == 1 && x % 3 == 2 && x % 5 == 4 && x % 6 == 5 && x % 7 == 0)
{
printf(
find = 1;
}
x++;
}
}
---------------26
27.
从键盘任意输入一个正整数,编程判 断它的奇偶性。要求输入变量定义为int类型且由用户从键盘输
入。

程序的运行示例1:
Input an integer number:
4↙
4 is an even number

程序的运行示例2:
Input an integer number:
3↙
3 is an odd number

输入格式:


输出格式:
输入信息提示:
偶数输出格式:
奇数输出格式:
答案:
#include
main()
{








}
-------------------------------------27
28.

int n, m;
printf(
scanf(
m = n % 2;
if (m)


printf(
printf(
else
用动态数组 编程输入任意m个班学生(每班n个学生)的某门课的成绩,计算最高分,并指出具有该
最高分成绩的学 生是第几个班的第几个学生。其中,m和n的值由用户从键盘任意输入(不限定m和
n的上限值)。
输入提示信息:


输入格式:
输出提示信息和格式:
答案:
#include
#include
void InputScore(int *p, int m, int n);
int FindMax(int *p, int m, int n, int *pRow, int *pCol);
int main()
{
int *pScore, m, n, maxScore, row, col;
printf(
scanf(
pScore = (int *)calloc(m * n, sizeof (int)); * 申请动态内存 *
if (pScore == NULL)
{
printf(
exit(0);
}
InputScore(pScore, m, n);
maxScore = FindMax(pScore, m, n, &row, &col);
printf(
free(pScore); * 释放动态内存 *
return 0;
}
* 函数功能:输入m行n列二维数组的值 *
void InputScore(int *p, int m, int n)
{
int i, j;
printf(
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
scanf(
}
}
}
* 函数功能:计算任意m行n列二维数组中元素的最大值,并指出其所在行列下标值 *
int FindMax(int *p, int m, int n, int *pRow, int *pCol)
{
int i, j, max = p[0];
*pRow = 0;
*pCol = 0;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
if (p[i * n + j] > max)
{
max = p[i * n + j];
*pRow = i; *记录行下标*
*pCol = j; *记录列下标*
}
}
}
return max;
}
-----------------------------28
29.
下面程序的功能是交换变量a和b中的值。 找出其中的错误并改正之。

#include
main()
{
int a,b,*p,*q,*t;
p=&a;
q=&b;
printf(请输入变量a和b的值:
scanf(
*t=*p
*p=*q
*q=*t
printf(交换后a和b的值:a=%d b=%dn
}
答案:
#include


main()

{

int a,b,*p,*q,*t;

p=&a;

q=&b;







}



















printf(请输入变量a和b的值:

scanf(

*t=*p

*p=*q

*q=*t

printf(交换后a和b的值:a=%d b=%dn

-----------------------------------29
30.
编程打印200~300之间所有素数。要求判断一个数是否是素数用函数实现,打印结果请在主函数实 现。
判断一个数是否是素数函数原型为:
int fun(int m);
参数说明:
参 数:m是要进行判断的数;
返回值:若此数是素数,则返回值为1;否则返回值为0
**输入提示信息: 无
**输入数据格式要求: 无
**输出数据格式要求:
注:不允许使用goto语句
答案:
#include
int fun(int m);
main()
{
int a;
for (a = 200;a <= 300;a++)
{
if (fum(a))
printf(
else
continue;
}
}
int fum(int m)
{
int i;
for (i = 2;i < m;i++)
{
if(m%i == 0)
return 0;
else
continue;
}
return 1;
}
------------------------------30
31.
输入某班学生某门课的成绩(最多不超过40人),当输入为负值时,表示输入结束,
用函数编程统计成绩高于平均分的学生人数。
要求按如下原型编写统计成绩在全班平均分及平均分之上的学生人数
int GetAboveAver(int score[], int n);
**输入要求:
**输出要求:



答案:
#include
int a[40] = { 0 }, i = 0;
int GetAboveAver(int score[], int n);
int main()
{











}
int GetAboveAver(int score[], int n)
{












d = sum i;
printf(
for (c = 0;c < i; c++)
{
if (score[c] > d)
int sum = 0, c;
int d, e = 0;
for (c = 0;c < i; c++)
{

}
sum = sum + score[c];
for (i; i <= 40; i++)
{






}
printf(
GetAboveAver(a, i);
int b = 0;
scanf(
if (b >= 0)


a[i] = b;
break;
else






}



}


e++;
continue;
else
printf(
return 0;
-----------------------------30
31.
*
编程实现简单的计算器功能,要求用户按如下格式从键盘输入算式:
操作数1 运算符op 操作数2
计算并输出表达式的值,其中算术运算符包括:加(+)、减(-)、乘(*)、除()、^(次幂)。
要求使其能进行浮点数的算术运算,同时允许使用字符*、x与X作为乘号,并且允许输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符。
**输入格式要求:提示信息:
**输出格式要求:+ %f = %f n- %f = %f n* %f = %f n %f = %f n
by zero!n
程序运行示例1如下:
Please enter the expression: 2.0 + 4.0
2.000000 + 4.000000 = 6.000000
程序运行示例2如下:
Please enter the expression: 2.0 - 4.0
2.000000 - 4.000000 = -2.000000
程序运行示例3如下:
Please enter the expression: 2.0 * 4.0
2.000000 * 4.000000 = 8.000000
程序运行示例4如下:
Please enter the expression: 2.0 x 4.0
2.000000 * 4.000000 = 8.000000
程序运行示例5如下:
Please enter the expression: 2.0 X 4.0
2.000000 * 4.000000 = 8.000000
程序运行示例6如下:
Please enter the expression: 2.0 4.0
2.000000 4.000000 = 0.5000000
程序运行示例7如下:
Please enter the expression: 2.0 0
Division by zero!
程序运行示例8如下:
Please enter the expression:2.0 ^5.0
2.000000 ^ 5.000000 = 32.000000
程序运行示例9如下:
Please enter the expression: 2.0 4.0
Invalid operator!


*
#include
#include
int main()
{





















}
-----------------------------31
32.
float a, b;
char c;
printf();
scanf(,&a, &c, &b);
if (c == '+')


{




}
elseif (c == '*' || c == 'x' || c == 'X')



printf(, a, b, a*b);
printf(,a, b,pow(a,b));
printf();
elseif (c == '^')
else
if (b != 0)


printf(, a, b, a b);
printf();
else
printf(, a, b, a + b);
printf(,a, b, a - b);
elseif (c == '-')
elseif (c == '')
下面程序的功能是计算两个正整数的最小公倍数,请改正其中的错误。
#include

intMinCommonMultiple(inta, intb)



main()

{

inta, b, x;

printf(

scanf(

x=MinCommonMultiple(inta,intb);

printf(

}

intMinCommonMultiple(inta, intb);

{

inti;

for(i=1; i
{

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

returni;

}

}

答案:
#include
int MinCommonMultiple(int a, int b);

int main()
{





}
int MinCommonMultiple(inta, intb)
{






}
--------------------------------------32
33.
请编写函数fuc(),函数的功能是: 根据以下公式求出p的值,结果由函数值返回。m , n 是两个
正整数,且 m>n. P= m!(n!*(m-n)!)
**输入格式要求:提示信息:请输入m,n的值( m>n ):n
**输出格式要求:项之和为:%lfn
程序运行示例如下:
请输入m,n的值( m>n ):
5 3
n项之和为:10.000000
答案:
int i;
for (i = 1; i <= a*b; i++)
{


}
if (i%a == 0 && i%b == 0)
return i;
int a, b, x;
printf();
scanf(, &a, &b);
x = MinCommonMultiple(a, b);
printf(, x);
#include

intfuc(intm, intn);

intsum_s(inti);

intmain()

{

intm, n;

printf(请输入m,n的值( m>n ):n

scanf(

printf(项之和为:%lfn

}

intfuc(intm, intn)

{

intp;

p = sum_s(m) (sum_s(n) * sum_s(m - n));

returnp;



}

intsum_s(inti)

{

ints_ = 1, a;

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

{

s_ = s_ *a;

}

returns_;

}

----------------------------------33
34.
采用穷举法,按如下函数原型
* 函数功能:计算a和b的最小公倍数,当a或者b为非正整数时返回-1 *
int Lcm(int a, int b);
用函数编程实现计算两个正整数的最小公倍数(Least Common M ultiple,LCM)
的函数,在主函数中调用该函数计算并输出从键盘任意输入的两整数的最小公 倍
数。
**输入格式要求:提示信息:
**输出格式要求:
error!n
程序运行示例如下:
Input a,b:16,24
Least Common Multiple of 16 and 24 is 48
注:不允许使用goto语句
答案:
#include

intLcm(inta, intb);

intmain()

{

inta, b;

printf(

scanf(

if(Lcm(a,b) > 0)

printf(Common Multiple of %d and %d is %dna, b,
Lcm(a, b));

else

printf(

}

intLcm(inta, intb)

{

inti;

if(a > 0 && b > 0)

{

for(i = 1;i < a*b;i++)

{

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

returni;

}

}

else

return-1;

}

--------------------34
35.
输入某班学生某门课的成绩(最多不超过40人),
当输入为负值时,表示输入结束,
用函数编程统计成绩不低于平均分的学生人数。
要求:
(1)按如下函数原型进行编程:
int GetAboveAver(int score[], int n);
(2)在主函数中:
输入学生成绩,
然后调用函数GetAboveAver计算成绩不低于平均分的学生人数,
最后输出该人数。
要求:
(1)学生成绩和平均分均定义为int类型
(2)**无输入提示信息
**输入格式为:
**输出格式为:
答案:
#include

inta[40] = { 0 }, i = 0;

intGetAboveAver(intscore[], intn);

intmain()

{

for(i; i <= 40; i++)

{

intb = 0;

scanf(

if(b >= 0)

a[i] = b;

else

break;

}

GetAboveAver(a, i);

}

intGetAboveAver(intscore[], intn)

{

intsum = 0, c;

intd, e = 0;

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

{

sum = sum + score[c];

}



d = sum i;

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

{

if(score[c] >= d)

e++;

else

continue;

}

printf(

return0;

}

----------------------------35
36.
从键盘任意输入10个整数存入一个数组中,
然后任意输入一个整数x,采用顺序查找法,在数组中查找该数,
如果找到,则函数返回该数在数组中的下标位置,
并在主函数中打印该值;
如果没有找到,则返回-1,并在主函数中打印“Not found!”。
要求按如下函数原型编程实现查找功能。
int Search(int a[], int n, int x);
在主函数中调用函数Search顺序查找x,
然后在主函数中打印查找结果。
要求必须按照题目要求和用函数编程,否则不给分。
**要求输入10个整数的提示信息格式为:
(每输入一个数,键一次回车);
**要求输入整数x的提示信息格式为:

**要求输出格式为:
找到时的打印格式为
没找到时的打印格式为
答案:
#include

intSearch(inta[], intn, intx);

intb[10] = {0};

intmain()

{

intx, n;

printf(

for(x = 0; x < 10; x++)

{

scanf(

b[x] = n;

}

printf(

scanf(

Search(b,n,x);

if(Search(b,n,x) > 0)

printf(

else

printf(

}

intSearch(inta[], intn, intx )

{

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

{

if(a[n] == x)

returnn;

else

continue;

}

return-1;

}

-------------------36
37.
利用一个字符数组作函数参数,实现字符串(最大长度为80个字符 )的逆序存
放。
要求如下:
(1)在子函数Inverse中实现字符串的逆序存放。函数原型为:
void Inverse(char str[]);
(2)在主函数中
从键盘输入字符串(使用gets函数)
然后,调用Inverse函数,
最后,输出逆序后的字符串。
(3)**输入提示信息:
**输出提示信息:
**输出格式:
注:不能使用指针、结构体、共用体、文件、got o、枚举类型进行编程,主函数
不能使用int main和return 0。

答案:
#include
char str_1[81];
void Inverse(char str[]);
int main()
{



}
void Inverse(charstr[])
{

















}
-----------------------37
38.
char b;
int a, c;
for (a = 0;a < 81;a++)
{




}
for (c = 0;c < (a) 2.0; c++)
{



}
printf();
printf(, str);
b = str[c];
str[c] = str[(a - 1) - c];
str[(a - 1) - c] = b;
if (str[a] == '0')


break;
continue;
else
printf();
gets(str_1);
Inverse(str_1);
从键盘任意输入一个字符串,计算其实际字符个数并打印输 出,即不使用字符串
处理函数strlen()编程实现strlen()的功能。
**输入格式要求:提示信息:
**输出格式要求:
程序的运行示例如下:
Please enter a string:Hello China
The length of the string is: 11
答案:
#include

main()

{

inta;

charstr[100];

printf(

gets(str);

for(a = 0;a <100; a++)

{

if(str[a] == '0')

break;

else

continue;

}

printf(

}

----------------------38
39.
输入一行字符,统计 其中的英文字符、数字字符、空格字符,以及其他字符的个
数。请找出以下程序的错误,并改正之。
#include
#include

#define ARR_SIZE = 80;

main()
{
char str[ARR_SIZE];
int len, i;
int letter=0,digit=0,space=0,other=0;

printf(请输入一个字符串:
gets(str);

len = strlen(str);

for (i=0; i {
if (a= {
letter ++;
}
else if (0= {
digit ++;
}
else if (str[i]=' ' )
{
space ++;
}
else
other ++;
}

printf(英文字符数:%dn
printf(数字字符数:%dn
printf(空格数:%dn
printf(其他字符数:%dn
}
答案:
#include

#include



#define ARR_SIZE 80



main()

{

charstr[ARR_SIZE];

int len, i;

int letter = 0, digit = 0, space = 0, other = 0;



printf(请输入一个字符串:

gets(str);



len = strlen(str);



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

{

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




















}

































































}








































{

letter++;

}

elseif('0'<= str[i]&&str[i] <= '9')

{

digit++;

}

elseif(str[i] == ' ')

{

space++;

}

else

other++;





printf(英文字符数:%dn

printf(数字字符数:%dn

printf(空格数:%dn

printf(其他字符数:%dn

--------------------39
40.
编程判断输入的一个字符 串是否是“回文”。所谓“回文”字符串就是左读和右
读都一样的字符串。例如: 就是一个回文字符串。

输入提示信息:
输入格式:gets()
判断是回文的输出提示信息:
判断不是回文的输出提示信息:

程序运行示例1:
Input a string:
abcba↙
This string is a plalindrome.

程序运行示例2:
Input a string:
friend↙
This string is not a plalindrome.
答案:
#include

charstr_1[81];

voidInverse(charstr[]);

intmain()

{

printf(

gets(str_1);

Inverse(str_1);

}

voidInverse(charstr[])

{

charb;

inta, c;

for(a = 0;a < 81;a++)

{

if(str[a] == '0')

break;

else

continue;

}

for(c = 0;c < (a) 2.0; c++)

{

if(str[c] == str[(a - 1) - c])

continue;

else

{

printf(
plalindrome.

return;

}

}

printf(



}

------------------------------40
41.
编程实现从键盘输入5个国名(每个国名最长80个字符),
找出并输出按字典顺序排在最前面的国名
要求:
(1)用gets输入字符串。
(2)
**输入提示信息为:
**输出格式为:
答案:
#include

main()

{

inti;


























}












































































chara[5][81] = {0}, b, c;

printf(

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

{

gets(a[i]);

}

b = a[0][0];

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

{

if(a[i][0] < b)

{

b = a[i][0];

c = i;

}

elseif(a[i][0] == b)

{

if(a[i][1] < a[i - 1][1])

c = i;

else

c = i - 1;

}

else

continue;

}

printf(

---------------41
42.
一个n位正整数如果等于它的n个数字的n次方和,该数称为n位自方幂数。设计求3~6位自方幂数。
**输出格式要求:位自幂数有:每位完后换行)

程序运行示例如下:
3位自幂数有:153 370 371 407
4位自幂数有:1634 8208 9474
5位自幂数有:54748 92727
6位自幂数有:548834
尚未完成
---------------------42
43.
93084
从键盘为3*3的矩阵输入数据,找出主对角线上最大的元素,以及所在的行号。
**输入提示信息:无
**输入格式要求:
**输出格式要求:
程序运行示例如下:
1 2 3
4 5 6
7 8 9
max=9 ,row=2
注:不允许使用goto语句
答案:
#include



main()

{

inti, j, row = 0, max;

inta[3][3];

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

{

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

{


scanf(

}

}

max = a[0][0];

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

{

if(max < a[i][i])

{


max = a[i][i];

row = i;

}

}

printf(

}


--------------------43
44.
任意输入英文的星期几,通过查找星期表,输出其对应的数字,
若查到表尾,仍未找到,则输出错误提示信息。
**输入格式要求:提示信息:
**输出格式要求:
查找表中信息:


程序运行示例1如下:
Please enter a string:
Monday
Monday is 1
程序运行示例2如下:
Monkey
Not found!
答案:
#include

#include

#define WEEKDAYS 7

#define MAX_STR_LEN 10

intmain()

{

inti, pos;

intfindFlag = 0;

charx[MAX_STR_LEN];

charweekDay[][MAX_STR_LEN] = {




printf(

scanf(



for(i = 0; i < WEEKDAYS && !findFlag; i++)

{

if(strcmp(x, weekDay[i]) == 0)

{
pos = i;

findFlag = 1;

}

}



if(findFlag)

{

printf(

}

else

{

printf(

}

return0;

}

-----------------------44
45.
有一个3*4的矩阵,求其中的最大元素的值。矩阵为:
{{1,3,5,7},{2,4,6,8},{15,17,34,12}};



**输出格式要求:
程序运行示例如下:
max value is 34
答案:
#include

main()

{

inta[3][4] = {{1,3,5,7},{2,4,6,8},{15,17,34,12}};

inti, j, c;

c = a[0][0];

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

{

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

{

if(a[i][j] >= c)

c = a[i][j];

else

continue;

}

}

printf(

}

-------------------45
46.
按如下函数原型编写程序, 输入n×n阶矩阵,用函数编程计算并输出其两条对
角线上的各元素之和。
void InputMatrix(int a[N][N], int n);
int AddDiagonal(int a[N][N], int n);
输入提示信息:


输入格式:
输出提示信息和输出格式:
答案:
#include

#define PL 50

main()

{

inta[PL][PL];

inti, j, n, sum = 0;

printf(

scanf(

printf(

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












}


































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

{

scanf(

}

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

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

{

if(i == j || (i + j) == (n - 1))

sum = sum + a[i][j];

}

printf(

------------------46
47.
有如下3*4的矩阵,求出其中值最大的元素的值。
1 2 3 4
9 8 7 6
10 -1 -4 4
在对数组进行初始化时,给出上面数据。
**要求输入提示信息为:无输入提示信息和输入数据
**要求输出格式为:
答案:
#include

main()

{

inta[3][4] = { { 1,2,3,4 },{ 9,8,7,6 },{ 10,-1,-4,4 } };

inti, j, c;

c = a[0][0];

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

{

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

{

if(a[i][j] >= c)

c = a[i][j];

else

continue;

}

}

printf(

}

--------------------47
48.
输入一个正整数n,再输入n个学生的成绩,计算平均分,并统计不及格成绩的
个数。
**输入格式要求:提示信息:grade #%d: 提示信息:
n:
**输出格式要求:
程序运行示例如下:
Enter n: 4
Enter grade #1: 67
Enter grade #2: 54
Enter grade #3: 88
Enter grade #4: 73
Grade average = 70.50
Number of failures = 1
答案:
#include

doublea[40] = { 0 };

inti = 0;

intGetAboveAver(doublescore[], intn);

intmain()

{

intn;

printf(

scanf(

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

{

printf(
doubleb = 0;

scanf(

if(b >= 0)

a[i] = b;

else

break;

}

GetAboveAver(a, n);

}

intGetAboveAver(doublescore[], intn)

{

int c;

doublesum = 0, d;

int e = 0;

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

{

sum = sum + score[c];

}



d = sum i;












}































printf(

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

{

if(score[c] < 60)

e++;

else

continue;

}

printf(

return0;

---------------------48
49.
直角三角形的三边满足 a^2+b^2=c^2,如果三边都是整数,则称a、b、c为一组
勾股数。
编程输出每边长都不大于20的所有勾股数。
**输入提示信息格式: 无
**输入数据格式要求: 无
**输出数据格式要求:
答案:
#include

#include

main()

{

inta, b, c;

for(a = 1; a <= 20; a++)

for(b = 1;b <= 20; b++)

for(c = 1;c <= 20; c++)

{

if(c >= b && b >=a)

if(pow(c,2) == pow(b,2)+pow(a,2))

printf(
n

}

}

---------------------49
50.
求菲波那奇数列:数列 1、1、2、3、5、8、13、21、?,是著名的菲波那奇数
列,其递推通项公式为:U_1=U_ 2=1, (n=1,2)U_n=U_{n-1}+U_{n-2},(n>=3)
求出第n项的值,请编写程序。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Input n=?10
No. 10 is 55
答案:
#include

intFct(intn);

main()

{

intn;

printf(

scanf(

printf(

}

intFct(intn)

{

if(n <= 2)

return1;

else

returnFct(n-1)+Fct(n - 2);

}

-----------------------50
51. 下面程序的功能是读取7个数(1—50)的整数值,每读取一个值,程序打印出
该值个数的*。找 出其中的错误,并改正之。

#include

main()

{ inti,a,n=1;

while(n<=7)

{

do

{

scanf(

}while(a<1 && a>50);

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

printf(

printf(

n++;

}

}

答案:
#include

intmain()

{

inti, a, n = 1;

while(n <= 7)

{









}






























scanf(

if(a >= 1 && a <= 50);

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

printf(

printf(

n++;

}

-----------------51
52.
编写程序:有1, 2,3,4共四个数字,能组成多少个互不相同的且无重复数字的三
位数,都是多少。
**输出格式要求:共有%d种组合!
程序运行示例如下:
1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
共有24种组合!
答案:
#include
main()
{
int a, b, c, d = 0;
for (a = 1;a <= 4;a++)
for (b = 1; b <= 4; b++ )
for (c = 1;c <= 4; c++)
{
if(a != b && a != c && b != c)
{
printf(
d++;
}
}
printf(共有%d种组合!
}
---------------------------------52

53.
用while语句编程,输入一组整型数据,然后显示每次将输入数据进行累加运算< br>后的结果。当输入0时,停止输入数据,结束程序的运行。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Input num:1
sum = 1
Input num:2
sum = 3
Input num:3
sum = 6
Input num:4
sum = 10
Input num:0
sum = 10
答案:
#include
main()
{
int sum = 0,num;
do
{
printf(
scanf(
sum = sum + num;
printf(
}while(num);
}
--------------------------------------53
54.
利用pi2 = (21)*(23)*(43)*(45)*(65)*(67)* ...前100项之积,编程
计算pi的值。
为保证计算精度,请用double类型计算。
**输出格式要求:
答案:
#include

main()

{

doubled = 1, pi;

inti, j;

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

for(j = 1; j <= 2; j++)

{

if(j == 1)

d = d * (double)(i*2)(i*2 - 1);

else

d = d * (double)(i*2)(i*2 + 1);

}

pi = 2*d;

printf(

}

------------------------54
55. < br>利用
π4
=1?
13
+
15
?
17
+…
,编程计算
π
的近似值,直到最后一项的绝对值小

10
?4
时为止,输出
π
的值并统计累加的项数。
**输出格式要求:
采用double定义累加和变量
答案:
#include

intmain()

{

doubled = 0, pi;

inti, j = 0, k = 1;

for(i = 1;1 (double)i >= 0.0001 || 1 (double) i < -0.0001; i
= i + 2)

{

if(k % 2 == 0)

{

d = d - 1 (double)i;

j++;














}








































k++;

}

else

{

d = d + 1 (double)i;

j++;

k++;

}

}

d = d + 1(double)i;

j++;

pi = 4 * d;

printf(

---------------------------------55
56.
从键盘输入10个整数,编程计算并输出其最大值、最小值及其所在元素的下标
位置。
输入格式:
输出格式:

输入样例:
1 2 3 4 5 6 7 8 9 10
输出样例:
max=10, pos=9
min=1, pos=0
答案:
#include

main()

{

inta[10] = {0}, j, i = 0, k = 0;

intc, b;

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

{

scanf(

if(a[j] > i)

{

i = a[j];

c = j;

}

if(j == 0)

{

k = a[j];

b = j;










}




























}

elseif(a[j] < k)

{

k = a[j];

b = j;

}

}

printf(

printf(

----------------56
57.
冒泡排序(Bubble Sort),也称为沉降排序(Sinking Sort),之所以称其为
冒泡排序,是因为算法中值 相对较小的数据会像水中的气泡一样逐渐上升到数组
的最顶端。与此同时,较大的数据逐渐地下沉到数组 的底部。这个处理过程需在
整个数组范围内反复执行多遍。每一遍执行时,比较相邻的两个元素。若顺序 不
对,则将其位置交换,当没有数据需要交换时,数据也就排好序了。编程将排序
函数Data Sort()改用冒泡法实现。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Input n:10
Input 10 numbers: 2 9 3 4 0 6 8 7 5 1
Sorting results: 0 1 2 3 4 5 6 7 8 9
答案:
#include

voidDataSort(inta[],intn);

main()

{

inta[100] = {0}, n,i = 0;

printf(

scanf(

printf(

do

{

scanf(

i++;

}while(i < n);

DataSort(a,n);

}

voidDataSort(inta[],intn)

{

intj, t, i;

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












}


































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

if(a[j] < a[j - 1])

{

t = a[j-1];

a[j-1] = a[j];

a[j] = t;

}

printf(

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

printf(



------------------------57
58.

冒泡排序
采用冒泡法进行升序排序法的基本原理是:对数组中的n个数执行n-1遍检查操< br>作,在每一遍执行时,对数组中剩余的尚未排好序的元素进行如下操作:对相邻
的两个元素进行比 较,若排在后面的数小于排在前面的数,则交换其位置,这样
每一遍操作中都将参与比较的数中的最大的 数沉到数组的底部,经过n-1遍操作
后就将全部n个数按从小到大的顺序排好序了。
程序的某次运行结果如下:
Input n:10↙
Input 10 numbers:2 9 3 4 0 6 8 7 5 1↙
Sorting results: 0 1 2 3 4 5 6 7 8 9

输入格式:
输出格式:
输入数据个数提示:
输入数据提示:
输出提示:
输出格式:
答案:
#include

voidDataSort(inta[], intn);

main()

{

inta[100] = { 0 }, n, i = 0;

printf(

scanf(

printf(

do

{

scanf(

i++;

} while(i < n);

DataSort(a, n);

}

voidDataSort(inta[], intn)

{

intj, t, i;

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

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

if(a[j] < a[j - 1])

{

t = a[j - 1];

a[j - 1] = a[j];

a[j] = t;

}

printf(

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

printf(



}

----------------------------------58
59.(出题人是sb)
程序改错v1.0
下面代码的功能是将百分制成绩转换为 5分制成绩,具体功能是:如果用户输入
的是非法字符或者不在合理区间内的数据(例如输入的是a,或 者102,或-45等),
则程序输出 Input error!,否则将其转换为5分制输出。目前 程序存在错误,
请将其修改正确。并按照下面给出的运行示例检查程序。
#include
int main()
{
int score;
char grade;
printf(
scanf(
if (score < 0 || score > 100)
printf(
else 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;
}


程序运行结果示例1:
Please input score:
-1↙
Input error!

程序运行结果示例2:
Please input score:
95↙
grade: A

程序运行结果示例3:
Please input score:
82↙
grade: B

程序运行结果示例4:
Please input score:
72↙
grade: C

程序运行结果示例5:
Please input score:
66↙
grade: D

程序运行结果示例6:
Please input score:
32↙
grade: E

程序运行结果示例7:
Please input score:
127↙
Input error!

输入格式:
输入提示信息:
输入错误提示信息:
输出格式:注意:%c前面有一个空格)

答案:

#include

intmain()

{

intscore;

chargrade;

printf(

scanf(

if(score < 0 || score > 100)

printf(

elseif(score >= 90)

{

grade = 'A';

printf(

}

elseif(score >= 80)

{

grade = 'B';

printf(

}

elseif(score >= 70)

{

grade = 'C';

printf(

}

elseif(score >= 60)

{ grade = 'D';

printf(

}

else

{ grade = 'E';

printf(

}

return0;

}


-------------------------59
60.
下面程序用于 输入三角形的三条边a,b,c,判断它们能否构成三角形,若能,则
指出是何种三角形:等腰三角形、 直角三角形、等腰直角三角形,一般三角形。
若不能,则输出“不是三角形n”
浮点数的运算允许的误差在0.1范围内即可。
请修改下面程序,使其运行结果完全正确。只 有全部错误都修改正确才给分,部
分错误修改正确不给分。允许修改和增加语句,但是不允许删除语句, 也不要修
改变量的类型。
#include

intmain()

{

float a, b, c;

intflag;

scanf(

if(a+b>c || b+c>a || a+c>b);

{

if(a=b||b=c||c=a)

{

printf(等腰三角形n

flag = 0;

}

elseif(a*a+b*b=c*c || a*a+c*c=b*b || c*c+b*b=a*a)

{

printf(直角三角形n

flag = 0;

}

if(!flag)

{

printf(一般三角形n

}

}

else

{

printf(不是三角形n

}

return0;

}

答案:
#include

intmain()

{

float a, b, c;

intflag;

scanf(

if(a + b>c && b + c>a && a + c>b)

{

if((a == b || b == c || c == a) && (a*a + b*b == c*c ||
a*a + c*c == b*b || c*c + b*b == a*a))

{

printf(等腰直角三角形n

}

elseif(a == b || b == c || c == a)

{

printf(等腰三角形n

flag = 0;

}

elseif(a*a + b*b == c*c || a*a + c*c == b*b || c*c + b*b
== a*a)

{

printf(直角三角形n

flag = 1;

}

else

{

printf(一般三角形n

}

}

else

{

printf(不是三角形n

}

return0;

}


------------------60
61.
编写程序实现以下功能:从键 盘输入一个大写英文字母,将该字母转换成小写字
母后,打印输出转换后的小写字母及其所对应的ASC 码值。
**输入提示信息**:
**输入数据格式**:
**输出数据格式**:< br>友情提示:从键盘输入一个字符可用scanf也可用getchar
答案:
#include

intmain()

{

chara_;

printf(

scanf(

printf(

}


--------------------------------61
62.
编写程序计算圆的面积和周长。已知pi定义为3.14.
**输入格式要 求:提示信息:请输入半径的值:
**输出格式要求:半径为%5.2f的圆的面积为%5.1f,圆的 周长为%5.1fn
示例运行如下:
请输入圆的半径:3.5
半径为 3.50的圆的面积为 38.5,圆的周长为 22.0
答案:
#include

#define pi 3.14

main()

{

floatr, c, s;

printf(请输入半径的值:

scanf(

c = 2*pi*r;

s = pi*r*r;

printf(半径为%5.2f的圆的面积为%5.1f,圆的周长为%5.1fns,
c);

}


-------------------------62
63.
从键盘任意输 入一个3位整数,编程计算并输出它的逆序数(忽略整数前的正负
号)。例如,输入-123,则忽略负 号,由123分离出其百位1、十位2、个位3,
然后计算3*100+2*10+1 = 321,并输出321。
**输入格式要求:提示信息:
**输出格式要求:
程序运行示例如下:
Input x:-123
y = 321
答案:
#include

intmain(void)

{

inta, b, c, d, e;

printf(

scanf(

if(a < 0)

a = -a;







}




















c = a 100;

d = a % 100 10;

e = a % 10;

b = e * 100 + d * 10 + c

printf(

return0;

--------------------------------63
64.
求输入两个数的和、差、积、商和余数(如果是浮点数,则需将其强转为整型后
计算余数)。请改正程 序中的错误,使它能得出正确的结果。
#include

main()
{
float a, b;
float sum, minus, product, quotient;
int remainder;

printf(请输入两个数:n
scanf(
sum = a + b;
minus = a - b;
product = a * b;
quotient = a b;
remainder = a % b;
printf(和为:%.2fn
printf(差为:%.2fn
printf(积为:%.2fn
printf(商为:%.2fn
printf(余数为:%dn
}
答案:
#include

main()

{

floata, b;

floatsum, minus, product, quotient;

intremainder;



printf(请输入两个数:n

scanf(

sum = a + b;










}





























minus = a - b;

product = a * b;

quotient = a b;

remainder = (int)a % (int)b;

printf(和为:%.2fn

printf(差为:%.2fn

printf(积为:%.2fn

printf(商为:%.2fn

printf(余数为:%dn

---------------------------------64
65.
已知三角形的三边长为a,b,c,计算三角形面积的公式为:
area =sqrt(s(s-a)(s-b)(s-c)),s=12(a+b+c)
其中,a,b,c为浮点数,sqrt为开平方计算。
要求编写程序,从键盘输入a,b,c的值,计算并输出三角形的面积。
注意:不用判断输入的边长值是否满足三角形要求,
只需进行简单计算即可。
**要求输入提示信息格式为:;
**要求输入数据格式:
**输出格式要求:
答案:
#include

#include

main()

{

floata, b, c,area, s;

printf(

scanf(

s=(a+b+c)2;

area =sqrt(s*(s-a)*(s-b)*(s-c));

printf(

}


---------------------------------65
66.
编程实现简单的计算器功能,要求用户按如下格式从键盘输入算式:
操作数1 运算符op 操作数2
计算并输出表达式的值,其中算术运算符包括:加(+)、减(-)、乘(*)、
除()。
**输入格式要求:提示信息:
**输出格式要求:
%d = %d n
程序运行示例1如下:
Please enter an expression:22+12
22 + 12 = 34
程序运行示例2如下:
Please enter an expression:22-12
22 - 12 = 10
程序运行示例3如下:
Please enter an expression:22*12
22 * 12 = 264
程序运行示例4如下:
Please enter an expression:2212
22 12 = 1
程序运行示例5如下:
Please enter an expression:220
Division by zero!
程序运行示例6如下:
Please enter an expression:2212
Invalid operator!
答案:
#include

#include

intmain()

{

inta, b;

charc;

printf(

scanf(

if(c == '+')

printf(

elseif(c == '-')

printf(

elseif(c == '')

{

if(b != 0)

printf(

else

printf(

}

elseif(c == '*'|| c == 'x'|| c == 'X')

printf(

elseif(c == '^')

printf(

else

printf(

}


---------------------------------66
67.
计算n!算法如下,请改正程序中的错误,使它能得出正确的结果。
#include



longfact(intn);



main()

{

intn, result = 0;



printf(

scanf(



result = fact(n);

printf(

}

longfact(intn)

{

intresult;

if(n < 0)

printf(

else

{

result = n * fact(n - 1);

returnresult;

}

}

答案:
#include

longfact(intn);

main()

{

intn, result = 0;

printf(

scanf(

if(n < 0)

printf(

else

{

result = fact(n);

}



printf(

}

longfact(intn)

{

if(n == 0 ||n ==1)

return1;

else

{

returnfact(n - 1)*n;

}

}


---------------------------------67
68.
用递归法将一个整数n转换成字符串,例如输入483,应输出字符串“483”。n
的位数不确定,可以是任意位数的整数。
**输入提示:输入整数:
**输入格式:
**输出提示:输出是:
**输出转换的字符串

程序的运行示例如下:
输入整数:345
输出是:345
答案:
#include



voidconvert(intn);



voidmain()



{



intnum;

printf(输入整数:

scanf(

printf(输出是:

convert(num);



}



voidconvert(intn)



{




















}



if(n 10 == 0)


{


putchar('0'+ n % 10);


}


else


{


convert(n 10);


putchar('0'+ n % 10);


}


---------------------------------68
69. 假设有40个学生被邀请来给餐厅的饮食和服务质量打分,分数划分为1~10这
10个等级(1表 示最低分,10表示最高分),编程统计并按如下格式输出餐饮
服务质量调查结果。
Grade Count Histogram
1 5 *****
2 10 **********
3 7 *******
...
**输入格式要求:提示信息:
students:n< br>**输出格式要求:
程序运行示例如下:
Input the feedbacks of 40 students:
10 9 10 8 7 6 5 10 9 8
8 9 7 6 10 9 8 8 7 7
6 6 8 8 9 9 10 8 7 7
9 8 7 9 7 6 5 9 8 7
Feedback Count Histogram
1 0
2 0
3
4
5
6
7
8
9
10
答案:
0
0
2
5
9
10
9
5


**
*****
*********
**********
*********
*****
#include

main()

{

inta[10] = {0}, n, i;

printf(

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

{

scanf(

if(n == 1)

a[0]++;

elseif(n == 2)

a[1]++;

elseif(n == 3)

a[2]++;

elseif(n == 4)

a[3]++;

elseif(n == 5)

a[4]++;

elseif(n == 6)

a[5]++;

elseif(n == 7)

a[6]++;

elseif(n == 8)

a[7]++;

elseif(n == 9)

a[8]++;

elseif(n == 10)

a[9]++;

else

printf(

}

printf(

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

{

printf(





}






















for(n = 1; n <= a[i];n++)

printf(

printf(

}

----------------------------69
70.
编程比 较用户键盘输入的口令与内设的口令secret是否相同。若相同,则输出
,若password则输出,否则输出
password!user input>password。
输入提示信息:
输入格式:
输出提示信息:



答案:
#include



#include



intmain()



{







charpassword[7] =







charuserInput[81];







printf(







scanf(














































}



if(


strcmp(userInput, password) == 0


)






printf(password! Welcome to the system...n




elseif(


strcmp(userInput, password)<0


)






printf(




else






printf(




return0;


----------------------------70
71.
编写一 个C函数,实现保留小数点后第N-1位,从第N位四舍五入。用该函数对
数组a[5]中的各元素从小 数点后第2位开始四舍五入。
a[5]={2.33,2.56,2.65,2.66,2.30}
**输出格式要求:
array:n
程序运行示例如下:
Old array:
a[0]=2.330 a[1]=2.560 a[2]=2.650 a[3]=2.660
a[4]=2.300

new array:
a[0]=2.30 a[1]=2.60 a[2]=2.70 a[3]=2.70
a[4]=2.30
答案:
#include

#include

floatfife(floata,intn);

main()

{

inti;

floata[5]={2.33,2.56,2.65,2.66,2.30};

printf(

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

{

printf(

}

printf(

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

{

printf(

}

}

floatfife(floata, intn )

{

intb, c;

c = a * pow(10,n);

b = c%10;

if(b >= 5)

{

a = (int)(a * pow(10,n - 1)) + 1;

a = a10;

returna;

}







}




















else

{

a = (int)(a * pow(10,n - 1));

a = a10;

returna;

}

-----------------------------71
72.
求最大数和最小数的最大公约数
从键盘输入10个正整数,求出最大数,最小数,以及他们的最大公约数。要求
用数组实现。

程序运行结果示例1:
Input 10 numbers:
15 23 56 87 94 105 78 19 22 43↙
maxNum=105
minNum=15
15

程序运行结果示例2:
Input 10 numbers:
33 1 2 9 8 7 5 4 0 10↙
maxNum=33
minNum=0

输入格式:
输出格式:
输入提示信息:
最大数输出格式:
最小数输出格式:
最 大公约数输出格式:
答案:
#include

main()

{

inta[10] = {0}, i, j, min = 0, max = 0;

printf(

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

{

scanf(

if(0 == i)

{






















}

































































min = a[i];

max = a[i];

}

else

{

if(a[i] >= max)

max = a[i];

if(a[i] <= min)

min = a[i];

}

}

printf(

printf(

for(i = min;1 <= i; i--)

{

if((min % i == 0) &&(max % i == 0))

{

printf(

break;

}

}

-----------------------------72
73.
写一 个函数days,实现主函数将年、月、日(结构体类型)传递给days函数,
days函数计算该年 该月该日是该年的第几天并传回主函数输出。
程序的运行示例如下:
请输入日期(年,月,日)
1990,2,14
2月14日是1990年的第45天。
答案1
#include

structtime_1

{

intyear;

intmonth;

intday;

};

intdays(structtime_1 Atime);

intmain()

{

structtime_1 Atime;

inta, b, c,d;

printf(请输入日期(年,月,日)nn

scanf(

= a;

= b;

= c;

d = days(Atime);

printf(月%d日是%d年的第%d天。

return0;

}

intdays(structtime_1 Atime)

{

int_day;

if( % 4 == 0)

{

if( == 1)

_day =

elseif( == 2)

_day = + 31;

elseif( == 3)

_day = + 60;

elseif( == 4)

_day = + 91;

elseif( == 5)

_day = + 121;

elseif( == 6)

_day = + 152;

elseif( == 7)

_day = + 182;

elseif( == 8)

_day = + 213;

elseif( == 9)

_day = + 244;

elseif( == 10)

_day = + 274;

elseif( == 11)

_day = + 305;

elseif( == 12)

_day = + 335;

}

if( % 4 != 0)

{

if( == 1)

_day =

elseif( == 2)
























}






































































_day = + 31;

elseif( == 3)

_day = + 60 - 1;

elseif( == 4)

_day = + 91 - 1;

elseif( == 5)

_day = + 121 - 1;

elseif( == 6)

_day = + 152 - 1;

elseif( == 7)

_day = + 182 - 1;

elseif( == 8)

_day = + 213 - 1;

elseif( == 9)

_day = + 244 - 1;

elseif( == 10)

_day = + 274 - 1;

elseif( == 11)

_day = + 305 - 1;

elseif( == 12)

_day = + 335 - 1;

}

return_day;

答案2
#include
structtime_1
{



};
int days(structtime_1 Atime);
int main()
{








structtime_1 Atime;
int a, b, c,d;
scanf(, &a, &b, &c);
if (a % 4 == 0)
{



if ((2 == b) && (c > 29))
{
printf(你输入的日期有误!);
int year;
int month;
int day;
o: printf(请输入日期(年,月,日));





































}












}

}
goto o;
elseif ((1 == b || 3 == b || 5 == b || 7 == b || 8 == b || 10 == b || 12 == b) &&
{


}
elseif (c > 30)
{


}
printf(你输入的日期有误!);
goto o;
printf(你输入的日期有误!);
goto o;
(c > 31))
else
{















}
= a;
= b;
= c;
d = days(Atime);
printf(月%d日是%d年的第%d天。, b, c, a, d);
return 0;
if ((2 == b) && (c > 28))
{


}
elseif ((1 == b || 3 == b || 5 == b || 7 == b || 8 == b || 10 == b || 12 == b) &&
{


}
elseif (c > 30)
{


}
printf(你输入的日期有误!);
goto o;
printf(你输入的日期有误!);
goto o;
printf(你输入的日期有误!);
goto o;
(c > 31))
int days(structtime_1Atime)
{


int _day;
if ( % 4 == 0)












































{
























}
else
{
















if ( == 1)








_day =
_day = + 31;
_day = + 60 - 1;
_day = + 91 - 1;
_day = + 121 - 1;
_day = + 152 - 1;
_day = + 182 - 1;
_day = + 213 - 1;
elseif ( == 2)
elseif ( == 3)
elseif ( == 4)
elseif ( == 5)
elseif ( == 6)
elseif ( == 7)
elseif ( == 8)
if ( == 1)












_day =
_day = + 31;
_day = + 60;
_day = + 91;
_day = + 121;
_day = + 152;
_day = + 182;
_day = + 213;
_day = + 244;
_day = + 274;
_day = + 305;
_day = + 335;
elseif ( == 2)
elseif ( == 3)
elseif ( == 4)
elseif ( == 5)
elseif ( == 6)
elseif ( == 7)
elseif ( == 8)
elseif ( == 9)
elseif ( == 10)
elseif ( == 11)
elseif ( == 12)










}









}
elseif ( == 9)




_day = + 244 - 1;
_day = + 274 - 1;
_day = + 305 - 1;
_day = + 335 - 1;
elseif ( == 10)
elseif ( == 11)
elseif ( == 12)
return _day;
-----------------------------73
74.
马克 思手稿中有一道趣味数学题:有30个人,其中可能有男人、女人和小孩,
在一家饭馆里吃饭共花了50 先令,每个男人各花3先令,每个女人各花2先令,
每个小孩各花1先令,问男人、女人和小孩各有几人 ?
假设男人为x人,女人为y人,小孩为z人,则有以下方程组:
{
x
+< br>y
+
z
=303
x
+2
y
+
z=50

main()

{











}

答案:
intx,y,z;

printf(

for(x=0; x<16; x++)

for(y=0; y<25; y++)

{

z = 30 – x - y;

if(3 * x + 2 * y + z = 50)

printf(


}

#include

intmain()

{

intx, y, z;

printf(

for(x = 1; x<16; x++)

for(y = 1; y<25; y++)

{

z = (30 - x) - y;

if((3 * x + 2 * y + z) == 50)

printf(

}

return0;

}


-----------------------------74
75.
程序:计算本金和复利之和。
编写程序打印出一个表格,这个表格显示了在 几年时间内100美金投资在不通利
率上的价值。用户将输入利率和要投资的年数。假设整合利息一年一 次,表格将
显示出一年间在此输入利率下河后边四个更高利率下投资的价值。
**输入格式要 求:提示信息:
year:
**输出格式要求:
下面是程序运行时的情况:
Enter intereset rate: 6
Enter number of years: 5

years 6% 7% 8% 9% 10%
1 106.00 107.00 108.00 109.00 110.00
2 112.36 114.49 116.64 118.81 121.00
3 119.10 122.50 125.97 129.50 133.10
4 126.25 131.08 136.05 141.16 146.41
5 133.82 140.26 146.93 153.86 161.05
答案:
#include
int main()
{
















int i, y, r, j,k;
float a[5], b = 100;
printf();
scanf(, &r);
printf();
scanf(, &y);
printf();
for (i = r; i <= (r + 4);i++)
{

}

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


printf(, i);
k = r;
printf(, i);








}







}
for (j = 1;j <= 5;j++)
{


}
b = ((float)r 100) * b + b;
printf(, ((float)k 100)*b + b);
k++;
return 0;
-----------------------------75
76.
给定如下定义:
structdate_rec

{

intday

intmonth

intyear

};

写一个函数接收两个日期 ,如果两个日期相同,则返回0,如果第一个日期晚于
第二个日期,则返回1,如果第一个日期早于第二 个日期,则返回-1。并编写main
函数测试它。

**输入格式要求:提示信息:请输入当前日期(年 月 日):
**输出格式要求:当前日期 :%d年%d月%d日!n第一个日期晚于第二个日
期!第一个日期早于第二个日期!两个日期相同!< br>
程序运行示例如下:

请输入当前日期(年 月 日):2012 9 10
请输入当前日期(年 月 日):2013 7 10

当前日期:2012年9月10日! <=== 输出
当前日期:2013年7月10日!
第一个日期早于第二个日期!
答案:
#include

structdate_rec

{

intday;

intmonth;

intyear;

};

inttime_1(structdate_rec _time1, structdate_rec _time2);

intmain()

{

structdate_rec _time1, _time2;

printf(请输入当前日期(年 月 日):

printf(请输入当前日期(年 月 日):

scanf(

printf(当前日期:%d年%d月%d日!n
_,_);



scanf(

printf(当前日期:%d年%d月%d日!n_, _,
_);

if(0 == time_1(_time1, _time2))

printf(两个日期相同!

elseif(-1 == time_1(_time1, _time2))

printf(第一个日期早于第二个日期!

elseif(1 == time_1(_time1, _time2))

printf(第一个日期晚于第二个日期!

}

inttime_1(structdate_rec _time1, structdate_rec _time2)

{

if(_ > _)

return1;

elseif(_ == _)

{

if(_ > _)

return1;

elseif(_ == _)

{

if(_ > _)

return1;

elseif(_ == _)

return0;

else

return-1;

}

else

return-1;

}

else

return-1;

}

评论

-----------------------------76
77.
写一 个函数,如果它首次被调用,则返回字母A,第二次被调用,则返回字母B,
第三次调用,则返回字母C ,以此类推。(提示:使用一个static数据类型)
函数原型为:char call_times(void)。
编写main函数测试它。

**输出格式 要求:第一次调用返回字符%c!n第二次调用返回字符%c!n第
三次调用返回字符%c!n
答案:
#include

charcall_times(void);

charachar;

intmain()

{

achar = 'A'- 1;

printf(第一次调用返回字符%c!n

printf(第二次调用返回字符%c!n

printf(第三次调用返回字符%c!n

return0;

}

charcall_times(void)

{

achar = achar + 1;

returnachar;

}


-----------------------------77
78.
编程将字符串s倒序输出,要求利用函数递归实现。
**输入格式要求:提示信息:
**输出格式要求:
程序运行的输入输出样例:
屏幕先输出提示信息:
input your string:
然后用户键盘输入:
abcdefg
最后屏幕输出:
gfedcba
答案:
#include

charstr(charb);

inti = 0;

chara[80] = { 0 };

intmain()

{

printf(

scanf(

str(*a);

}

charstr(charb)

{

if(b != '0')

{

i++;

str(*(a + i));

printf(

}

else

return'0';



}


-----------------------------78
79.
#include
unsigned long Factorial(unsigned int n);
{
if (n < 0)
{
printf(
return 0;
}
else if (n==0 && n==1)
{
return 1;
}
else
{
return n * Factorial(n-1);
}
}
main()
{
int n;
unsigned long x;
printf(



}
答案:
scanf(
x = Factorial(n);
printf(
#include

unsigned longFactorial(unsigned intn)

{



if(n == 0 || n == 1)

{

return1;

}

else

{

returnn * Factorial(n - 1);

}

}

intmain()

{

intn;

unsigned longx;

printf(

scanf(

if(n >= 0)

{

printf(

}

else

printf(

return0;

}


-----------------------------79
80.
从键盘输入10个整数,用函数编程实现计算其最大值和最小值,并互换它们所
在数组中的位置。
要求按如下函数原型编写程序
void ReadData(int a[], int n);
void PrintData(int a[], int n);
void MaxMinExchang(int a[], int n);
**输入提示信息要求:


**要求输入格式为:
**输出提示信息 :
**要求输出格式为:
输出数组中所有数据后换行
注:不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程,主函数
不能使用i nt main和return 0。
答案:
#include

main()

{

inta[10] = { 0 }, j, i = 0, k = 0;

intc, b, n;

printf(

scanf(

printf(

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

{

scanf(

if(a[j] > i)

{

i = a[j];

c = j;

}

if(j == 0)

{

k = a[j];

b = j;

}

elseif(a[j] < k)

{

k = a[j];

b = j;

}

}

a[c] = k;

a[b] = i;

printf(

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

printf(



}


-----------------------------80
81
按如下 函数原型编写程序,用一个整型数组feedback保存调查的40个反馈意见。
用函数编程计算反馈 意见的平均数(Mean)、中位数(Median)和众数(Mode)。
中位数指的是排列在数组中 间的数。如果原始数据的个数是偶数,那么中位数等
于中间那两个元素的算术平均值。众数是数组中出现 次数最多的那个数(不考虑
两个或两个以上的反馈意见出现次数相同的情况)。
int Mean(int answer[], int n);
int Median(int answer[], int n);
int Mode(int answer[], int n);
void DataSort(int a[], int n);
输入提示信息:
输入格式:
输出提示信息和输出格式:




.答案:
#include
int a[40] = { 0 };
void DataSort(int a[], int n);
int Mean(int answer[], int n);
int Median(int answer[], int n);
int Mode(int answer[], int n);
int main()
{












}
----------------------------------------------
void DataSort(inta[], intn)
{



int j, t, i;
for (i = 0;i for (j = 1;j int i = 0;
printf();
do
{


scanf(, &a[i]);
i++;
} while (i < 40);
DataSort(a, 40);
printf(, Mean(a, 40));
printf(, Median(a, 40));
printf(, Mode(a, 40));
return 0;







}












if (a[j] {



}
t = a[j - 1];
a[j - 1] = a[j];
a[j] = t;
--------------------- --------------------------
int Median(intanswer[], intn)
{

}
--- --------------------------------------------
int Mean(intanswer[], intn)
{




}
------------------------------ -----------------
int Mode(intanswer[], intn)
{




















int o, p, m[40], k[40];
int c,i,j;
for (o = 0;o







{







if (k[j] > i)
{


}
if (j == 0)
{
i = k[j];
c = j;
for (p = 0; p {





}
if (answer[o] == answer[p])
{


}
m[o] = answer[p];
k[o]++;
int i = 0, d = 0;
for (i = 0;i d = d + answer[i];
return d n;
return (answer[n 2 - 1] + answer[n 2]) 2;
for (j = 0; j < 40; j++)










}









}


}
o = a[j];
p = j;
elseif (k[j] < o)
{


}
o = k[j];
p = j;
returnanswer[c];
-----------------------------81
82.
从键 盘任意输入10个整数存入一个数组中,然后任意输入一个整数x,采用顺
序查找法,在数组中查找该数 ,要求按如下函数原型编程实现查找功能。
int Search(int a[], int n, int x);
在主函数中调用函数Search顺序查找x,然后在主函数中打印查找结果。
如果找到,则函数返回该数在数组中的下标位置,并在主函数中打印该值;
如果没有找到,则返回-1,并在主函数中打印“Not found!”。
要求必须按照题目要求和用函数编程,否则不给分。
**要求输入10个整数的提示信息格式为:
(每输入一个数,键一次回车);
**要求输入整数x的提示信息格式为:

**要求输出格式为:
找到时的 打印格式为
没找到时的打印格式为
注:不能使用指针、结构体、共用体、文件、goto、枚举 类型进行编程,主函数
不能使用int main和return 0。
答案:
#include

intsearch(inta[], intn, intx);

intmain()

{

inta[10] = { 0 }, n, x;

printf(

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

scanf(

printf(

scanf(

n = search(a, n, x);

if(n == -1)

printf(

else

printf(

return0;

}

intsearch(inta[], intn, intx)

{

inti;

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

if(a[i] == x)

returni;

return-1;

}

用 函数编程统计平均成绩。要求在主函数中输入学生成绩,输入负数时,结束输
入,调用子函数Avera ge()计算平均成绩,并输出结果。
函数原型:int Average(int score[],int n)
****要求输入提示信息为:
****输出格式要求为:


答案:
#include

intAverage(intscore[],intn);

intmain()

{

inta[100] = {0}, i , j = 0

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

{

printf(

scanf(

if(i >= 0)

a[j] = i;

else

break;

}

printf(

printf(

Average(a,j);

}

---------------------------------

intAverage(intscore[],intn)

{

intj,i = 0;

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

{

i = i + score[j];

}

returnin;

}


-----------------------------82
83.
请编写一个查找子字符串的程序,并统计子字符串出现的次数。
**输入格式要求:提示信息 :请输入主串:请输入要查找的串:
**输出格式要求:子串出现的次数:%dn子串不在主串中n程序运行示例1如下:
请输入主串:Hello,world!
请输入要查找的串:l
Hello,world!,l:子串出现的次数:3
程序运行示例2如下:
请输入主串:Hello,world!
请输入要查找的串:abc
Hello,world!,abc:子串不在主串中
答案:
#include

intmain()

{

inti, j, a = 0, b = 0,c = 0;

charstr1[100] = {0},str2[100] = {0};

printf(请输入主串:

scanf(

printf(请输入要查找的串:

scanf(

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

a++;

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

b++;

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

{

for(j = 0; str1[j + i] == str2[j]; j++);

if(j == b)

c++;

}

if(c)

printf(子串出现的次数:%dn

else

printf(子串不在主串中n

return0;

}


-----------------------------83
84.
不用标准库函数strcmp,自己编写一个函数MyStrcmp
实现将两个字符串s和t进行比较,
然后将s和t中第一个不相同字符的ASCII码值之差作为函数值返回。
要求如下:
(1)函数MyStrcmp函数原型为:
int MyStrcmp(char s[],char t[])
(2)在主函数中
从键盘分别输入两个字符串s和t,
(每个字符串的最大长度为80个字符)
然后调用MyStrcmp函数,
接下来,判定该函数的返回值:
如果大于0,输出
如果小于0,输出
如果等于0,输出
(3)**用gets输入字符串。
**输入提示信息:
输入s之前提示:
输入t之前提示:
答案:
#include

intMystrcmp(chars[],chart[])

{

inti,j;

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

if(s[i] == t[i])

continue;

elseif(s[i] > t[i])

returns[i] - t[i];

else

returns[i] - t[i];

return0;

}

intmain()

{

chars[80] = {0},t[80] = {0};

printf(

gets(s);

printf(

gets(t);

if(Mystrcmp(s,t) == 0)

printf(

elseif(Mystrcmp(s,t) < 0)

printf(

else

printf(

}


-----------------------------84
85.
下列给定程序中,函数fun()的功能是:从s所指字符串中,找出t所指字符串< br>的个数作为函数值返回。如,当s所指字符串中的内容为abcdabfab,t所指字
符串的内 容为ab,则函数返回整数3。请改正程序中的错误,使它得出正确的结
果:
#include

int fun(char *s, char *t)
{
int n;
char *p, *r;
n = 0;
while (*s)
{
p = s;
r = t;
while (*r)
if (*r == *p)
{
r++;
p++
}
else break;
if (r == '0')
n++;
s++;
}
return n;
}

main()
{
char s[100], t[100];
int m;

printf(
scanf(
printf(
scanf(
m = fun(s, t);
printf(
}
答案:
#include



intfun(char*s, char*t)

{

intn;

char*p, *r;

n = 0;

while(*s)

{

p = s;

r = t;

while(*r)

if(*r == *p)

{

r++;

p++;

}

else break;

if(*r == '0')

n++;

s++;

}

returnn;

}



main()

{

chars[100], t[100];

intm;



printf(

scanf(

printf(

scanf(

m = fun(s, t);

printf(

}


-----------------------------85
86.
从键 盘输入某单位职工的月收入(最多不超过30人),具体人数由键盘输入。试
编程输出该单位职最高月收 入和最低月收收。
输出格式:printf(
要求:利用函数计算n名职工的最高和最低月收入。
函数原型:void find_MaxMin(float income[],int n,float *pmax,float
*pmin);
答案:
#include

voidfind_MaxMin(floatincome[], intn)

{

inti;

floatMax, Min;

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

{

scanf(

}

Max = Min = income[0];

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

{

if(income[i] > Max)

Max = income[i];

elseif(income[i] < Min)

Min = income[i];

else

continue;

}

printf(

}

intmain()

{

intn;

floatincome[30] = { 0 };

scanf(

find_MaxMin(income, n);

return0;

}


-----------------------------86
87.
编写 一个函数,输入n为偶数时,调用函数求12+14+...+1n,当输入n为奇
数时,调用函数 求11+13+...+1n(要求利用函数指针编程)
程序运行示例1如下:
10
Even=1.141666
程序运行示例2如下:
9
Odd=1.787302
答案:
#include

voidE(intn);

voidO(intn);

intmain()

{

intn;

scanf(

if(n % 2)

O(n);

else

E(n);

return0;

}

voidE(intn)

{

inti;

floatEven = 0;

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

Even = Even + (float)1 (2 * i);

printf(

}

voidO(intn)

{

inti;

floatOdd = 0;

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

Odd = Odd + (float)1 i;

printf(

}


-----------------------------87
88.
给下面程序改错。程序功能是输入10个数,按从小到大顺序排序。
#include

#define SIZE 10;

main( )

{ int i, j, t, a[SIZE];

printf( 10 numbers: n

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

scanf(

printf(

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

for(j = SIZE - 1; j >= i + 1; j--)

if(a[j] > a[j-1])

{

t=a[j];

a[j-1]=a[j];

a[j]=t;

}

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

printf(

}

注意:
(1)请将修改正确后的完整源程序拷贝粘贴到答题区内。
(2)对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。
(3)当且仅当错误全部改正,且程序运行结果调试正确,才给加5分。
(4)改错时不能改变程序原有的意图,也不要改变代码的输入输出格式。
答案:
#include

#define SIZE 10

main( )

{ int i, j, t, a[SIZE];

printf( 10 numbers: n

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

scanf(

printf(

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

for(j = SIZE - 1; j >= i + 1; j--)

if(a[j] < a[j-1])

{

t=a[j];

a[j]=a[j-1];

a[j-1]=t;

}

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

printf(

}


-----------------------------88
89.
程序模拟简单运算器的工作:输入一个算式(没有空格),遇等号'='说明输入结束,输出结果。假设计算器只能进行加、减、乘、除运算,运算数和结果都是
整数,4种运算符的 优先级相同,按从左到右的顺序计算。例如输入
后,输出10。
**输出格式要求:出错提示信息:错误的运算符:%c
程序运行示例如下:
1+2*10-102= <===此行为输入
10 <===此行为输出
答案:
#include



intmain(void)

{

intnum, num1, op;

charch;



num = 0;

num1 = 0;

op = '+';

do

{

ch = getchar();

if(ch >= '0'&& ch <= '9')

{
num1 = num1 * 10 + (ch - '0');

}

else

{
if(op == '+')

{
num = num + num1;

}

elseif(op == '-')

{
num = num - num1;

}

elseif(op == '*')

{
num = num * num1;

}

elseif(op == '')

{
num = num num1;

}













else

{

printf(错误的运算符:%c

exit(0);

}

op = ch;

num1 = 0;

}

}

while(ch != '=');



printf(



return0;

}


-----------------------------89
90.
猴子吃桃程序_扩展2
猴子第一天摘了若干个桃子,吃了一半,不过瘾,又多吃了1个。第二 天早上将
剩余的桃子又吃掉一半,并且又多吃了1个。此后每天都是吃掉前一天剩下的一
半零一 个。到第n天再想吃时,发现只剩下1个桃子,问第一天它摘了多少桃子?
为了加强交互性,由用户输入 不同的天数n进行递推,即假设第n天的桃子数为
1。同时还要增加对用户输入数据的合法性验证(如: 不允许输入的天数是0和负
数)

程序运行结果示例:
Input days:
0↙
Input days:
-5↙
Input days:
a↙
Input days:
3↙
x=10

输入格式:
输出格式:
输入提示信息:
输出:
答案:
#include

intmain()

{

intx = 1, day, n, flag;

do

{

flag = 0;

printf(

n = scanf(

if(n != 1)

{

flag = 1;

while(getchar() != 'n');

}

if(day <= 0)

flag = 1;

}

while(flag == 1);



while(day > 1)

{

x = (x + 1) * 2;

day--;

}



printf(

return0;

}



-----------------------------90
91. < br>编程打印如下形式的杨辉三角形。打印的杨辉三角形的行数n(不超过15行)。
要求由用户在主 函数中通过键盘输入。请按照如下给定的函数原型进行编程。函
数CaculateYH用于生成杨辉三 角形,函数PrintYH用于打印杨辉三角形。给定
的函数原型如下:
void CaculateYH(int a[][N], int n);
void PrintYH(int a[][N], int n);
**输入提示信息**:
**输入数据格式**:
**输出提示信息**:无
**输出数据格式**:
杨辉三角形形式如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
答案:
#include

#define N 15

intshu[N][N] = { 0 };

voidCaculateYH(inta[][N], intn);

void PrintYH(inta[][N], int n);

intmain()

{

intn;

printf(

scanf(

CaculateYH(shu, n);

PrintYH(shu, n);

return0;

}

********************************

voidCaculateYH(inta[][N], intn)

{

inti, j;

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

a[i][0] = 1;

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

a[0][j] = 0;

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

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

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

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

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

shu[i][j] = a[i][j];

}

*********************************

void PrintYH(inta[][N], int n)

{

inti, j;

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

{








}





























}



















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

{

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

printf(

}

printf(

-----------------------------91
92.
将字符串s1从第m个字符开始剩余的所有字符,送入字符数组s2中。
注意:
(1)请将修改正确后的完整源程序拷贝粘贴到答题区内。
(2)对于没有错误的语句,请不要修改,修改原本正确的语句也要扣分。
(3)当且仅当错误全部改正,且程序运行结果调试正确,才得满分。
#include

main()

{

inti,j,m;

chars1[80],s2[80];



printf(

gets(s1[]);

printf(

scanf(

i=m-1;

j=0;



while(s1[i]!='0')

{

s2[j]=s1[i];

}

s2[j]='0';

puts(s2);

}

答案:
#include

intmain()

{

inti, j, m;

chars1[80], s2[80];



printf(
















}




































gets(s1);

printf(

scanf(

i = m - 1;

j = 0;

while((s1[i] != '0')&&(i < 80))

{

s2[j] = s1[i];

i++;

j++;

}

s2[j] = '0';

puts(s2);

return0;










-----------------------------92
93.
谁家孩子跑最慢
张、王、李三家各有三个小孩。一天,三家的九个孩子在一起比赛短
跑,规定不分年龄大小,跑第一得9分,跑第二得8分,一次类推。比赛结果
各家的总分相同,且这些孩子没有同时到达终点,也没有一家的两个或三
个孩子获得相连的名次。已知获第一名的是李家的孩子,获得第二的是王
家的孩子。求各家各个孩子的得分,获得最后一名的是谁家的孩子?
**输入格式要求:提示信息:
family Zhang.n
**输出格式要求:
程序运行示例如下:
7 5 3
8 6 1
9 4 2
The last one arrived to end is a child from family Wang.


答案:
#include

intscore[4][4];

main()

{

inti, j, k, who;

score[1][1] = 7;

score[2][1] = 8;

score[3][1] = 9;

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

for(j = 4; j < 7; j++)

for(k = 4; i != j && k < 7; k++)

if(k != 1 && k != j

&& 15 - i -
score[1][1] != 15 - j - score[2][1]

&& 15 - i -
score[1][1] != 15 - k - score[3][1]

&& 15 - j -
score[2][1] != 15 - k - score[3][1])

{

score[1][2] = i;

score[1][3] = 15 - i - 7;

score[2][2] = j;

score[2][3] = 15 - j - 8;

score[3][2] = k;

score[3][3] = 15 - k - 9;

}

for(who = 0, i = 1; i <= 3; i++, printf(

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

{

printf(

if(score[i][j] == 1)

who = i;

}

if(who == 1)

printf(last one arrived to end is a child from family
Zhang.n

elseif(who == 2)

printf(last one arrived to end is a child from family
Wang.n

else

printf(last one arrived to end is a child from family
Wang.n

}


-----------------------------93
94.
在给定的一组书名中,从键盘任意输入一个书名(书名可以有空格)。若找到,
则打印该书名,否则打印没找到。找出其中错误并改正之。
#include

#include

intmain()

{

inti, findFlag;

最好就业的专业-民族凝聚力


超级学霸的学习方法-幽默搞笑


draw现在分词-江西理工大学应科院


四川分数线-关于梦想的作文


等腰三角形有几条对称轴-精神病人脑子都很聪明


有内涵讽刺的句子-滨州医学院吧


小说情节的作用有哪些-怎样去赚钱


广西工学院地址-个性签名女生简单气质



本文更新与2020-09-10 23:27,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/391761.html

C语言练习题答案的相关文章