1 绘制金字塔(4分)
题目内容:
要求用户从键盘输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:
A
ABA
ABCBA
ABCDCBA
int main()
{
char c;
printf("Please input a capital:\n");
scanf("%c",&c);
if(c >= 'A' && c <= 'Z')
{
for (int i = 'A'; i <= c; ++i)
{
for (int j = c - i; j >= 0; j--)
{
printf(" ");
}
for (int k = 'A'; k <= i; k++)
{
printf("%c",k);
}
for (int l = i - 1; l >= 'A'; l--)
{
printf("%c",l);
}
printf("\n");
}
}
}
2 循环嵌套的应用(4分)
题目内容:
编写程序产生如下输出:
F
FE
FED
FEDC
FEDCB
FEDCBA
int main()
{
char c='F';
for (int i = c; i >= 'A' ; i--)
{
for (int j = c; j >= i; j--)
{
printf("%c", j);
}
printf("\n");
}
return 0;
}
3 利用泰勒级数计算sinx的值(4分)
题目内容:
利用泰勒级数计算sinx的值,要求最后一项的绝对值小于,并统计出此时累加了多少项。请用“利用前项来计算后项”的方法计算累加项,不要使用pow函数编写程序。程序中所有实数的数据类型都是double类型。
#include <stdio.h>
#include <math.h>
#define EPS 1e-5
double factorial(double x);
int main()
{
double x,sinx = 0,n,mul,sign = 1,a = 1;
int count = 0;
printf("Input x:\n");
scanf("%lf",&x);
n = x;
do{
mul = n / factorial(a);
mul = mul * sign;
sinx = sinx + mul;
n = n * x * x;
a = a + 2;
sign = -sign;
count++;
}while (fabs(mul) >= EPS);
printf("sin(x)=%.3f,count=%d\n",sinx,count);
return 0;
}
/**
* 求x的阶乘
* @param x
* @return x阶乘
*/
double factorial(double x)
{
double result = 1;
for (int i = 1; i <= x; ++i)
{
result = result * i;
}
return result;
}
4 计算100~200之间的所有素数之和(4分)
题目内容:
计算100~200之间的所有素数之和,判别一个数是否是素数请用给定的函数实现。
函数原型:int fun(int m);
说明:
参 数:m 是要进行判断的数;
返回值:若数 m 是素数,则返回值为1;否则返回值为0。
int fun(int m);
int main()
{
int sum = 0;
for (int i = 100; i <= 200; ++i)
{
if(fun(i))
{
sum = sum + i;
}
}
printf("sum=%d\n",sum);
return 0;
}
/**
* 判别一个数是否是素数
* @param m
* @return
*/
int fun(int m)
{
int i,isPrime = 1;
for (i = 2; i <= m / 2; i++)
{
if(m % i == 0)
{
isPrime = 0;
break;
}
}
return isPrime;
}
5 编程实现一个输入指定范围内的整数的函数(4分)
题目内容:
编程实现一个输入指定范围内的整数的函数getint,其完整的函数原型为:int getint(int min, int max);,它负责接收用户的输入进行验证,保证接收的一定是一个介于min和max之间([min, max]区间内)的一个整数并最后返回该整数。如果用户输入不合法,则会提示继续输入,直到输入合法时为止。要求编写完整的程序并测试你所写的getint函数。6
程序改错v2.0(5分)
题目内容:
下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。
#include<stdio.h>
int main()
{
int score;
char grade;
printf("Please input score:");
scanf("%d", &score);
if (score < 0 || score > 100)
printf("Input error!\n");
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("grade:%c\n", grade);
return 0;
}
修改后
int main()
{
int score,result;
char grade;
while (1)
{
printf("Please input score:\n");
result = scanf("%d", &score);
if(result != 1 || score<0 || score>100)
{
printf("Input error!\n");
//清空缓冲区
while (getchar() != '\n');
continue;
}
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("grade: %c\n", grade);
break;
}
return 0;
}
7 编程计算a+aa+aaa+…+aa…a(n个a)的值(4分)
题目内容:
编程计算 a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入。例如,当n=4,a=2,表示计算2+22+222+2222的值。
int main()
{
int n,a,sum = 0,temp;
printf("Input a,n:\n");
scanf("%d,%d",&a,&n);
temp = a;
for (int i = 1; i <= n; ++i) {
sum = sum + temp;
temp = temp * 10 + a;
}
printf("sum=%ld\n",sum);
return 0;
}
8 搬砖问题(4分)
题目内容:
n块砖( 27<n<=77 ),36人搬,男搬4,女搬3,两个小孩抬一块砖,要求一次搬完,问男人、女人和小孩各需多少人?请用穷举法编程求解,n的值要求从键盘输入。输出结果按照男人数量升序给出(见下面示例3)。
int main()
{
int men,women,children,n;
printf("Input n(27<n<=77):\n");
scanf("%d",&n);
for (men = 0; men * 4 <= n ; ++men)
{
for (women = 0; women * 3 <= n ; ++women)
{
children = 36 - men - women;
if(men + women + children == 36 && men * 4 + women * 3 + children / 2.0 == n)
{
printf("men=%d,women=%d,children=%d\n",men,women,children);
}
}
}
return 0;
}
9 编程输出某年某月有多少天(考虑到闰年)(5分)
题目内容:
从键盘输入一个年份和月份,输出该月有多少天(考虑闰年),用switch语句编程。
int main()
{
int year,month;
printf("Input year,month:\n");
scanf("%d,%d",&year,&month);
switch (month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
printf("31 days\n");
break;
case 4:
case 6:
case 9:
case 11:
printf("30 days\n");
break;
case 2:
if(year % 4 == 0 && year % 100 !=0 || year % 400 == 0)
{
printf("29 days\n");
}
else
{
printf("28 days\n");
}
break;
default:
printf("Input error!\n");
}
return 0;
}